codicent-app-sdk 0.4.15 → 0.4.18

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 (101) hide show
  1. package/README.md +410 -375
  2. package/dist/cjs/components/AiInput.js +1 -1
  3. package/dist/cjs/components/AudioIcon.js +1 -1
  4. package/dist/cjs/components/ChatInput.js +1 -1
  5. package/dist/cjs/components/ChatMessage.js +1 -1
  6. package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
  7. package/dist/cjs/components/DataMessagePicker.d.ts +33 -0
  8. package/dist/cjs/components/DataMessagePicker.d.ts.map +1 -0
  9. package/dist/cjs/components/DataMessagePicker.js +1 -0
  10. package/dist/cjs/components/Footer.js +1 -1
  11. package/dist/cjs/components/Header.js +1 -1
  12. package/dist/cjs/components/HtmlView.js +1 -1
  13. package/dist/cjs/components/MermaidChart.d.ts.map +1 -1
  14. package/dist/cjs/components/MermaidChart.js +1 -1
  15. package/dist/cjs/components/MessageInput.js +1 -1
  16. package/dist/cjs/components/MessageItem.js +1 -1
  17. package/dist/cjs/components/Profile.js +1 -1
  18. package/dist/cjs/components/Prompt.js +1 -1
  19. package/dist/cjs/components/SnapFooter.js +1 -1
  20. package/dist/cjs/components/TextHeader.js +1 -1
  21. package/dist/cjs/components/TypingIndicator.js +1 -1
  22. package/dist/cjs/components/UploadFile.js +1 -1
  23. package/dist/cjs/components/UrlProcessor.js +1 -1
  24. package/dist/cjs/components/VoiceIcon.js +1 -1
  25. package/dist/cjs/components/index.d.ts +2 -0
  26. package/dist/cjs/components/index.d.ts.map +1 -1
  27. package/dist/cjs/config/index.d.ts.map +1 -1
  28. package/dist/cjs/config/index.js +1 -1
  29. package/dist/cjs/hooks/useAuthState.js +1 -1
  30. package/dist/cjs/hooks/useCodicentState.js +1 -1
  31. package/dist/cjs/hooks/useLocalization.d.ts.map +1 -1
  32. package/dist/cjs/hooks/useLocalization.js +1 -1
  33. package/dist/cjs/hooks/useRealtimeVoiceAI.d.ts.map +1 -1
  34. package/dist/cjs/hooks/useRealtimeVoiceAI.js +1 -1
  35. package/dist/cjs/index.js +1 -1
  36. package/dist/cjs/pages/AppFrame.js +1 -1
  37. package/dist/cjs/pages/Chat.js +1 -1
  38. package/dist/cjs/pages/Compose.js +1 -1
  39. package/dist/cjs/pages/CrmPage.js +1 -1
  40. package/dist/cjs/pages/CrmPagePersistent.js +1 -1
  41. package/dist/cjs/pages/FormAccept.js +1 -1
  42. package/dist/cjs/pages/FormInvite.js +1 -1
  43. package/dist/cjs/pages/HtmlViewer.js +1 -1
  44. package/dist/cjs/pages/Login.js +1 -1
  45. package/dist/cjs/pages/Purchase.js +1 -1
  46. package/dist/cjs/pages/Sales.js +1 -1
  47. package/dist/cjs/pages/Search.js +1 -1
  48. package/dist/cjs/pages/Snap.js +1 -1
  49. package/dist/cjs/services/codicent.d.ts +1 -0
  50. package/dist/cjs/services/codicent.d.ts.map +1 -1
  51. package/dist/esm/components/AiInput.js +1 -1
  52. package/dist/esm/components/AudioIcon.js +1 -1
  53. package/dist/esm/components/ChatInput.js +1 -1
  54. package/dist/esm/components/ChatMessage.js +1 -1
  55. package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
  56. package/dist/esm/components/DataMessagePicker.d.ts +33 -0
  57. package/dist/esm/components/DataMessagePicker.d.ts.map +1 -0
  58. package/dist/esm/components/DataMessagePicker.js +1 -0
  59. package/dist/esm/components/Footer.js +1 -1
  60. package/dist/esm/components/Header.js +1 -1
  61. package/dist/esm/components/HtmlView.js +1 -1
  62. package/dist/esm/components/MermaidChart.d.ts.map +1 -1
  63. package/dist/esm/components/MermaidChart.js +1 -1
  64. package/dist/esm/components/MessageInput.js +1 -1
  65. package/dist/esm/components/MessageItem.js +1 -1
  66. package/dist/esm/components/Profile.js +1 -1
  67. package/dist/esm/components/Prompt.js +1 -1
  68. package/dist/esm/components/SnapFooter.js +1 -1
  69. package/dist/esm/components/TextHeader.js +1 -1
  70. package/dist/esm/components/TypingIndicator.js +1 -1
  71. package/dist/esm/components/UploadFile.js +1 -1
  72. package/dist/esm/components/UrlProcessor.js +1 -1
  73. package/dist/esm/components/VoiceIcon.js +1 -1
  74. package/dist/esm/components/index.d.ts +2 -0
  75. package/dist/esm/components/index.d.ts.map +1 -1
  76. package/dist/esm/config/index.d.ts.map +1 -1
  77. package/dist/esm/config/index.js +1 -1
  78. package/dist/esm/hooks/useAuthState.js +1 -1
  79. package/dist/esm/hooks/useCodicentState.js +1 -1
  80. package/dist/esm/hooks/useLocalization.d.ts.map +1 -1
  81. package/dist/esm/hooks/useLocalization.js +1 -1
  82. package/dist/esm/hooks/useRealtimeVoiceAI.d.ts.map +1 -1
  83. package/dist/esm/hooks/useRealtimeVoiceAI.js +1 -1
  84. package/dist/esm/index.js +1 -1
  85. package/dist/esm/pages/AppFrame.js +1 -1
  86. package/dist/esm/pages/Chat.js +1 -1
  87. package/dist/esm/pages/Compose.js +1 -1
  88. package/dist/esm/pages/CrmPage.js +1 -1
  89. package/dist/esm/pages/CrmPagePersistent.js +1 -1
  90. package/dist/esm/pages/FormAccept.js +1 -1
  91. package/dist/esm/pages/FormInvite.js +1 -1
  92. package/dist/esm/pages/HtmlViewer.js +1 -1
  93. package/dist/esm/pages/Login.js +1 -1
  94. package/dist/esm/pages/Purchase.js +1 -1
  95. package/dist/esm/pages/Sales.js +1 -1
  96. package/dist/esm/pages/Search.js +1 -1
  97. package/dist/esm/pages/Snap.js +1 -1
  98. package/dist/esm/services/codicent.d.ts +1 -0
  99. package/dist/esm/services/codicent.d.ts.map +1 -1
  100. package/dist/index.d.ts +264 -233
  101. package/package.json +1 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),s=require("@fluentui/react-components");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");var i=require("../utils/device.js");require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js");var a=require("./Spinner.js");require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("@fluentui/react-icons"),require("../services/codicent.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("./Content.js"),require("./Page.js"),require("../pages/QrScan.js"),require("../hooks/useLocalization.js"),require("./FileThumbnail.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("./MessageInput.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js");const u=s.makeStyles({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),t=r.forwardRef((({onFileUploaded:s,accept:t,capture:o,multiple:n=!1,onUploading:l,className:c,id:p,codicentService:q},j)=>{const d=u(),[g,m]=r.useState(!1),f=r.useRef(null);r.useEffect((()=>{l(g)}),[g,l]);const h=async(e,r)=>{const s=new FormData;s.append("file",r),m(!0);try{const r=await q.uploadFile(e,s);return m(!1),r}catch(r){return console.error("Upload failed for file:",e,r),m(!1),null}},v=()=>{f.current?.click()};r.useImperativeHandle(j,(()=>({triggerUpload:v})));const w=o&&i.isMobileDevice();return e.jsx("div",{id:p,className:c,children:g?e.jsx(a.Spinner,{"aria-label":"Uploading...",className:d.spinner}):e.jsx("input",{ref:f,type:"file",className:d.imageUpload,onChange:async()=>{try{const e=f.current;if(e&&e.files){const r=[];for(let s=0;s<e.files.length;s++){const i=e.files[s],a=i.name.split("\\").pop()||i.name,u=await h(a,i);u&&r.push(u)}r.length>0&&s(r)}}catch(e){console.error("Error uploading files:",e)}},accept:t,multiple:n,...w?{capture:o}:{}})})}));exports.default=t;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),s=require("@fluentui/react-components");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");var i=require("../utils/device.js");require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js");var a=require("./Spinner.js");require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("@fluentui/react-icons"),require("../services/codicent.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("./Content.js"),require("./Page.js"),require("../pages/QrScan.js"),require("../hooks/useLocalization.js"),require("./FileThumbnail.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("./MessageInput.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./DataMessagePicker.js"),require("./HtmlView.js"),require("./Footer.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js");const u=s.makeStyles({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),t=r.forwardRef((({onFileUploaded:s,accept:t,capture:o,multiple:n=!1,onUploading:l,className:c,id:q,codicentService:j},p)=>{const d=u(),[g,m]=r.useState(!1),f=r.useRef(null);r.useEffect((()=>{l(g)}),[g,l]);const h=async(e,r)=>{const s=new FormData;s.append("file",r),m(!0);try{const r=await j.uploadFile(e,s);return m(!1),r}catch(r){return console.error("Upload failed for file:",e,r),m(!1),null}},v=()=>{f.current?.click()};r.useImperativeHandle(p,(()=>({triggerUpload:v})));const w=o&&i.isMobileDevice();return e.jsx("div",{id:q,className:c,children:g?e.jsx(a.Spinner,{"aria-label":"Uploading...",className:d.spinner}):e.jsx("input",{ref:f,type:"file",className:d.imageUpload,onChange:async()=>{try{const e=f.current;if(e&&e.files){const r=[];for(let s=0;s<e.files.length;s++){const i=e.files[s],a=i.name.split("\\").pop()||i.name,u=await h(a,i);u&&r.push(u)}r.length>0&&s(r)}}catch(e){console.error("Error uploading files:",e)}},accept:t,multiple:n,...w?{capture:o}:{}})})}));exports.default=t;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),s=require("./CombinedPlaceholderDialog.js");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("@fluentui/react-components"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./ChatMessage.js"),require("./Header.js"),require("@fluentui/react-icons"),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("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("../hooks/useLocalization.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var i=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js");const a=({service:a,children:l})=>{const[u,o]=r.useState(!1),[t,n]=r.useState([]),[q,j]=r.useState([]),[c,p]=r.useState(null),{extractTemplateVariables:d,extractFilePlaceholders:g,replaceTemplateVariables:h,replaceFilePlaceholders:m}=i.useTemplateVariables(a.uploadFile);return e.jsxs(e.Fragment,{children:[l((async e=>{p(e);const r=g(e),s=d(e);0!==r.length||0!==s.length?(j(r),n(s),o(!0)):window.location.href=e})),e.jsx(s.CombinedPlaceholderDialog,{open:u,templateVariables:t,filePlaceholders:q,onTemplateVariablesChange:n,onFilePlaceholdersChange:j,onConfirm:async()=>{if(c)try{let e=c;if(q.length>0){q.filter((e=>e.fileId)).length!==q.length&&console.warn("Some file placeholders are missing fileIds:",q.filter((e=>!e.fileId)).map((e=>e.description))),e=m(e,q)}t.length>0&&(e=h(e,t)),o(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{p(null)}},onCancel:()=>{o(!1),p(null),n([]),j([])},uploadFile:a.uploadFile})]})};exports.UrlProcessor=a,exports.default=a;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),s=require("./CombinedPlaceholderDialog.js");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("@fluentui/react-components"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./ChatMessage.js"),require("./Header.js"),require("@fluentui/react-icons"),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("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./DataMessagePicker.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("../hooks/useLocalization.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var i=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js");const a=({service:a,children:l})=>{const[u,o]=r.useState(!1),[t,n]=r.useState([]),[q,j]=r.useState([]),[c,p]=r.useState(null),{extractTemplateVariables:d,extractFilePlaceholders:g,replaceTemplateVariables:h,replaceFilePlaceholders:m}=i.useTemplateVariables(a.uploadFile);return e.jsxs(e.Fragment,{children:[l((async e=>{p(e);const r=g(e),s=d(e);0!==r.length||0!==s.length?(j(r),n(s),o(!0)):window.location.href=e})),e.jsx(s.CombinedPlaceholderDialog,{open:u,templateVariables:t,filePlaceholders:q,onTemplateVariablesChange:n,onFilePlaceholdersChange:j,onConfirm:async()=>{if(c)try{let e=c;if(q.length>0){q.filter((e=>e.fileId)).length!==q.length&&console.warn("Some file placeholders are missing fileIds:",q.filter((e=>!e.fileId)).map((e=>e.description))),e=m(e,q)}t.length>0&&(e=h(e,t)),o(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{p(null)}},onCancel:()=>{o(!1),p(null),n([]),j([])},uploadFile:a.uploadFile})]})};exports.UrlProcessor=a,exports.default=a;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),s=require("@fluentui/react-icons");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("@fluentui/react-components"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js");var i=require("../utils/withWakeLock.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("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("../hooks/useLocalization.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var u=require("../hooks/useAppStyles.js");const a=i.default(s.MicSparkle24Filled);exports.default=({voice:o,disabled:t,instructions:n,connectedIcon:l,disconnectedIcon:j,disabledIcon:q})=>{const{isConnected:c,connectConversation:d,disconnectConversation:p,updateInstructions:g}=o,{pointer:m}=u.default(),v=r.useMemo((()=>l?i.default(l):a),[l]),C=j||s.MicSparkle24Regular,f=async()=>{n&&g(n),await d()};if(t){if(null==q)return e.jsx(s.MicSparkle24Regular,{});if("function"==typeof q){const r=q;return e.jsx(r,{})}return e.jsx(e.Fragment,{children:q})}return c?e.jsx(v,{onClick:p,className:m}):e.jsx(C,{onClick:f,className:m})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),s=require("@fluentui/react-icons");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("@fluentui/react-components"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js");var i=require("../utils/withWakeLock.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("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./DataMessagePicker.js"),require("./HtmlView.js"),require("./Footer.js"),require("./Page.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("../hooks/useLocalization.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var a=require("../hooks/useAppStyles.js");const u=i.default(s.MicSparkle24Filled);exports.default=({voice:t,disabled:o,instructions:n,connectedIcon:j,disconnectedIcon:l,disabledIcon:q})=>{const{isConnected:c,connectConversation:d,disconnectConversation:p,updateInstructions:g}=t,{pointer:m}=a.default(),v=r.useMemo((()=>j?i.default(j):u),[j]),C=l||s.MicSparkle24Regular,f=async()=>{n&&g(n),await d()};if(o){if(null==q)return e.jsx(s.MicSparkle24Regular,{});if("function"==typeof q){const r=q;return e.jsx(r,{})}return e.jsx(e.Fragment,{children:q})}return c?e.jsx(v,{onClick:p,className:m}):e.jsx(C,{onClick:f,className:m})};
@@ -27,6 +27,8 @@ export { default as MessageItem } from "./MessageItem";
27
27
  export { default as Content } from "./Content";
28
28
  export { default as AiInput } from "./AiInput";
29
29
  export { default as SearchBox } from "./SearchBox";
30
+ export { default as DataMessagePicker } from "./DataMessagePicker";
31
+ export type { DataMessagePickerProps, DataMessagePickerSelection } from "./DataMessagePicker";
30
32
  export { default as HtmlView } from "./HtmlView";
31
33
  import Footer from "./Footer";
32
34
  import Page from "./Page";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AACA,qBAAa,SAAS;;IAKpB,iBAAiB,EAAE,MAAM,CAAM;IAC/B,2BAA2B,EAAE,MAAM,CAAM;IACzC,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,OAAO,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,GAAG,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YAC1C,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YACxD,iBAAiB,EAAE,MAAM,CAAC;YAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,gBAAgB,EAAE,MAAM,CAAC;YACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACtB,CAAC;KACH,CAAC;CAyBH;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC;IACnC,UAAU,EAAE,SAAS,CAAC;IACtB,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,qBAAqB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1C,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,mBAAmB,EAAE,SAAS,GAAG,MAAM,CAAC;IACxC,qBAAqB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1C,YAAY,EAAE,SAAS,GAAG,MAAM,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC;IACnC,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,UAAU,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC;IACnC,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,UAAU,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,eAAe,EAAE,SAAS,GAAG,MAAM,CAAC;IACpC,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IAE9B,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,OAAO,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC;IACtC,mBAAmB,EAAE,SAAS,GAAG,MAAM,CAAC;IACxC,uBAAuB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5C,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAC;IACzC,kBAAkB,EAAE,SAAS,GAAG,MAAM,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC;IACtC,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,mBAAmB,EAAE,SAAS,GAAG,MAAM,CAAC;IACxC,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC;IACtC,0BAA0B,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/C,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B,EAAE,SAAS,GAAG,MAAM,CAAC;IACjD,qBAAqB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1C,qBAAqB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1C,0BAA0B,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,uBAAuB,EAAE;QACvB,CAAC,MAAM,EAAE,MAAM,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IACF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAC;IACzC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,6BAA6B,EAAE,OAAO,CAAC;IACvC,yBAAyB,EAAE,MAAM,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,OAAO,CAAC;IACtC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAIvE,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC;IACtC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,yBAAyB,EAAE,OAAO,CAAC;IACnC,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAC;IACzC,2BAA2B,EAAE,OAAO,CAAC;IAErC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4BAA4B,EAAE,OAAO,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;IACnC,kBAAkB,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC1C;AA0ID,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAG5F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,QActE"}
@@ -1 +1 @@
1
- "use strict";var _=require("mermaid");class T{constructor(){this.CHAT_INSTRUCTIONS="",this.REALTIME_VOICE_INSTRUCTIONS="",this.apps={}}}const O={LOGIN_REDIRECT:!1,ABOUT_TEXT:"Codicent APP SDK",ANONYMOUS_CODICENT:void 0,ANONYMOUS_TOKEN:void 0,API_BASE_URL:"https://codicent.com/",APP_BUTTONS:void 0,APP_CHAT_TEXT_PLACEHOLDER:void 0,APP_CHAT_TITLE:void 0,APP_CONFIG:new T,APP_FOOTER_COLOR:void 0,APP_FOOTER_SELECTED_COLOR:void 0,APP_FOOTER_TEXT_COLOR:void 0,APP_HEADER_COLOR:void 0,APP_HEADER_ICON_URL:void 0,APP_HEADER_TEXT_COLOR:void 0,APP_ICON_URL:void 0,APP_LOG_CODICENT:"",APP_LOG_TOKEN:"",APP_LOGBOOK_TITLE:void 0,APP_MENU_TITLE:void 0,APP_NAME:void 0,APP_PREFIX:void 0,APP_SAVE_TITLE:void 0,APP_SEARCH_TITLE:void 0,APP_SLOGAN:void 0,APP_SPLASH_TEXT:void 0,APP_SPLASH_URL:void 0,APP_TEMPLATE:"",APP_TITLE:void 0,AUTH_REDIRECT_URL:void 0,AUTH0_AUDIENCE:"https://codicent.com/api",AUTH0_CLIENT_ID:"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_DOMAIN:"auth.codicent.com",AUTH0_PASSWORDLESS_ENABLED:!1,AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",AUTH0_USER_DOMAIN:void 0,BUTTON_ACTIVE_COLOR:void 0,BUTTON_BACKGROUND_COLOR:void 0,BUTTON_BORDER_RADIUS:void 0,BUTTON_HOVER_COLOR:void 0,BUTTON_TAG:"app-button",BUTTON_TEXT_COLOR:void 0,CHAT_BACKGROUND_IMAGE_URL:void 0,CHAT_BOT_BACKGROUND_COLOR:void 0,CHAT_BOT_TEXT_COLOR:void 0,CHAT_INSTRUCTIONS:void 0,CHAT_USER_BACKGROUND_COLOR:void 0,CHAT_USER_TEXT_COLOR:void 0,CHAT_WELCOME:"Welcome",COMPOSE_BACKGROUND_IMAGE_URL:void 0,COMPOSE_AUTO_LOCATION:void 0,COMPOSE_HIDE_LOCATION:void 0,COMPOSE_SIMPLE_ATTACH_FILE:void 0,DEFAULT_LANGUAGE:"en",HIDE_CHAT_BUTTON:!1,HIDE_MENU_BUTTON:!1,HIDE_REGISTER_BUTTON:!1,HIDE_SAVE_BUTTON:!1,HOME_BACKGROUND_IMAGE_URL:void 0,INDEX_TITLE:void 0,LOGBOOK_TAG_DEFINITIONS:{},LOGBOOK_STRIP_TAGS:!1,LOGBOOK_TAGS:"[]",MENU_BACKGROUND_IMAGE_URL:void 0,MESSAGE_HIDE_BAR:!1,MODULE_VOICE:!1,PUBLIC_FLOW_CODICENT:void 0,REALTIME_VOICE_API_KEY:"",REALTIME_VOICE_MODEL:"alloy",REALTIME_VOICE_PROVIDER:"openai",USE_REALTIME_SESSION_ENDPOINT:!0,REALTIME_SESSION_ENDPOINT:"/realtime/session",REALTIME_CONFIG_ENDPOINT:"/realtime/config",SEND_BUTTON_ROUND_BACKGROUND:!1,SHOW_CANVAS_BUTTON:!1,SHOW_CHAT_PROMPTS:!1,SHOW_HELP_BUTTON:!1,SHOW_LOGBOOK_BUTTON:!1,SHOW_MICROPHONE_BUTTON:!1,SHOW_SETTINGS_BUTTON:!1,SHOW_SNAP_BUTTON:!1,SHOW_VOICE_BUTTON:!1,STRIPE_CUSTOMER_PORTAL:"",STRIPE_PRICE_ID:"",STRIPE_PUBLIC_KEY:"",STRIPE_SOURCE:"",STRIPE_TRIAL_PERIOD_DAYS:0,SUBSCRIPTION_NEEDED:!1,THEME_WELCOME:void 0,USER_PREFIX:void 0,WELCOME_STATUS_PROMPT:"",SHOW_SEND_BUTTON_TEXT:!1,SHOW_SAVE_BUTTON_TEXT:!1,FORM_BACKGROUND_IMAGE_URL:void 0,AUTO_TRANSLATE:!0,FORCE_LANGUAGE:void 0,TRANSLATIONS:void 0,LOGIN_WELCOME_TEXT:void 0,LOGIN_HIDE_WELCOME:!1,LOGIN_LOGO_URL:void 0,HIDE_CHAT_ADD_FILE_BUTTON:!1,FORM_ACCEPT_MARKDOWN:void 0,RESTART_AUDIO_ON_TAKE_PHOTO:!1,ENABLE_STATE_CACHE:!1,SESSION_CACHE_TTL:864e5,USER_INFO_CACHE_TTL:36e5,APPS_CACHE_TTL:3e5,OPTIMISTIC_CACHE_LOAD:!0,VALIDATE_CACHE_IN_BACKGROUND:!0,SHOW_VALIDATION_INDICATOR:!1,CACHE_FAILURE_MODE:"lenient"};const E=function(_){return new Proxy(_,{get:(_,T,O)=>Reflect.get(_,T,O)})}(O);exports.AppConfig=T,exports.getConfigValue=function(_){return E[_]},exports.initCodicentApp=function(T={}){for(const[_,E]of Object.entries(T))void 0!==E&&(O[_]=E);void 0!==T.TRANSLATIONS&&(globalThis.__CODICENT_REINIT_I18N__=!0),_.initialize({startOnLoad:!1})};
1
+ "use strict";class _{constructor(){this.CHAT_INSTRUCTIONS="",this.REALTIME_VOICE_INSTRUCTIONS="",this.apps={}}}const T={LOGIN_REDIRECT:!1,ABOUT_TEXT:"Codicent APP SDK",ANONYMOUS_CODICENT:void 0,ANONYMOUS_TOKEN:void 0,API_BASE_URL:"https://codicent.com/",APP_BUTTONS:void 0,APP_CHAT_TEXT_PLACEHOLDER:void 0,APP_CHAT_TITLE:void 0,APP_CONFIG:new _,APP_FOOTER_COLOR:void 0,APP_FOOTER_SELECTED_COLOR:void 0,APP_FOOTER_TEXT_COLOR:void 0,APP_HEADER_COLOR:void 0,APP_HEADER_ICON_URL:void 0,APP_HEADER_TEXT_COLOR:void 0,APP_ICON_URL:void 0,APP_LOG_CODICENT:"",APP_LOG_TOKEN:"",APP_LOGBOOK_TITLE:void 0,APP_MENU_TITLE:void 0,APP_NAME:void 0,APP_PREFIX:void 0,APP_SAVE_TITLE:void 0,APP_SEARCH_TITLE:void 0,APP_SLOGAN:void 0,APP_SPLASH_TEXT:void 0,APP_SPLASH_URL:void 0,APP_TEMPLATE:"",APP_TITLE:void 0,AUTH_REDIRECT_URL:void 0,AUTH0_AUDIENCE:"https://codicent.com/api",AUTH0_CLIENT_ID:"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_DOMAIN:"auth.codicent.com",AUTH0_PASSWORDLESS_ENABLED:!1,AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",AUTH0_USER_DOMAIN:void 0,BUTTON_ACTIVE_COLOR:void 0,BUTTON_BACKGROUND_COLOR:void 0,BUTTON_BORDER_RADIUS:void 0,BUTTON_HOVER_COLOR:void 0,BUTTON_TAG:"app-button",BUTTON_TEXT_COLOR:void 0,CHAT_BACKGROUND_IMAGE_URL:void 0,CHAT_BOT_BACKGROUND_COLOR:void 0,CHAT_BOT_TEXT_COLOR:void 0,CHAT_INSTRUCTIONS:void 0,CHAT_USER_BACKGROUND_COLOR:void 0,CHAT_USER_TEXT_COLOR:void 0,CHAT_WELCOME:"Welcome",COMPOSE_BACKGROUND_IMAGE_URL:void 0,COMPOSE_AUTO_LOCATION:void 0,COMPOSE_HIDE_LOCATION:void 0,COMPOSE_SIMPLE_ATTACH_FILE:void 0,DEFAULT_LANGUAGE:"en",HIDE_CHAT_BUTTON:!1,HIDE_MENU_BUTTON:!1,HIDE_REGISTER_BUTTON:!1,HIDE_SAVE_BUTTON:!1,HOME_BACKGROUND_IMAGE_URL:void 0,INDEX_TITLE:void 0,LOGBOOK_TAG_DEFINITIONS:{},LOGBOOK_STRIP_TAGS:!1,LOGBOOK_TAGS:"[]",MENU_BACKGROUND_IMAGE_URL:void 0,MESSAGE_HIDE_BAR:!1,MODULE_VOICE:!1,PUBLIC_FLOW_CODICENT:void 0,REALTIME_VOICE_API_KEY:"",REALTIME_VOICE_MODEL:"alloy",REALTIME_VOICE_PROVIDER:"openai",USE_REALTIME_SESSION_ENDPOINT:!0,REALTIME_SESSION_ENDPOINT:"/realtime/session",REALTIME_CONFIG_ENDPOINT:"/realtime/config",SEND_BUTTON_ROUND_BACKGROUND:!1,SHOW_CANVAS_BUTTON:!1,SHOW_CHAT_PROMPTS:!1,SHOW_HELP_BUTTON:!1,SHOW_LOGBOOK_BUTTON:!1,SHOW_MICROPHONE_BUTTON:!1,SHOW_SETTINGS_BUTTON:!1,SHOW_SNAP_BUTTON:!1,SHOW_VOICE_BUTTON:!1,STRIPE_CUSTOMER_PORTAL:"",STRIPE_PRICE_ID:"",STRIPE_PUBLIC_KEY:"",STRIPE_SOURCE:"",STRIPE_TRIAL_PERIOD_DAYS:0,SUBSCRIPTION_NEEDED:!1,THEME_WELCOME:void 0,USER_PREFIX:void 0,WELCOME_STATUS_PROMPT:"",SHOW_SEND_BUTTON_TEXT:!1,SHOW_SAVE_BUTTON_TEXT:!1,FORM_BACKGROUND_IMAGE_URL:void 0,AUTO_TRANSLATE:!0,FORCE_LANGUAGE:void 0,TRANSLATIONS:void 0,LOGIN_WELCOME_TEXT:void 0,LOGIN_HIDE_WELCOME:!1,LOGIN_LOGO_URL:void 0,HIDE_CHAT_ADD_FILE_BUTTON:!1,FORM_ACCEPT_MARKDOWN:void 0,RESTART_AUDIO_ON_TAKE_PHOTO:!1,ENABLE_STATE_CACHE:!1,SESSION_CACHE_TTL:864e5,USER_INFO_CACHE_TTL:36e5,APPS_CACHE_TTL:3e5,OPTIMISTIC_CACHE_LOAD:!0,VALIDATE_CACHE_IN_BACKGROUND:!0,SHOW_VALIDATION_INDICATOR:!1,CACHE_FAILURE_MODE:"lenient"};const O=function(_){return new Proxy(_,{get:(_,T,O)=>Reflect.get(_,T,O)})}(T);exports.AppConfig=_,exports.getConfigValue=function(_){return O[_]},exports.initCodicentApp=function(_={}){for(const[O,E]of Object.entries(_))void 0!==E&&(T[O]=E);void 0!==_.TRANSLATIONS&&(globalThis.__CODICENT_REINIT_I18N__=!0)};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("@fluentui/react-components"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons");var o=require("../config/index.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.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"),require("../components/CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");exports.default=(s,n)=>{const{isAuthenticated:t,getAccessTokenSilently:i,user:a,isLoading:u,logout:c,getAccessTokenWithPopup:l,loginWithRedirect:g,loginWithPopup:p}=s,[q,m]=e.useState(null),[j,C]=e.useState(void 0),[E,d]=e.useState(null),[P,_]=e.useState(""),T=e.useMemo((()=>new r.CodicentService({API_BASE_URL:o.getConfigValue("API_BASE_URL"),APP_LOG_CODICENT:o.getConfigValue("APP_LOG_CODICENT"),APP_LOG_TOKEN:o.getConfigValue("APP_LOG_TOKEN"),APP_NAME:o.getConfigValue("APP_NAME"),APP_PREFIX:o.getConfigValue("APP_PREFIX"),APP_TEMPLATE:o.getConfigValue("APP_TEMPLATE"),BUTTON_TAG:o.getConfigValue("BUTTON_TAG"),STRIPE_PUBLIC_KEY:o.getConfigValue("STRIPE_PUBLIC_KEY"),STRIPE_SOURCE:o.getConfigValue("STRIPE_SOURCE"),STRIPE_TRIAL_PERIOD_DAYS:o.getConfigValue("STRIPE_TRIAL_PERIOD_DAYS"),SUBSCRIPTION_NEEDED:o.getConfigValue("SUBSCRIPTION_NEEDED"),USER_PREFIX:o.getConfigValue("USER_PREFIX"),ANONYMOUS_TOKEN:o.getConfigValue("ANONYMOUS_TOKEN")})),[]);e.useEffect((()=>{!u&&t&&(async()=>{try{const e=await i({});console.debug("CODICENT: ACCESS TOKEN",e),m(e)}catch(e){console.debug("CODICENT: Failed to get access token",e);const r=e;if(r&&"object"==typeof r&&"error"in r&&"login_required"===r.error)console.warn("CODICENT: Login required"),S();else if(r&&"object"==typeof r&&"error"in r&&"consent_required"===r.error)try{const e=await l();if(!e)return void d("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),m(e)}catch(e){console.warn("CODICENT: Failed to get access token with popup",e),S()}else d("Failed to get access token: "+(r.message?.toString()||r.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",r)}})().then((()=>{}))}),[t,l,i,g,u]),e.useEffect((()=>{if(a&&a.sub&&q&&void 0===j){let e=!0;return(n?.loginFn?n.loginFn(T,a.sub,q):T.loginUser(a.sub,q)).then((r=>{e&&(null===r?C(!1):""===r?d("Kontrollera internetanslutningen och försök igen."):(T.setToken(r),T.getNickname().then(_),C(!0)))})).catch((()=>{e&&(d("Ett fel uppstod. Försök igen senare."),C(!1))})),()=>{e=!1}}}),[a,q,j,T]);const S=e.useCallback((()=>{T.logout(),m(null),d(null),C(void 0),_(""),c({logoutParams:{returnTo:o.getConfigValue("AUTH_REDIRECT_URL")}})}),[T,c]),f=e.useCallback((async e=>{const r=n?.registerFn?await n.registerFn(T,e,a.email,a.sub,q):await T.registerUser(e,a.email,a.sub,q);return r&&(T.setToken(r),C(!0)),r}),[T,a,q]);e.useEffect((()=>{T.onUnauthorized=S}),[T]);const A=e.useCallback((async e=>{try{await p({authorizationParams:{connection:"email",login_hint:e}})}catch(e){console.error("Passwordless login failed:",e),d(`Passwordless login failed: ${e}`)}}),[p]);return e.useMemo((()=>({isAuthenticated:t,isRegistered:j,accessToken:q,authError:E,isLoading:u,user:a,nickname:P,logout:S,registerUser:f,codicentService:T,loginWithRedirect:g,loginPasswordless:A})),[t,j,q,E,u,a,P,S,f,T,g,A])};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("@fluentui/react-components"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons");var o=require("../config/index.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.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"),require("../components/CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");exports.default=(s,n)=>{const{isAuthenticated:t,getAccessTokenSilently:i,user:a,isLoading:u,logout:c,getAccessTokenWithPopup:l,loginWithRedirect:g,loginWithPopup:p}=s,[q,m]=e.useState(null),[j,C]=e.useState(void 0),[E,d]=e.useState(null),[P,_]=e.useState(""),T=e.useMemo((()=>new r.CodicentService({API_BASE_URL:o.getConfigValue("API_BASE_URL"),APP_LOG_CODICENT:o.getConfigValue("APP_LOG_CODICENT"),APP_LOG_TOKEN:o.getConfigValue("APP_LOG_TOKEN"),APP_NAME:o.getConfigValue("APP_NAME"),APP_PREFIX:o.getConfigValue("APP_PREFIX"),APP_TEMPLATE:o.getConfigValue("APP_TEMPLATE"),BUTTON_TAG:o.getConfigValue("BUTTON_TAG"),STRIPE_PUBLIC_KEY:o.getConfigValue("STRIPE_PUBLIC_KEY"),STRIPE_SOURCE:o.getConfigValue("STRIPE_SOURCE"),STRIPE_TRIAL_PERIOD_DAYS:o.getConfigValue("STRIPE_TRIAL_PERIOD_DAYS"),SUBSCRIPTION_NEEDED:o.getConfigValue("SUBSCRIPTION_NEEDED"),USER_PREFIX:o.getConfigValue("USER_PREFIX"),ANONYMOUS_TOKEN:o.getConfigValue("ANONYMOUS_TOKEN")})),[]);e.useEffect((()=>{!u&&t&&(async()=>{try{const e=await i({});console.debug("CODICENT: ACCESS TOKEN",e),m(e)}catch(e){console.debug("CODICENT: Failed to get access token",e);const r=e;if(r&&"object"==typeof r&&"error"in r&&"login_required"===r.error)console.warn("CODICENT: Login required"),S();else if(r&&"object"==typeof r&&"error"in r&&"consent_required"===r.error)try{const e=await l();if(!e)return void d("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),m(e)}catch(e){console.warn("CODICENT: Failed to get access token with popup",e),S()}else d("Failed to get access token: "+(r.message?.toString()||r.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",r)}})().then((()=>{}))}),[t,l,i,g,u]),e.useEffect((()=>{if(a&&a.sub&&q&&void 0===j){let e=!0;return(n?.loginFn?n.loginFn(T,a.sub,q):T.loginUser(a.sub,q)).then((r=>{e&&(null===r?C(!1):""===r?d("Kontrollera internetanslutningen och försök igen."):(T.setToken(r),T.getNickname().then(_),C(!0)))})).catch((()=>{e&&(d("Ett fel uppstod. Försök igen senare."),C(!1))})),()=>{e=!1}}}),[a,q,j,T]);const S=e.useCallback((()=>{T.logout(),m(null),d(null),C(void 0),_(""),c({logoutParams:{returnTo:o.getConfigValue("AUTH_REDIRECT_URL")}})}),[T,c]),f=e.useCallback((async e=>{const r=n?.registerFn?await n.registerFn(T,e,a.email,a.sub,q):await T.registerUser(e,a.email,a.sub,q);return r&&(T.setToken(r),C(!0)),r}),[T,a,q]);e.useEffect((()=>{T.onUnauthorized=S}),[T]);const A=e.useCallback((async e=>{try{await p({authorizationParams:{connection:"email",login_hint:e}})}catch(e){console.error("Passwordless login failed:",e),d(`Passwordless login failed: ${e}`)}}),[p]);return e.useMemo((()=>({isAuthenticated:t,isRegistered:j,accessToken:q,authError:E,isLoading:u,user:a,nickname:P,logout:S,registerUser:f,codicentService:T,loginWithRedirect:g,loginPasswordless:A})),[t,j,q,E,u,a,P,S,f,T,g,A])};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./useStateWithLocalStorage.js");require("../services/codicent.js"),require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("@fluentui/react-components"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons");var s=require("../config/index.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.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"),require("../components/CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");exports.default=t=>{const[o,i]=r.default("APP_WELCOME_STATE_TEXT_"+t.context.selectedApp,""),[n,a]=r.default("CODICENT_STATE_LAST_TIMESTAMP_"+t.context.selectedApp,0),{service:u,current:c}=t,[p,l]=e.useState(!1),q=e.useRef(!1),j=e.useCallback((async()=>{if(!q.current){q.current=!0;try{const e=await u.getMessagesFast(s.getConfigValue("LOGBOOK_TAGS").split(",").filter((e=>"chat"!==e))),r=e.length>0?e[0].createdAt.getTime():n;if(r>n){a(r),l(!0);const e=await u.chat(s.getConfigValue("WELCOME_STATUS_PROMPT"));i(e.content)}}finally{l(!1),q.current=!1}}}),[u,n,a,i]),m=e.useCallback((()=>{u&&s.getConfigValue("CHAT_INSTRUCTIONS")}),[u]);return e.useEffect((()=>{c===t.allStates.hasAccess&&s.getConfigValue("WELCOME_STATUS_PROMPT")?(j(),m()):s.getConfigValue("WELCOME_STATUS_PROMPT")||i("")}),[c,t,j,m,i]),{welcomeStatusText:o,updating:p}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./useStateWithLocalStorage.js");require("../services/codicent.js"),require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("@fluentui/react-components"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons");var s=require("../config/index.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.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"),require("../components/CookieBanner.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("../pages/QrScan.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");exports.default=t=>{const[o,i]=r.default("APP_WELCOME_STATE_TEXT_"+t.context.selectedApp,""),[n,a]=r.default("CODICENT_STATE_LAST_TIMESTAMP_"+t.context.selectedApp,0),{service:u,current:c}=t,[p,l]=e.useState(!1),q=e.useRef(!1),j=e.useCallback((async()=>{if(!q.current){q.current=!0;try{const e=await u.getMessagesFast(s.getConfigValue("LOGBOOK_TAGS").split(",").filter((e=>"chat"!==e))),r=e.length>0?e[0].createdAt.getTime():n;if(r>n){a(r),l(!0);const e=await u.chat(s.getConfigValue("WELCOME_STATUS_PROMPT"));i(e.content)}}finally{l(!1),q.current=!1}}}),[u,n,a,i]),m=e.useCallback((()=>{u&&s.getConfigValue("CHAT_INSTRUCTIONS")}),[u]);return e.useEffect((()=>{c===t.allStates.hasAccess&&s.getConfigValue("WELCOME_STATUS_PROMPT")?(j(),m()):s.getConfigValue("WELCOME_STATUS_PROMPT")||i("")}),[c,t,j,m,i]),{welcomeStatusText:o,updating:p}};
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwGD,eAAO,MAAM,gBAAgB,YAAiB,CAAC;AAE/C,QAAA,MAAM,eAAe;aAuCX,MAAM;kBAwEA,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;+BA1FC,MAAM;;;CA+J9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwGD,eAAO,MAAM,gBAAgB,YAAiB,CAAC;AAU/C,QAAA,MAAM,eAAe;aAsCX,MAAM;kBAyEA,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;+BA3FC,MAAM;;;CAkK9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../node_modules/i18next/dist/esm/i18next.js"),r=require("../services/codicent.js"),n=require("../config/index.js"),a=require("../node_modules/react-i18next/dist/es/initReactI18next.js"),i=require("../node_modules/react-i18next/dist/es/useTranslation.js");const s=()=>{const e=n.getConfigValue("FORCE_LANGUAGE");if(e)return{source:"force_config",language:e};if("undefined"!=typeof window){const e=new URLSearchParams(window.location.search),t=e.get("lang")||e.get("language");if(t)return{source:"url_param",language:t}}if("undefined"!=typeof window&&"undefined"!=typeof localStorage){const e=localStorage.getItem("user_language");if(e&&"auto"!==e)return{source:"user_preference",language:e}}if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:n.getConfigValue("DEFAULT_LANGUAGE")||"sv"}};let o=null;const l=()=>{if(null===o){const{language:e}=s();o=e}return o},c=()=>{const e=n.getConfigValue("TRANSLATIONS");if(e){const t={};for(const[r,n]of Object.entries(e))t[r]={translation:n};return t}return{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}}},u=()=>{if(t.default.isInitialized){const e=c();Object.keys(e).forEach((r=>{t.default.addResourceBundle(r,"translation",e[r].translation,!0,!0)}))}else t.default.use(a.initReactI18next).init({resources:c(),lng:l(),fallbackLng:n.getConfigValue("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}})};u();exports.default=()=>{const{t:t,i18n:a}=i.useTranslation(),[o,c]=e.useState((()=>l())),[g,d]=e.useState(JSON.parse(localStorage.getItem("app-translations")||"{}")),f=e.useRef([]);e.useEffect((()=>{globalThis.__CODICENT_REINIT_I18N__&&(u(),globalThis.__CODICENT_REINIT_I18N__=!1)}),[]),e.useEffect((()=>{a.changeLanguage(o)}),[o,a]);const m=e.useCallback((e=>{const{source:t}=s();"force_config"!==t?"url_param"!==t?c(e):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),_=e.useCallback((()=>s()),[]);return{t:e.useCallback((e=>(a.exists(e)||(async(e,t)=>{const a=`${t} - ${e}`;let i=g[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!i&&-1===f.current.indexOf(a)){f.current=[...f.current,a],localStorage.setItem("app-translations",JSON.stringify(g));try{i=(await r.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),i=void 0}i&&i.includes("Error code:")&&(i=void 0),i&&(!e.trim().startsWith('"')&&i.trim().startsWith('"')&&i.trim().endsWith('"')&&(i=i.trim().slice(1,-1)),!e.trim().startsWith("'")&&i.trim().startsWith("'")&&i.trim().endsWith("'")&&(i=i.trim().slice(1,-1)),g[t]={...g[t],[e]:i},localStorage.setItem("app-translations",JSON.stringify(g)),d(g))}return i||e})(e,o).then((t=>{a.addResource(o,"translation",e,t)})),t(e))),[a,t,g,o]),tAsync:e.useCallback((async e=>{const t=await(async(e,t)=>{const a=`${t} - ${e}`;let i=g[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!i&&-1===f.current.indexOf(a)){f.current=[...f.current,a],localStorage.setItem("app-translations",JSON.stringify(g));try{i=(await r.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),i=void 0}i&&i.includes("Error code:")&&(i=void 0),i&&(!e.trim().startsWith('"')&&i.trim().startsWith('"')&&i.trim().endsWith('"')&&(i=i.trim().slice(1,-1)),!e.trim().startsWith("'")&&i.trim().startsWith("'")&&i.trim().endsWith("'")&&(i=i.trim().slice(1,-1)),g[t]={...g[t],[e]:i},localStorage.setItem("app-translations",JSON.stringify(g)),d(g))}return i||e})(e,o);return a.exists(e)||a.addResource(o,"translation",e,t),t}),[a,g,o]),currentLanguage:o,setCurrentLanguage:m,getLanguageInfo:_,isForced:["force_config","url_param"].includes(s().source)}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../node_modules/i18next/dist/esm/i18next.js"),a=require("../services/codicent.js"),n=require("../config/index.js"),r=require("../node_modules/react-i18next/dist/es/initReactI18next.js"),s=require("../node_modules/react-i18next/dist/es/useTranslation.js");const i=()=>{const e=n.getConfigValue("FORCE_LANGUAGE");if(e)return{source:"force_config",language:e};if("undefined"!=typeof window){const e=new URLSearchParams(window.location.search),t=e.get("lang")||e.get("language");if(t)return{source:"url_param",language:t}}if("undefined"!=typeof window&&"undefined"!=typeof localStorage){const e=localStorage.getItem("user_language");if(e&&"auto"!==e)return{source:"user_preference",language:e}}if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:n.getConfigValue("DEFAULT_LANGUAGE")||"sv"}};let o=null;const l=()=>{if(null===o){const{language:e}=i();o=e}return o},c=()=>{const e=n.getConfigValue("TRANSLATIONS");if(e){const t={};for(const[a,n]of Object.entries(e))t[a]={translation:n};return t}return{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}}},u=()=>{if(t.default.isInitialized){const e=c();Object.keys(e).forEach((a=>{t.default.addResourceBundle(a,"translation",e[a].translation,!0,!0)}))}else t.default.use(r.initReactI18next).init({resources:c(),lng:l(),fallbackLng:n.getConfigValue("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}})};u();const g=new Set;let d=JSON.parse(localStorage.getItem("app-translations")||"{}");exports.default=()=>{const{t:t,i18n:r}=s.useTranslation(),[o,c]=e.useState((()=>l())),[f,m]=e.useState(d);e.useEffect((()=>{globalThis.__CODICENT_REINIT_I18N__&&(u(),globalThis.__CODICENT_REINIT_I18N__=!1)}),[]),e.useEffect((()=>{r.changeLanguage(o)}),[o,r]);const _=e.useCallback((e=>{const{source:t}=i();"force_config"!==t?"url_param"!==t?c(e):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),p=e.useCallback((()=>i()),[]);return{t:e.useCallback((e=>(r.exists(e)||(async(e,t)=>{const r=`${t} - ${e}`;let s=d[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!s&&!g.has(r)){g.add(r),localStorage.setItem("app-translations",JSON.stringify(d));try{s=(await a.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),s=void 0}finally{g.delete(r)}s&&s.includes("Error code:")&&(s=void 0),s&&(!e.trim().startsWith('"')&&s.trim().startsWith('"')&&s.trim().endsWith('"')&&(s=s.trim().slice(1,-1)),!e.trim().startsWith("'")&&s.trim().startsWith("'")&&s.trim().endsWith("'")&&(s=s.trim().slice(1,-1)),d[t]={...d[t],[e]:s},localStorage.setItem("app-translations",JSON.stringify(d)),m({...d}))}return s||e})(e,o).then((t=>{r.addResource(o,"translation",e,t)})),t(e))),[r,t,o]),tAsync:e.useCallback((async e=>{const t=await(async(e,t)=>{const r=`${t} - ${e}`;let s=d[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!s&&!g.has(r)){g.add(r),localStorage.setItem("app-translations",JSON.stringify(d));try{s=(await a.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),s=void 0}finally{g.delete(r)}s&&s.includes("Error code:")&&(s=void 0),s&&(!e.trim().startsWith('"')&&s.trim().startsWith('"')&&s.trim().endsWith('"')&&(s=s.trim().slice(1,-1)),!e.trim().startsWith("'")&&s.trim().startsWith("'")&&s.trim().endsWith("'")&&(s=s.trim().slice(1,-1)),d[t]={...d[t],[e]:s},localStorage.setItem("app-translations",JSON.stringify(d)),m({...d}))}return s||e})(e,o);return r.exists(e)||r.addResource(o,"translation",e,t),t}),[r,o]),currentLanguage:o,setCurrentLanguage:_,getLanguageInfo:p,isForced:["force_config","url_param"].includes(i().source)}};
@@ -1 +1 @@
1
- {"version":3,"file":"useRealtimeVoiceAI.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoiceAI.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAK/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,kBAAkB,oBACL,eAAe,UACxB,MAAM,SACP;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,EAAE,UACtD,MAAM,aACH,MAAM,KAChB,aAAa,GAAG,SAkrBlB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"useRealtimeVoiceAI.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoiceAI.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAK/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,kBAAkB,oBACL,eAAe,UACxB,MAAM,SACP;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,EAAE,UACtD,MAAM,aACH,MAAM,KAChB,aAAa,GAAG,SA6rBlB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../utils/wav_renderer.js");require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js");var n=require("../lib/wavtools/lib/wav_stream_player.js"),r=require("../lib/wavtools/lib/wav_recorder.js"),a=require("../config/index.js");exports.default=(o,s,i,c,l)=>{const u=!!a.getConfigValue("APP_CONFIG"),d=!!a.getConfigValue("APP_BUTTONS");u||console.warn("APP_CONFIG is not set. Voice AI will not be available."),d||console.warn("APP_BUTTONS is not set. Voice AI will not be available.");const p=a.getConfigValue("APP_CONFIG"),f=a.getConfigValue("APP_BUTTONS");a.getConfigValue("API_BASE_URL").replace(/\/$/,""),a.getConfigValue("USE_REALTIME_SESSION_ENDPOINT"),a.getConfigValue("REALTIME_SESSION_ENDPOINT");const g=c||a.getConfigValue("REALTIME_VOICE_MODEL")||"alloy",m=l||a.getConfigValue("REALTIME_VOICE_PROVIDER")||"openai",y=["alloy","shimmer","echo"],_=y.includes(g)?g:"alloy";g!==_&&console.warn(`[codicent-app-sdk] Voice "${g}" is not supported in the current SDK version. Supported voices: ${y.join(", ")}. Falling back to "${_}".`);const S=e.useRef(new r.WavRecorder({sampleRate:24e3})),w=e.useRef(new n.WavStreamPlayer({sampleRate:24e3})),v=e.useRef(null),h=e.useRef(null),O=e.useRef(null),R=e.useRef(null),C=e.useRef(!1),I=e.useRef(null),T=e.useRef(null),E=e.useRef(null),N=e.useRef((new Date).toISOString()),[b,A]=e.useState([]),[P,V]=e.useState([]),[k,D]=e.useState(!1),[M,x]=e.useState(!1),[F,J]=e.useState(!1),[$,L]=e.useState(!1),j=e.useRef(0),q=e.useRef(0),[U,B]=e.useState(""),[W,G]=e.useState("en-US"),H=e.useRef(new Map),z=e.useRef(null),[K,Q]=e.useState((()=>u&&d&&f&&p&&p.apps&&p.apps[f]?p.apps[f].voiceInstructions||p.REALTIME_VOICE_INSTRUCTIONS||"":p&&p.REALTIME_VOICE_INSTRUCTIONS||"")),X=e.useCallback((e=>{const t=N.current,n=new Date(t).valueOf(),r=new Date(e).valueOf()-n,a=Math.floor(r/10)%100,o=Math.floor(r/1e3)%60,s=e=>{let t=e+"";for(;t.length<2;)t="0"+t;return t};return`${s(Math.floor(r/6e4)%60)}:${s(o)}.${s(a)}`}),[]),Y=e.useCallback((async()=>{try{N.current=(new Date).toISOString(),D(!0),V([]),A([]),H.current.clear();const e=await o.getRealtimeSessionToken(_,m);if(!e)throw new Error("No ephemeral key returned from session endpoint");const t=new RTCPeerConnection;v.current=t,O.current||(O.current=new Audio,O.current.autoplay=!0),t.ontrack=e=>{O.current&&e.streams[0]&&(O.current.srcObject=e.streams[0])};const n=await navigator.mediaDevices.getUserMedia({audio:!0});R.current=n;const r=n.getTracks()[0];t.addTrack(r,n);const s=t.createDataChannel("oai-events");h.current=s,s.addEventListener("message",(e=>{try{const t=JSON.parse(e.data);if("session.created"===t.type);else if("conversation.item.created"===t.type)A((e=>[...e,t.item]));else if("conversation.item.input_audio_transcription.completed"===t.type)A((e=>{const n=[...e],r=n.findIndex((e=>e.id===t.item_id));return-1!==r&&n[r].formatted&&(n[r].formatted.transcript=t.transcript),n}));else if("response.audio_transcript.delta"===t.type);else if("response.audio_transcript.done"===t.type);else if("response.output_item.added"===t.type){const e=t.item;"function_call"===e?.type&&(console.log("[Voice AI] Function call initiated:",e.name),H.current.set(e.id,{name:e.name||"",arguments:"",call_id:e.call_id||e.id}))}else if("response.function_call_arguments.delta"===t.type){const e=t.item_id,n=t.delta,r=H.current.get(e);r&&n&&(r.arguments+=n,H.current.set(e,r))}else if("response.function_call_arguments.done"===t.type){const e=t.item_id,n=H.current.get(e);if(n){console.log(`[Voice AI] Executing tool: ${n.name}`);const t=i.find((e=>e.definition.name===n.name));if(t){let e={};try{e=n.arguments?JSON.parse(n.arguments):{}}catch(t){console.error("[Voice AI] Failed to parse tool arguments:",t),e={}}Promise.resolve(t.handler(e)).then((e=>{console.log(`[Voice AI] Tool ${n.name} completed:`,e),s&&"open"===s.readyState&&(s.send(JSON.stringify({type:"conversation.item.create",item:{type:"function_call_output",call_id:n.call_id,output:JSON.stringify(e)}})),s.send(JSON.stringify({type:"response.create"})))})).catch((e=>{console.error(`[Voice AI] Tool ${n.name} failed:`,e),s&&"open"===s.readyState&&(s.send(JSON.stringify({type:"conversation.item.create",item:{type:"function_call_output",call_id:n.call_id,output:JSON.stringify({error:e.message||"Tool execution failed"})}})),s.send(JSON.stringify({type:"response.create"})))}))}else console.error(`[Voice AI] Tool not found: ${n.name}`);H.current.delete(e)}}else"error"===t.type&&console.error("Server error:",t.error)}catch(t){console.warn("Invalid message:",e.data)}})),s.onopen=()=>{console.log("Data channel opened, configuring session");const e=z.current||K;z.current=null,s.send(JSON.stringify({type:"session.update",session:{instructions:e.replace("{{name}}",U).replace("{{language}}",W).replace("{{time}}",(new Date).toISOString()),modalities:["text","audio"],input_audio_transcription:{model:"whisper-1"},turn_detection:{type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:500},voice:_,temperature:.8,max_response_output_tokens:4096,input_audio_format:"pcm16",output_audio_format:"pcm16",tools:i.map((e=>({type:"function",...e.definition})))}})),x(!0)},s.onclose=()=>{console.log("Data channel closed"),x(!1)};const c=await t.createOffer();await t.setLocalDescription(c);let l="gpt-4o-realtime-preview";try{if(a.getConfigValue("REALTIME_CONFIG_ENDPOINT")){const e=await o.getRealtimeConfig();e&&e.model&&(l=e.model)}}catch(e){console.warn("Failed to fetch realtime config, using default model:",e)}const u="https://api.openai.com/v1/realtime",d=await fetch(`${u}?model=${l}`,{method:"POST",body:c.sdp,headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/sdp"}});if(!d.ok)throw new Error(`Failed to get SDP answer: ${d.statusText}`);const p={type:"answer",sdp:await d.text()};await t.setRemoteDescription(p),J(!1);const f=S.current,g=w.current;await f.begin(),await g.connect()}catch(e){throw console.error("[codicent-app-sdk] Failed to establish WebRTC connection:",e),D(!1),e}}),[o,_,K,U,W,i]),Z=e.useCallback((async()=>{D(!1),x(!1),V([]),A([]),H.current.clear(),z.current=null,h.current&&(h.current.close(),h.current=null),v.current&&(v.current.close(),v.current=null),R.current&&(R.current.getTracks().forEach((e=>e.stop())),R.current=null),O.current&&(O.current.pause(),O.current.srcObject=null);const e=S.current;await e.end();const t=w.current;await t.interrupt()}),[]),ee=e.useCallback((async e=>{const t=h.current;t&&"open"===t.readyState&&t.send(JSON.stringify({type:"conversation.item.delete",item_id:e}))}),[]),te=e.useCallback((async()=>{L(!0);const e=h.current;e&&"open"===e.readyState&&e.send(JSON.stringify({type:"input_audio_buffer.commit"}))}),[]),ne=e.useCallback((async()=>{L(!1);const e=h.current;e&&"open"===e.readyState&&e.send(JSON.stringify({type:"response.create"}))}),[]),re=e.useCallback((async e=>{const t=h.current;t&&"open"===t.readyState&&t.send(JSON.stringify({type:"session.update",session:{turn_detection:"none"===e?null:{type:"server_vad"}}})),J("none"===e)}),[]);e.useEffect((()=>{if(U&&M){const e=h.current;e&&"open"===e.readyState&&e.send(JSON.stringify({type:"session.update",session:{instructions:K.replace("{{name}}",U).replace("{{language}}",W).replace("{{time}}",(new Date).toISOString())}}))}}),[K,U,W,M]),e.useEffect((()=>{let e=!0;const n=S.current,r=I.current;let a=null;const o=w.current,s=T.current;let i=null;const c=()=>{if(e){if(r&&(r.width&&r.height||(r.width=r.offsetWidth,r.height=r.offsetHeight),a=a||r.getContext("2d"),a)){a.clearRect(0,0,r.width,r.height);const e=n.recording?n.getFrequencies("voice"):{values:new Float32Array([0])},o=1-Math.max(...e.values);j.current=o,t.WavRenderer.drawCircularBars(r,a,e.values,"#0099ff",20,0,8)}if(s&&(s.width&&s.height||(s.width=s.offsetWidth,s.height=s.offsetHeight),i=i||s.getContext("2d"),i)){i.clearRect(0,0,s.width,s.height);const e=o.analyser?o.getFrequencies("voice"):{values:new Float32Array([0])},n=1-Math.max(...e.values);q.current=n,t.WavRenderer.drawCircularBars(s,i,e.values,"#009900",20,0,8)}window.requestAnimationFrame(c)}};return c(),()=>{e=!1}}),[]),e.useEffect((()=>{!C.current&&i&&K&&(C.current=!0)}),[i,K]);const ae=e.useCallback((e=>{Q(e);const t=h.current;if(t&&"open"===t.readyState){const n=e.replace("{{name}}",U).replace("{{language}}",W).replace("{{time}}",(new Date).toISOString());t.send(JSON.stringify({type:"session.update",session:{instructions:n}}))}else z.current=e}),[U,W]);return e.useMemo((()=>{if(u&&d)return{items:b,realtimeEvents:P,isConnected:k,isSessionReady:M,canPushToTalk:F,isRecording:$,clientCanvasRef:I,serverCanvasRef:T,eventsScrollRef:E,formatTime:X,connectConversation:Y,disconnectConversation:Z,deleteConversationItem:ee,startRecording:te,stopRecording:ne,changeTurnEndType:re,getRecorderLevel:()=>j.current,getStreamLevel:()=>q.current,setUsername:B,updateInstructions:ae,setLanguage:G}}),[u,d,b,P,k,M,F,$,I,T,E])};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../utils/wav_renderer.js");require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js");var n=require("../lib/wavtools/lib/wav_stream_player.js"),r=require("../lib/wavtools/lib/wav_recorder.js"),a=require("../config/index.js");exports.default=(o,s,i,c,l)=>{const u=!!a.getConfigValue("APP_CONFIG"),d=!!a.getConfigValue("APP_BUTTONS");u||console.warn("APP_CONFIG is not set. Voice AI will not be available."),d||console.warn("APP_BUTTONS is not set. Voice AI will not be available.");const p=a.getConfigValue("APP_CONFIG"),f=a.getConfigValue("APP_BUTTONS");a.getConfigValue("API_BASE_URL").replace(/\/$/,""),a.getConfigValue("USE_REALTIME_SESSION_ENDPOINT"),a.getConfigValue("REALTIME_SESSION_ENDPOINT");const g=c||a.getConfigValue("REALTIME_VOICE_MODEL")||"alloy",m=l||a.getConfigValue("REALTIME_VOICE_PROVIDER")||"openai",y=["alloy","shimmer","echo","verse","nova","fable","onyx"],_=y.includes(g)?g:"alloy";g!==_&&console.warn(`[codicent-app-sdk] Voice "${g}" is not supported in the current SDK version. Supported voices: ${y.join(", ")}. Falling back to "${_}".`);const S=e.useRef(new r.WavRecorder({sampleRate:24e3})),w=e.useRef(new n.WavStreamPlayer({sampleRate:24e3})),v=e.useRef(null),h=e.useRef(null),C=e.useRef(null),O=e.useRef(null),R=e.useRef(!1),I=e.useRef(null),T=e.useRef(null),E=e.useRef(null),N=e.useRef((new Date).toISOString()),[b,A]=e.useState([]),[P,V]=e.useState([]),[k,D]=e.useState(!1),[M,x]=e.useState(!1),[L,F]=e.useState(!1),[J,$]=e.useState(!1),j=e.useRef(0),q=e.useRef(0),[U,B]=e.useState(""),[W,G]=e.useState("en-US"),z=e.useRef(new Map),H=e.useRef(null),[K,Q]=e.useState((()=>u&&d&&f&&p&&p.apps&&p.apps[f]?p.apps[f].voiceInstructions||p.REALTIME_VOICE_INSTRUCTIONS||"":p&&p.REALTIME_VOICE_INSTRUCTIONS||"")),X=e.useCallback((e=>{const t=N.current,n=new Date(t).valueOf(),r=new Date(e).valueOf()-n,a=Math.floor(r/10)%100,o=Math.floor(r/1e3)%60,s=e=>{let t=e+"";for(;t.length<2;)t="0"+t;return t};return`${s(Math.floor(r/6e4)%60)}:${s(o)}.${s(a)}`}),[]),Y=e.useCallback((async()=>{try{N.current=(new Date).toISOString(),D(!0),V([]),A([]),z.current.clear();const e=await o.getRealtimeSessionToken(_,m);if(!e)throw new Error("No ephemeral key returned from session endpoint");const t=new RTCPeerConnection;v.current=t,C.current||(C.current=new Audio,C.current.autoplay=!0),t.ontrack=e=>{C.current&&e.streams[0]&&(C.current.srcObject=e.streams[0])};const n=await navigator.mediaDevices.getUserMedia({audio:!0});O.current=n;const r=n.getTracks()[0];t.addTrack(r,n);const s=t.createDataChannel("oai-events");h.current=s,s.addEventListener("message",(e=>{try{const t=JSON.parse(e.data);if("session.created"===t.type);else if("conversation.item.created"===t.type)A((e=>[...e,t.item]));else if("conversation.item.input_audio_transcription.completed"===t.type)A((e=>{const n=[...e],r=n.findIndex((e=>e.id===t.item_id));return-1!==r&&n[r].formatted&&(n[r].formatted.transcript=t.transcript),n}));else if("response.audio_transcript.delta"===t.type);else if("response.audio_transcript.done"===t.type);else if("response.output_item.added"===t.type){const e=t.item;"function_call"===e?.type&&(console.log("[Voice AI] Function call initiated:",e.name),z.current.set(e.id,{name:e.name||"",arguments:"",call_id:e.call_id||e.id}))}else if("response.function_call_arguments.delta"===t.type){const e=t.item_id,n=t.delta,r=z.current.get(e);r&&n&&(r.arguments+=n,z.current.set(e,r))}else if("response.function_call_arguments.done"===t.type){const e=t.item_id,n=z.current.get(e);if(n){console.log(`[Voice AI] Executing tool: ${n.name}`);const t=i.find((e=>e.definition.name===n.name));if(t){let e={};try{e=n.arguments?JSON.parse(n.arguments):{}}catch(t){console.error("[Voice AI] Failed to parse tool arguments:",t),e={}}Promise.resolve(t.handler(e)).then((e=>{console.log(`[Voice AI] Tool ${n.name} completed:`,e),s&&"open"===s.readyState&&(s.send(JSON.stringify({type:"conversation.item.create",item:{type:"function_call_output",call_id:n.call_id,output:JSON.stringify(e)}})),s.send(JSON.stringify({type:"response.create"})))})).catch((e=>{console.error(`[Voice AI] Tool ${n.name} failed:`,e),s&&"open"===s.readyState&&(s.send(JSON.stringify({type:"conversation.item.create",item:{type:"function_call_output",call_id:n.call_id,output:JSON.stringify({error:e.message||"Tool execution failed"})}})),s.send(JSON.stringify({type:"response.create"})))}))}else console.error(`[Voice AI] Tool not found: ${n.name}`);z.current.delete(e)}}else"error"===t.type&&console.error("Server error:",t.error)}catch(t){console.warn("Invalid message:",e.data)}})),s.onopen=()=>{console.log("Data channel opened, configuring session");const e=H.current||K;H.current=null,s.send(JSON.stringify({type:"session.update",session:{instructions:e.replace("{{name}}",U).replace("{{language}}",W).replace("{{time}}",(new Date).toISOString()),modalities:["text","audio"],input_audio_transcription:{model:"whisper-1"},turn_detection:{type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:500},voice:_,temperature:.8,max_response_output_tokens:4096,input_audio_format:"pcm16",output_audio_format:"pcm16",tools:i.map((e=>({type:"function",...e.definition})))}})),x(!0)},s.onclose=()=>{console.log("Data channel closed"),x(!1)};const c=await t.createOffer();await t.setLocalDescription(c);let l="gpt-4o-realtime-preview",u=null;try{const e=a.getConfigValue("REALTIME_CONFIG_ENDPOINT"),t="azure"===m.toLowerCase();if(e||t){const e=await o.getRealtimeConfig(m);e&&e.model&&(l=e.model),e&&e.url&&(u=e.url)}}catch(e){console.warn("Failed to fetch realtime config, using default model:",e)}const d="azure"===m.toLowerCase(),p=u??`https://api.openai.com/v1/realtime?model=${l}`,f=d?{"api-key":e,"Content-Type":"application/sdp"}:{Authorization:`Bearer ${e}`,"Content-Type":"application/sdp"},g=await fetch(p,{method:"POST",body:c.sdp,headers:f});if(!g.ok)throw new Error(`Failed to get SDP answer: ${g.statusText}`);const y={type:"answer",sdp:await g.text()};await t.setRemoteDescription(y),F(!1);const R=S.current,I=w.current;await R.begin(),await I.connect()}catch(e){throw console.error("[codicent-app-sdk] Failed to establish WebRTC connection:",e),D(!1),e}}),[o,_,K,U,W,i]),Z=e.useCallback((async()=>{D(!1),x(!1),V([]),A([]),z.current.clear(),H.current=null,h.current&&(h.current.close(),h.current=null),v.current&&(v.current.close(),v.current=null),O.current&&(O.current.getTracks().forEach((e=>e.stop())),O.current=null),C.current&&(C.current.pause(),C.current.srcObject=null);const e=S.current;await e.end();const t=w.current;await t.interrupt()}),[]),ee=e.useCallback((async e=>{const t=h.current;t&&"open"===t.readyState&&t.send(JSON.stringify({type:"conversation.item.delete",item_id:e}))}),[]),te=e.useCallback((async()=>{$(!0);const e=h.current;e&&"open"===e.readyState&&e.send(JSON.stringify({type:"input_audio_buffer.commit"}))}),[]),ne=e.useCallback((async()=>{$(!1);const e=h.current;e&&"open"===e.readyState&&e.send(JSON.stringify({type:"response.create"}))}),[]),re=e.useCallback((async e=>{const t=h.current;t&&"open"===t.readyState&&t.send(JSON.stringify({type:"session.update",session:{turn_detection:"none"===e?null:{type:"server_vad"}}})),F("none"===e)}),[]);e.useEffect((()=>{if(U&&M){const e=h.current;e&&"open"===e.readyState&&e.send(JSON.stringify({type:"session.update",session:{instructions:K.replace("{{name}}",U).replace("{{language}}",W).replace("{{time}}",(new Date).toISOString())}}))}}),[K,U,W,M]),e.useEffect((()=>{let e=!0;const n=S.current,r=I.current;let a=null;const o=w.current,s=T.current;let i=null;const c=()=>{if(e){if(r&&(r.width&&r.height||(r.width=r.offsetWidth,r.height=r.offsetHeight),a=a||r.getContext("2d"),a)){a.clearRect(0,0,r.width,r.height);const e=n.recording?n.getFrequencies("voice"):{values:new Float32Array([0])},o=1-Math.max(...e.values);j.current=o,t.WavRenderer.drawCircularBars(r,a,e.values,"#0099ff",20,0,8)}if(s&&(s.width&&s.height||(s.width=s.offsetWidth,s.height=s.offsetHeight),i=i||s.getContext("2d"),i)){i.clearRect(0,0,s.width,s.height);const e=o.analyser?o.getFrequencies("voice"):{values:new Float32Array([0])},n=1-Math.max(...e.values);q.current=n,t.WavRenderer.drawCircularBars(s,i,e.values,"#009900",20,0,8)}window.requestAnimationFrame(c)}};return c(),()=>{e=!1}}),[]),e.useEffect((()=>{!R.current&&i&&K&&(R.current=!0)}),[i,K]);const ae=e.useCallback((e=>{Q(e);const t=h.current;if(t&&"open"===t.readyState){const n=e.replace("{{name}}",U).replace("{{language}}",W).replace("{{time}}",(new Date).toISOString());t.send(JSON.stringify({type:"session.update",session:{instructions:n}}))}else H.current=e}),[U,W]);return e.useMemo((()=>{if(u&&d)return{items:b,realtimeEvents:P,isConnected:k,isSessionReady:M,canPushToTalk:L,isRecording:J,clientCanvasRef:I,serverCanvasRef:T,eventsScrollRef:E,formatTime:X,connectConversation:Y,disconnectConversation:Z,deleteConversationItem:ee,startRecording:te,stopRecording:ne,changeTurnEndType:re,getRecorderLevel:()=>j.current,getStreamLevel:()=>q.current,setUsername:B,updateInstructions:ae,setLanguage:G}}),[u,d,b,P,k,M,L,J,I,T,E])};
package/dist/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("./services/codicent.js"),r=require("./components/Markdown.js"),s=require("./components/Textarea.js"),o=require("./components/Button.js"),t=require("./components/CompoundButton.js"),a=require("./components/Title.js"),i=require("./components/Text.js"),p=require("./components/Spinner.js"),u=require("./components/Label.js"),n=require("./components/Input.js"),l=require("./components/TextHeader.js"),c=require("./components/TypingIndicator.js"),d=require("./components/Prompt.js"),x=require("./components/ChatInput.js"),m=require("./components/CombinedPlaceholderDialog.js"),g=require("./components/ChatMessage.js"),j=require("./components/Header.js"),q=require("./components/VoiceIcon.js"),h=require("./components/AudioIcon.js"),f=require("./components/FileThumbnail.js"),C=require("./components/MessageInput.js"),S=require("./components/UploadFile.js"),P=require("./components/SnapFooter.js"),k=require("./components/Profile.js"),b=require("./components/MessageItem.js"),A=require("./components/Content.js"),M=require("./components/AiInput.js"),T=require("./components/SearchBox.js"),v=require("./components/HtmlView.js"),I=require("./components/Footer.js"),L=require("./components/Page.js"),D=require("./components/UrlProcessor.js"),w=require("./components/DatePicker.js"),B=require("./components/ColorPicker.js"),F=require("./components/TimePicker.js"),V=require("./components/QrCodeDialog.js"),R=require("./components/QrScanner.js"),y=require("./components/GenericJsonRenderer.js"),H=require("./components/ErrorBoundary.js"),U=require("./components/OfflineMessage.js"),W=require("./components/LanguageSelector.js"),Q=require("./components/ListView.js"),_=require("./components/RecordModal.js"),E=require("./components/BulkUploadDialog.js"),O=require("./components/CookieBanner.js"),G=require("./hooks/useStateWithLocalStorage.js"),z=require("./hooks/useAuthState.js"),J=require("./hooks/useChat.js"),K=require("./hooks/useCodicentState.js"),N=require("./hooks/useAudioRecorder.js"),X=require("./hooks/useTools.js"),Y=require("./hooks/useRealtimeVoiceAI.js"),Z=require("./hooks/useLocalization.js"),$=require("./hooks/useTemplateVariables.js"),ee=require("./hooks/useCodicentApp.js"),re=require("./hooks/useAppStyles.js"),se=require("./hooks/useToaster.js"),oe=require("./hooks/useDebugLogs.js"),te=require("./hooks/useObserveDataSchemas.js"),ae=require("./utils/MessageContent.js"),ie=require("./utils/theme.js"),pe=require("./utils/logging.js"),ue=require("./utils/withWakeLock.js"),ne=require("./utils/appState.js"),le=require("./_virtual/index.js");require("./lib/wavtools/lib/wav_packer.js"),require("./lib/wavtools/lib/analysis/audio_analysis.js");var ce=require("./lib/wavtools/lib/wav_stream_player.js"),de=require("./lib/wavtools/lib/wav_recorder.js"),xe=require("./utils/device.js"),me=require("./utils/helpers.js"),ge=require("./utils/cacheManager.js"),je=require("./config/index.js"),qe=require("./pages/AppFrame.js"),he=require("./pages/Chat.js"),fe=require("./pages/Compose.js"),Ce=require("./pages/Snap.js"),Se=require("./pages/Search.js"),Pe=require("./pages/Login.js"),ke=require("./pages/Logout.js"),be=require("./pages/CrmPage.js"),Ae=require("./pages/CrmPagePersistent.js"),Me=require("./pages/ImageView.js"),Te=require("./pages/FormInvite.js"),ve=require("./pages/FormAccept.js"),Ie=require("./pages/Sales.js"),Le=require("./pages/HtmlViewer.js"),De=require("./pages/Purchase.js"),we=require("./pages/Help.js"),Be=require("./pages/Debug.js"),Fe=require("./pages/SchemaEditor.js"),Ve=require("./pages/QrScan.js"),Re=require("./pages/FormPage.js"),ye=require("./bootstrap.js");exports.CodicentService=e.CodicentService,exports.setBaseUrl=e.setBaseUrl,exports.Markdown=r.default,exports.Textarea=s.Textarea,exports.Button=o.Button,exports.CompoundButton=t.CompoundButton,exports.Title=a.Title,exports.Text=i.Text,exports.Spinner=p.Spinner,exports.Label=u.Label,exports.Input=n.Input,exports.TextHeader=l.default,exports.TypingIndicator=c.default,exports.Prompt=d.default,exports.ChatInput=x.default,exports.CombinedPlaceholderDialog=m.CombinedPlaceholderDialog,exports.ChatMessage=g.default,exports.Header=j.Header,exports.VoiceIcon=q.default,exports.AudioIcon=h.default,exports.FileThumbnail=f.FileThumbnail,exports.MessageInput=C.default,exports.UploadFile=S.default,exports.SnapFooter=P.default,exports.Profile=k.default,exports.MessageItem=b.default,exports.Content=A.default,exports.AiInput=M.default,exports.SearchBox=T.default,exports.HtmlView=v.default,exports.Footer=I.Footer,exports.Page=L.Page,exports.UrlProcessor=D.UrlProcessor,exports.DatePicker=w.DatePicker,exports.ColorPicker=B.ColorPicker,exports.TimePicker=F.TimePicker,exports.QrCodeDialog=V.QrCodeDialog,exports.QrScanner=R.default,exports.GenericJsonRenderer=y.default,exports.ErrorBoundary=H.default,exports.OfflineMessage=U.default,exports.LanguageSelector=W.LanguageSelector,exports.ListView=Q.default,exports.RecordModal=_.RecordModal,exports.BulkUploadDialog=E.default,exports.CookieBanner=O.CookieBanner,exports.useStateWithLocalStorage=G.default,exports.useAuthState=z.default,exports.useChat=J.useChat,exports.useCodicentState=K.default,exports.useAudioRecorder=N.useAudioRecorder,exports.useTools=X.default,exports.useRealtimeVoiceAI=Y.default,exports.useLocalization=Z.default,exports.useTemplateVariables=$.useTemplateVariables,exports.useCodicentApp=ee.useCodicentApp,exports.useAppStyles=re.default,exports.useToaster=se.default,exports.useDebugLogs=oe.default,exports.useObserveDataSchemas=te.useObserveDataSchemas,exports.MessageContent=ae.default,exports.generateBrandVariants=ie.default,exports.log=pe.default,exports.withWakeLock=ue.default,exports.AppStateMachine=ne.AppStateMachine,exports.createAppStateMachine=ne.createAppStateMachine,exports.WavStreamPlayer=ce.WavStreamPlayer,exports.WavRecorder=de.WavRecorder,exports.getGpsLocation=xe.getGpsLocation,exports.isMobileDevice=xe.isMobileDevice,exports.getTimeString=me.getTimeString,exports.CacheManager=ge.CacheManager,exports.stateMachineCacheManager=ge.stateMachineCacheManager,exports.AppConfig=je.AppConfig,exports.getConfigValue=je.getConfigValue,exports.initCodicentApp=je.initCodicentApp,exports.AppFrame=qe.default,exports.Chat=he.default,exports.Compose=fe.Compose,exports.Snap=Ce.default,exports.Search=Se.default,exports.Login=Pe.default,exports.Logout=ke.Logout,exports.CrmPage=be.CrmPage,exports.CrmPagePersistent=Ae.CrmPagePersistent,exports.ImageView=Me.default,exports.FormInvite=Te.default,exports.FormAccept=ve.default,exports.Sales=Ie.Sales,exports.HtmlViewer=Le.default,exports.Purchase=De.Purchase,exports.Help=we.default,exports.Debug=Be.default,exports.SchemaEditor=Fe.default,exports.QrScan=Ve.default,exports.FormPage=Re.default,exports.createCodicentApp=ye.createCodicentApp,exports.StateMachine=le.distExports.StateMachine;
1
+ "use strict";var e=require("./services/codicent.js"),r=require("./components/Markdown.js"),s=require("./components/Textarea.js"),o=require("./components/Button.js"),t=require("./components/CompoundButton.js"),a=require("./components/Title.js"),i=require("./components/Text.js"),p=require("./components/Spinner.js"),u=require("./components/Label.js"),n=require("./components/Input.js"),l=require("./components/TextHeader.js"),c=require("./components/TypingIndicator.js"),d=require("./components/Prompt.js"),x=require("./components/ChatInput.js"),m=require("./components/CombinedPlaceholderDialog.js"),g=require("./components/ChatMessage.js"),j=require("./components/Header.js"),q=require("./components/VoiceIcon.js"),f=require("./components/AudioIcon.js"),h=require("./components/FileThumbnail.js"),C=require("./components/MessageInput.js"),S=require("./components/UploadFile.js"),P=require("./components/SnapFooter.js"),k=require("./components/Profile.js"),M=require("./components/MessageItem.js"),b=require("./components/Content.js"),A=require("./components/AiInput.js"),T=require("./components/SearchBox.js"),v=require("./components/DataMessagePicker.js"),I=require("./components/HtmlView.js"),L=require("./components/Footer.js"),D=require("./components/Page.js"),w=require("./components/UrlProcessor.js"),B=require("./components/DatePicker.js"),F=require("./components/ColorPicker.js"),V=require("./components/TimePicker.js"),R=require("./components/QrCodeDialog.js"),y=require("./components/QrScanner.js"),H=require("./components/GenericJsonRenderer.js"),U=require("./components/ErrorBoundary.js"),W=require("./components/OfflineMessage.js"),Q=require("./components/LanguageSelector.js"),_=require("./components/ListView.js"),E=require("./components/RecordModal.js"),O=require("./components/BulkUploadDialog.js"),G=require("./components/CookieBanner.js"),z=require("./hooks/useStateWithLocalStorage.js"),J=require("./hooks/useAuthState.js"),K=require("./hooks/useChat.js"),N=require("./hooks/useCodicentState.js"),X=require("./hooks/useAudioRecorder.js"),Y=require("./hooks/useTools.js"),Z=require("./hooks/useRealtimeVoiceAI.js"),$=require("./hooks/useLocalization.js"),ee=require("./hooks/useTemplateVariables.js"),re=require("./hooks/useCodicentApp.js"),se=require("./hooks/useAppStyles.js"),oe=require("./hooks/useToaster.js"),te=require("./hooks/useDebugLogs.js"),ae=require("./hooks/useObserveDataSchemas.js"),ie=require("./utils/MessageContent.js"),pe=require("./utils/theme.js"),ue=require("./utils/logging.js"),ne=require("./utils/withWakeLock.js"),le=require("./utils/appState.js"),ce=require("./_virtual/index.js");require("./lib/wavtools/lib/wav_packer.js"),require("./lib/wavtools/lib/analysis/audio_analysis.js");var de=require("./lib/wavtools/lib/wav_stream_player.js"),xe=require("./lib/wavtools/lib/wav_recorder.js"),me=require("./utils/device.js"),ge=require("./utils/helpers.js"),je=require("./utils/cacheManager.js"),qe=require("./config/index.js"),fe=require("./pages/AppFrame.js"),he=require("./pages/Chat.js"),Ce=require("./pages/Compose.js"),Se=require("./pages/Snap.js"),Pe=require("./pages/Search.js"),ke=require("./pages/Login.js"),Me=require("./pages/Logout.js"),be=require("./pages/CrmPage.js"),Ae=require("./pages/CrmPagePersistent.js"),Te=require("./pages/ImageView.js"),ve=require("./pages/FormInvite.js"),Ie=require("./pages/FormAccept.js"),Le=require("./pages/Sales.js"),De=require("./pages/HtmlViewer.js"),we=require("./pages/Purchase.js"),Be=require("./pages/Help.js"),Fe=require("./pages/Debug.js"),Ve=require("./pages/SchemaEditor.js"),Re=require("./pages/QrScan.js"),ye=require("./pages/FormPage.js"),He=require("./bootstrap.js");exports.CodicentService=e.CodicentService,exports.setBaseUrl=e.setBaseUrl,exports.Markdown=r.default,exports.Textarea=s.Textarea,exports.Button=o.Button,exports.CompoundButton=t.CompoundButton,exports.Title=a.Title,exports.Text=i.Text,exports.Spinner=p.Spinner,exports.Label=u.Label,exports.Input=n.Input,exports.TextHeader=l.default,exports.TypingIndicator=c.default,exports.Prompt=d.default,exports.ChatInput=x.default,exports.CombinedPlaceholderDialog=m.CombinedPlaceholderDialog,exports.ChatMessage=g.default,exports.Header=j.Header,exports.VoiceIcon=q.default,exports.AudioIcon=f.default,exports.FileThumbnail=h.FileThumbnail,exports.MessageInput=C.default,exports.UploadFile=S.default,exports.SnapFooter=P.default,exports.Profile=k.default,exports.MessageItem=M.default,exports.Content=b.default,exports.AiInput=A.default,exports.SearchBox=T.default,exports.DataMessagePicker=v.default,exports.HtmlView=I.default,exports.Footer=L.Footer,exports.Page=D.Page,exports.UrlProcessor=w.UrlProcessor,exports.DatePicker=B.DatePicker,exports.ColorPicker=F.ColorPicker,exports.TimePicker=V.TimePicker,exports.QrCodeDialog=R.QrCodeDialog,exports.QrScanner=y.default,exports.GenericJsonRenderer=H.default,exports.ErrorBoundary=U.default,exports.OfflineMessage=W.default,exports.LanguageSelector=Q.LanguageSelector,exports.ListView=_.default,exports.RecordModal=E.RecordModal,exports.BulkUploadDialog=O.default,exports.CookieBanner=G.CookieBanner,exports.useStateWithLocalStorage=z.default,exports.useAuthState=J.default,exports.useChat=K.useChat,exports.useCodicentState=N.default,exports.useAudioRecorder=X.useAudioRecorder,exports.useTools=Y.default,exports.useRealtimeVoiceAI=Z.default,exports.useLocalization=$.default,exports.useTemplateVariables=ee.useTemplateVariables,exports.useCodicentApp=re.useCodicentApp,exports.useAppStyles=se.default,exports.useToaster=oe.default,exports.useDebugLogs=te.default,exports.useObserveDataSchemas=ae.useObserveDataSchemas,exports.MessageContent=ie.default,exports.generateBrandVariants=pe.default,exports.log=ue.default,exports.withWakeLock=ne.default,exports.AppStateMachine=le.AppStateMachine,exports.createAppStateMachine=le.createAppStateMachine,exports.WavStreamPlayer=de.WavStreamPlayer,exports.WavRecorder=xe.WavRecorder,exports.getGpsLocation=me.getGpsLocation,exports.isMobileDevice=me.isMobileDevice,exports.getTimeString=ge.getTimeString,exports.CacheManager=je.CacheManager,exports.stateMachineCacheManager=je.stateMachineCacheManager,exports.AppConfig=qe.AppConfig,exports.getConfigValue=qe.getConfigValue,exports.initCodicentApp=qe.initCodicentApp,exports.AppFrame=fe.default,exports.Chat=he.default,exports.Compose=Ce.Compose,exports.Snap=Se.default,exports.Search=Pe.default,exports.Login=ke.default,exports.Logout=Me.Logout,exports.CrmPage=be.CrmPage,exports.CrmPagePersistent=Ae.CrmPagePersistent,exports.ImageView=Te.default,exports.FormInvite=ve.default,exports.FormAccept=Ie.default,exports.Sales=Le.Sales,exports.HtmlViewer=De.default,exports.Purchase=we.Purchase,exports.Help=Be.default,exports.Debug=Fe.default,exports.SchemaEditor=Ve.default,exports.QrScan=Re.default,exports.FormPage=ye.default,exports.createCodicentApp=He.createCodicentApp,exports.StateMachine=ce.distExports.StateMachine;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("@fluentui/react-components");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("react"),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("./Chat.js"),require("./Compose.js"),require("./Snap.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");var s=require("../components/Page.js");require("./QrScan.js"),require("../hooks/useLocalization.js"),require("../components/FileThumbnail.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),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"),require("../components/CookieBanner.js");const o=r.makeStyles({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}});exports.default=({src:r,showFooter:i,title:n})=>{const t=o();return i?e.jsx(s.Page,{hideFooter:!i,hideHeader:!0,children:e.jsx("iframe",{title:n,src:r,className:`${t.iframe} ${i?t.fixFrameHeight:""}`})}):e.jsx("iframe",{title:n,src:r,className:t.iframe})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("@fluentui/react-components");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("react"),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("./Chat.js"),require("./Compose.js"),require("./Snap.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");var s=require("../components/Page.js");require("./QrScan.js"),require("../hooks/useLocalization.js"),require("../components/FileThumbnail.js"),require("react-dom/client"),require("react-router-dom"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.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"),require("../components/CookieBanner.js");const o=r.makeStyles({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}});exports.default=({src:r,showFooter:i,title:n})=>{const t=o();return i?e.jsx(s.Page,{hideFooter:!i,hideHeader:!0,children:e.jsx("iframe",{title:n,src:r,className:`${t.iframe} ${i?t.fixFrameHeight:""}`})}):e.jsx("iframe",{title:n,src:r,className:t.iframe})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@fluentui/react-components"),n=require("react-router-dom"),o=require("@fluentui/react-icons");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var s=require("../components/TextHeader.js"),a=require("../components/TypingIndicator.js"),i=require("../components/Prompt.js"),l=require("../components/ChatInput.js"),c=require("../components/CombinedPlaceholderDialog.js"),u=require("../components/ChatMessage.js");require("../components/Header.js");var d=require("../hooks/useStateWithLocalStorage.js"),p=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var m=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("./Compose.js"),require("./Snap.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");var g=require("../components/Page.js");require("./QrScan.js");var h=require("../hooks/useLocalization.js");require("../components/FileThumbnail.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var j=require("../hooks/useChat.js"),f=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),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"),require("../components/CookieBanner.js");const q=t.makeStyles({chatContainer:{width:"100%",flex:1,maxWidth:"1600px",height:"100%",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden","@media (max-width: 768px)":{maxWidth:"100%",borderRadius:"0"},"@media (max-width: 480px)":{},backgroundPosition:"calc(50%) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",touchAction:"pan-y"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"}});exports.default=({state:t,hideFooter:x,codicent:C,title:S,welcomeMessage:b})=>{const v=q(),{t:w,tAsync:y,getLanguageInfo:P}=h.default(),k=n.useNavigate(),F=r.useRef(null),[T,_]=n.useSearchParams(),I=T.get("codicent"),A=I||C,{messages:M,isBotTyping:V,handleSend:R,newChat:L,openChat:E}=j.useChat(t.stateMachine,A||void 0),[H,B]=r.useState(null),[N,U]=r.useState(!1),[O,D]=r.useState(!1),{service:W,currentStateName:z}=t,[Q,G]=r.useState([]),[Y,$]=r.useState([]),[K,J]=r.useState(!1),[X,Z]=r.useState(),[ee,re]=d.default(t.context.selectedApp+"_prompts",[]),[te,ne]=r.useState(!1),{extractTemplateVariables:oe,replaceTemplateVariables:se,extractFilePlaceholders:ae,replaceFilePlaceholders:ie,handleSelectFiles:le}=f.useTemplateVariables(W.uploadFile),ce=r.useRef(!1),ue=r.useRef(null);r.useEffect((()=>{const e=window.history.length>1,r=Boolean(document.referrer&&document.referrer!==window.location.href);D(e||r)}),[]);r.useEffect((()=>{m.getConfigValue("SHOW_CHAT_PROMPTS")&&0===M.length&&t.service.getAppPrompts().then(re).catch((e=>{console.error("Failed to get prompts",e)}))}),[t.service,re,M.length]),r.useEffect((()=>{setTimeout((()=>{F.current?.scrollIntoView({behavior:"smooth"})}),10)}),[M]),r.useEffect((()=>{if(ce.current)return;ce.current=!0;const e=T.get("text"),r=T.get("id"),t=T.get("fid");if(I){console.log("Using temporary codicent from URL param:",I);const e=new URLSearchParams(T);e.delete("codicent"),_(e,{replace:!0})}if(e){(async()=>{const r=ae(e),t=oe(e);L(),r.length>0||t.length>0?($(r),G(t),J(!0),B(w(e))):B(w(e))})()}else r?E(r):t&&Z(t)}),[]),r.useEffect((()=>{X&&"anonymous"===z&&ue.current!==X&&(ue.current=X,W.getFormById(X).then((async e=>{L();const r=P().language,t=e.prompt.replace("{{fid}}",X).replace("{{fname}}",e.name).replace("{{language}}",r);ne(!0);const n=await y(t);ne(!1),B(n),D(!1)})))}),[X,L,W,B,z,y,P,ne]),r.useEffect((()=>{if(H&&!K){let e=H;Y.length>0&&(e=ie(e,Y)),Q.length>0&&(e=se(e,Q)),R(e),_({},{replace:!0}),B(null),G([]),$([])}}),[H,K,R,_,ie,se,Y,Q]);const de=e=>{const r=T.get("append");r&&(e+="\n---\n"+r),R(e)};return e.jsxs(g.Page,{hideHeader:!0,hideFooter:!!X||x,children:[e.jsxs("div",{id:"chat-container",className:v.chatContainer,style:{backgroundImage:`url(${m.getConfigValue("CHAT_BACKGROUND_IMAGE_URL")})`},children:[O&&e.jsx("button",{onClick:()=>{O&&k(-1)},"aria-label":w("Tillbaka"),style:{position:"absolute",top:12,left:12,zIndex:100,background:"var(--colorNeutralBackground1)",border:"none",cursor:"pointer",padding:8,borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(o.CalendarWeekStart24Regular,{style:{transform:"rotate(180deg)"}})}),e.jsx("div",{style:{marginLeft:O?40:0},children:e.jsx(s.default,{title:S||w(m.getConfigValue("APP_CHAT_TITLE")||"Chatt"),onNewChat:X?void 0:()=>U(!0)})}),e.jsxs("div",{className:v.chatMessages,children:[b&&e.jsx(u.default,{sender:"bot",content:b}),m.getConfigValue("SHOW_CHAT_PROMPTS")&&ee.length>0&&0===M.length&&e.jsx(u.default,{sender:"bot",content:w(m.getConfigValue("CHAT_WELCOME")||w("Välkommen!")),children:ee.map(((r,t)=>e.jsxs("div",{children:["> ",e.jsx("a",{href:"./#/chat",onClick:()=>{de(r.title+"\n---\n"+r.prompt)},children:w(r.title)}),e.jsx("br",{})]},`prompt-${t}`)))}),M.map(((r,t)=>e.jsxs("div",{children:[(V&&t===M.length-1||!V&&t===M.length-2)&&e.jsx("div",{ref:F}),e.jsx(u.default,{sender:r.sender,content:r.content,isNew:r.isNew,showSuggestions:t===M.length-1,onSuggestionClicked:R},r.id)]},r.id))),te&&e.jsx(u.default,{sender:"user",content:w("Översätter...")}),V&&e.jsx(a.default,{})]}),e.jsx(l.default,{codicent:A||t.context.selectedApp,disableSend:V,onSend:de,onSelectFiles:le,getImageUrl:p.CodicentService.getImageUrl,getFileInfo:e=>W.getFileInfo(e)})]}),e.jsx(i.default,{open:N,title:w("Vill du rensa chatten?"),content:w("En ny startas, men chatten kommer först sparas."),onYes:()=>{U(!1),L()},onNo:()=>U(!1)}),e.jsx(c.CombinedPlaceholderDialog,{open:K,templateVariables:Q,filePlaceholders:Y,onTemplateVariablesChange:G,onFilePlaceholdersChange:$,onConfirm:()=>J(!1),onCancel:()=>{J(!1),B(null),G([]),$([])},uploadFile:W.uploadFile})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@fluentui/react-components"),n=require("react-router-dom"),s=require("@fluentui/react-icons");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var o=require("../components/TextHeader.js"),a=require("../components/TypingIndicator.js"),i=require("../components/Prompt.js"),l=require("../components/ChatInput.js"),c=require("../components/CombinedPlaceholderDialog.js"),u=require("../components/ChatMessage.js");require("../components/Header.js");var d=require("../hooks/useStateWithLocalStorage.js"),p=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var m=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("./Compose.js"),require("./Snap.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");var g=require("../components/Page.js");require("./QrScan.js");var h=require("../hooks/useLocalization.js");require("../components/FileThumbnail.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js");var j=require("../hooks/useChat.js"),f=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.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"),require("../components/CookieBanner.js");const q=t.makeStyles({chatContainer:{width:"100%",flex:1,maxWidth:"1600px",height:"100%",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden","@media (max-width: 768px)":{maxWidth:"100%",borderRadius:"0"},"@media (max-width: 480px)":{},backgroundPosition:"calc(50%) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",touchAction:"pan-y"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"}});exports.default=({state:t,hideFooter:x,codicent:C,title:S,welcomeMessage:b})=>{const v=q(),{t:w,tAsync:y,getLanguageInfo:P}=h.default(),k=n.useNavigate(),F=r.useRef(null),[T,_]=n.useSearchParams(),I=T.get("codicent"),A=I||C,{messages:M,isBotTyping:V,handleSend:R,newChat:L,openChat:E}=j.useChat(t.stateMachine,A||void 0),[H,B]=r.useState(null),[N,U]=r.useState(!1),[D,O]=r.useState(!1),{service:W,currentStateName:z}=t,[Q,G]=r.useState([]),[Y,$]=r.useState([]),[K,J]=r.useState(!1),[X,Z]=r.useState(),[ee,re]=d.default(t.context.selectedApp+"_prompts",[]),[te,ne]=r.useState(!1),{extractTemplateVariables:se,replaceTemplateVariables:oe,extractFilePlaceholders:ae,replaceFilePlaceholders:ie,handleSelectFiles:le}=f.useTemplateVariables(W.uploadFile),ce=r.useRef(!1),ue=r.useRef(null);r.useEffect((()=>{const e=window.history.length>1,r=Boolean(document.referrer&&document.referrer!==window.location.href);O(e||r)}),[]);r.useEffect((()=>{m.getConfigValue("SHOW_CHAT_PROMPTS")&&0===M.length&&t.service.getAppPrompts().then(re).catch((e=>{console.error("Failed to get prompts",e)}))}),[t.service,re,M.length]),r.useEffect((()=>{setTimeout((()=>{F.current?.scrollIntoView({behavior:"smooth"})}),10)}),[M]),r.useEffect((()=>{if(ce.current)return;ce.current=!0;const e=T.get("text"),r=T.get("id"),t=T.get("fid");if(I){console.log("Using temporary codicent from URL param:",I);const e=new URLSearchParams(T);e.delete("codicent"),_(e,{replace:!0})}if(e){(async()=>{const r=ae(e),t=se(e);L(),r.length>0||t.length>0?($(r),G(t),J(!0),B(w(e))):B(w(e))})()}else r?E(r):t&&Z(t)}),[]),r.useEffect((()=>{X&&"anonymous"===z&&ue.current!==X&&(ue.current=X,W.getFormById(X).then((async e=>{L();const r=P().language,t=e.prompt.replace("{{fid}}",X).replace("{{fname}}",e.name).replace("{{language}}",r);ne(!0);const n=await y(t);ne(!1),B(n),O(!1)})))}),[X,L,W,B,z,y,P,ne]),r.useEffect((()=>{if(H&&!K){let e=H;Y.length>0&&(e=ie(e,Y)),Q.length>0&&(e=oe(e,Q)),R(e),_({},{replace:!0}),B(null),G([]),$([])}}),[H,K,R,_,ie,oe,Y,Q]);const de=e=>{const r=T.get("append");r&&(e+="\n---\n"+r),R(e)};return e.jsxs(g.Page,{hideHeader:!0,hideFooter:!!X||x,children:[e.jsxs("div",{id:"chat-container",className:v.chatContainer,style:{backgroundImage:`url(${m.getConfigValue("CHAT_BACKGROUND_IMAGE_URL")})`},children:[D&&e.jsx("button",{onClick:()=>{D&&k(-1)},"aria-label":w("Tillbaka"),style:{position:"absolute",top:12,left:12,zIndex:100,background:"var(--colorNeutralBackground1)",border:"none",cursor:"pointer",padding:8,borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(s.CalendarWeekStart24Regular,{style:{transform:"rotate(180deg)"}})}),e.jsx("div",{style:{marginLeft:D?40:0},children:e.jsx(o.default,{title:S||w(m.getConfigValue("APP_CHAT_TITLE")||"Chatt"),onNewChat:X?void 0:()=>U(!0)})}),e.jsxs("div",{className:v.chatMessages,children:[b&&e.jsx(u.default,{sender:"bot",content:b}),m.getConfigValue("SHOW_CHAT_PROMPTS")&&ee.length>0&&0===M.length&&e.jsx(u.default,{sender:"bot",content:w(m.getConfigValue("CHAT_WELCOME")||w("Välkommen!")),children:ee.map(((r,t)=>e.jsxs("div",{children:["> ",e.jsx("a",{href:"./#/chat",onClick:()=>{de(r.title+"\n---\n"+r.prompt)},children:w(r.title)}),e.jsx("br",{})]},`prompt-${t}`)))}),M.map(((r,t)=>e.jsxs("div",{children:[(V&&t===M.length-1||!V&&t===M.length-2)&&e.jsx("div",{ref:F}),e.jsx(u.default,{sender:r.sender,content:r.content,isNew:r.isNew,showSuggestions:t===M.length-1,onSuggestionClicked:R},r.id)]},r.id))),te&&e.jsx(u.default,{sender:"user",content:w("Översätter...")}),V&&e.jsx(a.default,{})]}),e.jsx(l.default,{codicent:A||t.context.selectedApp,disableSend:V,onSend:de,onSelectFiles:le,getImageUrl:p.CodicentService.getImageUrl,getFileInfo:e=>W.getFileInfo(e)})]}),e.jsx(i.default,{open:N,title:w("Vill du rensa chatten?"),content:w("En ny startas, men chatten kommer först sparas."),onYes:()=>{U(!1),L()},onNo:()=>U(!1)}),e.jsx(c.CombinedPlaceholderDialog,{open:K,templateVariables:Q,filePlaceholders:Y,onTemplateVariablesChange:G,onFilePlaceholdersChange:$,onConfirm:()=>J(!1),onCancel:()=>{J(!1),B(null),G([]),$([])},uploadFile:W.uploadFile})]})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),o=require("react"),r=require("@fluentui/react-components"),t=require("react-router-dom"),n=require("../config/index.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var i=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons");var a=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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");var s=require("../utils/device.js");require("./AppFrame.js"),require("./Chat.js"),require("./Snap.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");var l=require("../components/Page.js");require("./QrScan.js");var u=require("../hooks/useLocalization.js");require("../components/FileThumbnail.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var c=require("../hooks/useToaster.js"),d=require("../components/MessageInput.js"),p=require("../components/UploadFile.js");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"),require("../components/CookieBanner.js");const g=r.makeStyles({main:{flexGrow:1,...r.shorthands.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:r.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),m=({state:r})=>{const m=g(),{t:j}=u.default(),[q,f]=o.useState(!1),h=o.useRef(null),C=o.useRef(null),S=o.useRef(null),[v,x]=o.useState(null),[P,_]=o.useState([]),{service:b}=r,[I,M]=t.useSearchParams(),[U,w]=o.useState(void 0),[E,F]=o.useState(),A=c.default(),L=t.useNavigate(),O=o.useCallback((e=>{for(const o of e)b.getFileInfo(o).then((e=>{_((o=>[...o,e]))}))}),[b,_]),T=o.useCallback((e=>{const o=new FormData;o.append("file",e),b.uploadFile(e.name,o).then((e=>{O([e])})).catch((()=>{A.notify(j("Error"),j("Error uploading pasted image"),"")}))}),[b,O,A,j]),k=e=>{f(e)};o.useEffect((()=>{const e=I.get("text"),o=I.get("url"),r=I.get("parentId");e&&(w(e),I.delete("text")),r&&(F(r),I.delete("parentId")),o&&(I.delete("url"),w(((e||"")+" "+o).trim())),M(I,{replace:!0})}),[I,M,w,b,O]),o.useEffect((()=>{n.getConfigValue("COMPOSE_AUTO_LOCATION")&&s.getGpsLocation().then((e=>{e&&x(`#gps(${e.coords.latitude},${e.coords.longitude})`)}))}),[]);return e.jsx(l.Page,{hideHeader:!0,children:e.jsxs("div",{className:m.container,style:{backgroundImage:`url(${n.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[e.jsx(i.default,{title:n.getConfigValue("APP_SAVE_TITLE")?j(n.getConfigValue("APP_SAVE_TITLE")):j("Spara")}),e.jsx(d.default,{disableSend:!0,defaultText:U,onSend:e=>{e=`${e}${v?" "+v:""}${P.length>0?"\n":""}${P.map((e=>`#file:${e.id}`)).join(" ")}`,b.sendMessage(e,E).then((()=>{A.notify(j("Meddelande"),j("Meddelandet är sparat."),""),E&&(F(void 0),L(-1))}))},files:P,onFilesChange:_,isUploading:q,onHandleDefaultFiles:O,onUploadFile:()=>{h.current?.triggerUpload(),console.log("attach-file")},onUploadImage:n.getConfigValue("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{C.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:n.getConfigValue("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{S.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:a.CodicentService.getImageUrl,onLocationChange:n.getConfigValue("COMPOSE_HIDE_LOCATION")?void 0:e=>{e?(async()=>{console.log("attach-location");const e=await s.getGpsLocation();e?(A.notify(j("Position"),j("Position tillagd."),""),x(`#gps(${e.coords.latitude},${e.coords.longitude})`)):console.log("Failed to get GPS location")})():(x(null),A.notify(j("Position"),j("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!v,onImagePasted:T}),e.jsx(p.default,{ref:h,onFileUploaded:O,onUploading:k,multiple:!0,codicentService:b}),e.jsx(p.default,{codicentService:b,ref:C,onFileUploaded:O,onUploading:k,multiple:!0,accept:"image/*"}),e.jsx(p.default,{codicentService:b,ref:S,onFileUploaded:O,onUploading:k,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.Compose=m,exports.default=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),o=require("react"),r=require("@fluentui/react-components"),t=require("react-router-dom"),n=require("../config/index.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var i=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("@fluentui/react-icons");var a=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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");var s=require("../utils/device.js");require("./AppFrame.js"),require("./Chat.js"),require("./Snap.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");var l=require("../components/Page.js");require("./QrScan.js");var u=require("../hooks/useLocalization.js");require("../components/FileThumbnail.js"),require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var c=require("../hooks/useToaster.js"),d=require("../components/MessageInput.js"),p=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.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"),require("../components/CookieBanner.js");const g=r.makeStyles({main:{flexGrow:1,...r.shorthands.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:r.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),m=({state:r})=>{const m=g(),{t:j}=u.default(),[q,f]=o.useState(!1),h=o.useRef(null),C=o.useRef(null),S=o.useRef(null),[v,x]=o.useState(null),[P,_]=o.useState([]),{service:b}=r,[I,M]=t.useSearchParams(),[U,w]=o.useState(void 0),[E,F]=o.useState(),A=c.default(),L=t.useNavigate(),O=o.useCallback((e=>{for(const o of e)b.getFileInfo(o).then((e=>{_((o=>[...o,e]))}))}),[b,_]),k=o.useCallback((e=>{const o=new FormData;o.append("file",e),b.uploadFile(e.name,o).then((e=>{O([e])})).catch((()=>{A.notify(j("Error"),j("Error uploading pasted image"),"")}))}),[b,O,A,j]),T=e=>{f(e)};o.useEffect((()=>{const e=I.get("text"),o=I.get("url"),r=I.get("parentId");e&&(w(e),I.delete("text")),r&&(F(r),I.delete("parentId")),o&&(I.delete("url"),w(((e||"")+" "+o).trim())),M(I,{replace:!0})}),[I,M,w,b,O]),o.useEffect((()=>{n.getConfigValue("COMPOSE_AUTO_LOCATION")&&s.getGpsLocation().then((e=>{e&&x(`#gps(${e.coords.latitude},${e.coords.longitude})`)}))}),[]);return e.jsx(l.Page,{hideHeader:!0,children:e.jsxs("div",{className:m.container,style:{backgroundImage:`url(${n.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[e.jsx(i.default,{title:n.getConfigValue("APP_SAVE_TITLE")?j(n.getConfigValue("APP_SAVE_TITLE")):j("Spara")}),e.jsx(d.default,{disableSend:!0,defaultText:U,onSend:e=>{e=`${e}${v?" "+v:""}${P.length>0?"\n":""}${P.map((e=>`#file:${e.id}`)).join(" ")}`,b.sendMessage(e,E).then((()=>{A.notify(j("Meddelande"),j("Meddelandet är sparat."),""),E&&(F(void 0),L(-1))}))},files:P,onFilesChange:_,isUploading:q,onHandleDefaultFiles:O,onUploadFile:()=>{h.current?.triggerUpload(),console.log("attach-file")},onUploadImage:n.getConfigValue("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{C.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:n.getConfigValue("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{S.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:a.CodicentService.getImageUrl,onLocationChange:n.getConfigValue("COMPOSE_HIDE_LOCATION")?void 0:e=>{e?(async()=>{console.log("attach-location");const e=await s.getGpsLocation();e?(A.notify(j("Position"),j("Position tillagd."),""),x(`#gps(${e.coords.latitude},${e.coords.longitude})`)):console.log("Failed to get GPS location")})():(x(null),A.notify(j("Position"),j("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!v,onImagePasted:k}),e.jsx(p.default,{ref:h,onFileUploaded:O,onUploading:T,multiple:!0,codicentService:b}),e.jsx(p.default,{codicentService:b,ref:C,onFileUploaded:O,onUploading:T,multiple:!0,accept:"image/*"}),e.jsx(p.default,{codicentService:b,ref:S,onFileUploaded:O,onUploading:T,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.Compose=m,exports.default=m;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),n=require("@fluentui/react-components"),t=require("@fluentui/react-icons"),o=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var a=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var s=require("../components/VoiceIcon.js"),i=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var u=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("../components/FileThumbnail.js");var l=require("../components/MessageInput.js"),c=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js");require("../components/QrCodeDialog.js"),require("../components/QrScanner.js");var m=require("../hooks/useLocalization.js");require("../components/OfflineMessage.js"),require("../components/LanguageSelector.js"),require("../components/ListView.js"),require("../components/RecordModal.js"),require("../components/BulkUploadDialog.js"),require("../components/CookieBanner.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("./QrScan.js"),require("react-dom/client");var p=require("react-router-dom");require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var j=require("../hooks/useToaster.js"),g=require("../node_modules/lodash/lodash.js");const h=n.makeStyles({main:{flexGrow:1,...n.shorthands.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%",position:"relative"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:n.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"},backButton:{marginBottom:"10px"}}),f=({state:f,voice:q})=>{const v=h(),{t:x}=m.default(),S=p.useNavigate(),[k,b]=r.useState(!1),C=r.useRef(null),w=r.useRef(null),y=r.useRef(null),[I]=r.useState(null),[_,B]=r.useState([]),{service:M}=f,[P,U]=p.useSearchParams(),[A,E]=r.useState(""),[N,T]=r.useState(void 0),F=j.default(),[R,V]=r.useState(void 0),[L,O]=r.useState("info"),$=r.useCallback((e=>{for(const r of e)M.getFileInfo(r).then((e=>{B((r=>[...r,e]))}))}),[M,B]),D=r.useCallback((e=>{const r=new FormData;r.append("file",e),M.uploadFile(e.name,r).then((e=>{$([e])})).catch((()=>{F.notify(x("Error"),x("Error uploading pasted image"),"")}))}),[M,$,F,x]),H=e=>{b(e)};r.useEffect((()=>{const e=P.get("text"),r=P.get("url");e&&(E(e),P.delete("text")),r&&(P.delete("url"),E(((e||"")+" "+r).trim())),U(P,{replace:!0})}),[P,U,E,M,$]);const z=r.useCallback((async e=>{if(!e||e.length<10)return;V(x("Analyserar...")),O("info");const r=await M.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(r){const e=new i.default(r.content);try{const r=JSON.parse(e.content);console.log("json",r);let n=0;for(const e in r)"true"===r[e]&&n++;V(x(4===n?"Allt är med":r.shortSummary||"Något saknas")),O(4===n?"success":"warning")}catch{V("Error: "+e.content),O("error")}}}),[M]),G=r.useMemo((()=>g.lodashExports.debounce(z,2e3)),[z]);return r.useEffect((()=>()=>{G.cancel()}),[G]),e.jsx(d.Page,{hideHeader:!0,children:e.jsxs("div",{className:v.container,style:{backgroundImage:`url(${u.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[q&&u.getConfigValue("SHOW_VOICE_BUTTON")&&e.jsx("div",{className:v.voiceIcon,children:e.jsx(s.default,{voice:q})}),e.jsx("div",{className:v.backButton,children:e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(t.ArrowLeft24Regular,{}),onClick:()=>S(-1),children:x("Tillbaka")})}),e.jsx(a.default,{title:u.getConfigValue("APP_SAVE_TITLE")?x(u.getConfigValue("APP_SAVE_TITLE")):x("Spara")}),e.jsx(l.default,{defaultText:A,onSend:e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${f.context.name||f.context.user?.email||f.context.nickname||"-"}`}${I?" "+I:""}${_.length>0?"\n":""}${_.map((e=>`#file:${e.id}`)).join(" ")}`,M.sendMessage(e).then((()=>{F.notify(x("Meddelande"),x("Meddelandet är sparat."),"")}))},files:_,onFilesChange:B,isUploading:k,onUploadImage:()=>{w.current?.triggerUpload()},onUploadCamera:()=>{y.current?.triggerUpload()},getImageUrl:o.CodicentService.getImageUrl,hasLocation:!!I,disableSend:!0,rows:9,placeholder:x("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==N&&(T(e),e&&e.trim().length>0?G(e):(V(void 0),G.cancel()))},onImagePasted:D}),R&&e.jsxs("div",{className:v.review,children:[e.jsx("h3",{children:x("Analys")}),e.jsx(n.MessageBar,{intent:L,layout:"multiline",children:e.jsx(n.MessageBarBody,{children:x(R)})})]}),e.jsx(c.default,{ref:C,onFileUploaded:$,onUploading:H,multiple:!0,codicentService:M}),e.jsx(c.default,{codicentService:M,ref:w,onFileUploaded:$,onUploading:H,multiple:!0,accept:"image/*"}),e.jsx(c.default,{codicentService:M,ref:y,onFileUploaded:$,onUploading:H,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.CrmPage=f,exports.default=f;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),n=require("@fluentui/react-components"),t=require("@fluentui/react-icons"),o=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var a=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var s=require("../components/VoiceIcon.js"),i=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var u=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("../components/FileThumbnail.js");var l=require("../components/MessageInput.js"),c=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js");require("../components/QrCodeDialog.js"),require("../components/QrScanner.js");var m=require("../hooks/useLocalization.js");require("../components/OfflineMessage.js"),require("../components/LanguageSelector.js"),require("../components/ListView.js"),require("../components/RecordModal.js"),require("../components/BulkUploadDialog.js"),require("../components/CookieBanner.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("./QrScan.js"),require("react-dom/client");var p=require("react-router-dom");require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var j=require("../hooks/useToaster.js"),g=require("../node_modules/lodash/lodash.js");const h=n.makeStyles({main:{flexGrow:1,...n.shorthands.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%",position:"relative"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:n.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"},backButton:{marginBottom:"10px"}}),f=({state:f,voice:q})=>{const v=h(),{t:x}=m.default(),S=p.useNavigate(),[k,b]=r.useState(!1),C=r.useRef(null),w=r.useRef(null),y=r.useRef(null),[I]=r.useState(null),[M,_]=r.useState([]),{service:B}=f,[P,U]=p.useSearchParams(),[A,E]=r.useState(""),[N,T]=r.useState(void 0),F=j.default(),[R,V]=r.useState(void 0),[L,O]=r.useState("info"),$=r.useCallback((e=>{for(const r of e)B.getFileInfo(r).then((e=>{_((r=>[...r,e]))}))}),[B,_]),D=r.useCallback((e=>{const r=new FormData;r.append("file",e),B.uploadFile(e.name,r).then((e=>{$([e])})).catch((()=>{F.notify(x("Error"),x("Error uploading pasted image"),"")}))}),[B,$,F,x]),H=e=>{b(e)};r.useEffect((()=>{const e=P.get("text"),r=P.get("url");e&&(E(e),P.delete("text")),r&&(P.delete("url"),E(((e||"")+" "+r).trim())),U(P,{replace:!0})}),[P,U,E,B,$]);const z=r.useCallback((async e=>{if(!e||e.length<10)return;V(x("Analyserar...")),O("info");const r=await B.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(r){const e=new i.default(r.content);try{const r=JSON.parse(e.content);console.log("json",r);let n=0;for(const e in r)"true"===r[e]&&n++;V(x(4===n?"Allt är med":r.shortSummary||"Något saknas")),O(4===n?"success":"warning")}catch{V("Error: "+e.content),O("error")}}}),[B]),G=r.useMemo((()=>g.lodashExports.debounce(z,2e3)),[z]);return r.useEffect((()=>()=>{G.cancel()}),[G]),e.jsx(d.Page,{hideHeader:!0,children:e.jsxs("div",{className:v.container,style:{backgroundImage:`url(${u.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[q&&u.getConfigValue("SHOW_VOICE_BUTTON")&&e.jsx("div",{className:v.voiceIcon,children:e.jsx(s.default,{voice:q})}),e.jsx("div",{className:v.backButton,children:e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(t.ArrowLeft24Regular,{}),onClick:()=>S(-1),children:x("Tillbaka")})}),e.jsx(a.default,{title:u.getConfigValue("APP_SAVE_TITLE")?x(u.getConfigValue("APP_SAVE_TITLE")):x("Spara")}),e.jsx(l.default,{defaultText:A,onSend:e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${f.context.name||f.context.user?.email||f.context.nickname||"-"}`}${I?" "+I:""}${M.length>0?"\n":""}${M.map((e=>`#file:${e.id}`)).join(" ")}`,B.sendMessage(e).then((()=>{F.notify(x("Meddelande"),x("Meddelandet är sparat."),"")}))},files:M,onFilesChange:_,isUploading:k,onUploadImage:()=>{w.current?.triggerUpload()},onUploadCamera:()=>{y.current?.triggerUpload()},getImageUrl:o.CodicentService.getImageUrl,hasLocation:!!I,disableSend:!0,rows:9,placeholder:x("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==N&&(T(e),e&&e.trim().length>0?G(e):(V(void 0),G.cancel()))},onImagePasted:D}),R&&e.jsxs("div",{className:v.review,children:[e.jsx("h3",{children:x("Analys")}),e.jsx(n.MessageBar,{intent:L,layout:"multiline",children:e.jsx(n.MessageBarBody,{children:x(R)})})]}),e.jsx(c.default,{ref:C,onFileUploaded:$,onUploading:H,multiple:!0,codicentService:B}),e.jsx(c.default,{codicentService:B,ref:w,onFileUploaded:$,onUploading:H,multiple:!0,accept:"image/*"}),e.jsx(c.default,{codicentService:B,ref:y,onFileUploaded:$,onUploading:H,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.CrmPage=f,exports.default=f;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@fluentui/react-components"),o=require("@fluentui/react-icons"),n=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var s=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var a=require("../components/VoiceIcon.js"),i=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var l=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");var c=require("../utils/device.js");require("../components/FileThumbnail.js");var u=require("../components/MessageInput.js"),d=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var p=require("../components/Page.js");require("../components/QrCodeDialog.js"),require("../components/QrScanner.js");var m=require("../hooks/useLocalization.js");require("../components/OfflineMessage.js"),require("../components/LanguageSelector.js"),require("../components/ListView.js"),require("../components/RecordModal.js"),require("../components/BulkUploadDialog.js"),require("../components/CookieBanner.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("./QrScan.js"),require("react-dom/client");var h=require("react-router-dom");require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var g=require("../hooks/useToaster.js"),j=require("../node_modules/lodash/lodash.js");const f=t.makeStyles({main:{flexGrow:1,...t.shorthands.padding("10px"),overflowY:"auto"},container:{display:"flex",flexDirection:"row",height:"100%",...t.shorthands.gap("16px"),...t.shorthands.padding("10px")},containerMobile:{display:"flex",flexDirection:"column",height:"100%",...t.shorthands.gap("16px"),...t.shorthands.padding("10px")},inputSection:{display:"flex",flexDirection:"column",flexGrow:1,maxWidth:"640px",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",position:"relative"},inputSectionMobile:{display:"flex",flexDirection:"column",width:"100%",position:"relative"},historySection:{flexBasis:"300px",flexShrink:0,display:"flex",flexDirection:"column",...t.shorthands.gap("8px"),overflowY:"auto",...t.shorthands.padding("8px")},historySectionMobile:{display:"flex",flexDirection:"column",...t.shorthands.gap("8px"),overflowY:"auto",...t.shorthands.padding("8px"),maxHeight:"300px"},historyCard:{...t.shorthands.padding("12px"),cursor:"pointer","&:hover":{backgroundColor:t.tokens.colorNeutralBackground1Hover}},historyCardContent:{display:"flex",flexDirection:"column",...t.shorthands.gap("4px")},historyDate:{fontSize:t.tokens.fontSizeBase200,color:t.tokens.colorNeutralForeground3},historyText:{fontSize:t.tokens.fontSizeBase300,wordBreak:"break-word",whiteSpace:"pre-wrap",maxHeight:"100px",overflow:"hidden",textOverflow:"ellipsis"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"},historyTitle:{fontSize:t.tokens.fontSizeBase400,fontWeight:t.tokens.fontWeightSemibold,marginBottom:"8px"},emptyState:{textAlign:"center",color:t.tokens.colorNeutralForeground3,padding:"20px"},backButton:{marginBottom:"10px"}}),x=({state:x,voice:v})=>{const S=f(),{t:q}=m.default(),k=h.useNavigate(),[y,w]=r.useState(!1),C=r.useRef(null),b=r.useRef(null),M=r.useRef(null),[N]=r.useState(null),[T,B]=r.useState([]),{service:I}=x,[E,_]=h.useSearchParams(),[D,P]=r.useState(""),[A,U]=r.useState(void 0),F=g.default(),[$,R]=r.useState(void 0),[O,L]=r.useState("info"),[V,z]=r.useState([]),[H,W]=r.useState(!1),G=c.isMobileDevice(),J=r.useCallback((e=>{for(const r of e)I.getFileInfo(r).then((e=>{B((r=>[...r,e]))}))}),[I,B]),Q=r.useCallback((e=>{const r=new FormData;r.append("file",e),I.uploadFile(e.name,r).then((e=>{J([e])})).catch((()=>{F.notify(q("Error"),q("Error uploading pasted image"),"")}))}),[I,J,F,q]),Y=e=>{w(e)},K=r.useCallback((async()=>{W(!0);try{const e=await I.getMessages(["crm"]);z(e)}catch(e){console.error("Error loading CRM messages:",e),F.notify(q("Error"),q("Failed to load CRM messages"),"","error")}finally{W(!1)}}),[I,F,q]);r.useEffect((()=>{K()}),[K]),r.useEffect((()=>{const e=E.get("text"),r=E.get("url");e&&(P(e),E.delete("text")),r&&(E.delete("url"),P(((e||"")+" "+r).trim())),_(E,{replace:!0})}),[E,_,P,I,J]);const X=e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${x.context.name||x.context.user?.email||x.context.nickname||"-"}`}${N?" "+N:""}${T.length>0?"\n":""}${T.map((e=>`#file:${e.id}`)).join(" ")}`,I.sendMessage(e).then((()=>{F.notify(q("Meddelande"),q("Meddelandet är sparat."),""),K(),U(""),R(void 0)}))},Z=r.useCallback((async e=>{if(!e||e.length<10)return;R(q("Analyserar...")),L("info");const r=await I.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(r){const e=new i.default(r.content);try{const r=JSON.parse(e.content);console.log("json",r);let t=0;for(const e in r)"true"===r[e]&&t++;R(q(4===t?"Allt är med":r.shortSummary||"Något saknas")),L(4===t?"success":"warning")}catch{R("Error: "+e.content),L("error")}}}),[I,q]),ee=r.useMemo((()=>j.lodashExports.debounce(Z,2e3)),[Z]);r.useEffect((()=>()=>{ee.cancel()}),[ee]);const re=e=>{const r=new Date,t=new Date(e),o=r.getTime()-t.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),a=Math.floor(o/864e5);return n<1?q("Just now"):n<60?`${n} ${q("minutes ago")}`:s<24?`${s} ${q("hours ago")}`:a<7?`${a} ${q("days ago")}`:t.toLocaleDateString()},te=e=>{const r=e.split("\n").filter((e=>!e.startsWith("#")&&!e.startsWith("SALESPERSON:")&&e.trim().length>0)).join("\n");return r.substring(0,150)+(r.length>150?"...":"")},oe=()=>e.jsxs("div",{className:G?S.historySectionMobile:S.historySection,children:[e.jsx(t.Text,{className:S.historyTitle,children:q("Tidigare sparade")}),H?e.jsx("div",{className:S.emptyState,children:e.jsx(t.Spinner,{size:"small"})}):0===V.length?e.jsx("div",{className:S.emptyState,children:e.jsx(t.Text,{children:q("Inga sparade meddelanden än")})}):V.map((r=>e.jsx(t.Card,{className:S.historyCard,onClick:()=>(e=>{const r=te(e.content);U(r)})(r),children:e.jsxs("div",{className:S.historyCardContent,children:[e.jsx(t.Text,{className:S.historyDate,children:re(r.createdAt)}),e.jsx(t.Text,{className:S.historyText,children:te(r.content)})]})},r.id)))]});return e.jsx(p.Page,{hideHeader:!0,children:e.jsxs("div",{className:G?S.containerMobile:S.container,children:[!G&&oe(),e.jsxs("div",{className:G?S.inputSectionMobile:S.inputSection,style:G?void 0:{backgroundImage:`url(${l.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[v&&l.getConfigValue("SHOW_VOICE_BUTTON")&&e.jsx("div",{className:S.voiceIcon,children:e.jsx(a.default,{voice:v})}),e.jsx("div",{className:S.backButton,children:e.jsx(t.Button,{appearance:"subtle",icon:e.jsx(o.ArrowLeft24Regular,{}),onClick:()=>k(-1),children:q("Tillbaka")})}),e.jsx(s.default,{title:l.getConfigValue("APP_SAVE_TITLE")?q(l.getConfigValue("APP_SAVE_TITLE")):q("Spara")}),e.jsx(u.default,{defaultText:D,onSend:X,files:T,onFilesChange:B,isUploading:y,onUploadImage:()=>{b.current?.triggerUpload()},onUploadCamera:()=>{M.current?.triggerUpload()},getImageUrl:n.CodicentService.getImageUrl,hasLocation:!!N,disableSend:!0,rows:9,placeholder:q("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==A&&(U(e),e&&e.trim().length>0?ee(e):(R(void 0),ee.cancel()))},onImagePasted:Q}),$&&e.jsxs("div",{className:S.review,children:[e.jsx("h3",{children:q("Analys")}),e.jsx(t.MessageBar,{intent:O,layout:"multiline",children:e.jsx(t.MessageBarBody,{children:q($)})})]}),e.jsx(d.default,{ref:C,onFileUploaded:J,onUploading:Y,multiple:!0,codicentService:I}),e.jsx(d.default,{codicentService:I,ref:b,onFileUploaded:J,onUploading:Y,multiple:!0,accept:"image/*"}),e.jsx(d.default,{codicentService:I,ref:M,onFileUploaded:J,onUploading:Y,multiple:!0,accept:"image/*",capture:"environment"})]}),G&&oe()]})})};exports.CrmPagePersistent=x,exports.default=x;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@fluentui/react-components"),o=require("@fluentui/react-icons"),n=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var s=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var a=require("../components/VoiceIcon.js"),i=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var l=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");var c=require("../utils/device.js");require("../components/FileThumbnail.js");var u=require("../components/MessageInput.js"),d=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/DataMessagePicker.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var p=require("../components/Page.js");require("../components/QrCodeDialog.js"),require("../components/QrScanner.js");var m=require("../hooks/useLocalization.js");require("../components/OfflineMessage.js"),require("../components/LanguageSelector.js"),require("../components/ListView.js"),require("../components/RecordModal.js"),require("../components/BulkUploadDialog.js"),require("../components/CookieBanner.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("./QrScan.js"),require("react-dom/client");var h=require("react-router-dom");require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js");var g=require("../hooks/useToaster.js"),j=require("../node_modules/lodash/lodash.js");const f=t.makeStyles({main:{flexGrow:1,...t.shorthands.padding("10px"),overflowY:"auto"},container:{display:"flex",flexDirection:"row",height:"100%",...t.shorthands.gap("16px"),...t.shorthands.padding("10px")},containerMobile:{display:"flex",flexDirection:"column",height:"100%",...t.shorthands.gap("16px"),...t.shorthands.padding("10px")},inputSection:{display:"flex",flexDirection:"column",flexGrow:1,maxWidth:"640px",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",position:"relative"},inputSectionMobile:{display:"flex",flexDirection:"column",width:"100%",position:"relative"},historySection:{flexBasis:"300px",flexShrink:0,display:"flex",flexDirection:"column",...t.shorthands.gap("8px"),overflowY:"auto",...t.shorthands.padding("8px")},historySectionMobile:{display:"flex",flexDirection:"column",...t.shorthands.gap("8px"),overflowY:"auto",...t.shorthands.padding("8px"),maxHeight:"300px"},historyCard:{...t.shorthands.padding("12px"),cursor:"pointer","&:hover":{backgroundColor:t.tokens.colorNeutralBackground1Hover}},historyCardContent:{display:"flex",flexDirection:"column",...t.shorthands.gap("4px")},historyDate:{fontSize:t.tokens.fontSizeBase200,color:t.tokens.colorNeutralForeground3},historyText:{fontSize:t.tokens.fontSizeBase300,wordBreak:"break-word",whiteSpace:"pre-wrap",maxHeight:"100px",overflow:"hidden",textOverflow:"ellipsis"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"},historyTitle:{fontSize:t.tokens.fontSizeBase400,fontWeight:t.tokens.fontWeightSemibold,marginBottom:"8px"},emptyState:{textAlign:"center",color:t.tokens.colorNeutralForeground3,padding:"20px"},backButton:{marginBottom:"10px"}}),x=({state:x,voice:v})=>{const S=f(),{t:q}=m.default(),k=h.useNavigate(),[y,w]=r.useState(!1),C=r.useRef(null),b=r.useRef(null),M=r.useRef(null),[N]=r.useState(null),[T,B]=r.useState([]),{service:I}=x,[E,D]=h.useSearchParams(),[P,_]=r.useState(""),[A,U]=r.useState(void 0),F=g.default(),[$,R]=r.useState(void 0),[O,L]=r.useState("info"),[V,z]=r.useState([]),[H,W]=r.useState(!1),G=c.isMobileDevice(),J=r.useCallback((e=>{for(const r of e)I.getFileInfo(r).then((e=>{B((r=>[...r,e]))}))}),[I,B]),Q=r.useCallback((e=>{const r=new FormData;r.append("file",e),I.uploadFile(e.name,r).then((e=>{J([e])})).catch((()=>{F.notify(q("Error"),q("Error uploading pasted image"),"")}))}),[I,J,F,q]),Y=e=>{w(e)},K=r.useCallback((async()=>{W(!0);try{const e=await I.getMessages(["crm"]);z(e)}catch(e){console.error("Error loading CRM messages:",e),F.notify(q("Error"),q("Failed to load CRM messages"),"","error")}finally{W(!1)}}),[I,F,q]);r.useEffect((()=>{K()}),[K]),r.useEffect((()=>{const e=E.get("text"),r=E.get("url");e&&(_(e),E.delete("text")),r&&(E.delete("url"),_(((e||"")+" "+r).trim())),D(E,{replace:!0})}),[E,D,_,I,J]);const X=e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${x.context.name||x.context.user?.email||x.context.nickname||"-"}`}${N?" "+N:""}${T.length>0?"\n":""}${T.map((e=>`#file:${e.id}`)).join(" ")}`,I.sendMessage(e).then((()=>{F.notify(q("Meddelande"),q("Meddelandet är sparat."),""),K(),U(""),R(void 0)}))},Z=r.useCallback((async e=>{if(!e||e.length<10)return;R(q("Analyserar...")),L("info");const r=await I.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(r){const e=new i.default(r.content);try{const r=JSON.parse(e.content);console.log("json",r);let t=0;for(const e in r)"true"===r[e]&&t++;R(q(4===t?"Allt är med":r.shortSummary||"Något saknas")),L(4===t?"success":"warning")}catch{R("Error: "+e.content),L("error")}}}),[I,q]),ee=r.useMemo((()=>j.lodashExports.debounce(Z,2e3)),[Z]);r.useEffect((()=>()=>{ee.cancel()}),[ee]);const re=e=>{const r=new Date,t=new Date(e),o=r.getTime()-t.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),a=Math.floor(o/864e5);return n<1?q("Just now"):n<60?`${n} ${q("minutes ago")}`:s<24?`${s} ${q("hours ago")}`:a<7?`${a} ${q("days ago")}`:t.toLocaleDateString()},te=e=>{const r=e.split("\n").filter((e=>!e.startsWith("#")&&!e.startsWith("SALESPERSON:")&&e.trim().length>0)).join("\n");return r.substring(0,150)+(r.length>150?"...":"")},oe=()=>e.jsxs("div",{className:G?S.historySectionMobile:S.historySection,children:[e.jsx(t.Text,{className:S.historyTitle,children:q("Tidigare sparade")}),H?e.jsx("div",{className:S.emptyState,children:e.jsx(t.Spinner,{size:"small"})}):0===V.length?e.jsx("div",{className:S.emptyState,children:e.jsx(t.Text,{children:q("Inga sparade meddelanden än")})}):V.map((r=>e.jsx(t.Card,{className:S.historyCard,onClick:()=>(e=>{const r=te(e.content);U(r)})(r),children:e.jsxs("div",{className:S.historyCardContent,children:[e.jsx(t.Text,{className:S.historyDate,children:re(r.createdAt)}),e.jsx(t.Text,{className:S.historyText,children:te(r.content)})]})},r.id)))]});return e.jsx(p.Page,{hideHeader:!0,children:e.jsxs("div",{className:G?S.containerMobile:S.container,children:[!G&&oe(),e.jsxs("div",{className:G?S.inputSectionMobile:S.inputSection,style:G?void 0:{backgroundImage:`url(${l.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[v&&l.getConfigValue("SHOW_VOICE_BUTTON")&&e.jsx("div",{className:S.voiceIcon,children:e.jsx(a.default,{voice:v})}),e.jsx("div",{className:S.backButton,children:e.jsx(t.Button,{appearance:"subtle",icon:e.jsx(o.ArrowLeft24Regular,{}),onClick:()=>k(-1),children:q("Tillbaka")})}),e.jsx(s.default,{title:l.getConfigValue("APP_SAVE_TITLE")?q(l.getConfigValue("APP_SAVE_TITLE")):q("Spara")}),e.jsx(u.default,{defaultText:P,onSend:X,files:T,onFilesChange:B,isUploading:y,onUploadImage:()=>{b.current?.triggerUpload()},onUploadCamera:()=>{M.current?.triggerUpload()},getImageUrl:n.CodicentService.getImageUrl,hasLocation:!!N,disableSend:!0,rows:9,placeholder:q("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==A&&(U(e),e&&e.trim().length>0?ee(e):(R(void 0),ee.cancel()))},onImagePasted:Q}),$&&e.jsxs("div",{className:S.review,children:[e.jsx("h3",{children:q("Analys")}),e.jsx(t.MessageBar,{intent:O,layout:"multiline",children:e.jsx(t.MessageBarBody,{children:q($)})})]}),e.jsx(d.default,{ref:C,onFileUploaded:J,onUploading:Y,multiple:!0,codicentService:I}),e.jsx(d.default,{codicentService:I,ref:b,onFileUploaded:J,onUploading:Y,multiple:!0,accept:"image/*"}),e.jsx(d.default,{codicentService:I,ref:M,onFileUploaded:J,onUploading:Y,multiple:!0,accept:"image/*",capture:"environment"})]}),G&&oe()]})})};exports.CrmPagePersistent=x,exports.default=x;