codicent-app-sdk 0.5.5 → 0.5.7

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.
Files changed (152) hide show
  1. package/dist/cjs/_virtual/_commonjsHelpers.js +1 -1
  2. package/dist/cjs/_virtual/index19.js +1 -1
  3. package/dist/cjs/_virtual/index20.js +1 -1
  4. package/dist/cjs/_virtual/index4.js +1 -1
  5. package/dist/cjs/_virtual/index5.js +1 -1
  6. package/dist/cjs/components/AiInput.js +1 -1
  7. package/dist/cjs/components/AudioIcon.js +1 -1
  8. package/dist/cjs/components/ChatInput.js +1 -1
  9. package/dist/cjs/components/ChatMessage.js +1 -1
  10. package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
  11. package/dist/cjs/components/Footer.js +1 -1
  12. package/dist/cjs/components/GenericJsonRenderer.js +1 -1
  13. package/dist/cjs/components/Header.js +1 -1
  14. package/dist/cjs/components/HtmlView.js +1 -1
  15. package/dist/cjs/components/MessageInput.js +1 -1
  16. package/dist/cjs/components/MessageItem.js +1 -1
  17. package/dist/cjs/components/Profile.js +1 -1
  18. package/dist/cjs/components/Prompt.js +1 -1
  19. package/dist/cjs/components/SnapFooter.js +1 -1
  20. package/dist/cjs/components/TextHeader.js +1 -1
  21. package/dist/cjs/components/TypingIndicator.js +1 -1
  22. package/dist/cjs/components/UploadFile.js +1 -1
  23. package/dist/cjs/components/UrlProcessor.js +1 -1
  24. package/dist/cjs/components/VoiceIcon.js +1 -1
  25. package/dist/cjs/hooks/useAuthState.js +1 -1
  26. package/dist/cjs/hooks/useChat.js +1 -1
  27. package/dist/cjs/hooks/useCodicentState.js +1 -1
  28. package/dist/cjs/hooks/useObserveDataSchemas.js +1 -1
  29. package/dist/cjs/hooks/useTools.js +1 -1
  30. package/dist/cjs/hooks/useUserRoles.d.ts +1 -1
  31. package/dist/cjs/hooks/useUserRoles.d.ts.map +1 -1
  32. package/dist/cjs/hooks/useUserRoles.js +1 -1
  33. package/dist/cjs/node_modules/@fast-csv/format/build/src/formatter/RowFormatter.js +1 -1
  34. package/dist/cjs/node_modules/@fast-csv/format/build/src/index.js +1 -1
  35. package/dist/cjs/node_modules/@fast-csv/format/build/src/types.js +1 -1
  36. package/dist/cjs/node_modules/@fast-csv/parse/build/src/index.js +1 -1
  37. package/dist/cjs/node_modules/@fast-csv/parse/build/src/transforms/RowTransformerValidator.js +1 -1
  38. package/dist/cjs/node_modules/@fast-csv/parse/build/src/types.js +1 -1
  39. package/dist/cjs/node_modules/concat-map/index.js +1 -1
  40. package/dist/cjs/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  41. package/dist/cjs/node_modules/fs.realpath/index.js +1 -1
  42. package/dist/cjs/node_modules/fs.realpath/old.js +1 -1
  43. package/dist/cjs/node_modules/glob/common.js +1 -1
  44. package/dist/cjs/node_modules/glob/glob.js +1 -1
  45. package/dist/cjs/node_modules/glob/sync.js +1 -1
  46. package/dist/cjs/node_modules/inflight/inflight.js +1 -1
  47. package/dist/cjs/node_modules/minimatch/minimatch.js +1 -1
  48. package/dist/cjs/node_modules/minimatch/node_modules/brace-expansion/index.js +1 -1
  49. package/dist/cjs/node_modules/react-is/index.js +1 -1
  50. package/dist/cjs/node_modules/safe-buffer/index.js +1 -1
  51. package/dist/cjs/node_modules/scheduler/index.js +1 -1
  52. package/dist/cjs/node_modules/style-to-js/cjs/index.js +1 -1
  53. package/dist/cjs/node_modules/style-to-object/cjs/index.js +1 -1
  54. package/dist/cjs/node_modules/unzipper/node_modules/safe-buffer/index.js +1 -1
  55. package/dist/cjs/node_modules/zip-stream/node_modules/archiver-utils/index.js +1 -1
  56. package/dist/cjs/pages/AppFrame.js +1 -1
  57. package/dist/cjs/pages/Chat.js +1 -1
  58. package/dist/cjs/pages/Compose.js +1 -1
  59. package/dist/cjs/pages/CrmPage.js +1 -1
  60. package/dist/cjs/pages/CrmPagePersistent.js +1 -1
  61. package/dist/cjs/pages/FormAccept.js +1 -1
  62. package/dist/cjs/pages/FormInvite.js +1 -1
  63. package/dist/cjs/pages/Home.js +1 -1
  64. package/dist/cjs/pages/HtmlViewer.js +1 -1
  65. package/dist/cjs/pages/ImageView.js +1 -1
  66. package/dist/cjs/pages/ListPage.js +1 -1
  67. package/dist/cjs/pages/Log.js +1 -1
  68. package/dist/cjs/pages/Login.js +1 -1
  69. package/dist/cjs/pages/Menu.js +1 -1
  70. package/dist/cjs/pages/Purchase.js +1 -1
  71. package/dist/cjs/pages/Sales.js +1 -1
  72. package/dist/cjs/pages/Search.js +1 -1
  73. package/dist/cjs/pages/Snap.js +1 -1
  74. package/dist/cjs/services/codicent.js +1 -1
  75. package/dist/cjs/utils/excelExport.js +1 -1
  76. package/dist/esm/_virtual/_commonjsHelpers.js +1 -1
  77. package/dist/esm/_virtual/index14.js +1 -1
  78. package/dist/esm/_virtual/index17.js +1 -1
  79. package/dist/esm/_virtual/index19.js +1 -1
  80. package/dist/esm/_virtual/index20.js +1 -1
  81. package/dist/esm/_virtual/index4.js +1 -1
  82. package/dist/esm/_virtual/index5.js +1 -1
  83. package/dist/esm/components/AiInput.js +1 -1
  84. package/dist/esm/components/AudioIcon.js +1 -1
  85. package/dist/esm/components/ChatInput.js +1 -1
  86. package/dist/esm/components/ChatMessage.js +1 -1
  87. package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
  88. package/dist/esm/components/Footer.js +1 -1
  89. package/dist/esm/components/GenericJsonRenderer.js +1 -1
  90. package/dist/esm/components/Header.js +1 -1
  91. package/dist/esm/components/HtmlView.js +1 -1
  92. package/dist/esm/components/MessageInput.js +1 -1
  93. package/dist/esm/components/MessageItem.js +1 -1
  94. package/dist/esm/components/Profile.js +1 -1
  95. package/dist/esm/components/Prompt.js +1 -1
  96. package/dist/esm/components/SnapFooter.js +1 -1
  97. package/dist/esm/components/TextHeader.js +1 -1
  98. package/dist/esm/components/TypingIndicator.js +1 -1
  99. package/dist/esm/components/UploadFile.js +1 -1
  100. package/dist/esm/components/UrlProcessor.js +1 -1
  101. package/dist/esm/components/VoiceIcon.js +1 -1
  102. package/dist/esm/hooks/useAuthState.js +1 -1
  103. package/dist/esm/hooks/useChat.js +1 -1
  104. package/dist/esm/hooks/useCodicentState.js +1 -1
  105. package/dist/esm/hooks/useObserveDataSchemas.js +1 -1
  106. package/dist/esm/hooks/useTools.js +1 -1
  107. package/dist/esm/hooks/useUserRoles.d.ts +1 -1
  108. package/dist/esm/hooks/useUserRoles.d.ts.map +1 -1
  109. package/dist/esm/hooks/useUserRoles.js +1 -1
  110. package/dist/esm/node_modules/@fast-csv/format/build/src/CsvFormatterStream.js +1 -1
  111. package/dist/esm/node_modules/@fast-csv/format/build/src/formatter/index.js +1 -1
  112. package/dist/esm/node_modules/@fast-csv/parse/build/src/CsvParserStream.js +1 -1
  113. package/dist/esm/node_modules/@fast-csv/parse/build/src/parser/index.js +1 -1
  114. package/dist/esm/node_modules/@fast-csv/parse/build/src/transforms/index.js +1 -1
  115. package/dist/esm/node_modules/concat-map/index.js +1 -1
  116. package/dist/esm/node_modules/exceljs/lib/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  117. package/dist/esm/node_modules/fs.realpath/index.js +1 -1
  118. package/dist/esm/node_modules/fs.realpath/old.js +1 -1
  119. package/dist/esm/node_modules/glob/common.js +1 -1
  120. package/dist/esm/node_modules/glob/glob.js +1 -1
  121. package/dist/esm/node_modules/glob/sync.js +1 -1
  122. package/dist/esm/node_modules/inflight/inflight.js +1 -1
  123. package/dist/esm/node_modules/minimatch/minimatch.js +1 -1
  124. package/dist/esm/node_modules/minimatch/node_modules/brace-expansion/index.js +1 -1
  125. package/dist/esm/node_modules/react-is/index.js +1 -1
  126. package/dist/esm/node_modules/scheduler/index.js +1 -1
  127. package/dist/esm/node_modules/style-to-js/cjs/index.js +1 -1
  128. package/dist/esm/node_modules/style-to-object/cjs/index.js +1 -1
  129. package/dist/esm/node_modules/unzipper/node_modules/safe-buffer/index.js +1 -1
  130. package/dist/esm/node_modules/zip-stream/node_modules/archiver-utils/index.js +1 -1
  131. package/dist/esm/pages/AppFrame.js +1 -1
  132. package/dist/esm/pages/Chat.js +1 -1
  133. package/dist/esm/pages/Compose.js +1 -1
  134. package/dist/esm/pages/CrmPage.js +1 -1
  135. package/dist/esm/pages/CrmPagePersistent.js +1 -1
  136. package/dist/esm/pages/FormAccept.js +1 -1
  137. package/dist/esm/pages/FormInvite.js +1 -1
  138. package/dist/esm/pages/Home.js +1 -1
  139. package/dist/esm/pages/HtmlViewer.js +1 -1
  140. package/dist/esm/pages/ImageView.js +1 -1
  141. package/dist/esm/pages/ListPage.js +1 -1
  142. package/dist/esm/pages/Log.js +1 -1
  143. package/dist/esm/pages/Login.js +1 -1
  144. package/dist/esm/pages/Menu.js +1 -1
  145. package/dist/esm/pages/Purchase.js +1 -1
  146. package/dist/esm/pages/Sales.js +1 -1
  147. package/dist/esm/pages/Search.js +1 -1
  148. package/dist/esm/pages/Snap.js +1 -1
  149. package/dist/esm/services/codicent.js +1 -1
  150. package/dist/esm/utils/excelExport.js +1 -1
  151. package/dist/index.d.ts +1 -1
  152. package/package.json +2 -2
