codicent-app-sdk 0.4.1 → 0.4.3

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 (160) hide show
  1. package/dist/cjs/bootstrap.js +1 -1
  2. package/dist/cjs/components/AiInput.js +1 -1
  3. package/dist/cjs/components/AudioIcon.js +1 -1
  4. package/dist/cjs/components/BulkUploadDialog.js +1 -1
  5. package/dist/cjs/components/Button.js +1 -1
  6. package/dist/cjs/components/ChatInput.js +1 -1
  7. package/dist/cjs/components/ChatMessage.js +1 -1
  8. package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
  9. package/dist/cjs/components/CompoundButton.js +1 -1
  10. package/dist/cjs/components/Content.js +1 -1
  11. package/dist/cjs/components/Dialog.js +1 -1
  12. package/dist/cjs/components/FileThumbnail.js +1 -1
  13. package/dist/cjs/components/Footer.js +1 -1
  14. package/dist/cjs/components/GenericJsonRenderer.js +1 -1
  15. package/dist/cjs/components/Header.js +1 -1
  16. package/dist/cjs/components/HtmlView.js +1 -1
  17. package/dist/cjs/components/Input.js +1 -1
  18. package/dist/cjs/components/Label.js +1 -1
  19. package/dist/cjs/components/LanguageSelector.js +1 -1
  20. package/dist/cjs/components/ListView.js +1 -1
  21. package/dist/cjs/components/Markdown.js +1 -1
  22. package/dist/cjs/components/MessageInput.js +1 -1
  23. package/dist/cjs/components/MessageItem.js +1 -1
  24. package/dist/cjs/components/OfflineMessage.js +1 -1
  25. package/dist/cjs/components/Page.js +1 -1
  26. package/dist/cjs/components/Profile.js +1 -1
  27. package/dist/cjs/components/Prompt.js +1 -1
  28. package/dist/cjs/components/QrCodeDialog.js +1 -1
  29. package/dist/cjs/components/QrScanner.js +1 -1
  30. package/dist/cjs/components/RecordModal.d.ts.map +1 -1
  31. package/dist/cjs/components/RecordModal.js +1 -1
  32. package/dist/cjs/components/SearchBox.js +1 -1
  33. package/dist/cjs/components/SnapFooter.js +1 -1
  34. package/dist/cjs/components/Spinner.js +1 -1
  35. package/dist/cjs/components/Text.js +1 -1
  36. package/dist/cjs/components/TextHeader.js +1 -1
  37. package/dist/cjs/components/Textarea.js +1 -1
  38. package/dist/cjs/components/Title.js +1 -1
  39. package/dist/cjs/components/TypingIndicator.js +1 -1
  40. package/dist/cjs/components/UploadFile.js +1 -1
  41. package/dist/cjs/components/UrlProcessor.js +1 -1
  42. package/dist/cjs/components/VoiceIcon.js +1 -1
  43. package/dist/cjs/hooks/useAppStyles.js +1 -1
  44. package/dist/cjs/hooks/useAuthState.js +1 -1
  45. package/dist/cjs/hooks/useCodicentState.js +1 -1
  46. package/dist/cjs/hooks/useToaster.js +1 -1
  47. package/dist/cjs/node_modules/@fluentui/keyboard-keys/lib/keys.js +1 -1
  48. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/Calendar/calendarNavigationIcons.js +1 -1
  49. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
  50. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Option/useOption.js +1 -1
  51. package/dist/cjs/node_modules/@fluentui/react-datepicker-compat/lib/components/DatePicker/useDatePicker.js +1 -1
  52. package/dist/cjs/node_modules/@fluentui/react-field/lib/contexts/FieldContext.js +1 -1
  53. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js +1 -1
  54. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/OverridesContext/OverridesContext.js +1 -1
  55. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ProviderContext/ProviderContext.js +1 -1
  56. package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ThemeClassNameContext/ThemeClassNameContext.js +1 -1
  57. package/dist/cjs/node_modules/@fluentui/react-tabster/lib/focus/constants.js +1 -1
  58. package/dist/cjs/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePicker.js +1 -1
  59. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js +1 -1
  60. package/dist/cjs/node_modules/@griffel/core/constants.esm.js +1 -1
  61. package/dist/cjs/node_modules/@griffel/react/TextDirectionContext.esm.js +1 -1
  62. package/dist/cjs/node_modules/tabster/dist/tabster.esm.js +17 -21
  63. package/dist/cjs/pages/AppFrame.js +1 -1
  64. package/dist/cjs/pages/Chat.js +1 -1
  65. package/dist/cjs/pages/Compose.js +1 -1
  66. package/dist/cjs/pages/CrmPage.js +1 -1
  67. package/dist/cjs/pages/CrmPagePersistent.js +1 -1
  68. package/dist/cjs/pages/FormAccept.js +1 -1
  69. package/dist/cjs/pages/FormInvite.js +1 -1
  70. package/dist/cjs/pages/HtmlViewer.js +1 -1
  71. package/dist/cjs/pages/ImageView.js +1 -1
  72. package/dist/cjs/pages/Login.js +1 -1
  73. package/dist/cjs/pages/Purchase.js +1 -1
  74. package/dist/cjs/pages/QrScan.js +1 -1
  75. package/dist/cjs/pages/Sales.js +1 -1
  76. package/dist/cjs/pages/SchemaEditor.js +1 -1
  77. package/dist/cjs/pages/Search.js +1 -1
  78. package/dist/cjs/pages/Snap.js +1 -1
  79. package/dist/esm/bootstrap.js +1 -1
  80. package/dist/esm/components/AiInput.js +1 -1
  81. package/dist/esm/components/AudioIcon.js +1 -1
  82. package/dist/esm/components/BulkUploadDialog.js +1 -1
  83. package/dist/esm/components/Button.js +1 -1
  84. package/dist/esm/components/ChatInput.js +1 -1
  85. package/dist/esm/components/ChatMessage.js +1 -1
  86. package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
  87. package/dist/esm/components/CompoundButton.js +1 -1
  88. package/dist/esm/components/Content.js +1 -1
  89. package/dist/esm/components/Dialog.js +1 -1
  90. package/dist/esm/components/FileThumbnail.js +1 -1
  91. package/dist/esm/components/Footer.js +1 -1
  92. package/dist/esm/components/GenericJsonRenderer.js +1 -1
  93. package/dist/esm/components/Header.js +1 -1
  94. package/dist/esm/components/HtmlView.js +1 -1
  95. package/dist/esm/components/Input.js +1 -1
  96. package/dist/esm/components/Label.js +1 -1
  97. package/dist/esm/components/LanguageSelector.js +1 -1
  98. package/dist/esm/components/ListView.js +1 -1
  99. package/dist/esm/components/Markdown.js +1 -1
  100. package/dist/esm/components/MessageInput.js +1 -1
  101. package/dist/esm/components/MessageItem.js +1 -1
  102. package/dist/esm/components/OfflineMessage.js +1 -1
  103. package/dist/esm/components/Page.js +1 -1
  104. package/dist/esm/components/Profile.js +1 -1
  105. package/dist/esm/components/Prompt.js +1 -1
  106. package/dist/esm/components/QrCodeDialog.js +1 -1
  107. package/dist/esm/components/QrScanner.js +1 -1
  108. package/dist/esm/components/RecordModal.d.ts.map +1 -1
  109. package/dist/esm/components/RecordModal.js +1 -1
  110. package/dist/esm/components/SearchBox.js +1 -1
  111. package/dist/esm/components/SnapFooter.js +1 -1
  112. package/dist/esm/components/Spinner.js +1 -1
  113. package/dist/esm/components/Text.js +1 -1
  114. package/dist/esm/components/TextHeader.js +1 -1
  115. package/dist/esm/components/Textarea.js +1 -1
  116. package/dist/esm/components/Title.js +1 -1
  117. package/dist/esm/components/TypingIndicator.js +1 -1
  118. package/dist/esm/components/UploadFile.js +1 -1
  119. package/dist/esm/components/UrlProcessor.js +1 -1
  120. package/dist/esm/components/VoiceIcon.js +1 -1
  121. package/dist/esm/hooks/useAppStyles.js +1 -1
  122. package/dist/esm/hooks/useAuthState.js +1 -1
  123. package/dist/esm/hooks/useCodicentState.js +1 -1
  124. package/dist/esm/hooks/useToaster.js +1 -1
  125. package/dist/esm/node_modules/@fluentui/keyboard-keys/lib/keys.js +1 -1
  126. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/Calendar/calendarNavigationIcons.js +1 -1
  127. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
  128. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Listbox/useListbox.js +1 -1
  129. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Option/useOption.js +1 -1
  130. package/dist/esm/node_modules/@fluentui/react-combobox/lib/contexts/useListboxContextValues.js +1 -1
  131. package/dist/esm/node_modules/@fluentui/react-datepicker-compat/lib/components/DatePicker/useDatePicker.js +1 -1
  132. package/dist/esm/node_modules/@fluentui/react-field/lib/contexts/FieldContext.js +1 -1
  133. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js +1 -1
  134. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/OverridesContext/OverridesContext.js +1 -1
  135. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ProviderContext/ProviderContext.js +1 -1
  136. package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ThemeClassNameContext/ThemeClassNameContext.js +1 -1
  137. package/dist/esm/node_modules/@fluentui/react-tabster/lib/focus/constants.js +1 -1
  138. package/dist/esm/node_modules/@fluentui/react-tabster/lib/hooks/useArrowNavigationGroup.js +1 -1
  139. package/dist/esm/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePicker.js +1 -1
  140. package/dist/esm/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js +1 -1
  141. package/dist/esm/node_modules/@griffel/core/constants.esm.js +1 -1
  142. package/dist/esm/node_modules/@griffel/react/TextDirectionContext.esm.js +1 -1
  143. package/dist/esm/node_modules/tabster/dist/tabster.esm.js +17 -21
  144. package/dist/esm/pages/AppFrame.js +1 -1
  145. package/dist/esm/pages/Chat.js +1 -1
  146. package/dist/esm/pages/Compose.js +1 -1
  147. package/dist/esm/pages/CrmPage.js +1 -1
  148. package/dist/esm/pages/CrmPagePersistent.js +1 -1
  149. package/dist/esm/pages/FormAccept.js +1 -1
  150. package/dist/esm/pages/FormInvite.js +1 -1
  151. package/dist/esm/pages/HtmlViewer.js +1 -1
  152. package/dist/esm/pages/ImageView.js +1 -1
  153. package/dist/esm/pages/Login.js +1 -1
  154. package/dist/esm/pages/Purchase.js +1 -1
  155. package/dist/esm/pages/QrScan.js +1 -1
  156. package/dist/esm/pages/Sales.js +1 -1
  157. package/dist/esm/pages/SchemaEditor.js +1 -1
  158. package/dist/esm/pages/Search.js +1 -1
  159. package/dist/esm/pages/Snap.js +1 -1
  160. package/package.json +2 -2
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("react-router-dom");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js");var o=require("../components/Text.js");require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js");var s=require("../components/CombinedPlaceholderDialog.js");require("../components/ChatMessage.js"),require("../components/Header.js"),require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../components/Content.js"),require("../components/Page.js"),require("./QrScan.js");var i=require("../hooks/useLocalization.js");require("../components/FileThumbnail.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var n=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js");var a=require("../components/MessageInput.js");require("../components/UploadFile.js");var l=require("../components/SnapFooter.js");require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/QrCodeDialog.js"),require("../components/QrScanner.js"),require("../components/OfflineMessage.js"),require("../components/LanguageSelector.js"),require("../components/ListView.js"),require("../components/RecordModal.js"),require("../components/BulkUploadDialog.js");const c=require("../node_modules/@griffel/react/makeStyles.esm.js").makeStyles({container:{position:"relative",height:"100vh",width:"100vw",overflow:"auto"},flashOverlay:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"transparent",transition:"background-color 0.2s ease-out",pointerEvents:"none",zIndex:3},video:{position:"absolute",top:0,left:0,width:"100%",height:"100%",objectFit:"cover",zIndex:1},canvas:{display:"none"},bottomControls:{position:"fixed",bottom:"100px",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",zIndex:2,boxSizing:"border-box"},controlContainer:{width:"100%",maxWidth:"600px",position:"relative"},sendButton:{position:"absolute",right:"10px",bottom:"10px",width:"50px",height:"50px",borderRadius:"50%",backgroundColor:"#0078d4",color:"white",border:"none",cursor:"pointer",display:"flex",justifyContent:"center",alignItems:"center"},topControls:{position:"fixed",top:"20px",width:"100%",display:"flex",justifyContent:"space-between",alignItems:"center",zIndex:2,padding:"0 10px",boxSizing:"border-box"},backButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},input:{padding:"5px",width:"200px",fontSize:"larger",backgroundColor:"#fff8"},bottomButtons:{position:"fixed",bottom:"0px",width:"100%",display:"flex",justifyContent:"space-around",alignItems:"center",zIndex:2,boxSizing:"border-box"},iconButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},centerText:{position:"fixed",top:"30%",left:"50%",transform:"translate(-50%, -50%)",zIndex:2,textAlign:"center"}});exports.default=({state:u,audio:d})=>{const p=c(),{service:m}=u,[h,g]=t.useState(null),[j,x]=t.useState(!0),f=t.useRef(null),q=t.useRef(null),[w]=r.useSearchParams(),b=w.get("extra"),v=w.get("template"),[y,C]=t.useState(""),[S]=t.useState("log"),k=t.useMemo((()=>new Audio("/audio/camera.mp3")),[]),[I,F]=t.useState(!1),T=r.useNavigate(),{t:z}=i.default(),{extractTemplateVariables:M}=n.useTemplateVariables(m.uploadFile),[P,V]=t.useState(M(v||"")),[E,$]=t.useState(P.length>0),[B,_]=t.useState(""),[N,D]=t.useState(100),A=t.useCallback((()=>P.map((e=>`#${e.value}`)).join(" ")),[P]);t.useEffect((()=>{const e=A();_(`${b?" #"+b:""}${e.length>0?" "+e:""}`.trim())}),[P,b,A]),t.useEffect((()=>{if(window.visualViewport){const e=()=>{const e=window.visualViewport?window.innerHeight-window.visualViewport.height:0;D(e>150?e+20:100)};return window.visualViewport.addEventListener("resize",e),e(),()=>{window.visualViewport&&window.visualViewport.removeEventListener("resize",e)}}}),[]);const H=async e=>{try{const t=new FormData;t.append("file",e);const r=await m.uploadFile(e.name,t),o=A(),s=`${S?" #"+S:""}${b?" #"+b:""}${o.length>0?" "+o:""} #photo #file:${r}`;await m.sendMessage(s)}catch(e){alert(z("Failed to send image:")+" "+e)}};return t.useEffect((()=>()=>{h&&h.getTracks().forEach((e=>e.stop()))}),[h]),e.jsxs("div",{className:p.container,children:[e.jsx("div",{className:p.flashOverlay,style:{backgroundColor:I?"#ffffff":"transparent"}}),e.jsx("video",{ref:f,autoPlay:!0,playsInline:!0,className:p.video}),e.jsx("canvas",{ref:q,width:"640",height:"480",className:p.canvas}),!h&&e.jsx(o.Text,{weight:"semibold",size:400,className:p.centerText,children:z("Klicka på Byt kamera för att starta!")}),e.jsx("div",{className:p.bottomControls,style:{bottom:`${N}px`},children:e.jsx("div",{className:p.controlContainer,children:e.jsx(a.default,{onSend:async()=>{if(""===y.trim())return;const e=A(),t=`${S?" #"+S:""}${b?" #"+b:""}${e.length>0?" "+e:""} ${y}`;try{await m.sendMessage(t),C("")}catch(e){alert(z("Failed to send message: ")+e)}},rows:4,onChange:C})})}),e.jsx("div",{className:p.bottomButtons,children:e.jsx(l.default,{audio:d,onHome:()=>T("/"),onTakePhoto:()=>{const e=q.current,t=f.current;if(e&&t){e.width=t.videoWidth,e.height=t.videoHeight;const r=e.getContext("2d");r&&(k.play(),F(!0),setTimeout((()=>F(!1)),100),r.drawImage(t,0,0,e.width,e.height),e.toBlob((e=>{if(e){const t=new File([e],"snapshot.png",{type:"image/png"});H(t)}})))}},onSwichCamera:()=>{x((e=>!e)),(async()=>{h&&h.getTracks().forEach((e=>e.stop()));const e={video:{facingMode:j?"user":"environment"},audio:!1};try{const t=await navigator.mediaDevices.getUserMedia(e);g(t),f.current&&(f.current.srcObject=t,f.current.play())}catch(e){console.error("Error accessing the camera: ",e),e instanceof Error?alert(z("Error accessing the camera:")+" "+e.message):alert(z("Error accessing the camera"))}})()},tag:B})}),e.jsx(s.CombinedPlaceholderDialog,{open:E,templateVariables:P,filePlaceholders:[],onTemplateVariablesChange:V,onFilePlaceholdersChange:()=>{},onConfirm:()=>$(!1),onCancel:()=>{$(!1),T(-1)},uploadFile:m.uploadFile})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("@fluentui/react-components"),o=require("react-router-dom");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js");var s=require("../components/Text.js");require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js");var i=require("../components/CombinedPlaceholderDialog.js");require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons"),require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../components/Content.js"),require("../components/Page.js"),require("./QrScan.js");var n=require("../hooks/useLocalization.js");require("../components/FileThumbnail.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var a=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js");var c=require("../components/MessageInput.js");require("../components/UploadFile.js");var l=require("../components/SnapFooter.js");require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/QrCodeDialog.js"),require("../components/QrScanner.js"),require("../components/OfflineMessage.js"),require("../components/LanguageSelector.js"),require("../components/ListView.js"),require("../components/RecordModal.js"),require("../components/BulkUploadDialog.js");const u=r.makeStyles({container:{position:"relative",height:"100vh",width:"100vw",overflow:"auto"},flashOverlay:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"transparent",transition:"background-color 0.2s ease-out",pointerEvents:"none",zIndex:3},video:{position:"absolute",top:0,left:0,width:"100%",height:"100%",objectFit:"cover",zIndex:1},canvas:{display:"none"},bottomControls:{position:"fixed",bottom:"100px",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",zIndex:2,boxSizing:"border-box"},controlContainer:{width:"100%",maxWidth:"600px",position:"relative"},sendButton:{position:"absolute",right:"10px",bottom:"10px",width:"50px",height:"50px",borderRadius:"50%",backgroundColor:"#0078d4",color:"white",border:"none",cursor:"pointer",display:"flex",justifyContent:"center",alignItems:"center"},topControls:{position:"fixed",top:"20px",width:"100%",display:"flex",justifyContent:"space-between",alignItems:"center",zIndex:2,padding:"0 10px",boxSizing:"border-box"},backButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},input:{padding:"5px",width:"200px",fontSize:"larger",backgroundColor:"#fff8"},bottomButtons:{position:"fixed",bottom:"0px",width:"100%",display:"flex",justifyContent:"space-around",alignItems:"center",zIndex:2,boxSizing:"border-box"},iconButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},centerText:{position:"fixed",top:"30%",left:"50%",transform:"translate(-50%, -50%)",zIndex:2,textAlign:"center"}});exports.default=({state:r,audio:d})=>{const p=u(),{service:m}=r,[h,g]=t.useState(null),[j,q]=t.useState(!0),x=t.useRef(null),f=t.useRef(null),[w]=o.useSearchParams(),b=w.get("extra"),v=w.get("template"),[C,y]=t.useState(""),[S]=t.useState("log"),k=t.useMemo((()=>new Audio("/audio/camera.mp3")),[]),[I,F]=t.useState(!1),T=o.useNavigate(),{t:z}=n.default(),{extractTemplateVariables:M}=a.useTemplateVariables(m.uploadFile),[P,V]=t.useState(M(v||"")),[E,$]=t.useState(P.length>0),[B,_]=t.useState(""),[N,D]=t.useState(100),A=t.useCallback((()=>P.map((e=>`#${e.value}`)).join(" ")),[P]);t.useEffect((()=>{const e=A();_(`${b?" #"+b:""}${e.length>0?" "+e:""}`.trim())}),[P,b,A]),t.useEffect((()=>{if(window.visualViewport){const e=()=>{const e=window.visualViewport?window.innerHeight-window.visualViewport.height:0;D(e>150?e+20:100)};return window.visualViewport.addEventListener("resize",e),e(),()=>{window.visualViewport&&window.visualViewport.removeEventListener("resize",e)}}}),[]);const H=async e=>{try{const t=new FormData;t.append("file",e);const r=await m.uploadFile(e.name,t),o=A(),s=`${S?" #"+S:""}${b?" #"+b:""}${o.length>0?" "+o:""} #photo #file:${r}`;await m.sendMessage(s)}catch(e){alert(z("Failed to send image:")+" "+e)}};return t.useEffect((()=>()=>{h&&h.getTracks().forEach((e=>e.stop()))}),[h]),e.jsxs("div",{className:p.container,children:[e.jsx("div",{className:p.flashOverlay,style:{backgroundColor:I?"#ffffff":"transparent"}}),e.jsx("video",{ref:x,autoPlay:!0,playsInline:!0,className:p.video}),e.jsx("canvas",{ref:f,width:"640",height:"480",className:p.canvas}),!h&&e.jsx(s.Text,{weight:"semibold",size:400,className:p.centerText,children:z("Klicka på Byt kamera för att starta!")}),e.jsx("div",{className:p.bottomControls,style:{bottom:`${N}px`},children:e.jsx("div",{className:p.controlContainer,children:e.jsx(c.default,{onSend:async()=>{if(""===C.trim())return;const e=A(),t=`${S?" #"+S:""}${b?" #"+b:""}${e.length>0?" "+e:""} ${C}`;try{await m.sendMessage(t),y("")}catch(e){alert(z("Failed to send message: ")+e)}},rows:4,onChange:y})})}),e.jsx("div",{className:p.bottomButtons,children:e.jsx(l.default,{audio:d,onHome:()=>T("/"),onTakePhoto:()=>{const e=f.current,t=x.current;if(e&&t){e.width=t.videoWidth,e.height=t.videoHeight;const r=e.getContext("2d");r&&(k.play(),F(!0),setTimeout((()=>F(!1)),100),r.drawImage(t,0,0,e.width,e.height),e.toBlob((e=>{if(e){const t=new File([e],"snapshot.png",{type:"image/png"});H(t)}})))}},onSwichCamera:()=>{q((e=>!e)),(async()=>{h&&h.getTracks().forEach((e=>e.stop()));const e={video:{facingMode:j?"user":"environment"},audio:!1};try{const t=await navigator.mediaDevices.getUserMedia(e);g(t),x.current&&(x.current.srcObject=t,x.current.play())}catch(e){console.error("Error accessing the camera: ",e),e instanceof Error?alert(z("Error accessing the camera:")+" "+e.message):alert(z("Error accessing the camera"))}})()},tag:B})}),e.jsx(i.CombinedPlaceholderDialog,{open:E,templateVariables:P,filePlaceholders:[],onTemplateVariablesChange:V,onFilePlaceholdersChange:()=>{},onConfirm:()=>$(!1),onCancel:()=>{$(!1),T(-1)},uploadFile:m.uploadFile})]})};
@@ -1 +1 @@
1
- import e from"react";import{createRoot as t}from"react-dom/client";import{HashRouter as r}from"react-router-dom";import{Auth0Provider as o}from"./node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{initCodicentApp as n}from"./config/index.js";import{createLightTheme as i}from"./node_modules/@fluentui/tokens/lib/utils/createLightTheme.js";import{FluentProvider as a}from"./node_modules/@fluentui/react-provider/lib/components/FluentProvider/FluentProvider.js";const s={10:"#000000",20:"#10141C",30:"#172033",40:"#1E2E4B",50:"#233C64",60:"#284A7E",70:"#2D5A9A",80:"#3069B6",90:"#3779D1",100:"#4F89E1",110:"#6799EE",120:"#80A9F8",130:"#99BAFF",140:"#B5CBFF",150:"#CFDCFF",160:"#E7EEFF"};function l(l){let u=null,c=!1;if(!l.name)throw new Error("createCodicentApp: 'name' is required");if(!l.apiBaseUrl)throw new Error("createCodicentApp: 'apiBaseUrl' is required");const m={API_BASE_URL:l.apiBaseUrl,APP_NAME:l.name,APP_PREFIX:l.appPrefix||l.name.toLowerCase().replace(/\s+/g,"-"),USER_PREFIX:l.userPrefix||"users",DEFAULT_LANGUAGE:l.defaultLanguage||"en",TRANSLATIONS:l.translations,CHAT_INSTRUCTIONS:l.chatInstructions,REALTIME_VOICE_INSTRUCTIONS:l.voiceInstructions,MODULE_SALES:l.modules?.sales??!1,MODULE_VOICE:l.modules?.voice??!1,MODULE_FORMS:l.modules?.forms??!1,MODULE_SEARCH:l.modules?.search??!1,MODULE_QR:l.modules?.qr??!1,MODULE_SNAP:l.modules?.snap??!1,AUTH0_DOMAIN:l.auth0?.domain||"auth.codicent.com",AUTH0_CLIENT_ID:l.auth0?.clientId||"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_AUDIENCE:l.auth0?.audience||"https://codicent.com/api",AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",STRIPE_PUBLIC_KEY:l.stripe?.publicKey||"",STRIPE_PRICE_ID:l.stripe?.priceId||"",STRIPE_TRIAL_PERIOD_DAYS:l.stripe?.trialDays||0,SUBSCRIPTION_NEEDED:!!l.stripe?.publicKey,APP_HEADER_COLOR:l.theme?.headerColor,APP_FOOTER_COLOR:l.theme?.footerColor,BUTTON_BACKGROUND_COLOR:l.theme?.buttonColor,APP_ICON_URL:l.theme?.logoUrl,APP_HEADER_ICON_URL:l.theme?.logoUrl,APP_CONFIG:{apps:{[l.appPrefix||l.name]:{buttons:l.buttons||[],tasks:[],voiceInstructions:l.voiceInstructions||"",chatInstructions:l.chatInstructions||"",listDefinitions:l.listDefinitions||{}}}}};n(m);const d={...i(s),fontFamilyBase:"'Segoe UI', Roboto, 'Helvetica Neue', sans-serif"};return{render(n){if(c)return console.warn("createCodicentApp: App is already mounted. Call unmount() first."),u;const i="string"==typeof n?document.querySelector(n):n;if(!i)throw new Error(`createCodicentApp: Could not find container: ${n}`);return u=t(i),u.render(e.createElement(e.StrictMode,null,e.createElement(o,{domain:m.AUTH0_DOMAIN,clientId:m.AUTH0_CLIENT_ID,authorizationParams:{redirect_uri:window.location.origin,audience:m.AUTH0_AUDIENCE,scope:m.AUTH0_PROVIDER_SCOPE,ui_locales:m.DEFAULT_LANGUAGE},cacheLocation:"localstorage",useRefreshTokens:!0},e.createElement(a,{theme:d},e.createElement(r,null,e.createElement((()=>e.createElement("div",{style:{padding:"20px",fontFamily:"system-ui, sans-serif",maxWidth:"600px",margin:"40px auto"}},e.createElement("h1",null,`Welcome to ${l.name}`),e.createElement("p",null,"Your Codicent app is configured and ready."),e.createElement("p",null,"To use the full app UI, import and render your App component directly."),e.createElement("h2",null,"Configuration:"),e.createElement("pre",{style:{background:"#f5f5f5",padding:"10px",borderRadius:"4px",overflow:"auto"}},JSON.stringify({name:l.name,apiBaseUrl:l.apiBaseUrl,buttons:l.buttons?.length||0,modules:l.modules},null,2)))))))))),c=!0,u},unmount(){u&&(u.unmount(),u=null,c=!1)},getConfig:()=>l}}export{l as createCodicentApp};
1
+ import e from"react";import{createRoot as t}from"react-dom/client";import{HashRouter as r}from"react-router-dom";import{Auth0Provider as o}from"./node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{createLightTheme as n,FluentProvider as a}from"@fluentui/react-components";import{initCodicentApp as i}from"./config/index.js";const s={10:"#000000",20:"#10141C",30:"#172033",40:"#1E2E4B",50:"#233C64",60:"#284A7E",70:"#2D5A9A",80:"#3069B6",90:"#3779D1",100:"#4F89E1",110:"#6799EE",120:"#80A9F8",130:"#99BAFF",140:"#B5CBFF",150:"#CFDCFF",160:"#E7EEFF"};function l(l){let u=null,c=!1;if(!l.name)throw new Error("createCodicentApp: 'name' is required");if(!l.apiBaseUrl)throw new Error("createCodicentApp: 'apiBaseUrl' is required");const m={API_BASE_URL:l.apiBaseUrl,APP_NAME:l.name,APP_PREFIX:l.appPrefix||l.name.toLowerCase().replace(/\s+/g,"-"),USER_PREFIX:l.userPrefix||"users",DEFAULT_LANGUAGE:l.defaultLanguage||"en",TRANSLATIONS:l.translations,CHAT_INSTRUCTIONS:l.chatInstructions,REALTIME_VOICE_INSTRUCTIONS:l.voiceInstructions,MODULE_SALES:l.modules?.sales??!1,MODULE_VOICE:l.modules?.voice??!1,MODULE_FORMS:l.modules?.forms??!1,MODULE_SEARCH:l.modules?.search??!1,MODULE_QR:l.modules?.qr??!1,MODULE_SNAP:l.modules?.snap??!1,AUTH0_DOMAIN:l.auth0?.domain||"auth.codicent.com",AUTH0_CLIENT_ID:l.auth0?.clientId||"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_AUDIENCE:l.auth0?.audience||"https://codicent.com/api",AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",STRIPE_PUBLIC_KEY:l.stripe?.publicKey||"",STRIPE_PRICE_ID:l.stripe?.priceId||"",STRIPE_TRIAL_PERIOD_DAYS:l.stripe?.trialDays||0,SUBSCRIPTION_NEEDED:!!l.stripe?.publicKey,APP_HEADER_COLOR:l.theme?.headerColor,APP_FOOTER_COLOR:l.theme?.footerColor,BUTTON_BACKGROUND_COLOR:l.theme?.buttonColor,APP_ICON_URL:l.theme?.logoUrl,APP_HEADER_ICON_URL:l.theme?.logoUrl,APP_CONFIG:{apps:{[l.appPrefix||l.name]:{buttons:l.buttons||[],tasks:[],voiceInstructions:l.voiceInstructions||"",chatInstructions:l.chatInstructions||"",listDefinitions:l.listDefinitions||{}}}}};i(m);const E={...n(s),fontFamilyBase:"'Segoe UI', Roboto, 'Helvetica Neue', sans-serif"};return{render(n){if(c)return console.warn("createCodicentApp: App is already mounted. Call unmount() first."),u;const i="string"==typeof n?document.querySelector(n):n;if(!i)throw new Error(`createCodicentApp: Could not find container: ${n}`);return u=t(i),u.render(e.createElement(e.StrictMode,null,e.createElement(o,{domain:m.AUTH0_DOMAIN,clientId:m.AUTH0_CLIENT_ID,authorizationParams:{redirect_uri:window.location.origin,audience:m.AUTH0_AUDIENCE,scope:m.AUTH0_PROVIDER_SCOPE,ui_locales:m.DEFAULT_LANGUAGE},cacheLocation:"localstorage",useRefreshTokens:!0},e.createElement(a,{theme:E},e.createElement(r,null,e.createElement((()=>e.createElement("div",{style:{padding:"20px",fontFamily:"system-ui, sans-serif",maxWidth:"600px",margin:"40px auto"}},e.createElement("h1",null,`Welcome to ${l.name}`),e.createElement("p",null,"Your Codicent app is configured and ready."),e.createElement("p",null,"To use the full app UI, import and render your App component directly."),e.createElement("h2",null,"Configuration:"),e.createElement("pre",{style:{background:"#f5f5f5",padding:"10px",borderRadius:"4px",overflow:"auto"}},JSON.stringify({name:l.name,apiBaseUrl:l.apiBaseUrl,buttons:l.buttons?.length||0,modules:l.modules},null,2)))))))))),c=!0,u},unmount(){u&&(u.unmount(),u=null,c=!1)},getConfig:()=>l}}export{l as createCodicentApp};
@@ -1 +1 @@
1
- import{jsxs as o,jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as i,useEffect as r}from"react";import"./Markdown.js";import"./Textarea.js";import{Button as s}from"./Button.js";import"./CompoundButton.js";import{Text as a}from"./Text.js";import{Spinner as m}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../services/codicent.js";import p from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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 l from"../hooks/useLocalization.js";import"./FileThumbnail.js";import"react-dom/client";import"react-router-dom";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"./SearchBox.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{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{useId as c}from"../node_modules/@fluentui/react-utilities/lib/hooks/useId.js";import{Combobox as j}from"../node_modules/@fluentui/react-combobox/lib/components/Combobox/Combobox.js";import{Option as d}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const g=n({root:{display:"grid",gridTemplateRows:"repeat(1fr)",justifyItems:"start",gap:"2px",maxWidth:"400px",padding:"8px"},combo:{width:"100%"},horizonal:{display:"flex",flexDirection:"row",verticalAlign:"middle"}}),u=n=>{const{id:u,options:f,title:h,placeholder:b,onChangeValue:x,value:w="",prompt:C,service:v}=n,y=c(u+"-combo"),[S,_]=i([...f||[]]),[k,T]=i(),[z,I]=i(!1),L=g(),{t:M}=l();r((()=>{x(k)}),[k,x]);return o("div",{id:u,className:L.root,children:[o("div",{className:L.horizonal,children:[e(a,{size:400,id:y,children:h}),C&&o(t,{children:[!z&&e(s,{icon:"WandRegular",title:M("Autoskapa"),style:{fontSize:16,marginLeft:6},onClick:async()=>{I(!0),await(async o=>{if(o){const e=await v.chat(o);if(e){const o=new p(e.content).content;x(o)}}})(C),I(!1)},appearance:"transparent",size:"small"}),z&&e(m,{size:"extra-small",style:{marginLeft:12},children:M("Arbetar...")})]})]}),o(j,{className:L.combo,"aria-labelledby":y,freeform:!0,placeholder:b||M("Välj..."),onChange:o=>{const e=o.target.value;T(e);const t=(f||[]).filter((o=>0===o.toLowerCase().indexOf(e.toLowerCase())));_(t)},onOptionSelect:(o,e)=>{e.optionText&&(f||[]).includes(e.optionText);T(e.optionText)},size:"large",value:w,children:[k?e(d,{text:k,children:M("Sök efter ")+k},"freeform"):null,S.map((o=>e(d,{children:o},o)))]})]})};export{u as default};
1
+ import{jsxs as o,jsx as t,Fragment as e}from"react/jsx-runtime";import{useState as i,useEffect as r}from"react";import{makeStyles as s,useId as a,Combobox as p,Option as m}from"@fluentui/react-components";import"./Markdown.js";import"./Textarea.js";import{Button as l}from"./Button.js";import"./CompoundButton.js";import{Text as n}from"./Text.js";import{Spinner as c}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 j 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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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 d from"../hooks/useLocalization.js";import"./FileThumbnail.js";import"react-dom/client";import"react-router-dom";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"./SearchBox.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";const g=s({root:{display:"grid",gridTemplateRows:"repeat(1fr)",justifyItems:"start",gap:"2px",maxWidth:"400px",padding:"8px"},combo:{width:"100%"},horizonal:{display:"flex",flexDirection:"row",verticalAlign:"middle"}}),u=s=>{const{id:u,options:f,title:h,placeholder:x,onChangeValue:w,value:v="",prompt:b,service:C}=s,y=a(u+"-combo"),[S,T]=i([...f||[]]),[k,z]=i(),[L,M]=i(!1),_=g(),{t:F}=d();r((()=>{w(k)}),[k,w]);return o("div",{id:u,className:_.root,children:[o("div",{className:_.horizonal,children:[t(n,{size:400,id:y,children:h}),b&&o(e,{children:[!L&&t(l,{icon:"WandRegular",title:F("Autoskapa"),style:{fontSize:16,marginLeft:6},onClick:async()=>{M(!0),await(async o=>{if(o){const t=await C.chat(o);if(t){const o=new j(t.content).content;w(o)}}})(b),M(!1)},appearance:"transparent",size:"small"}),L&&t(c,{size:"extra-small",style:{marginLeft:12},children:F("Arbetar...")})]})]}),o(p,{className:_.combo,"aria-labelledby":y,freeform:!0,placeholder:x||F("Välj..."),onChange:o=>{const t=o.target.value;z(t);const e=(f||[]).filter((o=>0===o.toLowerCase().indexOf(t.toLowerCase())));T(e)},onOptionSelect:(o,t)=>{t.optionText&&(f||[]).includes(t.optionText);z(t.optionText)},size:"large",value:v,children:[k?t(m,{text:k,children:F("Sök efter ")+k},"freeform"):null,S.map((o=>t(m,{children:o},o)))]})]})};export{u as default};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./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 t 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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import s from"../hooks/useAppStyles.js";import{Mic24Regular as i,MicPulse24Filled as r,MicRecord24Filled as e}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";const p=t((({isSoundCaptured:t,stopRecording:i})=>{const{pointer:p}=s();return o(t?r:e,{onClick:i,className:p})})),a=({audio:t,disabled:r})=>{const{isRecording:e,isSoundCaptured:a,startRecording:m,stopRecording:n}=t,{pointer:j}=s();return r?o(i,{}):e?o(p,{isSoundCaptured:a,stopRecording:n}):o(i,{onClick:()=>m(""),className:j})};export{a as default};
1
+ import{jsx as o}from"react/jsx-runtime";import{Mic24Regular as t,MicPulse24Filled as s,MicRecord24Filled as i}from"@fluentui/react-icons";import"react";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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import e from"../hooks/useAppStyles.js";const p=r((({isSoundCaptured:t,stopRecording:r})=>{const{pointer:p}=e();return o(t?s:i,{onClick:r,className:p})})),a=({audio:s,disabled:i})=>{const{isRecording:r,isSoundCaptured:a,startRecording:m,stopRecording:n}=s,{pointer:j}=e();return i?o(t,{}):r?o(p,{isSoundCaptured:a,stopRecording:n}):o(t,{onClick:()=>m(""),className:j})};export{a as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{Spinner as r}from"./Spinner.js";import n from"../hooks/useLocalization.js";import{Button as l}from"./Button.js";import{useState as i,useRef as t,useEffect as a,useCallback as s}from"react";import{makeStyles as d}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as c}from"../node_modules/@griffel/core/index.esm.js";import{tokens as p}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Dialog as m}from"../node_modules/@fluentui/react-dialog/lib/components/Dialog/Dialog.js";import{DialogSurface as u}from"../node_modules/@fluentui/react-dialog/lib/components/DialogSurface/DialogSurface.js";import{DialogBody as f}from"../node_modules/@fluentui/react-dialog/lib/components/DialogBody/DialogBody.js";import{DialogTitle as g}from"../node_modules/@fluentui/react-dialog/lib/components/DialogTitle/DialogTitle.js";import{DialogContent as h}from"../node_modules/@fluentui/react-dialog/lib/components/DialogContent/DialogContent.js";import{MessageBar as D}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js";import{DialogActions as k}from"../node_modules/@fluentui/react-dialog/lib/components/DialogActions/DialogActions.js";const b=d({dropZone:{...c.border("2px","dashed",p.colorNeutralStroke2),...c.borderRadius(p.borderRadiusMedium),...c.padding("2rem"),textAlign:"center",backgroundColor:p.colorNeutralBackground1,cursor:"pointer",transition:"all 0.2s ease-in-out","&:hover":{backgroundColor:p.colorNeutralBackground1Hover}},dropZoneActive:{...c.border("2px","dashed",p.colorBrandBackground),backgroundColor:p.colorBrandBackground2},dropZoneText:{color:p.colorNeutralForeground2,fontSize:p.fontSizeBase300,marginBottom:"1rem"},fileInput:{display:"none"},fileList:{fontSize:"0.8rem",color:p.colorNeutralForeground3,marginTop:"0.5rem"}}),j=d=>{const[c,p]=i(""),[j,v]=i(!1),[B,y]=i(""),[C,x]=i(!1),[_,N]=i([]),$=b(),S=t(null),{hidden:A,onDismiss:T,project:z,sendMessage:U,onUploaded:Z,service:E,title:P,description:F,dropText:L}=d,{t:M}=n();a((()=>{A&&(N([]),p(""),v(!1),y(""),x(!1),S.current&&(S.current.value=""))}),[A]);const w=s((async e=>{0!==e.length&&(N(e),p(""))}),[]),I=s((()=>{try{if(S.current?.files){const e=Array.from(S.current.files);w(e)}}catch{p(M("Error selecting files"))}}),[w,M]),O=s((e=>{e.preventDefault(),e.stopPropagation(),x(!0)}),[]),R=s((e=>{e.preventDefault(),e.stopPropagation(),x(!1)}),[]),H=s((e=>{e.preventDefault(),e.stopPropagation()}),[]),q=s((e=>{e.preventDefault(),e.stopPropagation(),x(!1);const o=Array.from(e.dataTransfer.files);w(o)}),[w]),G=s((()=>{S.current?.click()}),[]);return e(m,{open:!A,onOpenChange:(e,o)=>!o.open&&T(),children:e(u,{children:o(f,{children:[e(g,{children:P||M("Bulk Upload")}),o(h,{children:[e("p",{children:F||M("Drag and drop files here or click to select files")}),o("div",{className:`${$.dropZone} ${C?$.dropZoneActive:""}`,onDragEnter:O,onDragLeave:R,onDragOver:H,onDrop:q,onClick:G,children:[e("div",{className:$.dropZoneText,children:C?M("Drop files here..."):_.length>0?M(`${_.length} ${1===_.length?"file":"files"} selected`):L||M("Drag and drop files here or click to select")}),!C&&_.length>0&&e("div",{className:$.fileList,children:_.map(((o,r)=>e("div",{children:o.name},r)))})]}),e("input",{ref:S,className:$.fileInput,title:"Upload",type:"file",name:"files",multiple:!0,onChange:I}),j&&e(r,{size:"large",children:M("Uploading...")}),j&&o("p",{children:[M("Uploading")," ",B]}),""!==c&&e(D,{intent:"error",children:c})]}),o(k,{children:[e(l,{onClick:T,children:M("Cancel")}),e(l,{disabled:0===_.length||j,onClick:async()=>{if(0!==_.length){v(!0),p("");for(const e of _)try{const o=new FormData;o.append("file",e),y(e.name);const r=await E.uploadFile(e.name,o);if(!r){p(M("Error uploading file"));continue}const n=d.tags?d.tags.map((e=>`#${e}`)).join(" "):"#index #summarize",l=`@${z} ${n}\n\n${e.name}\n#file:${r}\n`;console.log("uploading file: "+l);if(!await U(l)){p(M("Error sending file"));continue}}catch(e){console.log(e),p(M("Error uploading file"))}v(!1),Z&&Z(),T()}else p(M("Please select files to upload"))},appearance:"primary",children:M("Upload")})]})]})})})};export{j as default};
1
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{makeStyles as o,shorthands as n,tokens as l,Dialog as i,DialogSurface as t,DialogBody as a,DialogTitle as c,DialogContent as d,MessageBar as s,DialogActions as p}from"@fluentui/react-components";import{Spinner as u}from"./Spinner.js";import f from"../hooks/useLocalization.js";import{Button as g}from"./Button.js";import{useState as m,useRef as h,useEffect as k,useCallback as v}from"react";const D=o({dropZone:{...n.border("2px","dashed",l.colorNeutralStroke2),...n.borderRadius(l.borderRadiusMedium),...n.padding("2rem"),textAlign:"center",backgroundColor:l.colorNeutralBackground1,cursor:"pointer",transition:"all 0.2s ease-in-out","&:hover":{backgroundColor:l.colorNeutralBackground1Hover}},dropZoneActive:{...n.border("2px","dashed",l.colorBrandBackground),backgroundColor:l.colorBrandBackground2},dropZoneText:{color:l.colorNeutralForeground2,fontSize:l.fontSizeBase300,marginBottom:"1rem"},fileInput:{display:"none"},fileList:{fontSize:"0.8rem",color:l.colorNeutralForeground3,marginTop:"0.5rem"}}),B=o=>{const[n,l]=m(""),[B,x]=m(!1),[y,C]=m(""),[N,$]=m(!1),[b,j]=m([]),z=D(),U=h(null),{hidden:Z,onDismiss:A,project:E,sendMessage:P,onUploaded:S,service:T,title:F,description:L,dropText:w}=o,{t:I}=f();k((()=>{Z&&(j([]),l(""),x(!1),C(""),$(!1),U.current&&(U.current.value=""))}),[Z]);const M=v((async e=>{0!==e.length&&(j(e),l(""))}),[]),O=v((()=>{try{if(U.current?.files){const e=Array.from(U.current.files);M(e)}}catch{l(I("Error selecting files"))}}),[M,I]),R=v((e=>{e.preventDefault(),e.stopPropagation(),$(!0)}),[]),H=v((e=>{e.preventDefault(),e.stopPropagation(),$(!1)}),[]),q=v((e=>{e.preventDefault(),e.stopPropagation()}),[]),G=v((e=>{e.preventDefault(),e.stopPropagation(),$(!1);const r=Array.from(e.dataTransfer.files);M(r)}),[M]),J=v((()=>{U.current?.click()}),[]);return e(i,{open:!Z,onOpenChange:(e,r)=>!r.open&&A(),children:e(t,{children:r(a,{children:[e(c,{children:F||I("Bulk Upload")}),r(d,{children:[e("p",{children:L||I("Drag and drop files here or click to select files")}),r("div",{className:`${z.dropZone} ${N?z.dropZoneActive:""}`,onDragEnter:R,onDragLeave:H,onDragOver:q,onDrop:G,onClick:J,children:[e("div",{className:z.dropZoneText,children:N?I("Drop files here..."):b.length>0?I(`${b.length} ${1===b.length?"file":"files"} selected`):w||I("Drag and drop files here or click to select")}),!N&&b.length>0&&e("div",{className:z.fileList,children:b.map(((r,o)=>e("div",{children:r.name},o)))})]}),e("input",{ref:U,className:z.fileInput,title:"Upload",type:"file",name:"files",multiple:!0,onChange:O}),B&&e(u,{size:"large",children:I("Uploading...")}),B&&r("p",{children:[I("Uploading")," ",y]}),""!==n&&e(s,{intent:"error",children:n})]}),r(p,{children:[e(g,{onClick:A,children:I("Cancel")}),e(g,{disabled:0===b.length||B,onClick:async()=>{if(0!==b.length){x(!0),l("");for(const e of b)try{const r=new FormData;r.append("file",e),C(e.name);const n=await T.uploadFile(e.name,r);if(!n){l(I("Error uploading file"));continue}const i=o.tags?o.tags.map((e=>`#${e}`)).join(" "):"#index #summarize",t=`@${E} ${i}\n\n${e.name}\n#file:${n}\n`;console.log("uploading file: "+t);if(!await P(t)){l(I("Error sending file"));continue}}catch(e){console.log(e),l(I("Error uploading file"))}x(!1),S&&S(),A()}else l(I("Please select files to upload"))},appearance:"primary",children:I("Upload")})]})]})})})};export{B as default};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{makeStyles as o}from"../node_modules/@griffel/react/makeStyles.esm.js";import{DismissRegular as i,CopyRegular as n,ChevronRightFilled as r}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";import{ShareRegular as s}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-4.js";import{SignOut24Regular as u,SlideText24Regular as l}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js";import{Payment24Regular as t}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-11.js";import{QuestionCircle24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-13.js";import{SendFilled as m}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{AttachRegular as a,CameraRegular as d,AddRegular as f,ArrowClockwiseRegular as g}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js";import{ImageRegular as h,LocationRegular as p,LocationFilled as R}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-2.js";import{WandRegular as b}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-5.js";import{ArrowLeft24Regular as j}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js";import{Button as _}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{mergeClasses as k}from"../node_modules/@griffel/core/mergeClasses.esm.js";const C=o({button:{}}),I={DismissRegular:e(i,{}),CopyRegular:e(n,{}),ShareRegular:e(s,{}),SignOut24Regular:e(u,{}),Payment24Regular:e(t,{}),SlideText24Regular:e(l,{}),QuestionCircle24Regular:e(c,{}),SendFilled:e(m,{}),AttachRegular:e(a,{}),ImageRegular:e(h,{}),CameraRegular:e(d,{}),LocationRegular:e(p,{}),LocationFilled:e(R,{}),AddRegular:e(f,{}),ChevronRightFilled:e(r,{}),ArrowClockwiseRegular:e(g,{}),WandRegular:e(b,{}),ArrowLeft24Regular:e(j,{})},S=({children:o,className:i,icon:n,image:r,...s})=>{const u=C();return e(_,{className:k(i,u.button),icon:n?{children:I[n]}:r?{children:r}:void 0,...s,children:o})};export{S as Button};
1
+ import{jsx as e}from"react/jsx-runtime";import{makeStyles as r,Button as a,mergeClasses as l}from"@fluentui/react-components";import{DismissRegular as t,CopyRegular as i,ShareRegular as o,SignOut24Regular as n,Payment24Regular as u,SlideText24Regular as c,QuestionCircle24Regular as g,SendFilled as R,AttachRegular as m,ImageRegular as s,CameraRegular as d,LocationRegular as h,LocationFilled as f,AddRegular as p,ChevronRightFilled as C,ArrowClockwiseRegular as A,WandRegular as S,ArrowLeft24Regular as w}from"@fluentui/react-icons";const x=r({button:{}}),F={DismissRegular:e(t,{}),CopyRegular:e(i,{}),ShareRegular:e(o,{}),SignOut24Regular:e(n,{}),Payment24Regular:e(u,{}),SlideText24Regular:e(c,{}),QuestionCircle24Regular:e(g,{}),SendFilled:e(R,{}),AttachRegular:e(m,{}),ImageRegular:e(s,{}),CameraRegular:e(d,{}),LocationRegular:e(h,{}),LocationFilled:e(f,{}),AddRegular:e(p,{}),ChevronRightFilled:e(C,{}),ArrowClockwiseRegular:e(A,{}),WandRegular:e(S,{}),ArrowLeft24Regular:e(w,{})},L=({children:r,className:t,icon:i,image:o,...n})=>{const u=x();return e(a,{className:l(t,u.button),icon:i?{children:F[i]}:o?{children:o}:void 0,...n,children:r})};export{L as Button};
@@ -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{FileThumbnail as a}from"./FileThumbnail.js";import s from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"./Markdown.js";import{Textarea as l}from"./Textarea.js";import"./Button.js";import"./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 n}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"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import p from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import m from"../hooks/useAppStyles.js";import{makeStyles as c}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Button as d}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{Spinner as u}from"../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js";import{SendRegular as g,SendFilled as f}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{mergeClasses as j}from"../node_modules/@griffel/core/mergeClasses.esm.js";import{tokens as h}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{AddRegular as b}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js";const _=c({inputContainer:{display:"flex",flexDirection:"column",padding:"8px",width:"100%",position:"relative",gap:"8px"},textareaWrapper:{position:"relative",width:"100%",display:"flex",flexDirection:"column"},actionButtonRow:{position:"absolute",left:"8px",bottom:"8px",right:"8px",zIndex:1,display:"flex",justifyContent:"space-between",alignItems:"center"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px 0",maxWidth:"100%",boxSizing:"border-box",gap:"4px",minHeight:"72px",backgroundColor:h.colorNeutralBackground2,borderRadius:h.borderRadiusMedium,"&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:h.colorNeutralStroke1,borderRadius:"3px"}},hiddenInput:{display:"none"},button:{color:h.colorNeutralForeground2,"&:hover":{color:h.colorBrandBackground,backgroundColor:"transparent"}}}),x=({onSend:c,disableSend:h,onSelectFiles:x,getImageUrl:S,getFileInfo:k,codicent:v,defaultText:w,rows:T,noMemory:y,selectAll:C,id:D})=>{const N=_(),[B,F]=s("chatInput-"+v,""),I=o(null),[O,E]=i([]),[P,A]=i([]),[H,U]=i(!1),[L,M]=i([]),{t:R}=p(),W=m();r((()=>{w&&F(w)}),[F,w]),r((()=>{!0===y&&F("")}),[y,F]);const z=()=>{if(""===B.trim()&&0===L.length)return;const e=O.length>0?" #"+O.join(" #"):"",t=P.length>0?"\n#file:"+P.join("\n#file:"):"";c(e+B+t),F(""),E([]),A([]),M([])};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&&x){U(!0);try{const e=await x(t),o=await Promise.all(e.map((e=>k(e))));A((t=>[...t,...e])),M((e=>[...e,...o]))}catch(e){console.error("Failed to upload files",e)}finally{U(!1),I.current&&(I.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),L.length>0&&t("div",{className:N.fileList,children:L.map((e=>t(a,{file:e,getImageUrl:S,onDelete:()=>{return t=e.id,A((e=>e.filter((e=>e!==t)))),void M((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(),x))try{U(!0);const e=new DataTransfer;e.items.add(o);const t=await x(e.files),i=await Promise.all(t.map((e=>k(e))));A((e=>[...e,...t])),M((e=>[...e,...i]))}catch(e){console.error("Failed to upload pasted image",e)}finally{U(!1)}}},children:[t(l,{size:"large",id:D||"chat-input",placeholder:R(n("APP_CHAT_TEXT_PLACEHOLDER")||"Skriv ditt meddelande här..."),value:B,onChange:e=>F(e.target.value),onKeyDown:e=>{h||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),z())},autoFocus:!1,rows:T||4,onFocus:e=>{if(!0===C){e.target.select()}}}),e("div",{className:N.actionButtonRow,children:[t("div",{children:!n("HIDE_CHAT_ADD_FILE_BUTTON")&&x&&t(d,{appearance:"subtle",size:"small",title:R("Lägg till fil"),icon:t(H?u:b,{}),onClick:()=>I.current?.click(),className:N.button})}),t(d,{appearance:n("SHOW_SEND_BUTTON_TEXT")?"primary":"subtle",size:n("SHOW_SEND_BUTTON_TEXT")?"small":"large",title:R("Skicka"),disabled:h,icon:""===B.trim()&&0===L.length?t(g,{}):t(f,{}),onClick:z,className:n("SEND_BUTTON_ROUND_BACKGROUND")?j(W.roundButton,N.button):n("SHOW_SEND_BUTTON_TEXT")?void 0:N.button,children:n("SHOW_SEND_BUTTON_TEXT")&&t("span",{children:R("Skicka")})})]})]})]})};export{x 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"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";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:y,noMemory:k,selectAll:C,id:D})=>{const N=x(),[B,F]=g("chatInput-"+T,""),I=o(null),[O,E]=i([]),[P,A]=i([]),[H,U]=i(!1),[L,M]=i([]),{t:R}=h(),W=b();r((()=>{_&&F(_)}),[F,_]),r((()=>{!0===k&&F("")}),[k,F]);const z=()=>{if(""===B.trim()&&0===L.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([]),A([]),M([])};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){U(!0);try{const e=await v(t),o=await Promise.all(e.map((e=>S(e))));A((t=>[...t,...e])),M((e=>[...e,...o]))}catch(e){console.error("Failed to upload files",e)}finally{U(!1),I.current&&(I.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),L.length>0&&t("div",{className:N.fileList,children:L.map((e=>t(u,{file:e,getImageUrl:w,onDelete:()=>{return t=e.id,A((e=>e.filter((e=>e!==t)))),void M((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{U(!0);const e=new DataTransfer;e.items.add(o);const t=await v(e.files),i=await Promise.all(t.map((e=>S(e))));A((e=>[...e,...t])),M((e=>[...e,...i]))}catch(e){console.error("Failed to upload pasted image",e)}finally{U(!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:y||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(H?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===L.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"react";import"../services/codicent.js";import o from"./Markdown.js";import"./Textarea.js";import{Button as s}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 r from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as i}from"../config/index.js";import"../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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import{makeStyles as p}from"../node_modules/@griffel/react/makeStyles.esm.js";import{mergeClasses as n}from"../node_modules/@griffel/core/mergeClasses.esm.js";import{tokens as m}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Text as l}from"../node_modules/@fluentui/react-text/lib/components/Text/Text.js";import{ChannelRegular as c}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const d=p({message:{display:"flex",marginBottom:"16px",webkitUserSelect:"text",userSelect:"text"},user:{justifyContent:"flex-end"},bot:{justifyContent:"flex-start"},messageContent:{maxWidth:"80%",padding:"12px 16px",borderRadius:"16px",fontSize:"1rem",lineHeight:"1.4",whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"auto"},userMessage:{borderTopRightRadius:"0"},botMessage:{borderTopLeftRadius:"0"},newMessage:{animation:"$fadeIn 0.5s ease-in-out"}}),u=({sender:p,content:u,isNew:g,children:j,showSuggestions:f,onSuggestionClicked:h})=>{const C=d(),{t:_}=a();let x=[];if("bot"===p&&u.includes("#suggested_questions")){const e=u.split("#suggested_questions");u=e[0],x=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const b=new r(u);let w=b.content;"user"===p&&b.content.includes("---")&&(w=b.content.split("---")[0]);const S=b.content.startsWith("Error code: ")?_("Ett fel uppstod 😟 => starta en ny chatt"):null;return e("div",{className:n(C.message,"user"===p?C.user:C.bot),children:t("div",{className:n(C.messageContent,"user"===p?C.userMessage:C.botMessage,g&&C.newMessage),style:{backgroundColor:"user"===p?i("CHAT_USER_BACKGROUND_COLOR")||m.colorBrandBackground:i("CHAT_BOT_BACKGROUND_COLOR")||m.colorBrandBackground2,color:"user"===p?i("CHAT_USER_TEXT_COLOR")||m.colorNeutralForegroundInverted:i("CHAT_BOT_TEXT_COLOR")||m.colorNeutralForeground1},children:[t(l,{size:400,children:[S,!S&&e(o,{content:w}),b.files.length>0&&e(c,{}),f&&x&&x.length>0&&e("div",{style:{marginTop:"8px",display:"flex",gap:"8px",flexWrap:"wrap"},children:x.map(((t,o)=>e(s,{size:"small",shape:"circular",onClick:()=>h?.(t),style:{textAlign:"left"},children:t},o)))})]}),j]})})};export{u 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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";const d=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"}}),g=({sender:o,content:g,isNew:u,children:j,showSuggestions:f,onSuggestionClicked:h})=>{const C=d(),{t:w}=c();let x=[];if("bot"===o&&g.includes("#suggested_questions")){const e=g.split("#suggested_questions");g=e[0],x=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const _=new m(g);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,u&&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)))})]}),j]})})};export{g as default};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as i}from"./Textarea.js";import{Button as r}from"./Button.js";import"./CompoundButton.js";import{Text as t}from"./Text.js";import"./Spinner.js";import{Label as a}from"./Label.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as s,DialogTitle as l,DialogContent as p,DialogActions as m}from"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import n from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import{makeStyles as c}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as d}from"../node_modules/@griffel/core/index.esm.js";import{tokens as j}from"../node_modules/@fluentui/tokens/lib/tokens.js";const g=c({container:{display:"flex",flexDirection:"column",...d.gap("12px")},section:{display:"flex",flexDirection:"column",...d.gap("8px")},field:{display:"flex",flexDirection:"column",...d.gap("4px")},fileItem:{display:"flex",alignItems:"center",...d.gap("8px")},label:{fontWeight:j.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:j.colorNeutralBackground1,boxShadow:j.shadow16},dialogBody:{backgroundColor:"transparent"}}),u=({open:c,templateVariables:d,filePlaceholders:j,onTemplateVariablesChange:u,onFilePlaceholdersChange:f,onConfirm:h,onCancel:x,uploadFile:v})=>{const b=g(),{t:y}=n();return e(s,{open:c,children:[o(l,{children:y("Fyll i information")}),o(p,{children:e("div",{className:b.container,children:[d.length>0&&o("div",{className:b.section,children:d.map(((r,t)=>e("div",{className:b.field,children:[o(a,{className:b.label,children:r.name}),o(i,{className:b.textarea,value:r.value,onChange:e=>{const o=[...d];o[t].value=e.target.value,u(o)}})]},t)))}),j.length>0&&o("div",{className:b.section,children:j.map(((i,a)=>e("div",{className:b.fileItem,children:[o(t,{weight:"semibold",children:i.description}),o(r,{appearance:"primary",onClick:()=>(async e=>{const o=document.createElement("input");o.type="file";const i=await new Promise((e=>{o.onchange=o=>e(o.target.files),o.click()}));if(i&&i.length>0){const o=i[0],r=new FormData;r.append("file",o);const t=await v(o.name,r),a=[...j];a[e].fileId=t,f(a)}})(a),children:i.fileId?y("Fil vald"):y("Välj fil")})]},a)))})]})}),e(m,{children:[o(r,{appearance:"secondary",onClick:x,children:y("Avbryt")}),o(r,{appearance:"primary",onClick:h,children:y("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 n,DialogTitle as m,DialogContent as c,DialogActions as d}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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";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 b=g(),{t:C}=j();return e(n,{open:i,children:[o(m,{children:C("Fyll i information")}),o(c,{children:e("div",{className:b.container,children:[t.length>0&&o("div",{className:b.section,children:t.map(((i,r)=>e("div",{className:b.field,children:[o(l,{className:b.label,children:i.name}),o(a,{className:b.textarea,value:i.value,onChange:e=>{const o=[...t];o[r].value=e.target.value,u(o)}})]},r)))}),r.length>0&&o("div",{className:b.section,children:r.map(((i,t)=>e("div",{className:b.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?C("Fil vald"):C("Välj fil")})]},t)))})]})}),e(d,{children:[o(s,{appearance:"secondary",onClick:x,children:C("Avbryt")}),o(s,{appearance:"primary",onClick:f,children:C("OK")})]})]})};export{u as CombinedPlaceholderDialog};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{makeStyles as e}from"../node_modules/@griffel/react/makeStyles.esm.js";import{CompoundButton as n}from"../node_modules/@fluentui/react-button/lib/components/CompoundButton/CompoundButton.js";import{mergeClasses as i}from"../node_modules/@griffel/core/mergeClasses.esm.js";import{DismissRegular as r,CopyRegular as u,ChevronRightFilled as t}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";import{ShareRegular as s}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-4.js";import{SignOut24Regular as l,SlideText24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js";import{Payment24Regular as m}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-11.js";import{QuestionCircle24Regular as d}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-13.js";import{SendFilled as a}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{AttachRegular as f,CameraRegular as g,AddRegular as p,ArrowClockwiseRegular as h}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js";import{ImageRegular as R,LocationRegular as j,LocationFilled as _}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-2.js";import{WandRegular as b}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-5.js";const k=e({compoundButton:{}}),C={DismissRegular:o(r,{}),CopyRegular:o(u,{}),ShareRegular:o(s,{}),SignOut24Regular:o(l,{}),Payment24Regular:o(m,{}),SlideText24Regular:o(c,{}),QuestionCircle24Regular:o(d,{}),SendFilled:o(a,{}),AttachRegular:o(f,{}),ImageRegular:o(R,{}),CameraRegular:o(g,{}),LocationRegular:o(j,{}),LocationFilled:o(_,{}),AddRegular:o(p,{}),ChevronRightFilled:o(t,{}),ArrowClockwiseRegular:o(h,{}),WandRegular:o(b,{})},y=({children:e,className:r,icon:u,image:t,secondaryContent:s,...l})=>{const c=k(),m="string"==typeof s?{children:s}:s;return o(n,{className:i(r,c.compoundButton),icon:u?{children:C[u]}:t?{children:t}:void 0,secondaryContent:m,...l,children:e})};export{y as CompoundButton};
1
+ import{jsx as e}from"react/jsx-runtime";import{makeStyles as r,CompoundButton as o,mergeClasses as n}from"@fluentui/react-components";import{DismissRegular as t,CopyRegular as a,ShareRegular as l,SignOut24Regular as i,Payment24Regular as u,SlideText24Regular as c,QuestionCircle24Regular as d,SendFilled as g,AttachRegular as m,ImageRegular as s,CameraRegular as R,LocationRegular as p,LocationFilled as h,AddRegular as C,ChevronRightFilled as f,ArrowClockwiseRegular as y,WandRegular as S}from"@fluentui/react-icons";const x=r({compoundButton:{}}),A={DismissRegular:e(t,{}),CopyRegular:e(a,{}),ShareRegular:e(l,{}),SignOut24Regular:e(i,{}),Payment24Regular:e(u,{}),SlideText24Regular:e(c,{}),QuestionCircle24Regular:e(d,{}),SendFilled:e(g,{}),AttachRegular:e(m,{}),ImageRegular:e(s,{}),CameraRegular:e(R,{}),LocationRegular:e(p,{}),LocationFilled:e(h,{}),AddRegular:e(C,{}),ChevronRightFilled:e(f,{}),ArrowClockwiseRegular:e(y,{}),WandRegular:e(S,{})},B=({children:r,className:t,icon:a,image:l,secondaryContent:i,...u})=>{const c=x(),d="string"==typeof i?{children:i}:i;return e(o,{className:n(t,c.compoundButton),icon:a?{children:A[a]}:l?{children:l}:void 0,secondaryContent:d,...u,children:r})};export{B as CompoundButton};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{makeStyles as t}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as r}from"../node_modules/@griffel/core/index.esm.js";const i=t({container:{display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"start",height:"100%",...r.padding("20px"),gap:"0.5rem"}}),n=({children:t})=>{const r=i();return e("div",{className:r.container,children:t})};export{n as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{makeStyles as e,shorthands as n}from"@fluentui/react-components";const r=e({container:{display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"start",height:"100%",...n.padding("20px"),gap:"0.5rem"}}),i=({children:e})=>{const n=r();return t("div",{className:n.container,children:e})};export{i as default};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{makeStyles as o}from"../node_modules/@griffel/react/makeStyles.esm.js";const r=o({backdrop:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.4)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999},dialog:{backgroundColor:"#fff",borderRadius:"4px",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",width:"100%",maxWidth:"480px",padding:"24px",position:"relative"},header:{fontSize:"20px",fontWeight:600,marginBottom:"16px"},body:{fontSize:"16px",marginBottom:"24px"},footer:{display:"flex",justifyContent:"flex-end",gap:"8px"}}),t=({open:o,children:t})=>{const i=r();return o?e("div",{className:i.backdrop,children:e("div",{className:i.dialog,children:t})}):null},i=({children:o})=>{const t=r();return e("div",{className:t.footer,children:o})},n=({children:o})=>{const t=r();return e("div",{className:t.body,children:o})},d=({children:o})=>{const t=r();return e("div",{className:t.header,children:o})};export{t as Dialog,i as DialogActions,n as DialogContent,d as DialogTitle};
1
+ import{jsx as e}from"react/jsx-runtime";import{makeStyles as o}from"@fluentui/react-components";const t=o({backdrop:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.4)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999},dialog:{backgroundColor:"#fff",borderRadius:"4px",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",width:"100%",maxWidth:"480px",padding:"24px",position:"relative"},header:{fontSize:"20px",fontWeight:600,marginBottom:"16px"},body:{fontSize:"16px",marginBottom:"24px"},footer:{display:"flex",justifyContent:"flex-end",gap:"8px"}}),r=({open:o,children:r})=>{const n=t();return o?e("div",{className:n.backdrop,children:e("div",{className:n.dialog,children:r})}):null},n=({children:o})=>{const r=t();return e("div",{className:r.footer,children:o})},i=({children:o})=>{const r=t();return e("div",{className:r.body,children:o})},d=({children:o})=>{const r=t();return e("div",{className:r.header,children:o})};export{r as Dialog,n as DialogActions,i as DialogContent,d as DialogTitle};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as o}from"react/jsx-runtime";import{makeStyles as t}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Button as i}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{Image as r}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{DocumentData32Regular as n}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-6.js";import{tokens as l}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{DismissRegular as a}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const s=t({thumbnail:{width:"64px",height:"64px",borderRadius:l.borderRadiusMedium,backgroundColor:l.colorNeutralBackground2,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"relative",cursor:"pointer",flexShrink:0,flexGrow:0,margin:"4px","&:hover":{backgroundColor:l.colorNeutralBackground2Hover}},image:{width:"100%",height:"100%",objectFit:"cover",borderRadius:"inherit"},fileName:{position:"absolute",bottom:0,left:0,right:0,backgroundColor:"rgba(0, 0, 0, 0.6)",color:l.colorNeutralForegroundInverted,padding:"4px",fontSize:l.fontSizeBase200,textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",borderBottomLeftRadius:"inherit",borderBottomRightRadius:"inherit"},fileIcon:{fontSize:"32px",color:l.colorNeutralForeground2},deleteButton:{position:"absolute",top:"4px",right:"4px",minWidth:"20px",height:"20px",padding:"2px",backgroundColor:l.colorNeutralBackground1,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1,"&:hover":{backgroundColor:l.colorNeutralBackground1Hover}}}),c=({file:t,getImageUrl:l,onClick:c,onDelete:d,thumbnailSize:u=64})=>{const m=s();return e("div",{className:m.thumbnail,style:{width:`${u}px`,height:`${u}px`},onClick:c,title:t.filename,children:[d&&o(i,{className:m.deleteButton,icon:o(a,{}),appearance:"subtle",size:"small",onClick:e=>{e.stopPropagation(),d?.()},title:"Ta bort"}),t.contentType&&t.contentType.startsWith("image")?o(r,{className:m.image,src:`${l(t.id,u||200)}&width=${u}`,alt:t.filename}):o(n,{className:m.fileIcon}),o("div",{className:m.fileName,children:t.filename})]})};export{c as FileThumbnail};
1
+ import{jsxs as e,jsx as o}from"react/jsx-runtime";import{makeStyles as t,tokens as r,Button as i,Image as n}from"@fluentui/react-components";import{DismissRegular as l,DocumentData32Regular as a}from"@fluentui/react-icons";const c=t({thumbnail:{width:"64px",height:"64px",borderRadius:r.borderRadiusMedium,backgroundColor:r.colorNeutralBackground2,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"relative",cursor:"pointer",flexShrink:0,flexGrow:0,margin:"4px","&:hover":{backgroundColor:r.colorNeutralBackground2Hover}},image:{width:"100%",height:"100%",objectFit:"cover",borderRadius:"inherit"},fileName:{position:"absolute",bottom:0,left:0,right:0,backgroundColor:"rgba(0, 0, 0, 0.6)",color:r.colorNeutralForegroundInverted,padding:"4px",fontSize:r.fontSizeBase200,textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",borderBottomLeftRadius:"inherit",borderBottomRightRadius:"inherit"},fileIcon:{fontSize:"32px",color:r.colorNeutralForeground2},deleteButton:{position:"absolute",top:"4px",right:"4px",minWidth:"20px",height:"20px",padding:"2px",backgroundColor:r.colorNeutralBackground1,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1,"&:hover":{backgroundColor:r.colorNeutralBackground1Hover}}}),d=({file:t,getImageUrl:r,onClick:d,onDelete:s,thumbnailSize:u=64})=>{const m=c();return e("div",{className:m.thumbnail,style:{width:`${u}px`,height:`${u}px`},onClick:d,title:t.filename,children:[s&&o(i,{className:m.deleteButton,icon:o(l,{}),appearance:"subtle",size:"small",onClick:e=>{e.stopPropagation(),s?.()},title:"Ta bort"}),t.contentType&&t.contentType.startsWith("image")?o(n,{className:m.image,src:`${r(t.id,u||200)}&width=${u}`,alt:t.filename}):o(a,{className:m.fileIcon}),o("div",{className:m.fileName,children:t.filename})]})};export{d as FileThumbnail};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useEffect as s}from"react";import{useLocation as i,Link as r}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 n}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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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";import{makeStyles as l}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as m}from"../node_modules/@griffel/core/index.esm.js";import{tokens as c}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Home24Filled as p,Home24Regular as d}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-8.js";import{Chat24Filled as u,Chat24Regular as j}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js";import{AddSquare24Filled as h,AddSquare24Regular as g,Apps24Filled as _,Apps24Regular as f}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js";import{ClipboardDay24Filled as T,ClipboardDay24Regular as k}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-4.js";import{SlideText24Filled as v,SlideText24Regular as b}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js";import{Whiteboard24Filled as x,Whiteboard24Regular as O}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-18.js";const C=l({footer:{...m.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:c.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...m.borderWidth("0")},link:{textDecoration:"none",color:"inherit",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none"},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"}}),N=()=>{const l=C(),m=i(),[N,y]=t(null),{t:I}=a(),S={backgroundColor:n("APP_FOOTER_COLOR")||c.colorBrandBackground,color:n("APP_FOOTER_TEXT_COLOR")||c.colorNeutralForegroundOnBrand},P=n("APP_FOOTER_SELECTED_COLOR")||void 0;return s((()=>{const o=m.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")}),[m]),s((()=>{N&&console.log(`footer-button: ${N}`)}),[N]),o("footer",{className:l.footer,style:S,children:e("div",{className:l.container,children:[e(r,{to:"/",className:`${l.link} ${"home"===N?"selected":""}`,onClick:()=>y("home"),style:"home"===N?{color:P}:void 0,children:[o("home"===N?p:d,{}),o("p",{className:l.buttonText,children:I("Hem")})]}),!n("HIDE_CHAT_BUTTON")&&e(r,{to:"/chat",className:`${l.link} ${"chat"===N?"selected":""}`,onClick:()=>y("chat"),style:"chat"===N?{color:P}:void 0,children:[o("chat"===N?u:j,{}),o("p",{className:l.buttonText,children:I(n("APP_CHAT_TITLE")||"Chatt")})]}),!n("HIDE_SAVE_BUTTON")&&e(r,{to:"/new",className:`${l.link} ${"save"===N?"selected":""}`,onClick:()=>y("save"),style:"save"===N?{color:P}:void 0,children:[o("save"===N?h:g,{}),o("p",{className:l.buttonText,children:I(n("APP_SAVE_TITLE")||"Spara")})]}),n("SHOW_SNAP_BUTTON")&&e(r,{to:"/snap",className:`${l.link} ${"snap"===N?"selected":""}`,onClick:()=>y("snap"),style:"snap"===N?{color:P}:void 0,children:[o("snap"===N?T:k,{}),o("p",{className:l.buttonText,children:I("Snap")})]}),n("SHOW_LOGBOOK_BUTTON")&&e(r,{to:"/log",className:`${l.link} ${"log"===N?"selected":""}`,onClick:()=>y("log"),style:"log"===N?{color:P}:void 0,children:[o("log"===N?v:b,{}),o("p",{className:l.buttonText,children:I(n("APP_LOGBOOK_TITLE")||"Loggbok")})]}),n("SHOW_CANVAS_BUTTON")&&e(r,{to:"/canvas",className:`${l.link} ${"canvas"===N?"selected":""}`,onClick:()=>y("canvas"),style:"canvas"===N?{color:P}:void 0,children:[o("canvas"===N?x:O,{}),o("p",{className:l.buttonText,children:I("Kanvas")})]}),!n("HIDE_MENU_BUTTON")&&e(r,{to:"/menu",className:`${l.link} ${"menu"===N?"selected":""}`,onClick:()=>y("menu"),style:"menu"===N?{color:P}:void 0,children:[o("menu"===N?_:f,{}),o("p",{className:l.buttonText,children:I("Meny")})]})]})})};export{N as Footer,N as default};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useEffect as s}from"react";import{makeStyles as a,shorthands as i,tokens as r}from"@fluentui/react-components";import{Home24Filled as n,Home24Regular as l,Chat24Filled as m,Chat24Regular as p,AddSquare24Filled as c,AddSquare24Regular as d,ClipboardDay24Filled as j,ClipboardDay24Regular as u,SlideText24Filled as g,SlideText24Regular as h,Whiteboard24Filled as T,Whiteboard24Regular as _,Apps24Filled as v,Apps24Regular as x}from"@fluentui/react-icons";import{useLocation as O,Link as C}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 N}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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Page.js";import"./QrCodeDialog.js";import"./QrScanner.js";import b from"../hooks/useLocalization.js";import"./OfflineMessage.js";import"./LanguageSelector.js";import"./ListView.js";import"./RecordModal.js";import"./BulkUploadDialog.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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 f=a({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",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none"},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"}}),k=()=>{const a=f(),i=O(),[k,y]=t(null),{t:S}=b(),P={backgroundColor:N("APP_FOOTER_COLOR")||r.colorBrandBackground,color:N("APP_FOOTER_TEXT_COLOR")||r.colorNeutralForegroundOnBrand},A=N("APP_FOOTER_SELECTED_COLOR")||void 0;return s((()=>{const o=i.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")}),[i]),s((()=>{k&&console.log(`footer-button: ${k}`)}),[k]),o("footer",{className:a.footer,style:P,children:e("div",{className:a.container,children:[e(C,{to:"/",className:`${a.link} ${"home"===k?"selected":""}`,onClick:()=>y("home"),style:"home"===k?{color:A}:void 0,children:[o("home"===k?n:l,{}),o("p",{className:a.buttonText,children:S("Hem")})]}),!N("HIDE_CHAT_BUTTON")&&e(C,{to:"/chat",className:`${a.link} ${"chat"===k?"selected":""}`,onClick:()=>y("chat"),style:"chat"===k?{color:A}:void 0,children:[o("chat"===k?m:p,{}),o("p",{className:a.buttonText,children:S(N("APP_CHAT_TITLE")||"Chatt")})]}),!N("HIDE_SAVE_BUTTON")&&e(C,{to:"/new",className:`${a.link} ${"save"===k?"selected":""}`,onClick:()=>y("save"),style:"save"===k?{color:A}:void 0,children:[o("save"===k?c:d,{}),o("p",{className:a.buttonText,children:S(N("APP_SAVE_TITLE")||"Spara")})]}),N("SHOW_SNAP_BUTTON")&&e(C,{to:"/snap",className:`${a.link} ${"snap"===k?"selected":""}`,onClick:()=>y("snap"),style:"snap"===k?{color:A}:void 0,children:[o("snap"===k?j:u,{}),o("p",{className:a.buttonText,children:S("Snap")})]}),N("SHOW_LOGBOOK_BUTTON")&&e(C,{to:"/log",className:`${a.link} ${"log"===k?"selected":""}`,onClick:()=>y("log"),style:"log"===k?{color:A}:void 0,children:[o("log"===k?g:h,{}),o("p",{className:a.buttonText,children:S(N("APP_LOGBOOK_TITLE")||"Loggbok")})]}),N("SHOW_CANVAS_BUTTON")&&e(C,{to:"/canvas",className:`${a.link} ${"canvas"===k?"selected":""}`,onClick:()=>y("canvas"),style:"canvas"===k?{color:A}:void 0,children:[o("canvas"===k?T:_,{}),o("p",{className:a.buttonText,children:S("Kanvas")})]}),!N("HIDE_MENU_BUTTON")&&e(C,{to:"/menu",className:`${a.link} ${"menu"===k?"selected":""}`,onClick:()=>y("menu"),style:"menu"===k?{color:A}:void 0,children:[o("menu"===k?v:x,{}),o("p",{className:a.buttonText,children:S("Meny")})]})]})})};export{k as Footer,k 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{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}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{Dropdown as u}from"../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js";import{Option as f}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";import{Switch as y}from"../node_modules/@fluentui/react-switch/lib/components/Switch/Switch.js";const b=({schema:b,item:v,onUpdated:j,onSend:w})=>{const S=new s(v.content),{mentions:x,tags:k}=S,[B,C]=o(S.data),[_,D]=o(B),[O,z]=o(!1),[I,N]=o(v.id),{t:T}=a();n((()=>{z(JSON.stringify(_)!==JSON.stringify(B))}),[_,B,z]);const U=()=>`${x.length>0?"@"+x.join(" @"):""} #${k.join(" #")}\n${JSON.stringify(_)}`;n((()=>{if(j){const e=U();j(e)}}),[v.content,_,j]),n((()=>console.log("Modified data:",_)),[_]);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:b.title}),b["ui:options"]?.icon&&i(g,{src:d.getImageUrl(b["ui:options"]?.icon,32),alt:"icon",fit:"contain",width:32,height:32})]}),i(l,{children:b.description}),i("div",{style:{display:"flex",flexDirection:"column",gap:4},children:Object.keys(b.properties).map((o=>((o,n,r)=>{const{title:a,type:s,description:g,format:b,items:v,default:j}=n,w=!0===n.readonly,S=void 0!==_[o]?_[o]:j,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===w?{style:{marginBottom:8},children:[i(l,{size:"title"===b?600:500,style:{display:"block"},children:a}),g&&i(l,{style:{display:"block",marginBottom:2},children:g}),"title"===b?null:i(l,{children:S||"N/A"})]}:"photo"===b?{style:{marginBottom:8},children:[x,k,i(c,{thumbnailSize:280,file:{id:S,filename:"",contentType:"image/png",createdAt:(new Date).toLocaleString()},getImageUrl:d.getImageUrl,onDelete:()=>r("")})]}:"color"===b?{style:{marginBottom:8},children:[x,k,i(h,{color:S,onChange:(e,i)=>r(i.str)})]}:"date"===b?{style:{marginBottom:8},children:[x,k,i(p,{value:S?new Date(S):void 0,onSelectDate:e=>r(e?.toISOString()||"")})]}:"time"===b?{style:{marginBottom:8},children:[x,k,i(m,{value:S,onTimeChange:(e,i)=>r(i?.toString()||"")})]}:{style:{marginBottom:8},children:[x,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"===b?{style:{marginBottom:8},children:[x,k,i(y,{checked:"true"===_[o]||!0===_[o],onChange:(e,i)=>r(i.checked),disabled:w})]}:{style:{marginBottom:8},children:[x,k,i(l,{children:S?"Yes":"No"})]},o);case"array":return e("div",{style:{marginBottom:8},children:[x,k,i(u,{value:S&&""!==S?S:j||void 0,onOptionSelect:(e,i)=>r(i.optionValue),disabled:w,children:(v?.enum||[]).map((e=>i(f,{value:e,children:e},e)))})]},o);default:return e("div",{style:{marginBottom:8},children:[x,k,i(l,{children:S||"N/A"})]},o)}})(o,b.properties[o],(e=>{"boolean"===b.properties[o].type&&(e=e.toString()),D({..._,[o]:e})}))))}),O&&!j&&e("div",{style:{display:"flex",flexDirection:"row",gap:10,justifyContent:"flex-end"},children:[i(r,{appearance:"secondary",disabled:!O,onClick:()=>D(B),children:T("Undo")}),i(r,{appearance:"primary",disabled:!O,onClick:()=>{const e=U();w?w(e,I).then((e=>{N(e),C(_),z(!1)})):j&&j(e)},children:T("Save")})]}),w&&j&&i("div",{children:i(r,{appearance:"primary",title:T("Skicka"),disabled:!O,icon:"SendFilled",onClick:()=>{const e=U();w&&w(e)},children:T("Spara")})})]})};export{b 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{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:b,onUpdated:j,onSend:S})=>{const w=new s(b.content),{mentions:k,tags:x}=w,[B,C]=o(w.data),[D,z]=o(B),[_,N]=o(!1),[O,I]=o(b.id),{t:T}=a();n((()=>{N(JSON.stringify(D)!==JSON.stringify(B))}),[D,B,N]);const U=()=>`${k.length>0?"@"+k.join(" @"):""} #${x.join(" #")}\n${JSON.stringify(D)}`;n((()=>{if(j){const e=U();j(e)}}),[b.content,D,j]),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:b,default:j}=n,S=!0===n.readonly,w=void 0!==D[o]?D[o]:j,k=e(t,{children:[i(l,{size:500,children:a}),i("br",{})]}),x=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:[k,x,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:[k,x,i(h,{color:w,onChange:(e,i)=>r(i.str)})]}:"date"===v?{style:{marginBottom:8},children:[k,x,i(p,{value:w?new Date(w):void 0,onSelectDate:e=>r(e?.toISOString()||"")})]}:"time"===v?{style:{marginBottom:8},children:[k,x,i(m,{value:w,onTimeChange:(e,i)=>r(i?.toString()||"")})]}:{style:{marginBottom:8},children:[k,x,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:[k,x,i(u,{checked:"true"===D[o]||!0===D[o],onChange:(e,i)=>r(i.checked),disabled:S})]}:{style:{marginBottom:8},children:[k,x,i(l,{children:w?"Yes":"No"})]},o);case"array":return e("div",{style:{marginBottom:8},children:[k,x,i(y,{value:w&&""!==w?w:j||void 0,onOptionSelect:(e,i)=>r(i.optionValue),disabled:S,children:(b?.enum||[]).map((e=>i(f,{value:e,children:e},e)))})]},o);default:return e("div",{style:{marginBottom:8},children:[k,x,i(l,{children:w||"N/A"})]},o)}})(o,v.properties[o],(e=>{"boolean"===v.properties[o].type&&(e=e.toString()),z({...D,[o]:e})}))))}),_&&!j&&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)})):j&&j(e)},children:T("Save")})]}),S&&j&&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 e,jsx as o}from"react/jsx-runtime";import{Link as t}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 i from"./VoiceIcon.js";import r from"./AudioIcon.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as s}from"../config/index.js";import"../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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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{makeStyles as a}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as m}from"../node_modules/@griffel/core/index.esm.js";import{tokens as p}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Image as n}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{Title3 as l}from"../node_modules/@fluentui/react-text/lib/components/presets/Title3/Title3.js";import{Settings24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-13.js";const d=a({header:{...m.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"}}),j=({imageUrl:a,title:m,audio:j,voice:g})=>{const u=d(),h={backgroundColor:s("APP_HEADER_COLOR")||p.colorBrandBackground,color:s("APP_HEADER_TEXT_COLOR")||p.colorNeutralForegroundOnBrand};return e("header",{className:u.header,style:h,children:[e("div",{className:u.headerItem,children:[a&&o(n,{className:u.logo,alt:"Logo",src:a,height:40}),m&&o(l,{children:m})]}),e("div",{className:u.headerItem,children:[j&&s("SHOW_MICROPHONE_BUTTON")&&o(r,{audio:j,disabled:g?.isConnected}),g&&s("SHOW_VOICE_BUTTON")&&o(i,{voice:g,disabled:j?.isRecording}),s("SHOW_SETTINGS_BUTTON")&&o(t,{to:"/menu",className:u.link,children:o(c,{})})]})]})};export{j 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"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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";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 +1 @@
1
- import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r,useEffect as n}from"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"../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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import{makeStyles as s}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Menu as a}from"../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js";import{MenuTrigger as c}from"../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js";import{Button as l}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MoreHorizontal24Regular as m}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";import{MenuPopover as p}from"../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js";import{MenuList as u}from"../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js";import{MenuItem as d}from"../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js";import{PrintRegular as h}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{tokens as g}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{DismissRegular as j,CopyRegular as f}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const b=s({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100},menuPopover:{backgroundColor:g.colorNeutralBackground1,boxShadow:g.shadow16}}),w=({html:s,onDismiss:g})=>{const w=o(null),y=o(null),[v,x]=r(1),C=b(),{t:M}=i();n((()=>{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,n;return e&&(r=()=>t(e),e.addEventListener("load",r),"complete"===e.contentDocument?.readyState&&t(e)),o&&(n=()=>t(o),o.addEventListener("load",n),"complete"===o.contentDocument?.readyState&&t(o)),()=>{e&&r&&e.removeEventListener("load",r),o&&n&&o.removeEventListener("load",n)}}),[s]);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"),n=parseFloat(w.current?.getAttribute("data-initial-scale")||"1"),i=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(n*(i/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:s}),e("iframe",{ref:y,className:C.iframe2,title:"html",srcDoc:s})," ",t(a,{children:[e(c,{children:e(l,{icon:e(m,{}),className:C.menuButton})}),e(p,{className:C.menuPopover,children:t(u,{children:[e(d,{icon:e(j,{}),onClick:g,children:M("Stäng")}),e(d,{icon:e(h,{}),onClick:()=>{w.current&&w.current.contentWindow?.print()},children:M("Skriv ut")}),e(d,{icon:e(f,{}),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 n=o.createElement("style");n.textContent=r,o.head.appendChild(n);const i=o.documentElement.outerHTML,s=o.body.innerText,a=document.createElement("div");a.innerHTML=i;const c=window.location.href;if(a.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,c).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([a.outerHTML],{type:"text/html"}),e=new Blob([s],{type:"text/plain"}),o=new ClipboardItem({"text/html":t,"text/plain":e});await navigator.clipboard.write([o])}else{const t=e.getSelection();if(t){t.removeAllRanges();const e=o.createRange();e.selectNodeContents(o.body),t.addRange(e),o.execCommand("copy"),t.removeAllRanges()}}}catch(t){console.error("Copy failed:",t),navigator.clipboard.writeText(s)}},children:M("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 m,MenuList as p,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"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./Footer.js";import"./Page.js";import"./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"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/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"react-router-dom";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%"},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(m,{className:C.menuPopover,children:t(p,{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 t}from"react/jsx-runtime";import{Input as n}from"../node_modules/@fluentui/react-input/lib/components/Input/Input.js";const e=({children:e,...o})=>t(n,{...o,children:e});export{e as Input};
1
+ import{jsx as r}from"react/jsx-runtime";import{Input as t}from"@fluentui/react-components";const e=({children:e,...n})=>r(t,{...n,children:e});export{e as Input};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Label as l}from"../node_modules/@fluentui/react-label/lib/components/Label/Label.js";const a=({children:a,className:o,...r})=>e(l,{className:o,...r,children:a});export{a as Label};
1
+ import{jsx as e}from"react/jsx-runtime";import{Label as r}from"@fluentui/react-components";const t=({children:t,className:a,...c})=>e(r,{className:a,...c,children:t});export{t as Label};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as a}from"react/jsx-runtime";import o from"../hooks/useLocalization.js";import{useState as n,useEffect as t}from"react";import{makeStyles as r}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Dropdown as l}from"../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js";import{Option as s}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const u=r({container:{marginTop:"16px",marginBottom:"16px"},label:{fontSize:"14px",fontWeight:"600",marginBottom:"8px"}}),m=[{key:"en",name:"English"},{key:"sv",name:"Svenska"},{key:"de",name:"Deutsch"},{key:"dk",name:"Dansk"},{key:"fr",name:"Français"},{key:"no",name:"Norsk"},{key:"zh",name:"中文"},{key:"pl",name:"Polski"}],i=e=>{if("undefined"!=typeof navigator&&navigator.language){const a=navigator.language.toLowerCase().split("-")[0];if(e.some((e=>e.key===a)))return a}return"en"},g=({languages:r=m,defaultLanguage:g="en"})=>{const c=u(),{t:d,currentLanguage:p,setCurrentLanguage:f}=o(),[k,y]=n((()=>localStorage.getItem("user_language")||"auto"));t((()=>{const e=localStorage.getItem("user_language");y(e&&"auto"!==e?e:"auto")}),[p]);const h=i(r),v=r.find((e=>e.key===h))?.name||"English";return e("div",{className:c.container,children:[a("div",{className:c.label,children:d("Language")}),e(l,{value:"auto"===k?`${d("Auto")} (${v})`:r.find((e=>e.key===k))?.name||d("Select language"),selectedOptions:[k],onOptionSelect:(e,a)=>{const o=a.value;if(y(o),"auto"===o){const e=i(r);localStorage.setItem("user_language","auto"),f(e)}else localStorage.setItem("user_language",o),f(o)},children:[e(s,{value:"auto",text:`${d("Auto")} (${v})`,children:[d("Auto")," (",v,")"]}),r.map((e=>a(s,{value:e.key,text:e.name,children:e.name},e.key)))]})]})};export{g as LanguageSelector,g as default};
1
+ import{jsxs as e,jsx as a}from"react/jsx-runtime";import{makeStyles as t,Dropdown as n,Option as o}from"@fluentui/react-components";import r from"../hooks/useLocalization.js";import{useState as l,useEffect as u}from"react";const s=t({container:{marginTop:"16px",marginBottom:"16px"},label:{fontSize:"14px",fontWeight:"600",marginBottom:"8px"}}),g=[{key:"en",name:"English"},{key:"sv",name:"Svenska"},{key:"de",name:"Deutsch"},{key:"dk",name:"Dansk"},{key:"fr",name:"Français"},{key:"no",name:"Norsk"},{key:"zh",name:"中文"},{key:"pl",name:"Polski"}],i=e=>{if("undefined"!=typeof navigator&&navigator.language){const a=navigator.language.toLowerCase().split("-")[0];if(e.some((e=>e.key===a)))return a}return"en"},m=({languages:t=g,defaultLanguage:m="en"})=>{const c=s(),{t:k,currentLanguage:f,setCurrentLanguage:p}=r(),[d,y]=l((()=>localStorage.getItem("user_language")||"auto"));u((()=>{const e=localStorage.getItem("user_language");y(e&&"auto"!==e?e:"auto")}),[f]);const h=i(t),v=t.find((e=>e.key===h))?.name||"English";return e("div",{className:c.container,children:[a("div",{className:c.label,children:k("Language")}),e(n,{value:"auto"===d?`${k("Auto")} (${v})`:t.find((e=>e.key===d))?.name||k("Select language"),selectedOptions:[d],onOptionSelect:(e,a)=>{const n=a.value;if(y(n),"auto"===n){const e=i(t);localStorage.setItem("user_language","auto"),p(e)}else localStorage.setItem("user_language",n),p(n)},children:[e(o,{value:"auto",text:`${k("Auto")} (${v})`,children:[k("Auto")," (",v,")"]}),t.map((e=>a(o,{value:e.key,text:e.name,children:e.name},e.key)))]})]})};export{m as LanguageSelector,m as default};