@@ -1 +1 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as o,useState as i,useEffect as r}from"react";import{makeStyles as a,tokens as s,Button as l,Spinner as n,mergeClasses as p}from"@fluentui/react-components";import{AddRegular as m,SendRegular as c,SendFilled as d}from"@fluentui/react-icons";import{FileThumbnail as u}from"./FileThumbnail.js";import g from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"./Markdown.js";import{Textarea as j}from"./Textarea.js";import"./Button.js";import"./CompoundButton.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 f}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import h from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import b from"../hooks/useAppStyles.js";const x=a({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:s.colorNeutralBackground2,borderRadius:s.borderRadiusMedium,"&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:s.colorNeutralStroke1,borderRadius:"3px"}},hiddenInput:{display:"none"},button:{color:s.colorNeutralForeground2,"&:hover":{color:s.colorBrandBackground,backgroundColor:"transparent"}}}),v=({onSend:a,disableSend:s,onSelectFiles:v,getImageUrl:_,getFileInfo:w,codicent:S,defaultText:T,rows:k,noMemory:y,selectAll:C,id:D})=>{const N=x(),[B,F]=g("chatInput-"+S,""),I=o(null),[O,E]=i([]),[P,H]=i([]),[L,A]=i(!1),[M,U]=i([]),{t:R}=h(),W=b();r((()=>{T&&F(T)}),[F,T]),r((()=>{!0===y&&F("")}),[y,F]);const z=()=>{if(""===B.trim()&&0===M.length)return;const e=O.length>0?" #"+O.join(" #"):"",t=P.length>0?"\n#file:"+P.join("\n#file:"):"";a(e+B+t),F(""),E([]),H([]),U([])};return e("div",{className:N.inputContainer,children:[t("input",{title:R("Välj fil att ladda upp"),type:"file",ref:I,className:N.hiddenInput,onChange:async e=>{const t=e.target.files;if(t&&t.length>0&&v){A(!0);try{const e=await v(t),o=await Promise.all(e.map((e=>w(e))));H((t=>[...t,...e])),U((e=>[...e,...o]))}catch(e){console.error("Failed to upload files",e)}finally{A(!1),I.current&&(I.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),M.length>0&&t("div",{className:N.fileList,children:M.map((e=>t(u,{file:e,getImageUrl:_,onDelete:()=>{return t=e.id,H((e=>e.filter((e=>e!==t)))),void U((e=>e.filter((e=>e.id!==t))));var t}},e.id)))}),e("div",{className:N.textareaWrapper,onPaste:async e=>{for(const t of e.clipboardData.items)if(-1!==t.type.indexOf("image")){const o=t.getAsFile();if(o&&(e.preventDefault(),v))try{A(!0);const e=new DataTransfer;e.items.add(o);const t=await v(e.files),i=await Promise.all(t.map((e=>w(e))));H((e=>[...e,...t])),U((e=>[...e,...i]))}catch(e){console.error("Failed to upload pasted image",e)}finally{A(!1)}}},children:[t(j,{size:"large",id:D||"chat-input",placeholder:R(f("APP_CHAT_TEXT_PLACEHOLDER")||"Skriv ditt meddelande här..."),value:B,onChange:e=>F(e.target.value),onKeyDown:e=>{s||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),z())},autoFocus:!1,rows:k||4,onFocus:e=>{if(!0===C){e.target.select()}}}),e("div",{className:N.actionButtonRow,children:[t("div",{children:!f("HIDE_CHAT_ADD_FILE_BUTTON")&&v&&t(l,{appearance:"subtle",size:"small",title:R("Lägg till fil"),icon:t(L?n:m,{}),onClick:()=>I.current?.click(),className:N.button})}),t(l,{appearance:f("SHOW_SEND_BUTTON_TEXT")?"primary":"subtle",size:f("SHOW_SEND_BUTTON_TEXT")?"small":"large",title:R("Skicka"),disabled:s,icon:""===B.trim()&&0===M.length?t(c,{}):t(d,{}),onClick:z,className:f("SEND_BUTTON_ROUND_BACKGROUND")?p(W.roundButton,N.button):f("SHOW_SEND_BUTTON_TEXT")?void 0:N.button,children:f("SHOW_SEND_BUTTON_TEXT")&&t("span",{children:R("Skicka")})})]})]})]})};export{v as default};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as o,useState as i,useEffect as r}from"react";import{makeStyles as a,tokens as s,Button as l,Spinner as n,mergeClasses as p}from"@fluentui/react-components";import{AddRegular as m,SendRegular as c,SendFilled as d}from"@fluentui/react-icons";import{FileThumbnail as u}from"./FileThumbnail.js";import g from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"./Markdown.js";import{Textarea as j}from"./Textarea.js";import"./Button.js";import"./CompoundButton.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 f}from"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import h from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import b from"../hooks/useAppStyles.js";const x=a({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:s.colorNeutralBackground2,borderRadius:s.borderRadiusMedium,"&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:s.colorNeutralStroke1,borderRadius:"3px"}},hiddenInput:{display:"none"},button:{color:s.colorNeutralForeground2,"&:hover":{color:s.colorBrandBackground,backgroundColor:"transparent"}}}),v=({onSend:a,disableSend:s,onSelectFiles:v,getImageUrl:w,getFileInfo:S,codicent:T,defaultText:_,rows:k,noMemory:y,selectAll:C,id:D})=>{const N=x(),[B,F]=g("chatInput-"+T,""),I=o(null),[O,E]=i([]),[P,H]=i([]),[L,A]=i(!1),[M,U]=i([]),{t:R}=h(),W=b();r((()=>{_&&F(_)}),[F,_]),r((()=>{!0===y&&F("")}),[y,F]);const z=()=>{if(""===B.trim()&&0===M.length)return;const e=O.length>0?" #"+O.join(" #"):"",t=P.length>0?"\n#file:"+P.join("\n#file:"):"";a(e+B+t),F(""),E([]),H([]),U([])};return e("div",{className:N.inputContainer,children:[t("input",{title:R("Välj fil att ladda upp"),type:"file",ref:I,className:N.hiddenInput,onChange:async e=>{const t=e.target.files;if(t&&t.length>0&&v){A(!0);try{const e=await v(t),o=await Promise.all(e.map((e=>S(e))));H((t=>[...t,...e])),U((e=>[...e,...o]))}catch(e){console.error("Failed to upload files",e)}finally{A(!1),I.current&&(I.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),M.length>0&&t("div",{className:N.fileList,children:M.map((e=>t(u,{file:e,getImageUrl:w,onDelete:()=>{return t=e.id,H((e=>e.filter((e=>e!==t)))),void U((e=>e.filter((e=>e.id!==t))));var t}},e.id)))}),e("div",{className:N.textareaWrapper,onPaste:async e=>{for(const t of e.clipboardData.items)if(-1!==t.type.indexOf("image")){const o=t.getAsFile();if(o&&(e.preventDefault(),v))try{A(!0);const e=new DataTransfer;e.items.add(o);const t=await v(e.files),i=await Promise.all(t.map((e=>S(e))));H((e=>[...e,...t])),U((e=>[...e,...i]))}catch(e){console.error("Failed to upload pasted image",e)}finally{A(!1)}}},children:[t(j,{size:"large",id:D||"chat-input",placeholder:R(f("APP_CHAT_TEXT_PLACEHOLDER")||"Skriv ditt meddelande här..."),value:B,onChange:e=>F(e.target.value),onKeyDown:e=>{s||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),z())},autoFocus:!1,rows:k||4,onFocus:e=>{if(!0===C){e.target.select()}}}),e("div",{className:N.actionButtonRow,children:[t("div",{children:!f("HIDE_CHAT_ADD_FILE_BUTTON")&&v&&t(l,{appearance:"subtle",size:"small",title:R("Lägg till fil"),icon:t(L?n:m,{}),onClick:()=>I.current?.click(),className:N.button})}),t(l,{appearance:f("SHOW_SEND_BUTTON_TEXT")?"primary":"subtle",size:f("SHOW_SEND_BUTTON_TEXT")?"small":"large",title:R("Skicka"),disabled:s,icon:""===B.trim()&&0===M.length?t(c,{}):t(d,{}),onClick:z,className:f("SEND_BUTTON_ROUND_BACKGROUND")?p(W.roundButton,N.button):f("SHOW_SEND_BUTTON_TEXT")?void 0:N.button,children:f("SHOW_SEND_BUTTON_TEXT")&&t("span",{children:R("Skicka")})})]})]})]})};export{v as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{makeStyles as o,mergeClasses as s,tokens as r,Text as i}from"@fluentui/react-components";import{ChannelRegular as a}from"@fluentui/react-icons";import"react";import"../services/codicent.js";import p from"./Markdown.js";import"./Textarea.js";import{Button as n}from"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./Header.js";import m from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as l}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import c from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const g=o({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"}}),j=({sender:o,content:j,isNew:d,children:u,showSuggestions:f,onSuggestionClicked:h})=>{const C=g(),{t:x}=c();let w=[];if("bot"===o&&j.includes("#suggested_questions")){const e=j.split("#suggested_questions");j=e[0],w=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const _=new m(j);let b=_.content;"user"===o&&_.content.includes("---")&&(b=_.content.split("---")[0]);const S=_.content.startsWith("Error code: ")?x("Ett fel uppstod 😟 => starta en ny chatt"):null;return e("div",{className:s(C.message,"user"===o?C.user:C.bot),children:t("div",{className:s(C.messageContent,"user"===o?C.userMessage:C.botMessage,d&&C.newMessage),style:{backgroundColor:"user"===o?l("CHAT_USER_BACKGROUND_COLOR")||r.colorBrandBackground:l("CHAT_BOT_BACKGROUND_COLOR")||r.colorBrandBackground2,color:"user"===o?l("CHAT_USER_TEXT_COLOR")||r.colorNeutralForegroundInverted:l("CHAT_BOT_TEXT_COLOR")||r.colorNeutralForeground1},children:[t(i,{size:400,children:[S,!S&&e(p,{content:b}),_.files.length>0&&e(a,{}),f&&w&&w.length>0&&e("div",{style:{marginTop:"8px",display:"flex",gap:"8px",flexWrap:"wrap"},children:w.map(((t,o)=>e(n,{size:"small",shape:"circular",onClick:()=>h?.(t),style:{textAlign:"left"},children:t},o)))})]}),u]})})};export{j as default};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{makeStyles as o,mergeClasses as s,tokens as r,Text as i}from"@fluentui/react-components";import{ChannelRegular as a}from"@fluentui/react-icons";import"react";import"../services/codicent.js";import p from"./Markdown.js";import"./Textarea.js";import{Button as n}from"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./Header.js";import m from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as l}from"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import c from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const g=o({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"}}),j=({sender:o,content:j,isNew:d,children:u,showSuggestions:f,onSuggestionClicked:h})=>{const C=g(),{t:w}=c();let x=[];if("bot"===o&&j.includes("#suggested_questions")){const e=j.split("#suggested_questions");j=e[0],x=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const _=new m(j);let b=_.content;"user"===o&&_.content.includes("---")&&(b=_.content.split("---")[0]);const S=_.content.startsWith("Error code: ")?w("Ett fel uppstod 😟 => starta en ny chatt"):null;return e("div",{className:s(C.message,"user"===o?C.user:C.bot),children:t("div",{className:s(C.messageContent,"user"===o?C.userMessage:C.botMessage,d&&C.newMessage),style:{backgroundColor:"user"===o?l("CHAT_USER_BACKGROUND_COLOR")||r.colorBrandBackground:l("CHAT_BOT_BACKGROUND_COLOR")||r.colorBrandBackground2,color:"user"===o?l("CHAT_USER_TEXT_COLOR")||r.colorNeutralForegroundInverted:l("CHAT_BOT_TEXT_COLOR")||r.colorNeutralForeground1},children:[t(i,{size:400,children:[S,!S&&e(p,{content:b}),_.files.length>0&&e(a,{}),f&&x&&x.length>0&&e("div",{style:{marginTop:"8px",display:"flex",gap:"8px",flexWrap:"wrap"},children:x.map(((t,o)=>e(n,{size:"small",shape:"circular",onClick:()=>h?.(t),style:{textAlign:"left"},children:t},o)))})]}),u]})})};export{j as default};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as o}from"react/jsx-runtime";import{makeStyles as i,shorthands as t,tokens as r}from"@fluentui/react-components";import"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as a}from"./Textarea.js";import{Button as s}from"./Button.js";import"./CompoundButton.js";import{Text as p}from"./Text.js";import"./Spinner.js";import{Label as l}from"./Label.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as m,DialogTitle as n,DialogContent as c,DialogActions as j}from"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import d from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const g=i({container:{display:"flex",flexDirection:"column",...t.gap("12px")},section:{display:"flex",flexDirection:"column",...t.gap("8px")},field:{display:"flex",flexDirection:"column",...t.gap("4px")},fileItem:{display:"flex",alignItems:"center",...t.gap("8px")},label:{fontWeight:r.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:r.colorNeutralBackground1,boxShadow:r.shadow16},dialogBody:{backgroundColor:"transparent"}}),u=({open:i,templateVariables:t,filePlaceholders:r,onTemplateVariablesChange:u,onFilePlaceholdersChange:h,onConfirm:f,onCancel:x,uploadFile:v})=>{const C=g(),{t:b}=d();return e(m,{open:i,children:[o(n,{children:b("Fyll i information")}),o(c,{children:e("div",{className:C.container,children:[t.length>0&&o("div",{className:C.section,children:t.map(((i,r)=>e("div",{className:C.field,children:[o(l,{className:C.label,children:i.name}),o(a,{className:C.textarea,value:i.value,onChange:e=>{const o=[...t];o[r].value=e.target.value,u(o)}})]},r)))}),r.length>0&&o("div",{className:C.section,children:r.map(((i,t)=>e("div",{className:C.fileItem,children:[o(p,{weight:"semibold",children:i.description}),o(s,{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],t=new FormData;t.append("file",o);const a=await v(o.name,t),s=[...r];s[e].fileId=a,h(s)}})(t),children:i.fileId?b("Fil vald"):b("Välj fil")})]},t)))})]})}),e(j,{children:[o(s,{appearance:"secondary",onClick:x,children:b("Avbryt")}),o(s,{appearance:"primary",onClick:f,children:b("OK")})]})]})};export{u as CombinedPlaceholderDialog};
1
+ import{jsxs as e,jsx as o}from"react/jsx-runtime";import{makeStyles as i,shorthands as t,tokens as r}from"@fluentui/react-components";import"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as a}from"./Textarea.js";import{Button as s}from"./Button.js";import"./CompoundButton.js";import{Text as p}from"./Text.js";import"./Spinner.js";import{Label as l}from"./Label.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as m,DialogTitle as n,DialogContent as c,DialogActions as j}from"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import d from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const g=i({container:{display:"flex",flexDirection:"column",...t.gap("12px")},section:{display:"flex",flexDirection:"column",...t.gap("8px")},field:{display:"flex",flexDirection:"column",...t.gap("4px")},fileItem:{display:"flex",alignItems:"center",...t.gap("8px")},label:{fontWeight:r.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:r.colorNeutralBackground1,boxShadow:r.shadow16},dialogBody:{backgroundColor:"transparent"}}),u=({open:i,templateVariables:t,filePlaceholders:r,onTemplateVariablesChange:u,onFilePlaceholdersChange:h,onConfirm:f,onCancel:x,uploadFile:v})=>{const C=g(),{t:b}=d();return e(m,{open:i,children:[o(n,{children:b("Fyll i information")}),o(c,{children:e("div",{className:C.container,children:[t.length>0&&o("div",{className:C.section,children:t.map(((i,r)=>e("div",{className:C.field,children:[o(l,{className:C.label,children:i.name}),o(a,{className:C.textarea,value:i.value,onChange:e=>{const o=[...t];o[r].value=e.target.value,u(o)}})]},r)))}),r.length>0&&o("div",{className:C.section,children:r.map(((i,t)=>e("div",{className:C.fileItem,children:[o(p,{weight:"semibold",children:i.description}),o(s,{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],t=new FormData;t.append("file",o);const a=await v(o.name,t),s=[...r];s[e].fileId=a,h(s)}})(t),children:i.fileId?b("Fil vald"):b("Välj fil")})]},t)))})]})}),e(j,{children:[o(s,{appearance:"secondary",onClick:x,children:b("Avbryt")}),o(s,{appearance:"primary",onClick:f,children:b("OK")})]})]})};export{u as CombinedPlaceholderDialog};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useEffect as s}from"react";import{makeStyles as i,shorthands as a,tokens as r,Badge as n}from"@fluentui/react-components";import{Home24Filled as l,Home24Regular as p,Chat24Filled as c,Chat24Regular as m,AddSquare24Filled as d,AddSquare24Regular as g,ClipboardDay24Filled as j,ClipboardDay24Regular as u,SlideText24Filled as h,SlideText24Regular as v,Whiteboard24Filled as T,Whiteboard24Regular as x,Apps24Filled as f,Apps24Regular as _}from"@fluentui/react-icons";import{useLocation as b,Link as k}from"react-router-dom";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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 C}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import O from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const N=i({footer:{...a.padding("14px"),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:r.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...a.borderWidth("0")},link:{textDecoration:"none",color:"inherit",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none"},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"},logbookIconWrapper:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center"},notificationBadge:{position:"absolute",top:"-4px",right:"-4px"}}),w=()=>{const i=N(),a=b(),[w,y]=t(null),{t:S}=O(),[I,P]=t((()=>"true"===localStorage.getItem("logbook-has-notification"))),B={backgroundColor:C("APP_FOOTER_COLOR")||r.colorBrandBackground,color:C("APP_FOOTER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand},E=C("APP_FOOTER_SELECTED_COLOR")||void 0;return s((()=>{const o=a.pathname;"/"===o?y("home"):"/chat"===o?y("chat"):"/new"===o?y("save"):"/menu"===o?y("menu"):"/log"===o?y("log"):"/canvas"===o?y("canvas"):"/snap"===o&&y("snap")}),[a]),s((()=>{w&&console.log(`footer-button: ${w}`)}),[w]),s((()=>{const o=()=>{P("true"===localStorage.getItem("logbook-has-notification"))};return window.addEventListener("storage",o),window.addEventListener("logbook-notification-changed",o),()=>{window.removeEventListener("storage",o),window.removeEventListener("logbook-notification-changed",o)}}),[]),o("footer",{className:i.footer,style:B,children:e("div",{className:i.container,children:[e(k,{to:"/",className:`${i.link} ${"home"===w?"selected":""}`,onClick:()=>y("home"),style:"home"===w?{color:E}:void 0,children:[o("home"===w?l:p,{}),o("p",{className:i.buttonText,children:S("Hem")})]}),!C("HIDE_CHAT_BUTTON")&&e(k,{to:"/chat",className:`${i.link} ${"chat"===w?"selected":""}`,onClick:()=>y("chat"),style:"chat"===w?{color:E}:void 0,children:[o("chat"===w?c:m,{}),o("p",{className:i.buttonText,children:S(C("APP_CHAT_TITLE")||"Chatt")})]}),!C("HIDE_SAVE_BUTTON")&&e(k,{to:"/new",className:`${i.link} ${"save"===w?"selected":""}`,onClick:()=>y("save"),style:"save"===w?{color:E}:void 0,children:[o("save"===w?d:g,{}),o("p",{className:i.buttonText,children:S(C("APP_SAVE_TITLE")||"Spara")})]}),C("SHOW_SNAP_BUTTON")&&e(k,{to:"/snap",className:`${i.link} ${"snap"===w?"selected":""}`,onClick:()=>y("snap"),style:"snap"===w?{color:E}:void 0,children:[o("snap"===w?j:u,{}),o("p",{className:i.buttonText,children:S("Snap")})]}),C("SHOW_LOGBOOK_BUTTON")&&e(k,{to:"/log",className:`${i.link} ${"log"===w?"selected":""}`,onClick:()=>{y("log"),localStorage.removeItem("logbook-has-notification"),P(!1)},style:"log"===w?{color:E}:void 0,children:[e("div",{className:i.logbookIconWrapper,children:[o("log"===w?h:v,{}),I&&"log"!==w&&o(n,{appearance:"filled",color:"danger",size:"extra-small",className:i.notificationBadge})]}),o("p",{className:i.buttonText,children:S(C("APP_LOGBOOK_TITLE")||"Loggbok")})]}),C("SHOW_CANVAS_BUTTON")&&e(k,{to:"/canvas",className:`${i.link} ${"canvas"===w?"selected":""}`,onClick:()=>y("canvas"),style:"canvas"===w?{color:E}:void 0,children:[o("canvas"===w?T:x,{}),o("p",{className:i.buttonText,children:S("Kanvas")})]}),!C("HIDE_MENU_BUTTON")&&e(k,{to:"/menu",className:`${i.link} ${"menu"===w?"selected":""}`,onClick:()=>y("menu"),style:"menu"===w?{color:E}:void 0,children:[o("menu"===w?f:_,{}),o("p",{className:i.buttonText,children:S("Meny")})]})]})})};export{w as Footer,w as default};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useEffect as i}from"react";import{makeStyles as s,shorthands as a,tokens as r,Badge as n}from"@fluentui/react-components";import{Home24Filled as l,Home24Regular as p,Chat24Filled as c,Chat24Regular as m,AddSquare24Filled as d,AddSquare24Regular as g,ClipboardDay24Filled as j,ClipboardDay24Regular as u,SlideText24Filled as h,SlideText24Regular as v,Whiteboard24Filled as T,Whiteboard24Regular as f,Apps24Filled as x,Apps24Regular as _}from"@fluentui/react-icons";import{useLocation as b,Link as k}from"react-router-dom";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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 C}from"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import O from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const N=s({footer:{...a.padding("14px"),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:r.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...a.borderWidth("0")},link:{textDecoration:"none",color:"inherit",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none"},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"},logbookIconWrapper:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center"},notificationBadge:{position:"absolute",top:"-4px",right:"-4px"}}),w=()=>{const s=N(),a=b(),[w,y]=t(null),{t:S}=O(),[I,P]=t((()=>"true"===localStorage.getItem("logbook-has-notification"))),B={backgroundColor:C("APP_FOOTER_COLOR")||r.colorBrandBackground,color:C("APP_FOOTER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand},E=C("APP_FOOTER_SELECTED_COLOR")||void 0;return i((()=>{const o=a.pathname;"/"===o?y("home"):"/chat"===o?y("chat"):"/new"===o?y("save"):"/menu"===o?y("menu"):"/log"===o?y("log"):"/canvas"===o?y("canvas"):"/snap"===o&&y("snap")}),[a]),i((()=>{w&&console.log(`footer-button: ${w}`)}),[w]),i((()=>{const o=()=>{P("true"===localStorage.getItem("logbook-has-notification"))};return window.addEventListener("storage",o),window.addEventListener("logbook-notification-changed",o),()=>{window.removeEventListener("storage",o),window.removeEventListener("logbook-notification-changed",o)}}),[]),o("footer",{className:s.footer,style:B,children:e("div",{className:s.container,children:[e(k,{to:"/",className:`${s.link} ${"home"===w?"selected":""}`,onClick:()=>y("home"),style:"home"===w?{color:E}:void 0,children:[o("home"===w?l:p,{}),o("p",{className:s.buttonText,children:S("Hem")})]}),!C("HIDE_CHAT_BUTTON")&&e(k,{to:"/chat",className:`${s.link} ${"chat"===w?"selected":""}`,onClick:()=>y("chat"),style:"chat"===w?{color:E}:void 0,children:[o("chat"===w?c:m,{}),o("p",{className:s.buttonText,children:S(C("APP_CHAT_TITLE")||"Chatt")})]}),!C("HIDE_SAVE_BUTTON")&&e(k,{to:"/new",className:`${s.link} ${"save"===w?"selected":""}`,onClick:()=>y("save"),style:"save"===w?{color:E}:void 0,children:[o("save"===w?d:g,{}),o("p",{className:s.buttonText,children:S(C("APP_SAVE_TITLE")||"Spara")})]}),C("SHOW_SNAP_BUTTON")&&e(k,{to:"/snap",className:`${s.link} ${"snap"===w?"selected":""}`,onClick:()=>y("snap"),style:"snap"===w?{color:E}:void 0,children:[o("snap"===w?j:u,{}),o("p",{className:s.buttonText,children:S("Snap")})]}),C("SHOW_LOGBOOK_BUTTON")&&e(k,{to:"/log",className:`${s.link} ${"log"===w?"selected":""}`,onClick:()=>{y("log"),localStorage.removeItem("logbook-has-notification"),P(!1)},style:"log"===w?{color:E}:void 0,children:[e("div",{className:s.logbookIconWrapper,children:[o("log"===w?h:v,{}),I&&"log"!==w&&o(n,{appearance:"filled",color:"danger",size:"extra-small",className:s.notificationBadge})]}),o("p",{className:s.buttonText,children:S(C("APP_LOGBOOK_TITLE")||"Loggbok")})]}),C("SHOW_CANVAS_BUTTON")&&e(k,{to:"/canvas",className:`${s.link} ${"canvas"===w?"selected":""}`,onClick:()=>y("canvas"),style:"canvas"===w?{color:E}:void 0,children:[o("canvas"===w?T:f,{}),o("p",{className:s.buttonText,children:S("Kanvas")})]}),!C("HIDE_MENU_BUTTON")&&e(k,{to:"/menu",className:`${s.link} ${"menu"===w?"selected":""}`,onClick:()=>y("menu"),style:"menu"===w?{color:E}:void 0,children:[o("menu"===w?x:_,{}),o("p",{className:s.buttonText,children:S("Meny")})]})]})})};export{w as Footer,w as default};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as i,Fragment as t}from"react/jsx-runtime";import{useState as o,useEffect as n}from"react";import{Button as r}from"./Button.js";import{Text as l}from"./Text.js";import a from"../hooks/useLocalization.js";import s from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.js";import{FileThumbnail as c}from"./FileThumbnail.js";import{CodicentService as d}from"../services/codicent.js";import{TimePicker as m}from"./TimePicker.js";import{DatePicker as p}from"./DatePicker.js";import{ColorPicker as h}from"./ColorPicker.js";import{Image as g,Dropdown as y,Option as u,Switch as f}from"@fluentui/react-components";const v=({schema:v,item:j,onUpdated:b,onSend:x})=>{const S=new s(j.content),{mentions:w,tags:k}=S,[B,C]=o(S.data),[D,_]=o(B),[z,N]=o(!1),[O,I]=o(j.id),{t:T}=a();n((()=>{N(JSON.stringify(D)!==JSON.stringify(B))}),[D,B,N]);const U=()=>`${w.length>0?"@"+w.join(" @"):""} #${k.join(" #")}\n${JSON.stringify(D)}`;n((()=>{if(b){const e=U();b(e)}}),[j.content,D,b]),n((()=>console.log("Modified data:",D)),[D]);return e("div",{style:{display:"flex",flexDirection:"column",gap:20},children:[e("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[i(l,{size:600,children:v.title}),v["ui:options"]?.icon&&i(g,{src:d.getImageUrl(v["ui:options"]?.icon,32),alt:"icon",fit:"contain",width:32,height:32})]}),i(l,{children:v.description}),i("div",{style:{display:"flex",flexDirection:"column",gap:4},children:Object.keys(v.properties).map((o=>((o,n,r)=>{const{title:a,type:s,description:g,format:v,items:j,default:b}=n,x=!0===n.readonly,S=void 0!==D[o]?D[o]:b,w=e(t,{children:[i(l,{size:500,children:a}),i("br",{})]}),k=g?e(t,{children:[i(l,{children:g}),i("br",{})]}):null;switch(s){case"string":return e("div",!0===x?{style:{marginBottom:8},children:[i(l,{size:"title"===v?600:500,style:{display:"block"},children:a}),g&&i(l,{style:{display:"block",marginBottom:2},children:g}),"title"===v?null:i(l,{children:S||"N/A"})]}:"photo"===v?{style:{marginBottom:8},children:[w,k,i(c,{thumbnailSize:280,file:{id:S,filename:"",contentType:"image/png",createdAt:(new Date).toLocaleString()},getImageUrl:d.getImageUrl,onDelete:()=>r("")})]}:"color"===v?{style:{marginBottom:8},children:[w,k,i(h,{color:S,onChange:(e,i)=>r(i.str)})]}:"date"===v?{style:{marginBottom:8},children:[w,k,i(p,{value:S?new Date(S):void 0,onSelectDate:e=>r(e?.toISOString()||"")})]}:"time"===v?{style:{marginBottom:8},children:[w,k,i(m,{value:S,onTimeChange:(e,i)=>r(i?.toString()||"")})]}:{style:{marginBottom:8},children:[w,k,i("textarea",{value:S||"",onChange:e=>r(e.target.value),style:{width:"100%",minWidth:300,resize:"vertical",fontSize:16,padding:8},rows:Math.max(1,(S||"").split("\n").length)})]},o);case"boolean":return e("div","open"===v?{style:{marginBottom:8},children:[w,k,i(f,{checked:"true"===D[o]||!0===D[o],onChange:(e,i)=>r(i.checked),disabled:x})]}:{style:{marginBottom:8},children:[w,k,i(l,{children:S?"Yes":"No"})]},o);case"array":return e("div",{style:{marginBottom:8},children:[w,k,i(y,{value:S&&""!==S?S:b||void 0,onOptionSelect:(e,i)=>r(i.optionValue),disabled:x,children:(j?.enum||[]).map((e=>i(u,{value:e,children:e},e)))})]},o);default:return e("div",{style:{marginBottom:8},children:[w,k,i(l,{children:S||"N/A"})]},o)}})(o,v.properties[o],(e=>{"boolean"===v.properties[o].type&&(e=e.toString()),_({...D,[o]:e})}))))}),z&&!b&&e("div",{style:{display:"flex",flexDirection:"row",gap:10,justifyContent:"flex-end"},children:[i(r,{appearance:"secondary",disabled:!z,onClick:()=>_(B),children:T("Undo")}),i(r,{appearance:"primary",disabled:!z,onClick:()=>{const e=U();x?x(e,O).then((e=>{I(e),C(D),N(!1)})):b&&b(e)},children:T("Save")})]}),x&&b&&i("div",{children:i(r,{appearance:"primary",title:T("Skicka"),disabled:!z,icon:"SendFilled",onClick:()=>{const e=U();x&&x(e)},children:T("Spara")})})]})};export{v as default};
1
+ import{jsxs as e,jsx as i,Fragment as t}from"react/jsx-runtime";import{useState as o,useEffect as n}from"react";import{Button as r}from"./Button.js";import{Text as l}from"./Text.js";import a from"../hooks/useLocalization.js";import s from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";import{FileThumbnail as c}from"./FileThumbnail.js";import{CodicentService as d}from"../services/codicent.js";import{TimePicker as m}from"./TimePicker.js";import{DatePicker as p}from"./DatePicker.js";import{ColorPicker as h}from"./ColorPicker.js";import{Image as g,Dropdown as y,Option as f,Switch as u}from"@fluentui/react-components";const v=({schema:v,item:j,onUpdated:b,onSend:S})=>{const w=new s(j.content),{mentions:x,tags:k}=w,[B,C]=o(w.data),[D,z]=o(B),[_,N]=o(!1),[O,I]=o(j.id),{t:T}=a();n((()=>{N(JSON.stringify(D)!==JSON.stringify(B))}),[D,B,N]);const U=()=>`${x.length>0?"@"+x.join(" @"):""} #${k.join(" #")}\n${JSON.stringify(D)}`;n((()=>{if(b){const e=U();b(e)}}),[j.content,D,b]),n((()=>console.log("Modified data:",D)),[D]);return e("div",{style:{display:"flex",flexDirection:"column",gap:20},children:[e("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[i(l,{size:600,children:v.title}),v["ui:options"]?.icon&&i(g,{src:d.getImageUrl(v["ui:options"]?.icon,32),alt:"icon",fit:"contain",width:32,height:32})]}),i(l,{children:v.description}),i("div",{style:{display:"flex",flexDirection:"column",gap:4},children:Object.keys(v.properties).map((o=>((o,n,r)=>{const{title:a,type:s,description:g,format:v,items:j,default:b}=n,S=!0===n.readonly,w=void 0!==D[o]?D[o]:b,x=e(t,{children:[i(l,{size:500,children:a}),i("br",{})]}),k=g?e(t,{children:[i(l,{children:g}),i("br",{})]}):null;switch(s){case"string":return e("div",!0===S?{style:{marginBottom:8},children:[i(l,{size:"title"===v?600:500,style:{display:"block"},children:a}),g&&i(l,{style:{display:"block",marginBottom:2},children:g}),"title"===v?null:i(l,{children:w||"N/A"})]}:"photo"===v?{style:{marginBottom:8},children:[x,k,i(c,{thumbnailSize:280,file:{id:w,filename:"",contentType:"image/png",createdAt:(new Date).toLocaleString()},getImageUrl:d.getImageUrl,onDelete:()=>r("")})]}:"color"===v?{style:{marginBottom:8},children:[x,k,i(h,{color:w,onChange:(e,i)=>r(i.str)})]}:"date"===v?{style:{marginBottom:8},children:[x,k,i(p,{value:w?new Date(w):void 0,onSelectDate:e=>r(e?.toISOString()||"")})]}:"time"===v?{style:{marginBottom:8},children:[x,k,i(m,{value:w,onTimeChange:(e,i)=>r(i?.toString()||"")})]}:{style:{marginBottom:8},children:[x,k,i("textarea",{value:w||"",onChange:e=>r(e.target.value),style:{width:"100%",minWidth:300,resize:"vertical",fontSize:16,padding:8},rows:Math.max(1,(w||"").split("\n").length)})]},o);case"boolean":return e("div","open"===v?{style:{marginBottom:8},children:[x,k,i(u,{checked:"true"===D[o]||!0===D[o],onChange:(e,i)=>r(i.checked),disabled:S})]}:{style:{marginBottom:8},children:[x,k,i(l,{children:w?"Yes":"No"})]},o);case"array":return e("div",{style:{marginBottom:8},children:[x,k,i(y,{value:w&&""!==w?w:b||void 0,onOptionSelect:(e,i)=>r(i.optionValue),disabled:S,children:(j?.enum||[]).map((e=>i(f,{value:e,children:e},e)))})]},o);default:return e("div",{style:{marginBottom:8},children:[x,k,i(l,{children:w||"N/A"})]},o)}})(o,v.properties[o],(e=>{"boolean"===v.properties[o].type&&(e=e.toString()),z({...D,[o]:e})}))))}),_&&!b&&e("div",{style:{display:"flex",flexDirection:"row",gap:10,justifyContent:"flex-end"},children:[i(r,{appearance:"secondary",disabled:!_,onClick:()=>z(B),children:T("Undo")}),i(r,{appearance:"primary",disabled:!_,onClick:()=>{const e=U();S?S(e,O).then((e=>{I(e),C(D),N(!1)})):b&&b(e)},children:T("Save")})]}),S&&b&&i("div",{children:i(r,{appearance:"primary",title:T("Skicka"),disabled:!_,icon:"SendFilled",onClick:()=>{const e=U();S&&S(e)},children:T("Spara")})})]})};export{v as default};
@@ -1 +1 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import{makeStyles as t,shorthands as i,tokens as r,Image as s,Title3 as a}from"@fluentui/react-components";import{Settings24Regular as p}from"@fluentui/react-icons";import{Link as m}from"react-router-dom";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import n from"./VoiceIcon.js";import l 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"./DataMessagePicker.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 c}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import"../pages/QrScan.js";import"../hooks/useLocalization.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const j=t({header:{...i.padding("14px"),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"}}),d=({imageUrl:t,title:i,audio:d,voice:g})=>{const u=j(),h={backgroundColor:c("APP_HEADER_COLOR")||r.colorBrandBackground,color:c("APP_HEADER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand};return o("header",{className:u.header,style:h,children:[o("div",{className:u.headerItem,children:[t&&e(s,{className:u.logo,alt:"Logo",src:t,height:40}),i&&e(a,{children:i})]}),o("div",{className:u.headerItem,children:[d&&c("SHOW_MICROPHONE_BUTTON")&&e(l,{audio:d,disabled:g?.isConnected}),g&&c("SHOW_VOICE_BUTTON")&&e(n,{voice:g,disabled:d?.isRecording}),c("SHOW_SETTINGS_BUTTON")&&e(m,{to:"/menu",className:u.link,children:e(p,{})})]})]})};export{d as Header};
1
+ import{jsxs as o,jsx as e}from"react/jsx-runtime";import{makeStyles as t,shorthands as i,tokens as r,Image as s,Title3 as a}from"@fluentui/react-components";import{Settings24Regular as p}from"@fluentui/react-icons";import{Link as m}from"react-router-dom";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import n from"./VoiceIcon.js";import l 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"./DataMessagePicker.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 c}from"../config/index.js";import"../utils/cacheManager.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"exceljs";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import"../pages/QrScan.js";import"../hooks/useLocalization.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const j=t({header:{...i.padding("14px"),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"}}),g=({imageUrl:t,title:i,audio:g,voice:d})=>{const u=j(),h={backgroundColor:c("APP_HEADER_COLOR")||r.colorBrandBackground,color:c("APP_HEADER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand};return o("header",{className:u.header,style:h,children:[o("div",{className:u.headerItem,children:[t&&e(s,{className:u.logo,alt:"Logo",src:t,height:40}),i&&e(a,{children:i})]}),o("div",{className:u.headerItem,children:[g&&c("SHOW_MICROPHONE_BUTTON")&&e(l,{audio:g,disabled:d?.isConnected}),d&&c("SHOW_VOICE_BUTTON")&&e(n,{voice:d,disabled:g?.isRecording}),c("SHOW_SETTINGS_BUTTON")&&e(m,{to:"/menu",className:u.link,children:e(p,{})})]})]})};export{g as Header};
@@ -1 +1 @@
1
- import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r,useEffect as i}from"react";import{makeStyles as n,tokens as a,Menu as s,MenuTrigger as c,Button as l,MenuPopover as p,MenuList as m,MenuItem as d}from"@fluentui/react-components";import{MoreHorizontal24Regular as u,DismissRegular as h,PrintRegular as g,CopyRegular as j}from"@fluentui/react-icons";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import f from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const b=n({container:{position:"relative",width:"100%",height:"100%",flex:"1 1 auto"},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},menuPopover:{backgroundColor:a.colorNeutralBackground1,boxShadow:a.shadow16}}),w=({html:n,onDismiss:a})=>{const w=o(null),y=o(null),[v,x]=r(1),C=b(),{t:S}=f();i((()=>{const t=t=>{try{const e=t.contentDocument||t.contentWindow?.document;if(!e)return;if(e.getElementById("print-color-preserve-styles"))return;const o=e.createElement("style");o.id="print-color-preserve-styles",o.textContent="\n @media print {\n /* Force browsers to preserve colors when printing */\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n \n /* Ensure backgrounds and colors are preserved */\n body, html {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n }\n ",e.head.appendChild(o)}catch(t){console.warn("Failed to inject print styles into iframe:",t)}},e=w.current,o=y.current;let r,i;return e&&(r=()=>t(e),e.addEventListener("load",r),"complete"===e.contentDocument?.readyState&&t(e)),o&&(i=()=>t(o),o.addEventListener("load",i),"complete"===o.contentDocument?.readyState&&t(o)),()=>{e&&r&&e.removeEventListener("load",r),o&&i&&o.removeEventListener("load",i)}}),[n]);return t("div",{className:C.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));w.current?.setAttribute("data-initial-distance",r.toString()),w.current?.setAttribute("data-initial-scale",v.toString())}},onTouchMove:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=parseFloat(w.current?.getAttribute("data-initial-distance")||"0"),i=parseFloat(w.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);x(t),w.current&&(w.current.style.transform=`scale(${t})`),y.current&&(y.current.style.transform=`scale(${t})`)}}},onTouchEnd:()=>{w.current?.removeAttribute("data-initial-distance"),w.current?.removeAttribute("data-initial-scale")},children:[e("iframe",{ref:w,className:C.iframe,title:"html",srcDoc:n}),e("iframe",{ref:y,className:C.iframe2,title:"html",srcDoc:n})," ",t(s,{children:[e(c,{children:e(l,{icon:e(u,{}),className:C.menuButton})}),e(p,{className:C.menuPopover,children:t(m,{children:[e(d,{icon:e(h,{}),onClick:a,children:S("Stäng")}),e(d,{icon:e(g,{}),onClick:()=>{w.current&&w.current.contentWindow?.print()},children:S("Skriv ut")}),e(d,{icon:e(j,{}),onClick:async()=>{if(y.current)try{const t=y.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,a=o.body.innerText,s=document.createElement("div");s.innerHTML=n;const c=window.location.href;if(s.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,c).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([s.outerHTML],{type:"text/html"}),e=new Blob([a],{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:S("Kopiera")})]})})]})]})};export{w as default};
1
+ import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r,useEffect as i}from"react";import{makeStyles as n,tokens as a,Menu as s,MenuTrigger as c,Button as l,MenuPopover as p,MenuList as m,MenuItem as d}from"@fluentui/react-components";import{MoreHorizontal24Regular as u,DismissRegular as h,PrintRegular as g,CopyRegular as j}from"@fluentui/react-icons";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import f from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const b=n({container:{position:"relative",width:"100%",height:"100%",flex:"1 1 auto"},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},menuPopover:{backgroundColor:a.colorNeutralBackground1,boxShadow:a.shadow16}}),w=({html:n,onDismiss:a})=>{const w=o(null),y=o(null),[v,x]=r(1),C=b(),{t:S}=f();i((()=>{const t=t=>{try{const e=t.contentDocument||t.contentWindow?.document;if(!e)return;if(e.getElementById("print-color-preserve-styles"))return;const o=e.createElement("style");o.id="print-color-preserve-styles",o.textContent="\n @media print {\n /* Force browsers to preserve colors when printing */\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n \n /* Ensure backgrounds and colors are preserved */\n body, html {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n }\n ",e.head.appendChild(o)}catch(t){console.warn("Failed to inject print styles into iframe:",t)}},e=w.current,o=y.current;let r,i;return e&&(r=()=>t(e),e.addEventListener("load",r),"complete"===e.contentDocument?.readyState&&t(e)),o&&(i=()=>t(o),o.addEventListener("load",i),"complete"===o.contentDocument?.readyState&&t(o)),()=>{e&&r&&e.removeEventListener("load",r),o&&i&&o.removeEventListener("load",i)}}),[n]);return t("div",{className:C.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));w.current?.setAttribute("data-initial-distance",r.toString()),w.current?.setAttribute("data-initial-scale",v.toString())}},onTouchMove:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=parseFloat(w.current?.getAttribute("data-initial-distance")||"0"),i=parseFloat(w.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);x(t),w.current&&(w.current.style.transform=`scale(${t})`),y.current&&(y.current.style.transform=`scale(${t})`)}}},onTouchEnd:()=>{w.current?.removeAttribute("data-initial-distance"),w.current?.removeAttribute("data-initial-scale")},children:[e("iframe",{ref:w,className:C.iframe,title:"html",srcDoc:n}),e("iframe",{ref:y,className:C.iframe2,title:"html",srcDoc:n})," ",t(s,{children:[e(c,{children:e(l,{icon:e(u,{}),className:C.menuButton})}),e(p,{className:C.menuPopover,children:t(m,{children:[e(d,{icon:e(h,{}),onClick:a,children:S("Stäng")}),e(d,{icon:e(g,{}),onClick:()=>{w.current&&w.current.contentWindow?.print()},children:S("Skriv ut")}),e(d,{icon:e(j,{}),onClick:async()=>{if(y.current)try{const t=y.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,a=o.body.innerText,s=document.createElement("div");s.innerHTML=n;const c=window.location.href;if(s.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,c).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([s.outerHTML],{type:"text/html"}),e=new Blob([a],{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:S("Kopiera")})]})})]})]})};export{w 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{makeStyles as r,tokens as i}from"@fluentui/react-components";import"../services/codicent.js";import"./Markdown.js";import{Textarea as s}from"./Textarea.js";import{Button as n}from"./Button.js";import"./CompoundButton.js";import{Spinner as l}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"@fluentui/react-icons";import p from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as m}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.js";import{FileThumbnail as c}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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import d from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import g from"../hooks/useToaster.js";const u=r({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:i.colorNeutralForeground2,"&:hover":{color:i.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:i.colorNeutralStroke1,borderRadius:"3px"}}}),j=({defaultText:r,onSend:i,onLocationChange:j,hasLocation:f,files:h=[],onFilesChange:v,onUploadFile:x,onUploadImage:b,onUploadCamera:w,getImageUrl:y,isUploading:k,rows:C,size:S,disableSend:B,placeholder:T,onChange:D,onImagePasted:_,onHandleDefaultFiles:N})=>{const[F,L]=o(""),[I,P]=o([]),z=u(),A=g(),{t:U}=d();a((()=>{D?.(F)}),[F,D]),a((()=>{const e=new p(r||"");L(e.content||""),P(e.tags||[]),e.files.length>0&&N?.(e.files)}),[r]);const M=async()=>{if(""===F.trim()&&0===h.length)return void A.notify(U("Meddelandet får inte vara tomt"),"","","error");const e=I.length>0?`#${I.join(" #")} `:"#log ";i(e+F),L("");const t=new p(r||"");P(t.tags||[]),v?.([])};return e("div",{className:z.container,onDrop:async e=>{if(e.preventDefault(),!v)return;const t=Array.from(e.dataTransfer.files);if(t.length>0)if(_&&t.every((e=>e.type&&e.type.startsWith("image/"))))for(const e of t)_(e);else v(t)},onDragOver:e=>{e.preventDefault()},children:t("div",{className:z.textareaWrapper,children:[y&&h.length>0&&t("div",{className:z.fileList,children:[h.map((t=>e(c,{file:t,getImageUrl:y,onDelete:()=>{return e=t.id,void v?.(h.filter((t=>t.id!==e)));var e}},t.id))),k&&e(l,{})]}),e(s,{size:"large",resize:"vertical",rows:C||7,value:F,onChange:e=>L(e.target.value),placeholder:T||U("Skriv vad du vill spara här..."),onKeyDown:e=>{!0!==B?"Enter"!==e.key||e.shiftKey||(e.preventDefault(),M()):"Enter"===e.key&&e.ctrlKey&&(e.preventDefault(),M())},onPaste:e=>{if(!v&&!_)return;const t=e.clipboardData.items;for(const o of t)if("file"===o.kind){const t=o.getAsFile();t&&(_&&t.type.startsWith("image/")?(e.preventDefault(),_(t)):v&&(e.preventDefault(),v([t])))}},className:z.textarea}),t("div",{className:z.actionButtonRow,children:[t("div",{className:z.leftButtonGroup,children:[x&&e(n,{appearance:"transparent",icon:b?"AttachRegular":"AddRegular",size:"small",title:U("Lägg till fil"),onClick:x,className:z.actionButton}),b&&e(n,{appearance:"transparent",icon:"ImageRegular",size:"small",title:U("Lägg till bild"),onClick:b,className:z.actionButton}),w&&e(n,{appearance:"transparent",icon:"CameraRegular",size:"small",title:U("Ta kort"),onClick:w,className:z.actionButton}),j&&e(n,{appearance:"transparent",icon:f?"LocationFilled":"LocationRegular",size:"small",title:U("Spara plats"),onClick:()=>j(!f),className:z.actionButton})]}),e(n,{appearance:m("SHOW_SAVE_BUTTON_TEXT")?"primary":"subtle",onClick:M,icon:"SendFilled",iconPosition:"before",title:U("Spara"),size:S||(m("SHOW_SAVE_BUTTON_TEXT")?"small":"large"),children:m("SHOW_SAVE_BUTTON_TEXT")&&e("span",{children:U("Spara")})})]})]})})};export{j as default};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useState as o,useEffect as a}from"react";import{makeStyles as r,tokens as i}from"@fluentui/react-components";import"../services/codicent.js";import"./Markdown.js";import{Textarea as s}from"./Textarea.js";import{Button as n}from"./Button.js";import"./CompoundButton.js";import{Spinner as l}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"@fluentui/react-icons";import p from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as m}from"../config/index.js";import"../utils/cacheManager.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"exceljs";import{FileThumbnail as c}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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import d from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import g from"../hooks/useToaster.js";const u=r({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:i.colorNeutralForeground2,"&:hover":{color:i.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:i.colorNeutralStroke1,borderRadius:"3px"}}}),j=({defaultText:r,onSend:i,onLocationChange:j,hasLocation:f,files:h=[],onFilesChange:v,onUploadFile:x,onUploadImage:b,onUploadCamera:w,getImageUrl:y,isUploading:k,rows:C,size:S,disableSend:B,placeholder:T,onChange:D,onImagePasted:_,onHandleDefaultFiles:N})=>{const[F,L]=o(""),[I,P]=o([]),z=u(),A=g(),{t:U}=d();a((()=>{D?.(F)}),[F,D]),a((()=>{const e=new p(r||"");L(e.content||""),P(e.tags||[]),e.files.length>0&&N?.(e.files)}),[r]);const M=async()=>{if(""===F.trim()&&0===h.length)return void A.notify(U("Meddelandet får inte vara tomt"),"","","error");const e=I.length>0?`#${I.join(" #")} `:"#log ";i(e+F),L("");const t=new p(r||"");P(t.tags||[]),v?.([])};return e("div",{className:z.container,onDrop:async e=>{if(e.preventDefault(),!v)return;const t=Array.from(e.dataTransfer.files);if(t.length>0)if(_&&t.every((e=>e.type&&e.type.startsWith("image/"))))for(const e of t)_(e);else v(t)},onDragOver:e=>{e.preventDefault()},children:t("div",{className:z.textareaWrapper,children:[y&&h.length>0&&t("div",{className:z.fileList,children:[h.map((t=>e(c,{file:t,getImageUrl:y,onDelete:()=>{return e=t.id,void v?.(h.filter((t=>t.id!==e)));var e}},t.id))),k&&e(l,{})]}),e(s,{size:"large",resize:"vertical",rows:C||7,value:F,onChange:e=>L(e.target.value),placeholder:T||U("Skriv vad du vill spara här..."),onKeyDown:e=>{!0!==B?"Enter"!==e.key||e.shiftKey||(e.preventDefault(),M()):"Enter"===e.key&&e.ctrlKey&&(e.preventDefault(),M())},onPaste:e=>{if(!v&&!_)return;const t=e.clipboardData.items;for(const o of t)if("file"===o.kind){const t=o.getAsFile();t&&(_&&t.type.startsWith("image/")?(e.preventDefault(),_(t)):v&&(e.preventDefault(),v([t])))}},className:z.textarea}),t("div",{className:z.actionButtonRow,children:[t("div",{className:z.leftButtonGroup,children:[x&&e(n,{appearance:"transparent",icon:b?"AttachRegular":"AddRegular",size:"small",title:U("Lägg till fil"),onClick:x,className:z.actionButton}),b&&e(n,{appearance:"transparent",icon:"ImageRegular",size:"small",title:U("Lägg till bild"),onClick:b,className:z.actionButton}),w&&e(n,{appearance:"transparent",icon:"CameraRegular",size:"small",title:U("Ta kort"),onClick:w,className:z.actionButton}),j&&e(n,{appearance:"transparent",icon:f?"LocationFilled":"LocationRegular",size:"small",title:U("Spara plats"),onClick:()=>j(!f),className:z.actionButton})]}),e(n,{appearance:m("SHOW_SAVE_BUTTON_TEXT")?"primary":"subtle",onClick:M,icon:"SendFilled",iconPosition:"before",title:U("Spara"),size:S||(m("SHOW_SAVE_BUTTON_TEXT")?"small":"large"),children:m("SHOW_SAVE_BUTTON_TEXT")&&e("span",{children:U("Spara")})})]})]})})};export{j 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{makeStyles as a,tokens as s,Card as n,Switch as l,CardHeader as m,Skeleton as c,SkeletonItem as p,Caption1 as d}from"@fluentui/react-components";import{useNavigate as g}from"react-router-dom";import{Edit20Regular as u,FullScreenMaximizeRegular as h,ArrowCollapseAllRegular as j,ArrowExpandAllRegular as f}from"@fluentui/react-icons";import{CodicentService as x}from"../services/codicent.js";import b from"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import{Text as w}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 S from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as O}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import"./Content.js";import"./Page.js";import"../pages/QrScan.js";import _ from"../hooks/useLocalization.js";import{FileThumbnail as I}from"./FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./AiInput.js";import"./SearchBox.js";import"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const v=a({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:s.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:s.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"}}}),k=({header:a,description:s,timestamp:k,timestampTitle:E,text:T,image:C,tags:N,id:y,fileIds:A,codicentService:L,busy:B,onEdit:P,onShowHtmlPreview:F,maxHeightPx:R})=>{const D=v(),H=g(),[G,M]=o(!1),[z,K]=o(!1),[W,$]=o("unknown"),[U,Q]=o(!1),V=i(null),Y=Object.keys(O("LOGBOOK_TAG_DEFINITIONS")),X=Y.find((e=>N.includes(e)))||(A.length>0?Y.find((e=>"file"===e)):void 0),[q,J]=o([]),Z=N.includes("todo"),{t:ee}=_(),te=["TYPE","CUSTOMER","CONTACT","SALESPERSON","MESSAGE","COMPANY","PHONE","EMAIL","WEBSITE","INFO","FÖRETAG","ROLE","KONTAKT"],oe=[ee("Typ"),ee("Kund"),ee("Kontakt"),ee("Säljare"),ee("Meddelande"),ee("Företag"),ee("Telefon"),ee("E-post"),ee("Hemsida"),ee("Info"),ee("Företag"),ee("Roll"),ee("Kontakt")];r((()=>{Promise.all(A.map((e=>L.getFileInfo(e)))).then((e=>{J(e)}))}),[L,J,A]),r((()=>{const e=()=>{if(V.current){const e=R??100,t=V.current.scrollHeight>e+(q.length>0?-72:0);K(t)}};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[T,q,R]),r((()=>{if(Z){(async()=>{try{const e=await L.getTodoStatus(y);$(e)}catch(e){console.error("Error loading todo status:",e),$("unknown")}})()}}),[Z,y,L]);const ie=()=>M(!G),re=N.includes("chat")&&(T.includes("#function_result")||T.includes("#finish_reason_function_call")||T.includes("#function_results_batch")||T.includes("#finish_reason_tool_calls_batch")),ae=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)},se=new S(T),ne=se.data,le=O("LOGBOOK_STRIP_TAGS")?se.content:T,me=X&&O("LOGBOOK_TAG_DEFINITIONS")[X].editable,ce=X&&O("LOGBOOK_TAG_DEFINITIONS")[X].imageSize||void 0;return e(n,{className:G?D.expandedCard:D.card,style:{backgroundColor:O("MESSAGE_HIDE_BAR")?X?O("LOGBOOK_TAG_DEFINITIONS")[X].color:O("APP_HEADER_COLOR")||"#eee":"#eee",maxHeight:!G&&R?`${R}px`:void 0},onClick:N.includes("chat")?e=>{N.includes("chat")&&(e&&e.stopPropagation(),H("/chat?id="+y))}:void 0,children:[!O("MESSAGE_HIDE_BAR")&&t("div",{className:D.rectangle,style:{backgroundColor:X?O("LOGBOOK_TAG_DEFINITIONS")[X].color:O("APP_HEADER_COLOR")||void 0}}),e("div",{className:D.iconButtonRow,children:[Z&&t(l,{className:D.todoSwitch,checked:"done"===W,onChange:(e,t)=>(async e=>{if(!U){Q(!0);try{const t=e?"done":"undone";await L.updateTodoStatus(y,t)&&$(t)}catch(e){console.error("Error updating todo status:",e)}finally{Q(!1)}}})(t.checked),disabled:U||"unknown"===W,label:ee("done"===W?"Done":"Todo")}),me&&P&&t(u,{className:D.htmlButton,onClick:()=>P()}),F&&!me&&N.includes("html")&&t(h,{className:D.htmlButton,onClick:e=>{e.stopPropagation(),F(ae(T))}}),z&&!N.includes("chat")&&G&&t(j,{className:D.headerButton,onClick:ie}),z&&!N.includes("chat")&&!G&&t(f,{className:D.headerButton,onClick:ie})]}),t(m,{image:C?t("img",{className:D.headerImage,src:"app_logo.svg",alt:"User"}):null,header:B?t(c,{style:{width:"50%"},children:t(p,{})}):e("div",{className:D.header,children:[t(w,{weight:"semibold",children:a}),k&&t("span",{title:E||void 0,children:t(w,{weight:"regular",children:k})})]}),description:t(d,{className:D.caption,children:s})}),e("div",{ref:V,className:`${D.content} ${G?"":D.truncated}`,style:{maxHeight:!G&&R?`${R}px`:void 0},children:[q.length>0&&t("div",{className:D.fileList,children:q.map((e=>t(I,{file:e,thumbnailSize:ce,getImageUrl:x.getImageUrl,onClick:()=>{e.contentType.startsWith("image")?H(`/image?id=${y}&file=${e.id}`):x.downloadFile(e)}},e.id)))}),B?e(c,{style:{width:"100%"},children:[t(p,{}),t(p,{}),t(p,{}),t(p,{}),t(p,{})]}):t("div",{className:D.text,children:N.includes("html")?t("iframe",{className:D.iframe,title:"html",srcDoc:ae(T),sandbox:"allow-same-origin allow-scripts"}):N.includes("crm")&&0===Object.keys(ne).length?t(b,{content:re?"*"+ee("Tänker")+"...*":ne?(()=>{const e=new RegExp(`(${te.join("|")})\\s*:\\s*`,"gi");return le.replace(e,((e,t)=>{const o=te.indexOf(t.toUpperCase());-1===o&&console.log("Field not found:",t);return`\n**${-1!==o?oe[o]:t}:** `})).trim()})():T}):t(b,{content:re?"*"+ee("Tänker")+"...*":ne?ne&&Object.keys(ne).length>0?Object.keys(ne).map((e=>{const t=te.indexOf(e.toUpperCase());return`**${-1!==t?oe[t]:e}:** ${ne[e]}\n`})).join("\n"):le:T})})]})]})};export{k as default};
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{makeStyles as a,tokens as s,Card as n,Switch as l,CardHeader as m,Skeleton as c,SkeletonItem as p,Caption1 as d}from"@fluentui/react-components";import{useNavigate as g}from"react-router-dom";import{Edit20Regular as u,FullScreenMaximizeRegular as h,ArrowCollapseAllRegular as f,ArrowExpandAllRegular as j}from"@fluentui/react-icons";import{CodicentService as x}from"../services/codicent.js";import b from"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import{Text as w}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 S from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as O}from"../config/index.js";import"../utils/cacheManager.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"exceljs";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import"./Content.js";import"./Page.js";import"../pages/QrScan.js";import _ from"../hooks/useLocalization.js";import{FileThumbnail as I}from"./FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./AiInput.js";import"./SearchBox.js";import"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const v=a({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:s.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:s.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"}}}),k=({header:a,description:s,timestamp:k,timestampTitle:E,text:T,image:C,tags:N,id:y,fileIds:A,codicentService:L,busy:B,onEdit:P,onShowHtmlPreview:F,maxHeightPx:R})=>{const D=v(),H=g(),[G,M]=o(!1),[z,K]=o(!1),[W,$]=o("unknown"),[U,Q]=o(!1),V=i(null),Y=Object.keys(O("LOGBOOK_TAG_DEFINITIONS")),X=Y.find((e=>N.includes(e)))||(A.length>0?Y.find((e=>"file"===e)):void 0),[q,J]=o([]),Z=N.includes("todo"),{t:ee}=_(),te=["TYPE","CUSTOMER","CONTACT","SALESPERSON","MESSAGE","COMPANY","PHONE","EMAIL","WEBSITE","INFO","FÖRETAG","ROLE","KONTAKT"],oe=[ee("Typ"),ee("Kund"),ee("Kontakt"),ee("Säljare"),ee("Meddelande"),ee("Företag"),ee("Telefon"),ee("E-post"),ee("Hemsida"),ee("Info"),ee("Företag"),ee("Roll"),ee("Kontakt")];r((()=>{Promise.all(A.map((e=>L.getFileInfo(e)))).then((e=>{J(e)}))}),[L,J,A]),r((()=>{const e=()=>{if(V.current){const e=R??100,t=V.current.scrollHeight>e+(q.length>0?-72:0);K(t)}};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[T,q,R]),r((()=>{if(Z){(async()=>{try{const e=await L.getTodoStatus(y);$(e)}catch(e){console.error("Error loading todo status:",e),$("unknown")}})()}}),[Z,y,L]);const ie=()=>M(!G),re=N.includes("chat")&&(T.includes("#function_result")||T.includes("#finish_reason_function_call")||T.includes("#function_results_batch")||T.includes("#finish_reason_tool_calls_batch")),ae=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)},se=new S(T),ne=se.data,le=O("LOGBOOK_STRIP_TAGS")?se.content:T,me=X&&O("LOGBOOK_TAG_DEFINITIONS")[X].editable,ce=X&&O("LOGBOOK_TAG_DEFINITIONS")[X].imageSize||void 0;return e(n,{className:G?D.expandedCard:D.card,style:{backgroundColor:O("MESSAGE_HIDE_BAR")?X?O("LOGBOOK_TAG_DEFINITIONS")[X].color:O("APP_HEADER_COLOR")||"#eee":"#eee",maxHeight:!G&&R?`${R}px`:void 0},onClick:N.includes("chat")?e=>{N.includes("chat")&&(e&&e.stopPropagation(),H("/chat?id="+y))}:void 0,children:[!O("MESSAGE_HIDE_BAR")&&t("div",{className:D.rectangle,style:{backgroundColor:X?O("LOGBOOK_TAG_DEFINITIONS")[X].color:O("APP_HEADER_COLOR")||void 0}}),e("div",{className:D.iconButtonRow,children:[Z&&t(l,{className:D.todoSwitch,checked:"done"===W,onChange:(e,t)=>(async e=>{if(!U){Q(!0);try{const t=e?"done":"undone";await L.updateTodoStatus(y,t)&&$(t)}catch(e){console.error("Error updating todo status:",e)}finally{Q(!1)}}})(t.checked),disabled:U||"unknown"===W,label:ee("done"===W?"Done":"Todo")}),me&&P&&t(u,{className:D.htmlButton,onClick:()=>P()}),F&&!me&&N.includes("html")&&t(h,{className:D.htmlButton,onClick:e=>{e.stopPropagation(),F(ae(T))}}),z&&!N.includes("chat")&&G&&t(f,{className:D.headerButton,onClick:ie}),z&&!N.includes("chat")&&!G&&t(j,{className:D.headerButton,onClick:ie})]}),t(m,{image:C?t("img",{className:D.headerImage,src:"app_logo.svg",alt:"User"}):null,header:B?t(c,{style:{width:"50%"},children:t(p,{})}):e("div",{className:D.header,children:[t(w,{weight:"semibold",children:a}),k&&t("span",{title:E||void 0,children:t(w,{weight:"regular",children:k})})]}),description:t(d,{className:D.caption,children:s})}),e("div",{ref:V,className:`${D.content} ${G?"":D.truncated}`,style:{maxHeight:!G&&R?`${R}px`:void 0},children:[q.length>0&&t("div",{className:D.fileList,children:q.map((e=>t(I,{file:e,thumbnailSize:ce,getImageUrl:x.getImageUrl,onClick:()=>{e.contentType.startsWith("image")?H(`/image?id=${y}&file=${e.id}`):x.downloadFile(e)}},e.id)))}),B?e(c,{style:{width:"100%"},children:[t(p,{}),t(p,{}),t(p,{}),t(p,{}),t(p,{})]}):t("div",{className:D.text,children:N.includes("html")?t("iframe",{className:D.iframe,title:"html",srcDoc:ae(T),sandbox:"allow-same-origin allow-scripts"}):N.includes("crm")&&0===Object.keys(ne).length?t(b,{content:re?"*"+ee("Tänker")+"...*":ne?(()=>{const e=new RegExp(`(${te.join("|")})\\s*:\\s*`,"gi");return le.replace(e,((e,t)=>{const o=te.indexOf(t.toUpperCase());-1===o&&console.log("Field not found:",t);return`\n**${-1!==o?oe[o]:t}:** `})).trim()})():T}):t(b,{content:re?"*"+ee("Tänker")+"...*":ne?ne&&Object.keys(ne).length>0?Object.keys(ne).map((e=>{const t=te.indexOf(e.toUpperCase());return`**${-1!==t?oe[t]:e}:** ${ne[e]}\n`})).join("\n"):le:T})})]})]})};export{k 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{makeStyles as s,Image as a,Input as m,Button as p,Text as n}from"@fluentui/react-components";import{ArrowUndo20Regular as l,Edit20Regular as c}from"@fluentui/react-icons";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import j from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const g=s({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"}}),d=({state:s})=>{const d=g(),{isAuthenticated:u,isLoading:h,user:v,nickname:f}=s.auth,[C,w]=o(),[x,y]=o(!1),[k,I]=o(!1),[S,b]=o(""),[B,M]=o(""),{t:L}=j();r((()=>{s.service.getUserInfo(f).then(w)}),[s.service,f]);const _=()=>{b(C?.name||v?.name||""),M(C?.email||v?.email||""),y(!1),I(!1)},P=async e=>{const t=await s.service.updateUserInfo({nickname:f,name:e.name,email:e.email||""});w(t)};return h?e("div",{children:L("Laddar...")}):u&&v&&t("div",{className:d.container,children:[e(a,{shape:"circular",width:100,src:C?.picture||v.picture,alt:v.name}),t("div",{className:d.properties,children:[e("h2",{children:x?e(i,{children:e(m,{type:"text",value:S,onChange:e=>{b(e.target.value)},contentAfter:e(p,{icon:e(l,{}),size:"small",onClick:_})})}):t(i,{children:[C?.name||v.name,e(p,{className:d.editButton,icon:e(c,{}),size:"small",onClick:()=>{y(!0),b(C?.name||v?.name||"")}})]})}),t(n,{children:[e(i,k?{children:e(m,{type:"text",value:B,onChange:e=>{M(e.target.value)},contentAfter:e(p,{icon:e(l,{}),size:"small",onClick:_})})}:{children:C?.email||v.email}),(x||k)&&e("div",{children:e(p,{className:d.saveButton,appearance:"primary",size:"small",onClick:()=>{y(!1),I(!1),P({...C,name:S,email:B})},children:"Spara"})})]})]})]})};export{d as default};
1
+ import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useState as r,useEffect as o}from"react";import{makeStyles as s,Image as a,Input as m,Button as p,Text as n}from"@fluentui/react-components";import{ArrowUndo20Regular as l,Edit20Regular as c}from"@fluentui/react-icons";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import j from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const g=s({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"}}),d=({state:s})=>{const d=g(),{isAuthenticated:u,isLoading:h,user:v,nickname:f}=s.auth,[C,w]=r(),[y,x]=r(!1),[k,I]=r(!1),[S,b]=r(""),[B,M]=r(""),{t:L}=j();o((()=>{s.service.getUserInfo(f).then(w)}),[s.service,f]);const P=()=>{b(C?.name||v?.name||""),M(C?.email||v?.email||""),x(!1),I(!1)},_=async e=>{const t=await s.service.updateUserInfo({nickname:f,name:e.name,email:e.email||""});w(t)};return h?e("div",{children:L("Laddar...")}):u&&v&&t("div",{className:d.container,children:[e(a,{shape:"circular",width:100,src:C?.picture||v.picture,alt:v.name}),t("div",{className:d.properties,children:[e("h2",{children:y?e(i,{children:e(m,{type:"text",value:S,onChange:e=>{b(e.target.value)},contentAfter:e(p,{icon:e(l,{}),size:"small",onClick:P})})}):t(i,{children:[C?.name||v.name,e(p,{className:d.editButton,icon:e(c,{}),size:"small",onClick:()=>{x(!0),b(C?.name||v?.name||"")}})]})}),t(n,{children:[e(i,k?{children:e(m,{type:"text",value:B,onChange:e=>{M(e.target.value)},contentAfter:e(p,{icon:e(l,{}),size:"small",onClick:P})})}:{children:C?.email||v.email}),(y||k)&&e("div",{children:e(p,{className:d.saveButton,appearance:"primary",size:"small",onClick:()=>{x(!1),I(!1),_({...C,name:S,email:B})},children:"Spara"})})]})]})]})};export{d as default};
@@ -1 +1 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import"./Markdown.js";import"./Textarea.js";import{Button as t}from"./Button.js";import"./CompoundButton.js";import"@fluentui/react-components";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as s,DialogTitle as i,DialogContent as r,DialogActions as p}from"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"react";import"@fluentui/react-icons";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"./Content.js";import"./Page.js";import"../pages/QrScan.js";import"../hooks/useLocalization.js";import"./FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./AiInput.js";import"./SearchBox.js";import"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const a=({open:a,onYes:m,onNo:j,title:n,content:l})=>o(s,{open:a,children:[e(i,{children:n}),e(r,{children:l}),o(p,{children:[e(t,{appearance:"secondary",onClick:j,children:"Nej"}),e(t,{type:"submit",appearance:"primary",onClick:m,children:"Ja"})]})]});export{a as default};
1
+ import{jsxs as o,jsx as t}from"react/jsx-runtime";import"./Markdown.js";import"./Textarea.js";import{Button as e}from"./Button.js";import"./CompoundButton.js";import"@fluentui/react-components";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as i,DialogTitle as r,DialogContent as s,DialogActions as p}from"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"react";import"@fluentui/react-icons";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"./Content.js";import"./Page.js";import"../pages/QrScan.js";import"../hooks/useLocalization.js";import"./FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./AiInput.js";import"./SearchBox.js";import"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const a=({open:a,onYes:m,onNo:j,title:n,content:l})=>o(i,{open:a,children:[t(r,{children:n}),t(s,{children:l}),o(p,{children:[t(e,{appearance:"secondary",onClick:j,children:"Nej"}),t(e,{type:"submit",appearance:"primary",onClick:m,children:"Ja"})]})]});export{a as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t}from"react/jsx-runtime";import{makeStyles as e,shorthands as i,tokens as r}from"@fluentui/react-components";import{Home24Regular as s,MicPulse24Filled as a,MicRecord24Filled as p,Mic24Regular as n,Camera24Regular as m,CameraSwitch24Regular as l}from"@fluentui/react-icons";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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 c}from"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import d from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const j=e({footer:{...i.padding("14px"),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:r.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...i.borderWidth("0")},link:{textDecoration:"none",color:"inherit","&.selected":{border:"none"},"&:hover":{textDecoration:"none"},minWidth:"48px"},buttonText:{fontSize:"12px"}}),g=({onHome:e,onTakePhoto:i,onSwichCamera:g,audio:u,tag:h})=>{const x=j(),{isRecording:C,isSoundCaptured:k,startRecording:b,stopRecording:f}=u,{t:_}=d(),v={backgroundColor:c("APP_HEADER_COLOR")||r.colorBrandBackground,color:c("APP_HEADER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand};return o("footer",{className:x.footer,style:v,children:t("div",{className:x.container,children:[t("div",{className:x.link,onClick:e,children:[o(s,{}),o("p",{className:x.buttonText,children:_("Hem")})]}),t("div",{className:x.link,children:[C&&k&&o(a,{onClick:f}),C&&!k&&o(p,{onClick:f}),!C&&o(n,{onClick:()=>b(h)}),o("p",{className:x.buttonText,children:_("Ljud")})]}),t("div",{className:x.link,onClick:()=>{c("RESTART_AUDIO_ON_TAKE_PHOTO")&&C?(f(),i(),b(h)):i()},children:[o(m,{}),o("p",{className:x.buttonText,children:_("Ta kort")})]}),t("div",{className:x.link,onClick:g,children:[o(l,{}),o("p",{className:x.buttonText,children:_("Byt kamera")})]})]})})};export{g as default};
1
+ import{jsx as o,jsxs as t}from"react/jsx-runtime";import{makeStyles as e,shorthands as i,tokens as r}from"@fluentui/react-components";import{Home24Regular as s,MicPulse24Filled as a,MicRecord24Filled as p,Mic24Regular as n,Camera24Regular as m,CameraSwitch24Regular as l}from"@fluentui/react-icons";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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 c}from"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import d from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const j=e({footer:{...i.padding("14px"),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:r.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...i.borderWidth("0")},link:{textDecoration:"none",color:"inherit","&.selected":{border:"none"},"&:hover":{textDecoration:"none"},minWidth:"48px"},buttonText:{fontSize:"12px"}}),g=({onHome:e,onTakePhoto:i,onSwichCamera:g,audio:u,tag:h})=>{const x=j(),{isRecording:C,isSoundCaptured:k,startRecording:b,stopRecording:f}=u,{t:v}=d(),T={backgroundColor:c("APP_HEADER_COLOR")||r.colorBrandBackground,color:c("APP_HEADER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand};return o("footer",{className:x.footer,style:T,children:t("div",{className:x.container,children:[t("div",{className:x.link,onClick:e,children:[o(s,{}),o("p",{className:x.buttonText,children:v("Hem")})]}),t("div",{className:x.link,children:[C&&k&&o(a,{onClick:f}),C&&!k&&o(p,{onClick:f}),!C&&o(n,{onClick:()=>b(h)}),o("p",{className:x.buttonText,children:v("Ljud")})]}),t("div",{className:x.link,onClick:()=>{c("RESTART_AUDIO_ON_TAKE_PHOTO")&&C?(f(),i(),b(h)):i()},children:[o(m,{}),o("p",{className:x.buttonText,children:v("Ta kort")})]}),t("div",{className:x.link,onClick:g,children:[o(l,{}),o("p",{className:x.buttonText,children:v("Byt kamera")})]})]})})};export{g as default};
@@ -1 +1 @@
1
- import{jsxs as t,jsx as o}from"react/jsx-runtime";import{makeStyles as e,shorthands as s}from"@fluentui/react-components";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import{Button as i}from"./Button.js";import"./CompoundButton.js";import{Title as r}from"./Title.js";import{Text as p}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"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import a from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import m from"../hooks/useAppStyles.js";const n=e({header:{...s.padding("16px"),textAlign:"start",position:"sticky",top:0,zIndex:1e3,alignItems:"center",justifyContent:"space-between",width:"100%",display:"flex"}}),j=({title:e,onNewChat:s,subtitle:j})=>{const l=n(),c=m(),{t:g}=a();return t("header",{className:l.header,children:[e&&o(r,{children:e}),j&&o(p,{size:300,weight:"regular",children:j}),s&&o(i,{className:c.button,appearance:"primary",title:g("Ny chatt"),icon:"ArrowClockwiseRegular",onClick:s})]})};export{j as default};
1
+ import{jsxs as t,jsx as o}from"react/jsx-runtime";import{makeStyles as e,shorthands as s}from"@fluentui/react-components";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import{Button as i}from"./Button.js";import"./CompoundButton.js";import{Title as r}from"./Title.js";import{Text as p}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"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import a from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import m from"../hooks/useAppStyles.js";const n=e({header:{...s.padding("16px"),textAlign:"start",position:"sticky",top:0,zIndex:1e3,alignItems:"center",justifyContent:"space-between",width:"100%",display:"flex"}}),j=({title:e,onNewChat:s,subtitle:j})=>{const l=n(),c=m(),{t:g}=a();return t("header",{className:l.header,children:[e&&o(r,{children:e}),j&&o(p,{size:300,weight:"regular",children:j}),s&&o(i,{className:c.button,appearance:"primary",title:g("Ny chatt"),icon:"ArrowClockwiseRegular",onClick:s})]})};export{j as default};
@@ -1 +1 @@
1
- import{jsxs as o,jsx as t}from"react/jsx-runtime";import{makeStyles as s}from"@fluentui/react-components";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import{Text as e}from"./Text.js";import{Spinner as r}from"./Spinner.js";import"./TextHeader.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import i from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const p=s({typingContainer:{display:"flex",gap:"8px"}}),a=()=>{const s=p(),{t:a}=i();return o("div",{className:s.typingContainer,children:[t(r,{size:"extra-small"}),t(e,{size:400,children:a("Tänker...")})]})};export{a as default};
1
+ import{jsxs as o,jsx as t}from"react/jsx-runtime";import{makeStyles as s}from"@fluentui/react-components";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import{Text as r}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"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import e from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const p=s({typingContainer:{display:"flex",gap:"8px"}}),a=()=>{const s=p(),{t:a}=e();return o("div",{className:s.typingContainer,children:[t(i,{size:"extra-small"}),t(r,{size:400,children:a("Tänker...")})]})};export{a as default};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{forwardRef as e,useState as t,useRef as s,useEffect as r,useImperativeHandle as i}from"react";import{makeStyles as a}from"@fluentui/react-components";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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 p}from"../utils/device.js";import"../node_modules/exceljs/excel.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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"@fluentui/react-icons";import"../services/codicent.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"./Content.js";import"./Page.js";import"../pages/QrScan.js";import"../hooks/useLocalization.js";import"./FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./MessageInput.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./AiInput.js";import"./SearchBox.js";import"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const n=a({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),l=e((({onFileUploaded:e,accept:a,capture:l,multiple:c=!1,onUploading:j,className:g,id:u,codicentService:d},f)=>{const h=n(),[v,w]=t(!1),C=s(null);r((()=>{j(v)}),[v,j]);const y=async(o,e)=>{const t=new FormData;t.append("file",e),w(!0);try{const e=await d.uploadFile(o,t);return w(!1),e}catch(e){return console.error("Upload failed for file:",o,e),w(!1),null}},b=()=>{C.current?.click()};i(f,(()=>({triggerUpload:b})));const S=l&&p();return o("div",{id:u,className:g,children:v?o(m,{"aria-label":"Uploading...",className:h.spinner}):o("input",{ref:C,type:"file",className:h.imageUpload,onChange:async()=>{try{const o=C.current;if(o&&o.files){const t=[];for(let e=0;e<o.files.length;e++){const s=o.files[e],r=s.name.split("\\").pop()||s.name,i=await y(r,s);i&&t.push(i)}t.length>0&&e(t)}}catch(o){console.error("Error uploading files:",o)}},accept:a,multiple:c,...S?{capture:l}:{}})})}));export{l as default};
1
+ import{jsx as o}from"react/jsx-runtime";import{forwardRef as e,useState as t,useRef as s,useEffect as r,useImperativeHandle as i}from"react";import{makeStyles as a}from"@fluentui/react-components";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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 p}from"../utils/device.js";import"exceljs";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.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"@fluentui/react-icons";import"../services/codicent.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"./Content.js";import"./Page.js";import"../pages/QrScan.js";import"../hooks/useLocalization.js";import"./FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"./MessageInput.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./AiInput.js";import"./SearchBox.js";import"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";const n=a({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),l=e((({onFileUploaded:e,accept:a,capture:l,multiple:c=!1,onUploading:j,className:g,id:u,codicentService:d},f)=>{const h=n(),[v,w]=t(!1),C=s(null);r((()=>{j(v)}),[v,j]);const y=async(o,e)=>{const t=new FormData;t.append("file",e),w(!0);try{const e=await d.uploadFile(o,t);return w(!1),e}catch(e){return console.error("Upload failed for file:",o,e),w(!1),null}},b=()=>{C.current?.click()};i(f,(()=>({triggerUpload:b})));const S=l&&p();return o("div",{id:u,className:g,children:v?o(m,{"aria-label":"Uploading...",className:h.spinner}):o("input",{ref:C,type:"file",className:h.imageUpload,onChange:async()=>{try{const o=C.current;if(o&&o.files){const t=[];for(let e=0;e<o.files.length;e++){const s=o.files[e],r=s.name.split("\\").pop()||s.name,i=await y(r,s);i&&t.push(i)}t.length>0&&e(t)}}catch(o){console.error("Error uploading files:",o)}},accept:a,multiple:c,...S?{capture:l}:{}})})}));export{l as default};
@@ -1 +1 @@
1
- import{jsxs as e,Fragment as o,jsx as t}from"react/jsx-runtime";import{useState as s}from"react";import{CombinedPlaceholderDialog as i}from"./CombinedPlaceholderDialog.js";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"@fluentui/react-components";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{useTemplateVariables as r}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";const a=({service:a,children:p})=>{const[l,m]=s(!1),[n,j]=s([]),[c,g]=s([]),[d,u]=s(null),{extractTemplateVariables:h,extractFilePlaceholders:f,replaceTemplateVariables:C,replaceFilePlaceholders:w}=r(a.uploadFile);return e(o,{children:[p((async e=>{u(e);const o=f(e),t=h(e);0!==o.length||0!==t.length?(g(o),j(t),m(!0)):window.location.href=e})),t(i,{open:l,templateVariables:n,filePlaceholders:c,onTemplateVariablesChange:j,onFilePlaceholdersChange:g,onConfirm:async()=>{if(d)try{let e=d;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=C(e,n)),m(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{u(null)}},onCancel:()=>{m(!1),u(null),j([]),g([])},uploadFile:a.uploadFile})]})};export{a as UrlProcessor,a as default};
1
+ import{jsxs as e,Fragment as o,jsx as t}from"react/jsx-runtime";import{useState as i}from"react";import{CombinedPlaceholderDialog as r}from"./CombinedPlaceholderDialog.js";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"@fluentui/react-components";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"@fluentui/react-icons";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{useTemplateVariables as s}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";const a=({service:a,children:p})=>{const[l,m]=i(!1),[n,j]=i([]),[c,g]=i([]),[d,u]=i(null),{extractTemplateVariables:h,extractFilePlaceholders:f,replaceTemplateVariables:C,replaceFilePlaceholders:w}=s(a.uploadFile);return e(o,{children:[p((async e=>{u(e);const o=f(e),t=h(e);0!==o.length||0!==t.length?(g(o),j(t),m(!0)):window.location.href=e})),t(r,{open:l,templateVariables:n,filePlaceholders:c,onTemplateVariablesChange:j,onFilePlaceholdersChange:g,onConfirm:async()=>{if(d)try{let e=d;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=C(e,n)),m(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{u(null)}},onCancel:()=>{m(!1),u(null),j([]),g([])},uploadFile:a.uploadFile})]})};export{a as UrlProcessor,a as default};
@@ -1 +1 @@
1
- import{jsx as o,Fragment as t}from"react/jsx-runtime";import{useMemo as s}from"react";import{MicSparkle24Regular as i,MicSparkle24Filled as e}from"@fluentui/react-icons";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"@fluentui/react-components";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 r from"../utils/withWakeLock.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import p from"../hooks/useAppStyles.js";const a=r(e),m=({voice:e,disabled:m,instructions:n,connectedIcon:j,disconnectedIcon:c,disabledIcon:l})=>{const{isConnected:g,connectConversation:u,disconnectConversation:d,updateInstructions:C}=e,{pointer:f}=p(),h=s((()=>j?r(j):a),[j]),v=c||i,w=async()=>{n&&C(n),await u()};if(m){if(null==l)return o(i,{});if("function"==typeof l){return o(l,{})}return o(t,{children:l})}return g?o(h,{onClick:d,className:f}):o(v,{onClick:w,className:f})};export{m as default};
1
+ import{jsx as o,Fragment as t}from"react/jsx-runtime";import{useMemo as s}from"react";import{MicSparkle24Regular as i,MicSparkle24Filled as e}from"@fluentui/react-icons";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"@fluentui/react-components";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 r from"../utils/withWakeLock.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.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"exceljs";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"./DataMessagePicker.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"./CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import p from"../hooks/useAppStyles.js";const a=r(e),m=({voice:e,disabled:m,instructions:n,connectedIcon:j,disconnectedIcon:c,disabledIcon:l})=>{const{isConnected:g,connectConversation:u,disconnectConversation:d,updateInstructions:C}=e,{pointer:f}=p(),h=s((()=>j?r(j):a),[j]),v=c||i,w=async()=>{n&&C(n),await u()};if(m){if(null==l)return o(i,{});if("function"==typeof l){return o(l,{})}return o(t,{children:l})}return g?o(h,{onClick:d,className:f}):o(v,{onClick:w,className:f})};export{m as default};
@@ -1 +1 @@
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"../components/CompoundButton.js";import"react/jsx-runtime";import"@fluentui/react-components";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"@fluentui/react-icons";import{getConfigValue as i}from"../config/index.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.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"../node_modules/exceljs/excel.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/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";const r=(r,p)=>{const{isAuthenticated:a,getAccessTokenSilently:m,user:c,isLoading:l,logout:g,getAccessTokenWithPopup:u,loginWithRedirect:j,loginWithPopup:P}=r,[d,E]=o(null),[_,T]=o(void 0),[S,C]=o(null),[A,I]=o(""),h=e((()=>new n({API_BASE_URL:i("API_BASE_URL"),PUBSUB_URL:i("PUBSUB_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"),STRIPE_SOURCE:i("STRIPE_SOURCE"),STRIPE_TRIAL_PERIOD_DAYS:i("STRIPE_TRIAL_PERIOD_DAYS"),SUBSCRIPTION_NEEDED:i("SUBSCRIPTION_NEEDED"),USER_PREFIX:i("USER_PREFIX"),ANONYMOUS_TOKEN:i("ANONYMOUS_TOKEN")})),[]);t((()=>{!l&&a&&(async()=>{try{const o=await m({});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: Session expired (login_required)"),E(null);else if(e&&"object"==typeof e&&"error"in e&&"consent_required"===e.error)try{const o=await u();if(!o)return void C("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),C("Samtycke krävs för inloggning. Tillåt popup-fönster och försök igen."),E(null)}else C("Failed to get access token: "+(e.message?.toString()||e.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",e)}})().then((()=>{}))}),[a,u,m,j,l]),t((()=>{if(c&&c.sub&&d&&void 0===_){let o=!0;return(p?.loginFn?p.loginFn(h,c.sub,d):h.loginUser(c.sub,d)).then((e=>{o&&(null===e?T(!1):""===e?C("Kontrollera internetanslutningen och försök igen."):(h.setToken(e),h.getNickname().then(I),T(!0)))})).catch((()=>{o&&(C("Ett fel uppstod. Försök igen senare."),T(!1))})),()=>{o=!1}}}),[c,d,_,h]);const O=s((()=>{h.logout(),E(null),C(null),T(void 0),I(""),g({logoutParams:{returnTo:i("AUTH_REDIRECT_URL")}})}),[h,g]),R=s((async o=>{const e=p?.registerFn?await p.registerFn(h,o,c.email,c.sub,d):await h.registerUser(o,c.email,c.sub,d);return e&&(h.setToken(e),T(!0)),e}),[h,c,d]);t((()=>{h.onUnauthorized=O}),[h]);const N=s((async o=>{try{await P({authorizationParams:{connection:"email",login_hint:o}})}catch(o){console.error("Passwordless login failed:",o),C(`Passwordless login failed: ${o}`)}}),[P]);return e((()=>({isAuthenticated:a,isRegistered:_,accessToken:d,authError:S,isLoading:l,user:c,nickname:A,logout:O,registerUser:R,codicentService:h,loginWithRedirect:j,loginPasswordless:N})),[a,_,d,S,l,c,A,O,R,h,j,N])};export{r as default};
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"../components/CompoundButton.js";import"react/jsx-runtime";import"@fluentui/react-components";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"@fluentui/react-icons";import{getConfigValue as i}from"../config/index.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.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"exceljs";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/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";const r=(r,p)=>{const{isAuthenticated:a,getAccessTokenSilently:m,user:c,isLoading:l,logout:g,getAccessTokenWithPopup:u,loginWithRedirect:j,loginWithPopup:P}=r,[E,d]=o(null),[_,T]=o(void 0),[S,C]=o(null),[A,I]=o(""),h=e((()=>new n({API_BASE_URL:i("API_BASE_URL"),PUBSUB_URL:i("PUBSUB_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"),STRIPE_SOURCE:i("STRIPE_SOURCE"),STRIPE_TRIAL_PERIOD_DAYS:i("STRIPE_TRIAL_PERIOD_DAYS"),SUBSCRIPTION_NEEDED:i("SUBSCRIPTION_NEEDED"),USER_PREFIX:i("USER_PREFIX"),ANONYMOUS_TOKEN:i("ANONYMOUS_TOKEN")})),[]);t((()=>{!l&&a&&(async()=>{try{const o=await m({});console.debug("CODICENT: ACCESS TOKEN",o),d(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: Session expired (login_required)"),d(null);else if(e&&"object"==typeof e&&"error"in e&&"consent_required"===e.error)try{const o=await u();if(!o)return void C("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),d(o)}catch(o){console.warn("CODICENT: Failed to get access token with popup",o),C("Samtycke krävs för inloggning. Tillåt popup-fönster och försök igen."),d(null)}else C("Failed to get access token: "+(e.message?.toString()||e.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",e)}})().then((()=>{}))}),[a,u,m,j,l]),t((()=>{if(c&&c.sub&&E&&void 0===_){let o=!0;return(p?.loginFn?p.loginFn(h,c.sub,E):h.loginUser(c.sub,E)).then((e=>{o&&(null===e?T(!1):""===e?C("Kontrollera internetanslutningen och försök igen."):(h.setToken(e),h.getNickname().then(I),T(!0)))})).catch((()=>{o&&(C("Ett fel uppstod. Försök igen senare."),T(!1))})),()=>{o=!1}}}),[c,E,_,h]);const O=s((()=>{h.logout(),d(null),C(null),T(void 0),I(""),g({logoutParams:{returnTo:i("AUTH_REDIRECT_URL")}})}),[h,g]),R=s((async o=>{const e=p?.registerFn?await p.registerFn(h,o,c.email,c.sub,E):await h.registerUser(o,c.email,c.sub,E);return e&&(h.setToken(e),T(!0)),e}),[h,c,E]);t((()=>{h.onUnauthorized=O}),[h]);const N=s((async o=>{try{await P({authorizationParams:{connection:"email",login_hint:o}})}catch(o){console.error("Passwordless login failed:",o),C(`Passwordless login failed: ${o}`)}}),[P]);return e((()=>({isAuthenticated:a,isRegistered:_,accessToken:E,authError:S,isLoading:l,user:c,nickname:A,logout:O,registerUser:R,codicentService:h,loginWithRedirect:j,loginPasswordless:N})),[a,_,E,S,l,c,A,O,R,h,j,N])};export{r as default};