codicent-app-sdk 0.3.94 → 0.3.96

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 (98) hide show
  1. package/dist/cjs/components/AiInput.js +1 -1
  2. package/dist/cjs/components/AudioIcon.js +1 -1
  3. package/dist/cjs/components/ChatInput.js +1 -1
  4. package/dist/cjs/components/ChatMessage.js +1 -1
  5. package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
  6. package/dist/cjs/components/CompoundButton.d.ts +21 -0
  7. package/dist/cjs/components/CompoundButton.d.ts.map +1 -0
  8. package/dist/cjs/components/CompoundButton.js +1 -0
  9. package/dist/cjs/components/Footer.js +1 -1
  10. package/dist/cjs/components/Header.js +1 -1
  11. package/dist/cjs/components/HtmlView.js +1 -1
  12. package/dist/cjs/components/MessageInput.js +1 -1
  13. package/dist/cjs/components/MessageItem.js +1 -1
  14. package/dist/cjs/components/Profile.js +1 -1
  15. package/dist/cjs/components/Prompt.js +1 -1
  16. package/dist/cjs/components/SnapFooter.js +1 -1
  17. package/dist/cjs/components/TextHeader.js +1 -1
  18. package/dist/cjs/components/TypingIndicator.js +1 -1
  19. package/dist/cjs/components/UploadFile.js +1 -1
  20. package/dist/cjs/components/UrlProcessor.js +1 -1
  21. package/dist/cjs/components/VoiceIcon.js +1 -1
  22. package/dist/cjs/components/index.d.ts +1 -0
  23. package/dist/cjs/components/index.d.ts.map +1 -1
  24. package/dist/cjs/hooks/useAuthState.js +1 -1
  25. package/dist/cjs/hooks/useCodicentState.js +1 -1
  26. package/dist/cjs/index.js +1 -1
  27. package/dist/cjs/node_modules/@fluentui/react-button/lib/components/CompoundButton/CompoundButton.js +1 -0
  28. package/dist/cjs/node_modules/@fluentui/react-button/lib/components/CompoundButton/renderCompoundButton.js +1 -0
  29. package/dist/cjs/node_modules/@fluentui/react-button/lib/components/CompoundButton/useCompoundButton.js +1 -0
  30. package/dist/cjs/node_modules/@fluentui/react-button/lib/components/CompoundButton/useCompoundButtonStyles.styles.js +1 -0
  31. package/dist/cjs/pages/AppFrame.js +1 -1
  32. package/dist/cjs/pages/Chat.js +1 -1
  33. package/dist/cjs/pages/Compose.js +1 -1
  34. package/dist/cjs/pages/CrmPage.js +1 -1
  35. package/dist/cjs/pages/FormAccept.js +1 -1
  36. package/dist/cjs/pages/FormInvite.js +1 -1
  37. package/dist/cjs/pages/HtmlViewer.js +1 -1
  38. package/dist/cjs/pages/Login.js +1 -1
  39. package/dist/cjs/pages/Sales.js +1 -1
  40. package/dist/cjs/pages/Search.js +1 -1
  41. package/dist/cjs/pages/Snap.js +1 -1
  42. package/dist/cjs/services/codicent.d.ts.map +1 -1
  43. package/dist/cjs/services/codicent.js +1 -1
  44. package/dist/esm/components/AiInput.js +1 -1
  45. package/dist/esm/components/AudioIcon.js +1 -1
  46. package/dist/esm/components/ChatInput.js +1 -1
  47. package/dist/esm/components/ChatMessage.js +1 -1
  48. package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
  49. package/dist/esm/components/CompoundButton.d.ts +21 -0
  50. package/dist/esm/components/CompoundButton.d.ts.map +1 -0
  51. package/dist/esm/components/CompoundButton.js +1 -0
  52. package/dist/esm/components/Footer.js +1 -1
  53. package/dist/esm/components/Header.js +1 -1
  54. package/dist/esm/components/HtmlView.js +1 -1
  55. package/dist/esm/components/MessageInput.js +1 -1
  56. package/dist/esm/components/MessageItem.js +1 -1
  57. package/dist/esm/components/Profile.js +1 -1
  58. package/dist/esm/components/Prompt.js +1 -1
  59. package/dist/esm/components/SnapFooter.js +1 -1
  60. package/dist/esm/components/TextHeader.js +1 -1
  61. package/dist/esm/components/TypingIndicator.js +1 -1
  62. package/dist/esm/components/UploadFile.js +1 -1
  63. package/dist/esm/components/UrlProcessor.js +1 -1
  64. package/dist/esm/components/VoiceIcon.js +1 -1
  65. package/dist/esm/components/index.d.ts +1 -0
  66. package/dist/esm/components/index.d.ts.map +1 -1
  67. package/dist/esm/hooks/useAuthState.js +1 -1
  68. package/dist/esm/hooks/useCodicentState.js +1 -1
  69. package/dist/esm/index.js +1 -1
  70. package/dist/esm/node_modules/@fluentui/react-button/lib/components/CompoundButton/CompoundButton.js +1 -0
  71. package/dist/esm/node_modules/@fluentui/react-button/lib/components/CompoundButton/renderCompoundButton.js +1 -0
  72. package/dist/esm/node_modules/@fluentui/react-button/lib/components/CompoundButton/useCompoundButton.js +1 -0
  73. package/dist/esm/node_modules/@fluentui/react-button/lib/components/CompoundButton/useCompoundButtonStyles.styles.js +1 -0
  74. package/dist/esm/pages/AppFrame.js +1 -1
  75. package/dist/esm/pages/Chat.js +1 -1
  76. package/dist/esm/pages/Compose.js +1 -1
  77. package/dist/esm/pages/CrmPage.js +1 -1
  78. package/dist/esm/pages/FormAccept.js +1 -1
  79. package/dist/esm/pages/FormInvite.js +1 -1
  80. package/dist/esm/pages/HtmlViewer.js +1 -1
  81. package/dist/esm/pages/Login.js +1 -1
  82. package/dist/esm/pages/Sales.js +1 -1
  83. package/dist/esm/pages/Search.js +1 -1
  84. package/dist/esm/pages/Snap.js +1 -1
  85. package/dist/esm/services/codicent.d.ts.map +1 -1
  86. package/dist/esm/services/codicent.js +1 -1
  87. package/dist/index.d.ts +21 -1
  88. package/package.json +1 -1
  89. package/dist/cjs/node_modules/@openai/realtime-api-beta/lib/api.js +0 -1
  90. package/dist/cjs/node_modules/@openai/realtime-api-beta/lib/client.js +0 -1
  91. package/dist/cjs/node_modules/@openai/realtime-api-beta/lib/conversation.js +0 -1
  92. package/dist/cjs/node_modules/@openai/realtime-api-beta/lib/event_handler.js +0 -1
  93. package/dist/cjs/node_modules/@openai/realtime-api-beta/lib/utils.js +0 -1
  94. package/dist/esm/node_modules/@openai/realtime-api-beta/lib/api.js +0 -1
  95. package/dist/esm/node_modules/@openai/realtime-api-beta/lib/client.js +0 -1
  96. package/dist/esm/node_modules/@openai/realtime-api-beta/lib/conversation.js +0 -1
  97. package/dist/esm/node_modules/@openai/realtime-api-beta/lib/event_handler.js +0 -1
  98. package/dist/esm/node_modules/@openai/realtime-api-beta/lib/utils.js +0 -1
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{forwardRef as e,useState as t,useRef as s,useEffect as i,useImperativeHandle as r}from"react";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{isMobileDevice as a}from"../utils/device.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Spinner as p}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../services/codicent.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as m}from"../node_modules/@griffel/react/makeStyles.esm.js";const l=m({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),n=e((({onFileUploaded:e,accept:m,capture:n,multiple:c=!1,onUploading:j,className:d,id:g,codicentService:u},f)=>{const h=l(),[y,v]=t(!1),w=s(null);i((()=>{j(y)}),[y,j]);const b=async(o,e)=>{const t=new FormData;t.append("file",e),v(!0);try{const e=await u.uploadFile(o,t);return v(!1),e}catch(e){return console.error("Upload failed for file:",o,e),v(!1),null}},S=()=>{w.current?.click()};r(f,(()=>({triggerUpload:S})));const C=n&&a();return o("div",{id:g,className:d,children:y?o(p,{"aria-label":"Uploading...",className:h.spinner}):o("input",{ref:w,type:"file",className:h.imageUpload,onChange:async()=>{try{const o=w.current;if(o&&o.files){const t=[];for(let e=0;e<o.files.length;e++){const s=o.files[e],i=s.name.split("\\").pop()||s.name,r=await b(i,s);r&&t.push(r)}t.length>0&&e(t)}}catch(o){console.error("Error uploading files:",o)}},accept:m,multiple:c,...C?{capture:n}:{}})})}));export{n as default};
1
+ import{jsx as o}from"react/jsx-runtime";import{forwardRef as e,useState as t,useRef as s,useEffect as i,useImperativeHandle as r}from"react";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{isMobileDevice as p}from"../utils/device.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import{Spinner as a}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../services/codicent.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as m}from"../node_modules/@griffel/react/makeStyles.esm.js";const l=m({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),n=e((({onFileUploaded:e,accept:m,capture:n,multiple:c=!1,onUploading:j,className:d,id:g,codicentService:u},f)=>{const h=l(),[y,v]=t(!1),w=s(null);i((()=>{j(y)}),[y,j]);const b=async(o,e)=>{const t=new FormData;t.append("file",e),v(!0);try{const e=await u.uploadFile(o,t);return v(!1),e}catch(e){return console.error("Upload failed for file:",o,e),v(!1),null}},C=()=>{w.current?.click()};r(f,(()=>({triggerUpload:C})));const S=n&&p();return o("div",{id:g,className:d,children:y?o(a,{"aria-label":"Uploading...",className:h.spinner}):o("input",{ref:w,type:"file",className:h.imageUpload,onChange:async()=>{try{const o=w.current;if(o&&o.files){const t=[];for(let e=0;e<o.files.length;e++){const s=o.files[e],i=s.name.split("\\").pop()||s.name,r=await b(i,s);r&&t.push(r)}t.length>0&&e(t)}}catch(o){console.error("Error uploading files:",o)}},accept:m,multiple:c,...S?{capture:n}:{}})})}));export{n as default};
@@ -1 +1 @@
1
- import{jsxs as e,Fragment as o,jsx as i}from"react/jsx-runtime";import{useState as t}from"react";import{CombinedPlaceholderDialog as r}from"./CombinedPlaceholderDialog.js";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import{useTemplateVariables as s}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";const a=({service:a,children:l})=>{const[p,m]=t(!1),[n,j]=t([]),[c,d]=t([]),[g,h]=t(null),{extractTemplateVariables:u,extractFilePlaceholders:f,replaceTemplateVariables:b,replaceFilePlaceholders:w}=s(a.uploadFile);return e(o,{children:[l((async e=>{h(e);const o=f(e),i=u(e);0!==o.length||0!==i.length?(d(o),j(i),m(!0)):window.location.href=e})),i(r,{open:p,templateVariables:n,filePlaceholders:c,onTemplateVariablesChange:j,onFilePlaceholdersChange:d,onConfirm:async()=>{if(g)try{let e=g;if(c.length>0){c.filter((e=>e.fileId)).length!==c.length&&console.warn("Some file placeholders are missing fileIds:",c.filter((e=>!e.fileId)).map((e=>e.description))),e=w(e,c)}n.length>0&&(e=b(e,n)),m(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{h(null)}},onCancel:()=>{m(!1),h(null),j([]),d([])},uploadFile:a.uploadFile})]})};export{a as UrlProcessor,a as default};
1
+ import{jsxs as e,Fragment as o,jsx as i}from"react/jsx-runtime";import{useState as t}from"react";import{CombinedPlaceholderDialog as r}from"./CombinedPlaceholderDialog.js";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import{useTemplateVariables as s}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";const a=({service:a,children:l})=>{const[p,m]=t(!1),[n,j]=t([]),[c,d]=t([]),[g,h]=t(null),{extractTemplateVariables:u,extractFilePlaceholders:f,replaceTemplateVariables:b,replaceFilePlaceholders:w}=s(a.uploadFile);return e(o,{children:[l((async e=>{h(e);const o=f(e),i=u(e);0!==o.length||0!==i.length?(d(o),j(i),m(!0)):window.location.href=e})),i(r,{open:p,templateVariables:n,filePlaceholders:c,onTemplateVariablesChange:j,onFilePlaceholdersChange:d,onConfirm:async()=>{if(g)try{let e=g;if(c.length>0){c.filter((e=>e.fileId)).length!==c.length&&console.warn("Some file placeholders are missing fileIds:",c.filter((e=>!e.fileId)).map((e=>e.description))),e=w(e,c)}n.length>0&&(e=b(e,n)),m(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{h(null)}},onCancel:()=>{m(!1),h(null),j([]),d([])},uploadFile:a.uploadFile})]})};export{a as UrlProcessor,a as default};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import s from"../utils/withWakeLock.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import t from"../hooks/useAppStyles.js";import{MicSparkle24Regular as i,MicSparkle24Filled as r}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";const e=s(r),p=({voice:s,disabled:r})=>{const{isConnected:p,connectConversation:m,disconnectConversation:a}=s,{pointer:n}=t();return r?o(i,{}):p?o(e,{onClick:a,className:n}):o(i,{onClick:m,className:n})};export{p as default};
1
+ import{jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import s from"../utils/withWakeLock.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import t from"../hooks/useAppStyles.js";import{MicSparkle24Regular as i,MicSparkle24Filled as r}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";const e=s(r),p=({voice:s,disabled:r})=>{const{isConnected:p,connectConversation:m,disconnectConversation:a}=s,{pointer:n}=t();return r?o(i,{}):p?o(e,{onClick:a,className:n}):o(i,{onClick:m,className:n})};export{p as default};
@@ -1,6 +1,7 @@
1
1
  export { default as Markdown } from "./Markdown";
2
2
  export { Textarea } from "./Textarea";
3
3
  export { Button } from "./Button";
4
+ export { CompoundButton } from "./CompoundButton";
4
5
  export { Title } from "./Title";
5
6
  export { Text } from "./Text";
6
7
  export { Spinner } from "./Spinner";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- import{useState as o,useMemo as e,useEffect as t,useCallback as s}from"react";import{CodicentService as n}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{getConfigValue as i}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";const r=r=>{const{isAuthenticated:p,getAccessTokenSilently:a,user:m,isLoading:c,logout:l,getAccessTokenWithPopup:g,loginWithRedirect:j}=r,[u,E]=o(null),[T,_]=o(void 0),[P,d]=o(null),[C,A]=o(""),I=e((()=>new n({API_BASE_URL:i("API_BASE_URL"),APP_LOG_CODICENT:i("APP_LOG_CODICENT"),APP_LOG_TOKEN:i("APP_LOG_TOKEN"),APP_NAME:i("APP_NAME"),APP_PREFIX:i("APP_PREFIX"),APP_TEMPLATE:i("APP_TEMPLATE"),BUTTON_TAG:i("BUTTON_TAG"),STRIPE_PUBLIC_KEY:i("STRIPE_PUBLIC_KEY"),SUBSCRIPTION_NEEDED:i("SUBSCRIPTION_NEEDED"),USER_PREFIX:i("USER_PREFIX"),ANONYMOUS_TOKEN:i("ANONYMOUS_TOKEN")})),[]);t((()=>{!c&&p&&(async()=>{try{const o=await a({});console.debug("CODICENT: ACCESS TOKEN",o),E(o)}catch(o){console.debug("CODICENT: Failed to get access token",o);const e=o;if(e&&"object"==typeof e&&"error"in e&&"login_required"===e.error)console.warn("CODICENT: Login required"),S();else if(e&&"object"==typeof e&&"error"in e&&"consent_required"===e.error)try{const o=await g();if(!o)return void d("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),E(o)}catch(o){console.warn("CODICENT: Failed to get access token with popup",o),S()}else d("Failed to get access token: "+(e.message?.toString()||e.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",e)}})().then((()=>{}))}),[p,g,a,j,c]),t((()=>{if(m&&m.sub&&u&&void 0===T){let o=!0;return I.loginUser(m.sub,u).then((e=>{o&&(null===e?_(!1):""===e?d("Kontrollera internetanslutningen och försök igen."):(I.setToken(u),I.getNickname().then(A),_(!0)))})).catch((()=>{o&&(d("Ett fel uppstod. Försök igen senare."),_(!1))})),()=>{o=!1}}}),[m,u,T,I]);const S=s((()=>{I.logout(),E(null),d(null),_(void 0),A(""),l({logoutParams:{returnTo:i("AUTH_REDIRECT_URL")}})}),[I,l]),O=s((async o=>{const e=await I.registerUser(o,m.email,m.sub,u);return e&&(I.setToken(u),_(!0)),e}),[I,m,u]);return t((()=>{I.onUnauthorized=S}),[I]),e((()=>({isAuthenticated:p,isRegistered:T,accessToken:u,authError:P,isLoading:c,user:m,nickname:C,logout:S,registerUser:O,codicentService:I,loginWithRedirect:j})),[p,T,u,P,c,m,C,S,O,I,j])};export{r as default};
1
+ import{useState as o,useMemo as e,useEffect as t,useCallback as s}from"react";import{CodicentService as n}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{getConfigValue as i}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";const r=r=>{const{isAuthenticated:p,getAccessTokenSilently:a,user:m,isLoading:c,logout:l,getAccessTokenWithPopup:g,loginWithRedirect:j}=r,[u,E]=o(null),[T,_]=o(void 0),[P,d]=o(null),[C,A]=o(""),I=e((()=>new n({API_BASE_URL:i("API_BASE_URL"),APP_LOG_CODICENT:i("APP_LOG_CODICENT"),APP_LOG_TOKEN:i("APP_LOG_TOKEN"),APP_NAME:i("APP_NAME"),APP_PREFIX:i("APP_PREFIX"),APP_TEMPLATE:i("APP_TEMPLATE"),BUTTON_TAG:i("BUTTON_TAG"),STRIPE_PUBLIC_KEY:i("STRIPE_PUBLIC_KEY"),SUBSCRIPTION_NEEDED:i("SUBSCRIPTION_NEEDED"),USER_PREFIX:i("USER_PREFIX"),ANONYMOUS_TOKEN:i("ANONYMOUS_TOKEN")})),[]);t((()=>{!c&&p&&(async()=>{try{const o=await a({});console.debug("CODICENT: ACCESS TOKEN",o),E(o)}catch(o){console.debug("CODICENT: Failed to get access token",o);const e=o;if(e&&"object"==typeof e&&"error"in e&&"login_required"===e.error)console.warn("CODICENT: Login required"),S();else if(e&&"object"==typeof e&&"error"in e&&"consent_required"===e.error)try{const o=await g();if(!o)return void d("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),E(o)}catch(o){console.warn("CODICENT: Failed to get access token with popup",o),S()}else d("Failed to get access token: "+(e.message?.toString()||e.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",e)}})().then((()=>{}))}),[p,g,a,j,c]),t((()=>{if(m&&m.sub&&u&&void 0===T){let o=!0;return I.loginUser(m.sub,u).then((e=>{o&&(null===e?_(!1):""===e?d("Kontrollera internetanslutningen och försök igen."):(I.setToken(u),I.getNickname().then(A),_(!0)))})).catch((()=>{o&&(d("Ett fel uppstod. Försök igen senare."),_(!1))})),()=>{o=!1}}}),[m,u,T,I]);const S=s((()=>{I.logout(),E(null),d(null),_(void 0),A(""),l({logoutParams:{returnTo:i("AUTH_REDIRECT_URL")}})}),[I,l]),O=s((async o=>{const e=await I.registerUser(o,m.email,m.sub,u);return e&&(I.setToken(u),_(!0)),e}),[I,m,u]);return t((()=>{I.onUnauthorized=S}),[I]),e((()=>({isAuthenticated:p,isRegistered:T,accessToken:u,authError:P,isLoading:c,user:m,nickname:C,logout:S,registerUser:O,codicentService:I,loginWithRedirect:j})),[p,T,u,P,c,m,C,S,O,I,j])};export{r as default};
@@ -1 +1 @@
1
- import{useState as t,useRef as o,useCallback as s,useEffect as e}from"react";import p from"./useStateWithLocalStorage.js";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{getConfigValue as r}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";const i=i=>{const[n,m]=p("APP_WELCOME_STATE_TEXT_"+i.context.selectedApp,""),[a,c]=p("CODICENT_STATE_LAST_TIMESTAMP_"+i.context.selectedApp,0),{service:j,current:l}=i,[g,T]=t(!1),S=o(!1),_=s((async()=>{if(!S.current){S.current=!0;try{const t=await j.getMessagesFast(r("LOGBOOK_TAGS").split(",").filter((t=>"chat"!==t))),o=t.length>0?t[0].createdAt.getTime():a;if(o>a){c(o),T(!0);const t=await j.chat(r("WELCOME_STATUS_PROMPT"));m(t.content)}}finally{T(!1),S.current=!1}}}),[j,a,c,m]),u=s((()=>{j&&r("CHAT_INSTRUCTIONS")}),[j]);return e((()=>{l===i.allStates.hasAccess&&r("WELCOME_STATUS_PROMPT")?(_(),u()):r("WELCOME_STATUS_PROMPT")||m("")}),[l,i,_,u,m]),{welcomeStatusText:n,updating:g}};export{i as default};
1
+ import{useState as o,useRef as t,useCallback as s,useEffect as e}from"react";import p from"./useStateWithLocalStorage.js";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{getConfigValue as r}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";const i=i=>{const[n,m]=p("APP_WELCOME_STATE_TEXT_"+i.context.selectedApp,""),[a,c]=p("CODICENT_STATE_LAST_TIMESTAMP_"+i.context.selectedApp,0),{service:j,current:l}=i,[g,T]=o(!1),S=t(!1),u=s((async()=>{if(!S.current){S.current=!0;try{const o=await j.getMessagesFast(r("LOGBOOK_TAGS").split(",").filter((o=>"chat"!==o))),t=o.length>0?o[0].createdAt.getTime():a;if(t>a){c(t),T(!0);const o=await j.chat(r("WELCOME_STATUS_PROMPT"));m(o.content)}}finally{T(!1),S.current=!1}}}),[j,a,c,m]),_=s((()=>{j&&r("CHAT_INSTRUCTIONS")}),[j]);return e((()=>{l===i.allStates.hasAccess&&r("WELCOME_STATUS_PROMPT")?(u(),_()):r("WELCOME_STATUS_PROMPT")||m("")}),[l,i,u,_,m]),{welcomeStatusText:n,updating:g}};export{i as default};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{CodicentService}from"./services/codicent.js";export{default as Markdown}from"./components/Markdown.js";export{Textarea}from"./components/Textarea.js";export{Button}from"./components/Button.js";export{Title}from"./components/Title.js";export{Text}from"./components/Text.js";export{Spinner}from"./components/Spinner.js";export{Label}from"./components/Label.js";export{Input}from"./components/Input.js";export{default as TextHeader}from"./components/TextHeader.js";export{default as TypingIndicator}from"./components/TypingIndicator.js";export{default as Prompt}from"./components/Prompt.js";export{default as ChatInput}from"./components/ChatInput.js";export{CombinedPlaceholderDialog}from"./components/CombinedPlaceholderDialog.js";export{default as ChatMessage}from"./components/ChatMessage.js";export{Header}from"./components/Header.js";export{default as VoiceIcon}from"./components/VoiceIcon.js";export{default as AudioIcon}from"./components/AudioIcon.js";export{FileThumbnail}from"./components/FileThumbnail.js";export{default as MessageInput}from"./components/MessageInput.js";export{default as UploadFile}from"./components/UploadFile.js";export{default as SnapFooter}from"./components/SnapFooter.js";export{default as Profile}from"./components/Profile.js";export{default as MessageItem}from"./components/MessageItem.js";export{default as Content}from"./components/Content.js";export{default as AiInput}from"./components/AiInput.js";export{default as SearchBox}from"./components/SearchBox.js";export{default as HtmlView}from"./components/HtmlView.js";export{Footer}from"./components/Footer.js";export{Page}from"./components/Page.js";export{UrlProcessor}from"./components/UrlProcessor.js";export{DatePicker}from"./components/DatePicker.js";export{ColorPicker}from"./components/ColorPicker.js";export{TimePicker}from"./components/TimePicker.js";export{default as useStateWithLocalStorage}from"./hooks/useStateWithLocalStorage.js";export{default as useAuthState}from"./hooks/useAuthState.js";export{useChat}from"./hooks/useChat.js";export{default as useCodicentState}from"./hooks/useCodicentState.js";export{useAudioRecorder}from"./hooks/useAudioRecorder.js";export{default as useTools}from"./hooks/useTools.js";export{default as useRealtimeVoiceAI}from"./hooks/useRealtimeVoiceAI.js";export{default as useLocalization}from"./hooks/useLocalization.js";export{useTemplateVariables}from"./hooks/useTemplateVariables.js";export{useCodicentApp}from"./hooks/useCodicentApp.js";export{default as useAppStyles}from"./hooks/useAppStyles.js";export{default as useToaster}from"./hooks/useToaster.js";export{default as MessageContent}from"./utils/MessageContent.js";export{default as generateBrandVariants}from"./utils/theme.js";export{default as log}from"./utils/logging.js";export{default as withWakeLock}from"./utils/withWakeLock.js";export{AppStateMachine,createAppStateMachine}from"./utils/appState.js";import{d as e}from"./_virtual/index.js";import"./lib/wavtools/lib/wav_packer.js";import"./lib/wavtools/lib/analysis/audio_analysis.js";export{WavStreamPlayer}from"./lib/wavtools/lib/wav_stream_player.js";export{WavRecorder}from"./lib/wavtools/lib/wav_recorder.js";export{getGpsLocation,isMobileDevice}from"./utils/device.js";export{getTimeString}from"./utils/helpers.js";export{AppConfig,getConfigValue,initCodicentApp}from"./config/index.js";export{default as AppFrame}from"./pages/AppFrame.js";export{default as Chat}from"./pages/Chat.js";export{Compose}from"./pages/Compose.js";export{default as Snap}from"./pages/Snap.js";export{default as Search}from"./pages/Search.js";export{default as Login}from"./pages/Login.js";export{Logout}from"./pages/Logout.js";export{CrmPage}from"./pages/CrmPage.js";export{default as ImageView}from"./pages/ImageView.js";export{default as FormInvite}from"./pages/FormInvite.js";export{default as FormAccept}from"./pages/FormAccept.js";export{Sales}from"./pages/Sales.js";export{default as HtmlViewer}from"./pages/HtmlViewer.js";var o=e.StateMachine;export{o as StateMachine};
1
+ export{CodicentService}from"./services/codicent.js";export{default as Markdown}from"./components/Markdown.js";export{Textarea}from"./components/Textarea.js";export{Button}from"./components/Button.js";export{CompoundButton}from"./components/CompoundButton.js";export{Title}from"./components/Title.js";export{Text}from"./components/Text.js";export{Spinner}from"./components/Spinner.js";export{Label}from"./components/Label.js";export{Input}from"./components/Input.js";export{default as TextHeader}from"./components/TextHeader.js";export{default as TypingIndicator}from"./components/TypingIndicator.js";export{default as Prompt}from"./components/Prompt.js";export{default as ChatInput}from"./components/ChatInput.js";export{CombinedPlaceholderDialog}from"./components/CombinedPlaceholderDialog.js";export{default as ChatMessage}from"./components/ChatMessage.js";export{Header}from"./components/Header.js";export{default as VoiceIcon}from"./components/VoiceIcon.js";export{default as AudioIcon}from"./components/AudioIcon.js";export{FileThumbnail}from"./components/FileThumbnail.js";export{default as MessageInput}from"./components/MessageInput.js";export{default as UploadFile}from"./components/UploadFile.js";export{default as SnapFooter}from"./components/SnapFooter.js";export{default as Profile}from"./components/Profile.js";export{default as MessageItem}from"./components/MessageItem.js";export{default as Content}from"./components/Content.js";export{default as AiInput}from"./components/AiInput.js";export{default as SearchBox}from"./components/SearchBox.js";export{default as HtmlView}from"./components/HtmlView.js";export{Footer}from"./components/Footer.js";export{Page}from"./components/Page.js";export{UrlProcessor}from"./components/UrlProcessor.js";export{DatePicker}from"./components/DatePicker.js";export{ColorPicker}from"./components/ColorPicker.js";export{TimePicker}from"./components/TimePicker.js";export{default as useStateWithLocalStorage}from"./hooks/useStateWithLocalStorage.js";export{default as useAuthState}from"./hooks/useAuthState.js";export{useChat}from"./hooks/useChat.js";export{default as useCodicentState}from"./hooks/useCodicentState.js";export{useAudioRecorder}from"./hooks/useAudioRecorder.js";export{default as useTools}from"./hooks/useTools.js";export{default as useRealtimeVoiceAI}from"./hooks/useRealtimeVoiceAI.js";export{default as useLocalization}from"./hooks/useLocalization.js";export{useTemplateVariables}from"./hooks/useTemplateVariables.js";export{useCodicentApp}from"./hooks/useCodicentApp.js";export{default as useAppStyles}from"./hooks/useAppStyles.js";export{default as useToaster}from"./hooks/useToaster.js";export{default as MessageContent}from"./utils/MessageContent.js";export{default as generateBrandVariants}from"./utils/theme.js";export{default as log}from"./utils/logging.js";export{default as withWakeLock}from"./utils/withWakeLock.js";export{AppStateMachine,createAppStateMachine}from"./utils/appState.js";import{d as e}from"./_virtual/index.js";import"./lib/wavtools/lib/wav_packer.js";import"./lib/wavtools/lib/analysis/audio_analysis.js";export{WavStreamPlayer}from"./lib/wavtools/lib/wav_stream_player.js";export{WavRecorder}from"./lib/wavtools/lib/wav_recorder.js";export{getGpsLocation,isMobileDevice}from"./utils/device.js";export{getTimeString}from"./utils/helpers.js";export{AppConfig,getConfigValue,initCodicentApp}from"./config/index.js";export{default as AppFrame}from"./pages/AppFrame.js";export{default as Chat}from"./pages/Chat.js";export{Compose}from"./pages/Compose.js";export{default as Snap}from"./pages/Snap.js";export{default as Search}from"./pages/Search.js";export{default as Login}from"./pages/Login.js";export{Logout}from"./pages/Logout.js";export{CrmPage}from"./pages/CrmPage.js";export{default as ImageView}from"./pages/ImageView.js";export{default as FormInvite}from"./pages/FormInvite.js";export{default as FormAccept}from"./pages/FormAccept.js";export{Sales}from"./pages/Sales.js";export{default as HtmlViewer}from"./pages/HtmlViewer.js";var o=e.StateMachine;export{o as StateMachine};
@@ -0,0 +1 @@
1
+ import*as o from"react";import{renderCompoundButton_unstable as t}from"./renderCompoundButton.js";import{useCompoundButton_unstable as s}from"./useCompoundButton.js";import{useCompoundButtonStyles_unstable as e}from"./useCompoundButtonStyles.styles.js";import{useCustomStyleHook as r}from"../../../../react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js";const m=o.forwardRef(((o,m)=>{const n=s(o,m);return e(n),r("useCompoundButtonStyles_unstable")(n),t(n)}));m.displayName="CompoundButton";export{m as CompoundButton};
@@ -0,0 +1 @@
1
+ import{jsxs as o,jsx as n}from"../../../../react-jsx-runtime/lib/jsx-runtime.js";import{assertSlots as t}from"../../../../react-utilities/lib/compose/assertSlots.js";const r=r=>{t(r);const{iconOnly:i,iconPosition:e}=r;return o(r.root,{children:["after"!==e&&r.icon&&n(r.icon,{}),!i&&o(r.contentContainer,{children:[r.root.children,r.secondaryContent&&n(r.secondaryContent,{})]}),"after"===e&&r.icon&&n(r.icon,{})]})};export{r as renderCompoundButton_unstable};
@@ -0,0 +1 @@
1
+ import"react";import{useButton_unstable as n}from"../Button/useButton.js";import{always as o,optional as t}from"../../../../react-utilities/lib/compose/slot.js";const e=({contentContainer:e,secondaryContent:r,...i},c)=>{var s,a;const l={...n(i,c),components:{root:"button",icon:"span",contentContainer:"span",secondaryContent:"span"},contentContainer:o(e,{elementType:"span"}),secondaryContent:t(r,{elementType:"span"})};return l.iconOnly=Boolean((null===(s=l.icon)||void 0===s?void 0:s.children)&&!i.children&&!(null===(a=l.secondaryContent)||void 0===a?void 0:a.children)),l};export{e as useCompoundButton_unstable};
@@ -0,0 +1 @@
1
+ import{useButtonStyles_unstable as o}from"../Button/useButtonStyles.styles.js";import{mergeClasses as n}from"../../../../../@griffel/core/mergeClasses.esm.js";import{__styles as e}from"../../../../../@griffel/react/__styles.esm.js";const t={root:"fui-CompoundButton",icon:"fui-CompoundButton__icon",contentContainer:"fui-CompoundButton__contentContainer",secondaryContent:"fui-CompoundButton__secondaryContent"},r=e({base:{Bqenvij:"f11ysow2",J657lq:"f1um431h",Jlnjib:"fte7hqw",Bc29nj9:"f1yh8ef3"},highContrast:{pu7qz5:"fi3u9nm",B10010i:"f1tdgb9w"},outline:{},primary:{J657lq:"foe7gw6",Jlnjib:"fvxlz81",Bc29nj9:"f1c2mdy",B8ia98v:"f1r39r2s"},secondary:{},subtle:{J657lq:"f1um431h",Jlnjib:"fte7hqw",Bc29nj9:"f1yh8ef3",pu7qz5:"f1xoeh18",B10010i:"f1ca1nd7"},transparent:{J657lq:"f1um431h",Jlnjib:"f1wn9xqz",Bc29nj9:"f1a8q4d0"},small:{Byoj8tv:0,uwmqm3:0,z189sj:0,z8tnut:0,B0ocmuz:"f1ge6w2w",Be2twd7:"fkhj508",Bg96gwp:"f1i3iumi"},medium:{Byoj8tv:0,uwmqm3:0,z189sj:0,z8tnut:0,B0ocmuz:"fnnf4v2",Be2twd7:"fkhj508",Bg96gwp:"f1i3iumi"},large:{Byoj8tv:0,uwmqm3:0,z189sj:0,z8tnut:0,B0ocmuz:"f14s4sho",Be2twd7:"fod5ikn",Bg96gwp:"faaz57k"},disabled:{J657lq:"f1rlv8bf",Jlnjib:"fd1dbtm",Bc29nj9:"f1vqmdmi"},disabledHighContrast:{B8ia98v:"f1csacz4",pu7qz5:"f1s5tkfe",B10010i:"fs0rda3"}},{d:[".f11ysow2{height:auto;}",".f1um431h .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForeground2);}",".foe7gw6 .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForegroundOnBrand);}",[".f1ge6w2w{padding:var(--spacingHorizontalS) var(--spacingHorizontalS) var(--spacingHorizontalMNudge) var(--spacingHorizontalS);}",{p:-1}],".fkhj508{font-size:var(--fontSizeBase300);}",".f1i3iumi{line-height:var(--lineHeightBase300);}",[".fnnf4v2{padding:14px var(--spacingHorizontalM) var(--spacingHorizontalL) var(--spacingHorizontalM);}",{p:-1}],[".f14s4sho{padding:18px var(--spacingHorizontalL) var(--spacingHorizontalXL) var(--spacingHorizontalL);}",{p:-1}],".fod5ikn{font-size:var(--fontSizeBase400);}",".faaz57k{line-height:var(--lineHeightBase400);}",".f1rlv8bf .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForegroundDisabled);}"],h:[".fte7hqw:hover .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForeground2Hover);}",".f1yh8ef3:hover:active .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForeground2Pressed);}",".fvxlz81:hover .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForegroundOnBrand);}",".f1c2mdy:hover:active .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForegroundOnBrand);}",".f1wn9xqz:hover .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForeground2BrandHover);}",".f1a8q4d0:hover:active .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForeground2BrandPressed);}",".fd1dbtm:hover .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForegroundDisabled);}",".f1vqmdmi:hover:active .fui-CompoundButton__secondaryContent{color:var(--colorNeutralForegroundDisabled);}"],m:[["@media (forced-colors: active){.fi3u9nm:hover .fui-CompoundButton__secondaryContent{color:Highlight;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.f1tdgb9w:hover:active .fui-CompoundButton__secondaryContent{color:Highlight;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.f1r39r2s .fui-CompoundButton__secondaryContent{color:HighlightText;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.f1xoeh18:hover .fui-CompoundButton__secondaryContent{color:Canvas;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.f1ca1nd7:hover:active .fui-CompoundButton__secondaryContent{color:Canvas;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.f1csacz4 .fui-CompoundButton__secondaryContent{color:GrayText;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.f1s5tkfe:hover .fui-CompoundButton__secondaryContent{color:GrayText;}}",{m:"(forced-colors: active)"}],["@media (forced-colors: active){.fs0rda3:hover:active .fui-CompoundButton__secondaryContent{color:GrayText;}}",{m:"(forced-colors: active)"}]]}),a=e({small:{Byoj8tv:0,uwmqm3:0,z189sj:0,z8tnut:0,B0ocmuz:"f1t35pdg",B2u0y6b:"ft5vyj6",Bf4jedk:"f17suaiq"},medium:{Byoj8tv:0,uwmqm3:0,z189sj:0,z8tnut:0,B0ocmuz:"f1r1wyb6",B2u0y6b:"fdczgix",Bf4jedk:"fjdcg9m"},large:{Byoj8tv:0,uwmqm3:0,z189sj:0,z8tnut:0,B0ocmuz:"f1bnz8pu",B2u0y6b:"fww51uw",Bf4jedk:"f1qhsl2h"}},{d:[[".f1t35pdg{padding:var(--spacingHorizontalXS);}",{p:-1}],".ft5vyj6{max-width:48px;}",".f17suaiq{min-width:48px;}",[".f1r1wyb6{padding:var(--spacingHorizontalSNudge);}",{p:-1}],".fdczgix{max-width:52px;}",".fjdcg9m{min-width:52px;}",[".f1bnz8pu{padding:var(--spacingHorizontalS);}",{p:-1}],".fww51uw{max-width:56px;}",".f1qhsl2h{min-width:56px;}"]}),i=e({base:{Be2twd7:"fndrnj9",Bqenvij:"fbhnoac",a9b677:"feqmc2u"},before:{t21cq0:["fkujibs","f199hnxi"]},after:{Frg6f3:["f199hnxi","fkujibs"]}},{d:[".fndrnj9{font-size:40px;}",".fbhnoac{height:40px;}",".feqmc2u{width:40px;}",".fkujibs{margin-right:var(--spacingHorizontalM);}",".f199hnxi{margin-left:var(--spacingHorizontalM);}"]}),c=e({base:{mc9l5x:"f22iagw",Beiy3e4:"f1vx9l62",fsow6f:["f1o700av","fes3tcz"]}},{d:[".f22iagw{display:flex;}",".f1vx9l62{flex-direction:column;}",".f1o700av{text-align:left;}",".fes3tcz{text-align:right;}"]}),f=e({base:{Bg96gwp:"flkuc6h",Bhrd7zp:"figsok6"},small:{Be2twd7:"fy9rknc"},medium:{Be2twd7:"fy9rknc"},large:{Be2twd7:"fkhj508"}},{d:[".flkuc6h{line-height:100%;}",".figsok6{font-weight:var(--fontWeightRegular);}",".fy9rknc{font-size:var(--fontSizeBase200);}",".fkhj508{font-size:var(--fontSizeBase300);}"]}),d=e=>{const d=r(),s=a(),u=i(),l=c(),m=f(),{appearance:v,disabled:g,disabledFocusable:h,iconOnly:p,iconPosition:B,size:z}=e;return e.root.className=n(t.root,d.base,d.highContrast,v&&d[v],d[z],(g||h)&&d.disabled,(g||h)&&d.disabledHighContrast,p&&s[z],e.root.className),e.contentContainer.className=n(t.contentContainer,l.base,e.contentContainer.className),e.icon&&(e.icon.className=n(t.icon,u.base,void 0!==e.root.children&&null!==e.root.children&&u[B],e.icon.className)),e.secondaryContent&&(e.secondaryContent.className=n(t.secondaryContent,m.base,m[z],e.secondaryContent.className)),o(e),e};export{t as compoundButtonClassNames,d as useCompoundButtonStyles_unstable};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as t}from"../components/Page.js";import{makeStyles as e}from"../node_modules/@griffel/react/makeStyles.esm.js";const s=e({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}}),i=({src:e,showFooter:i,title:r})=>{const m=s();return i?o(t,{hideFooter:!i,hideHeader:!0,children:o("iframe",{title:r,src:e,className:`${m.iframe} ${i?m.fixFrameHeight:""}`})}):o("iframe",{title:r,src:e,className:m.iframe})};export{i as default};
1
+ import{jsx as o}from"react/jsx-runtime";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as t}from"../components/Page.js";import{makeStyles as e}from"../node_modules/@griffel/react/makeStyles.esm.js";const s=e({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}}),i=({src:e,showFooter:i,title:r})=>{const m=s();return i?o(t,{hideFooter:!i,hideHeader:!0,children:o("iframe",{title:r,src:e,className:`${m.iframe} ${i?m.fixFrameHeight:""}`})}):o("iframe",{title:r,src:e,className:m.iframe})};export{i as default};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as o}from"react/jsx-runtime";import{useRef as t,useState as n,useEffect as r}from"react";import{useNavigate as i,useSearchParams as s}from"react-router-dom";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/Spinner.js";import a from"../components/TextHeader.js";import l from"../components/TypingIndicator.js";import m from"../components/Prompt.js";import p from"../components/ChatInput.js";import{CombinedPlaceholderDialog as c}from"../components/CombinedPlaceholderDialog.js";import d from"../components/ChatMessage.js";import"../components/Header.js";import h from"../hooks/useStateWithLocalStorage.js";import{CodicentService as g}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as u}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import{useChat as f}from"../hooks/useChat.js";import j from"../hooks/useLocalization.js";import{useTemplateVariables as b}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as x}from"../components/Page.js";import{makeStyles as C}from"../node_modules/@griffel/react/makeStyles.esm.js";import{CalendarWeekStart24Regular as w}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js";const y=C({chatContainer:{width:"100%",flex:1,maxWidth:"800px",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"}}),v=({state:C})=>{const v=y(),{t:S,tAsync:k,getLanguageInfo:F}=j(),I=i(),{messages:T,isBotTyping:_,handleSend:A,newChat:P,openChat:M}=f(C.stateMachine),H=t(null),[V,N]=s(),[L,B]=n(null),[R,O]=n(!1),[W,E]=n(!1),{service:U,currentStateName:z}=C,[D,G]=n([]),[Y,$]=n([]),[K,q]=n(!1),[J,Q]=n(),[X,Z]=h(C.context.selectedApp+"_prompts",[]),[ee,oe]=n(!1),{extractTemplateVariables:te,replaceTemplateVariables:ne,extractFilePlaceholders:re,replaceFilePlaceholders:ie,handleSelectFiles:se}=b(U.uploadFile),ae=t(!1),le=t(null);r((()=>{const e=window.history.length>1,o=Boolean(document.referrer&&document.referrer!==window.location.href);E(e||o)}),[]);r((()=>{u("SHOW_CHAT_PROMPTS")&&0===T.length&&C.service.getAppPrompts().then(Z).catch((e=>{console.error("Failed to get prompts",e)}))}),[C.service,Z,T.length]),r((()=>{setTimeout((()=>{H.current?.scrollIntoView({behavior:"smooth"})}),10)}),[T]),r((()=>{if(ae.current)return;ae.current=!0;const e=V.get("text"),o=V.get("id"),t=V.get("fid");if(e){(async()=>{const o=re(e),t=te(e);P(),o.length>0||t.length>0?($(o),G(t),q(!0),B(S(e))):B(S(e))})()}else o?M(o):t&&Q(t)}),[]),r((()=>{J&&"anonymous"===z&&le.current!==J&&(le.current=J,U.getFormById(J).then((async e=>{P();const o=F().language,t=e.prompt.replace("{{fid}}",J).replace("{{fname}}",e.name).replace("{{language}}",o);oe(!0);const n=await k(t);oe(!1),B(n),E(!1)})))}),[J,P,U,B,z,k,F,oe]),r((()=>{if(L&&!K){let e=L;Y.length>0&&(e=ie(e,Y)),D.length>0&&(e=ne(e,D)),A(e),N({},{replace:!0}),B(null),G([]),$([])}}),[L,K,A,N,ie,ne,Y,D]);const me=e=>{const o=V.get("append");o&&(e+="\n---\n"+o),A(e)};return e(x,{hideHeader:!0,hideFooter:!!J,children:[e("div",{id:"chat-container",className:v.chatContainer,style:{backgroundImage:`url(${u("CHAT_BACKGROUND_IMAGE_URL")})`},children:[W&&o("button",{onClick:()=>{W&&I(-1)},"aria-label":S("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:o(w,{style:{transform:"rotate(180deg)"}})}),o("div",{style:{marginLeft:W?40:0},children:o(a,{title:S(u("APP_CHAT_TITLE")||"Chatt"),onNewChat:J?void 0:()=>O(!0)})}),e("div",{className:v.chatMessages,children:[u("SHOW_CHAT_PROMPTS")&&X.length>0&&0===T.length&&o(d,{sender:"bot",content:S(u("CHAT_WELCOME")||"Välkommen!"),children:X.map(((t,n)=>e("div",{children:["> ",o("a",{href:"./#/chat",onClick:()=>{me(t.title+"\n---\n"+t.prompt)},children:S(t.title)}),o("br",{})]},`prompt-${n}`)))}),T.map(((t,n)=>e("div",{children:[(_&&n===T.length-1||!_&&n===T.length-2)&&o("div",{ref:H}),o(d,{sender:t.sender,content:t.content,isNew:t.isNew,showSuggestions:n===T.length-1,onSuggestionClicked:A},t.id)]},t.id))),ee&&o(d,{sender:"user",content:S("Översätter...")}),_&&o(l,{})]}),o(p,{codicent:C.context.selectedApp,disableSend:_,onSend:me,onSelectFiles:se,getImageUrl:g.getImageUrl,getFileInfo:e=>U.getFileInfo(e)})]}),o(m,{open:R,title:S("Vill du rensa chatten?"),content:S("En ny startas, men chatten kommer först sparas."),onYes:()=>{O(!1),P()},onNo:()=>O(!1)}),o(c,{open:K,templateVariables:D,filePlaceholders:Y,onTemplateVariablesChange:G,onFilePlaceholdersChange:$,onConfirm:()=>q(!1),onCancel:()=>{q(!1),B(null),G([]),$([])},uploadFile:U.uploadFile})]})};export{v as default};
1
+ import{jsxs as e,jsx as o}from"react/jsx-runtime";import{useRef as t,useState as n,useEffect as r}from"react";import{useNavigate as s,useSearchParams as i}from"react-router-dom";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import a from"../components/TextHeader.js";import l from"../components/TypingIndicator.js";import m from"../components/Prompt.js";import p from"../components/ChatInput.js";import{CombinedPlaceholderDialog as c}from"../components/CombinedPlaceholderDialog.js";import d from"../components/ChatMessage.js";import"../components/Header.js";import h from"../hooks/useStateWithLocalStorage.js";import{CodicentService as u}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as g}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import{useChat as f}from"../hooks/useChat.js";import j from"../hooks/useLocalization.js";import{useTemplateVariables as b}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as x}from"../components/Page.js";import{makeStyles as C}from"../node_modules/@griffel/react/makeStyles.esm.js";import{CalendarWeekStart24Regular as w}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js";const y=C({chatContainer:{width:"100%",flex:1,maxWidth:"800px",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"}}),v=({state:C})=>{const v=y(),{t:S,tAsync:k,getLanguageInfo:F}=j(),I=s(),{messages:T,isBotTyping:_,handleSend:A,newChat:P,openChat:M}=f(C.stateMachine),H=t(null),[V,N]=i(),[B,L]=n(null),[R,O]=n(!1),[W,E]=n(!1),{service:U,currentStateName:z}=C,[D,G]=n([]),[Y,$]=n([]),[K,q]=n(!1),[J,Q]=n(),[X,Z]=h(C.context.selectedApp+"_prompts",[]),[ee,oe]=n(!1),{extractTemplateVariables:te,replaceTemplateVariables:ne,extractFilePlaceholders:re,replaceFilePlaceholders:se,handleSelectFiles:ie}=b(U.uploadFile),ae=t(!1),le=t(null);r((()=>{const e=window.history.length>1,o=Boolean(document.referrer&&document.referrer!==window.location.href);E(e||o)}),[]);r((()=>{g("SHOW_CHAT_PROMPTS")&&0===T.length&&C.service.getAppPrompts().then(Z).catch((e=>{console.error("Failed to get prompts",e)}))}),[C.service,Z,T.length]),r((()=>{setTimeout((()=>{H.current?.scrollIntoView({behavior:"smooth"})}),10)}),[T]),r((()=>{if(ae.current)return;ae.current=!0;const e=V.get("text"),o=V.get("id"),t=V.get("fid");if(e){(async()=>{const o=re(e),t=te(e);P(),o.length>0||t.length>0?($(o),G(t),q(!0),L(S(e))):L(S(e))})()}else o?M(o):t&&Q(t)}),[]),r((()=>{J&&"anonymous"===z&&le.current!==J&&(le.current=J,U.getFormById(J).then((async e=>{P();const o=F().language,t=e.prompt.replace("{{fid}}",J).replace("{{fname}}",e.name).replace("{{language}}",o);oe(!0);const n=await k(t);oe(!1),L(n),E(!1)})))}),[J,P,U,L,z,k,F,oe]),r((()=>{if(B&&!K){let e=B;Y.length>0&&(e=se(e,Y)),D.length>0&&(e=ne(e,D)),A(e),N({},{replace:!0}),L(null),G([]),$([])}}),[B,K,A,N,se,ne,Y,D]);const me=e=>{const o=V.get("append");o&&(e+="\n---\n"+o),A(e)};return e(x,{hideHeader:!0,hideFooter:!!J,children:[e("div",{id:"chat-container",className:v.chatContainer,style:{backgroundImage:`url(${g("CHAT_BACKGROUND_IMAGE_URL")})`},children:[W&&o("button",{onClick:()=>{W&&I(-1)},"aria-label":S("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:o(w,{style:{transform:"rotate(180deg)"}})}),o("div",{style:{marginLeft:W?40:0},children:o(a,{title:S(g("APP_CHAT_TITLE")||"Chatt"),onNewChat:J?void 0:()=>O(!0)})}),e("div",{className:v.chatMessages,children:[g("SHOW_CHAT_PROMPTS")&&X.length>0&&0===T.length&&o(d,{sender:"bot",content:S(g("CHAT_WELCOME")||"Välkommen!"),children:X.map(((t,n)=>e("div",{children:["> ",o("a",{href:"./#/chat",onClick:()=>{me(t.title+"\n---\n"+t.prompt)},children:S(t.title)}),o("br",{})]},`prompt-${n}`)))}),T.map(((t,n)=>e("div",{children:[(_&&n===T.length-1||!_&&n===T.length-2)&&o("div",{ref:H}),o(d,{sender:t.sender,content:t.content,isNew:t.isNew,showSuggestions:n===T.length-1,onSuggestionClicked:A},t.id)]},t.id))),ee&&o(d,{sender:"user",content:S("Översätter...")}),_&&o(l,{})]}),o(p,{codicent:C.context.selectedApp,disableSend:_,onSend:me,onSelectFiles:ie,getImageUrl:u.getImageUrl,getFileInfo:e=>U.getFileInfo(e)})]}),o(m,{open:R,title:S("Vill du rensa chatten?"),content:S("En ny startas, men chatten kommer först sparas."),onYes:()=>{O(!1),P()},onNo:()=>O(!1)}),o(c,{open:K,templateVariables:D,filePlaceholders:Y,onTemplateVariablesChange:G,onFilePlaceholdersChange:$,onConfirm:()=>q(!1),onCancel:()=>{q(!1),L(null),G([]),$([])},uploadFile:U.uploadFile})]})};export{v as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useRef as i,useCallback as n,useEffect as r}from"react";import{useSearchParams as a,useNavigate as s}from"react-router-dom";import{getConfigValue as m}from"../config/index.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/Spinner.js";import l from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{CodicentService as p}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{getGpsLocation as c}from"../utils/device.js";import"./AppFrame.js";import"./Chat.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import d from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import g from"../hooks/useToaster.js";import"../components/FileThumbnail.js";import u from"../components/MessageInput.js";import j from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as f}from"../components/Page.js";import{makeStyles as h}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as S}from"../node_modules/@griffel/core/index.esm.js";import{tokens as v}from"../node_modules/@fluentui/tokens/lib/tokens.js";const _=h({main:{flexGrow:1,...S.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:v.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),x=({state:h})=>{const S=_(),{t:v}=d(),[x,I]=t(!1),b=i(null),P=i(null),C=i(null),[F,w]=t(null),[U,A]=t([]),{service:E}=h,[y,M]=a(),[T,k]=t(void 0),[L,O]=t(),H=g(),$=s(),B=n((o=>{for(const e of o)E.getFileInfo(e).then((o=>{A((e=>[...e,o]))}))}),[E,A]),D=n((o=>{const e=new FormData;e.append("file",o),E.uploadFile(o.name,e).then((o=>{B([o])})).catch((()=>{H.notify(v("Error"),v("Error uploading pasted image"),"")}))}),[E,B,H,v]),G=o=>{I(o)};r((()=>{const o=y.get("text"),e=y.get("url"),t=y.get("parentId");o&&(k(o),y.delete("text")),t&&(O(t),y.delete("parentId")),e&&(y.delete("url"),k(((o||"")+" "+e).trim())),M(y,{replace:!0})}),[y,M,k,E,B]);return o(f,{hideHeader:!0,children:e("div",{className:S.container,style:{backgroundImage:`url(${m("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[o(l,{title:m("APP_SAVE_TITLE")?v(m("APP_SAVE_TITLE")):v("Spara")}),o(u,{disableSend:!0,defaultText:T,onSend:o=>{o=`${o}${F?" "+F:""}${U.length>0?"\n":""}${U.map((o=>`#file:${o.id}`)).join(" ")}`,E.sendMessage(o,L).then((()=>{H.notify(v("Meddelande"),v("Meddelandet är sparat."),""),L&&(O(void 0),$(-1))}))},files:U,onFilesChange:A,isUploading:x,onHandleDefaultFiles:B,onUploadFile:()=>{b.current?.triggerUpload(),console.log("attach-file")},onUploadImage:m("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{P.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:m("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{C.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:p.getImageUrl,onLocationChange:m("COMPOSE_HIDE_LOCATION")?void 0:o=>{o?(async()=>{console.log("attach-location");const o=await c();o?(H.notify(v("Position"),v("Position tillagd."),""),w(`#gps(${o.coords.latitude},${o.coords.longitude})`)):console.log("Failed to get GPS location")})():(w(null),H.notify(v("Position"),v("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!F,onImagePasted:D}),o(j,{ref:b,onFileUploaded:B,onUploading:G,multiple:!0,codicentService:E}),o(j,{codicentService:E,ref:P,onFileUploaded:B,onUploading:G,multiple:!0,accept:"image/*"}),o(j,{codicentService:E,ref:C,onFileUploaded:B,onUploading:G,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{x as Compose,x as default};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useRef as i,useCallback as n,useEffect as r}from"react";import{useSearchParams as a,useNavigate as s}from"react-router-dom";import{getConfigValue as m}from"../config/index.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import l from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{CodicentService as p}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{getGpsLocation as c}from"../utils/device.js";import"./AppFrame.js";import"./Chat.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import d from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import g from"../hooks/useToaster.js";import"../components/FileThumbnail.js";import u from"../components/MessageInput.js";import j from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as f}from"../components/Page.js";import{makeStyles as h}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as S}from"../node_modules/@griffel/core/index.esm.js";import{tokens as v}from"../node_modules/@fluentui/tokens/lib/tokens.js";const _=h({main:{flexGrow:1,...S.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:v.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),x=({state:h})=>{const S=_(),{t:v}=d(),[x,I]=t(!1),b=i(null),C=i(null),P=i(null),[F,w]=t(null),[U,A]=t([]),{service:E}=h,[y,M]=a(),[T,k]=t(void 0),[L,O]=t(),H=g(),$=s(),B=n((o=>{for(const e of o)E.getFileInfo(e).then((o=>{A((e=>[...e,o]))}))}),[E,A]),D=n((o=>{const e=new FormData;e.append("file",o),E.uploadFile(o.name,e).then((o=>{B([o])})).catch((()=>{H.notify(v("Error"),v("Error uploading pasted image"),"")}))}),[E,B,H,v]),G=o=>{I(o)};r((()=>{const o=y.get("text"),e=y.get("url"),t=y.get("parentId");o&&(k(o),y.delete("text")),t&&(O(t),y.delete("parentId")),e&&(y.delete("url"),k(((o||"")+" "+e).trim())),M(y,{replace:!0})}),[y,M,k,E,B]);return o(f,{hideHeader:!0,children:e("div",{className:S.container,style:{backgroundImage:`url(${m("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[o(l,{title:m("APP_SAVE_TITLE")?v(m("APP_SAVE_TITLE")):v("Spara")}),o(u,{disableSend:!0,defaultText:T,onSend:o=>{o=`${o}${F?" "+F:""}${U.length>0?"\n":""}${U.map((o=>`#file:${o.id}`)).join(" ")}`,E.sendMessage(o,L).then((()=>{H.notify(v("Meddelande"),v("Meddelandet är sparat."),""),L&&(O(void 0),$(-1))}))},files:U,onFilesChange:A,isUploading:x,onHandleDefaultFiles:B,onUploadFile:()=>{b.current?.triggerUpload(),console.log("attach-file")},onUploadImage:m("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{C.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:m("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{P.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:p.getImageUrl,onLocationChange:m("COMPOSE_HIDE_LOCATION")?void 0:o=>{o?(async()=>{console.log("attach-location");const o=await c();o?(H.notify(v("Position"),v("Position tillagd."),""),w(`#gps(${o.coords.latitude},${o.coords.longitude})`)):console.log("Failed to get GPS location")})():(w(null),H.notify(v("Position"),v("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!F,onImagePasted:D}),o(j,{ref:b,onFileUploaded:B,onUploading:G,multiple:!0,codicentService:E}),o(j,{codicentService:E,ref:C,onFileUploaded:B,onUploading:G,multiple:!0,accept:"image/*"}),o(j,{codicentService:E,ref:P,onFileUploaded:B,onUploading:G,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{x as Compose,x as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useRef as n,useCallback as r,useEffect as i,useMemo as a}from"react";import{CodicentService as s}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/Spinner.js";import m from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import p from"../components/VoiceIcon.js";import l from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as c}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import d from"../components/MessageInput.js";import u from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as g}from"../components/Page.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import j from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import f from"../hooks/useToaster.js";import{useSearchParams as h}from"react-router-dom";import{l as v}from"../node_modules/lodash/lodash.js";import{makeStyles as k}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as S}from"../node_modules/@griffel/core/index.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{MessageBar as b}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js";import{MessageBarBody as w}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js";const y=k({main:{flexGrow:1,...S.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:x.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"}}),_=({state:k,voice:S})=>{const x=y(),{t:_}=j(),[I,C]=t(!1),U=n(null),M=n(null),A=n(null),[B]=t(null),[F,T]=t([]),{service:E}=k,[N,P]=h(),[O,$]=t(""),[L,R]=t(void 0),V=f(),[H,z]=t(void 0),[D,G]=t("info"),W=r((e=>{for(const o of e)E.getFileInfo(o).then((e=>{T((o=>[...o,e]))}))}),[E,T]),J=r((e=>{const o=new FormData;o.append("file",e),E.uploadFile(e.name,o).then((e=>{W([e])})).catch((()=>{V.notify(_("Error"),_("Error uploading pasted image"),"")}))}),[E,W,V,_]),K=e=>{C(e)};i((()=>{const e=N.get("text"),o=N.get("url");e&&($(e),N.delete("text")),o&&(N.delete("url"),$(((e||"")+" "+o).trim())),P(N,{replace:!0})}),[N,P,$,E,W]);const X=r((async e=>{if(!e||e.length<10)return;z(_("Analyserar...")),G("info");const o=await E.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(o){const e=new l(o.content);try{const o=JSON.parse(e.content);console.log("json",o);let t=0;for(const e in o)"true"===o[e]&&t++;z(_(4===t?"Allt är med":o.shortSummary||"Något saknas")),G(4===t?"success":"warning")}catch{z("Error: "+e.content),G("error")}}}),[E]),Y=a((()=>v.debounce(X,2e3)),[X]);return i((()=>()=>{Y.cancel()}),[Y]),e(g,{hideHeader:!0,children:o("div",{className:x.container,style:{backgroundImage:`url(${c("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[S&&c("SHOW_VOICE_BUTTON")&&e("div",{className:x.voiceIcon,children:e(p,{voice:S})}),e(m,{title:c("APP_SAVE_TITLE")?_(c("APP_SAVE_TITLE")):_("Spara")}),e(d,{defaultText:O,onSend:e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${k.context.name||k.context.user?.email||k.context.nickname||"-"}`}${B?" "+B:""}${F.length>0?"\n":""}${F.map((e=>`#file:${e.id}`)).join(" ")}`,E.sendMessage(e).then((()=>{V.notify(_("Meddelande"),_("Meddelandet är sparat."),"")}))},files:F,onFilesChange:T,isUploading:I,onUploadImage:()=>{M.current?.triggerUpload()},onUploadCamera:()=>{A.current?.triggerUpload()},getImageUrl:s.getImageUrl,hasLocation:!!B,disableSend:!0,rows:9,placeholder:_("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==L&&(R(e),e&&e.trim().length>0?Y(e):(z(void 0),Y.cancel()))},onImagePasted:J}),H&&o("div",{className:x.review,children:[e("h3",{children:_("Analys")}),e(b,{intent:D,layout:"multiline",children:e(w,{children:_(H)})})]}),e(u,{ref:U,onFileUploaded:W,onUploading:K,multiple:!0,codicentService:E}),e(u,{codicentService:E,ref:M,onFileUploaded:W,onUploading:K,multiple:!0,accept:"image/*"}),e(u,{codicentService:E,ref:A,onFileUploaded:W,onUploading:K,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{_ as CrmPage,_ as default};
1
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useRef as n,useCallback as r,useEffect as i,useMemo as a}from"react";import{CodicentService as s}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import m from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import p from"../components/VoiceIcon.js";import l from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as c}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import d from"../components/MessageInput.js";import u from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as g}from"../components/Page.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import j from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import f from"../hooks/useToaster.js";import{useSearchParams as h}from"react-router-dom";import{l as v}from"../node_modules/lodash/lodash.js";import{makeStyles as k}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as S}from"../node_modules/@griffel/core/index.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{MessageBar as b}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js";import{MessageBarBody as w}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js";const y=k({main:{flexGrow:1,...S.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:x.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"}}),_=({state:k,voice:S})=>{const x=y(),{t:_}=j(),[I,C]=t(!1),U=n(null),B=n(null),M=n(null),[A]=t(null),[F,T]=t([]),{service:E}=k,[N,P]=h(),[O,$]=t(""),[L,R]=t(void 0),V=f(),[H,z]=t(void 0),[D,G]=t("info"),W=r((e=>{for(const o of e)E.getFileInfo(o).then((e=>{T((o=>[...o,e]))}))}),[E,T]),J=r((e=>{const o=new FormData;o.append("file",e),E.uploadFile(e.name,o).then((e=>{W([e])})).catch((()=>{V.notify(_("Error"),_("Error uploading pasted image"),"")}))}),[E,W,V,_]),K=e=>{C(e)};i((()=>{const e=N.get("text"),o=N.get("url");e&&($(e),N.delete("text")),o&&(N.delete("url"),$(((e||"")+" "+o).trim())),P(N,{replace:!0})}),[N,P,$,E,W]);const X=r((async e=>{if(!e||e.length<10)return;z(_("Analyserar...")),G("info");const o=await E.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(o){const e=new l(o.content);try{const o=JSON.parse(e.content);console.log("json",o);let t=0;for(const e in o)"true"===o[e]&&t++;z(_(4===t?"Allt är med":o.shortSummary||"Något saknas")),G(4===t?"success":"warning")}catch{z("Error: "+e.content),G("error")}}}),[E]),Y=a((()=>v.debounce(X,2e3)),[X]);return i((()=>()=>{Y.cancel()}),[Y]),e(g,{hideHeader:!0,children:o("div",{className:x.container,style:{backgroundImage:`url(${c("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[S&&c("SHOW_VOICE_BUTTON")&&e("div",{className:x.voiceIcon,children:e(p,{voice:S})}),e(m,{title:c("APP_SAVE_TITLE")?_(c("APP_SAVE_TITLE")):_("Spara")}),e(d,{defaultText:O,onSend:e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${k.context.name||k.context.user?.email||k.context.nickname||"-"}`}${A?" "+A:""}${F.length>0?"\n":""}${F.map((e=>`#file:${e.id}`)).join(" ")}`,E.sendMessage(e).then((()=>{V.notify(_("Meddelande"),_("Meddelandet är sparat."),"")}))},files:F,onFilesChange:T,isUploading:I,onUploadImage:()=>{B.current?.triggerUpload()},onUploadCamera:()=>{M.current?.triggerUpload()},getImageUrl:s.getImageUrl,hasLocation:!!A,disableSend:!0,rows:9,placeholder:_("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==L&&(R(e),e&&e.trim().length>0?Y(e):(z(void 0),Y.cancel()))},onImagePasted:J}),H&&o("div",{className:x.review,children:[e("h3",{children:_("Analys")}),e(b,{intent:D,layout:"multiline",children:e(w,{children:_(H)})})]}),e(u,{ref:U,onFileUploaded:W,onUploading:K,multiple:!0,codicentService:E}),e(u,{codicentService:E,ref:B,onFileUploaded:W,onUploading:K,multiple:!0,accept:"image/*"}),e(u,{codicentService:E,ref:M,onFileUploaded:W,onUploading:K,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{_ as CrmPage,_ as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import r from"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import{Title as i}from"../components/Title.js";import{Text as n}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{useState as s,useEffect as m}from"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as a}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./Sales.js";import"../stores/chatStore.js";import c from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import l from"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as d}from"../components/Page.js";import{useSearchParams as j,useNavigate as h}from"react-router-dom";import{makeStyles as u}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Button as f}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";const g=u({container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},instructionParagraph:{fontWeight:"bold",marginBottom:"1em"},orderedList:{marginLeft:"20px",marginBottom:"1em",fontSize:"1.3em"}}),k=()=>{const{t:u,tAsync:k}=c(),[b]=j(),_=h(),v=b.get("id"),C=g(),[S,y]=s(""),[M,x]=s(!1);return m((()=>{(async()=>{const o=p("FORM_ACCEPT_MARKDOWN");if(o){x(!0);const t=await k(o);x(!1),y(t.replace("{{code}}",a(v||"")))}})()}),[k,v]),o(d,{hideFooter:!0,hideHeader:!0,children:o("div",{className:C.container,style:{backgroundImage:`url(${p("FORM_BACKGROUND_IMAGE_URL")})`},children:t(l,{children:[M&&o(n,{children:u("Översätter...")}),p("FORM_ACCEPT_MARKDOWN")&&S&&!M&&o(r,{content:S}),!p("FORM_ACCEPT_MARKDOWN")&&t(e,{children:[o(i,{children:u("Din kod för formuläret")}),o("p",{className:C.instructionParagraph,children:u("Instruktioner:")}),t("ol",{className:C.orderedList,children:[o("li",{children:u("Skriv ner eller kopiera den kod som visas nedan, du behöver den för att identifiera din session.")}),o("li",{children:u("Klicka på 'Starta' för att komma igång med chatten.")})]}),o(n,{size:500,children:u("Din kod är (skriv ner den):")}),o(n,{size:600,style:{userSelect:"all"},children:a(v||"")})]}),v&&o(f,{appearance:"primary",onClick:()=>_(`/chat?fid=${v}`),children:u("Starta")})]})})})};export{k as default};
1
+ import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import r from"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Title as i}from"../components/Title.js";import{Text as n}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{useState as s,useEffect as m}from"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as a}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./Sales.js";import"../stores/chatStore.js";import c from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import l from"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as d}from"../components/Page.js";import{useSearchParams as j,useNavigate as u}from"react-router-dom";import{makeStyles as h}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Button as f}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";const g=h({container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},instructionParagraph:{fontWeight:"bold",marginBottom:"1em"},orderedList:{marginLeft:"20px",marginBottom:"1em",fontSize:"1.3em"}}),k=()=>{const{t:h,tAsync:k}=c(),[b]=j(),_=u(),C=b.get("id"),v=g(),[S,y]=s(""),[M,x]=s(!1);return m((()=>{(async()=>{const o=p("FORM_ACCEPT_MARKDOWN");if(o){x(!0);const t=await k(o);x(!1),y(t.replace("{{code}}",a(C||"")))}})()}),[k,C]),o(d,{hideFooter:!0,hideHeader:!0,children:o("div",{className:v.container,style:{backgroundImage:`url(${p("FORM_BACKGROUND_IMAGE_URL")})`},children:t(l,{children:[M&&o(n,{children:h("Översätter...")}),p("FORM_ACCEPT_MARKDOWN")&&S&&!M&&o(r,{content:S}),!p("FORM_ACCEPT_MARKDOWN")&&t(e,{children:[o(i,{children:h("Din kod för formuläret")}),o("p",{className:v.instructionParagraph,children:h("Instruktioner:")}),t("ol",{className:v.orderedList,children:[o("li",{children:h("Skriv ner eller kopiera den kod som visas nedan, du behöver den för att identifiera din session.")}),o("li",{children:h("Klicka på 'Starta' för att komma igång med chatten.")})]}),o(n,{size:500,children:h("Din kod är (skriv ner den):")}),o(n,{size:600,style:{userSelect:"all"},children:a(C||"")})]}),C&&o(f,{appearance:"primary",onClick:()=>_(`/chat?fid=${C}`),children:h("Starta")})]})})})};export{k as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as i}from"../components/Button.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import{Label as s}from"../components/Label.js";import{Input as m}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import l from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as c}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import d from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import u from"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as h}from"../components/Page.js";import{makeStyles as j}from"../node_modules/@griffel/react/makeStyles.esm.js";import{useId as k}from"../node_modules/@fluentui/react-utilities/lib/hooks/useId.js";import{Dropdown as g}from"../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js";import{Option as f}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const v=j({inputAndButton:{display:"flex",gap:"10px"},input:{minWidth:"90%"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},generatedLinkTitle:{marginBottom:"0.5em",fontWeight:"bold"},orderedList:{marginLeft:"20px",marginBottom:"1em"},instructionParagraph:{marginBottom:"1em",fontWeight:"bold"}}),b=({state:j})=>{const b=v(),{service:w}=j,{t:x}=d(),[S,y]=l(j.context.selectedApp+"_forms",[]),[$,C]=n(),[_,L]=n(),[A,I]=n(!1),[T,D]=n(),N=k("form-dropdown");r((()=>{w.getForms().then((o=>{o.sort(((o,e)=>o.name.localeCompare(e.name))),y(o)}))}),[w,x,y]);const B=void 0!==navigator.share;return o(h,{children:o("div",{className:b.container,style:{backgroundImage:`url(${p("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:e(u,{children:[o(a,{children:x("Skapa länk till formulär")}),o("p",{className:b.instructionParagraph,children:x("Instruktioner")}),e("ol",{className:b.orderedList,children:[o("li",{children:x("Välj ett formulär från rullgardinsmenyn nedan. Detta formulär kommer att användas för den genererade länken.")}),o("li",{children:x("Klicka på 'Skapa länk' för att generera en unik länk. Länken visar var aktiv och kan användas för att svara på formuläret.")}),o("li",{children:x("När länken visas, kan du klicka på kopiera-ikonen för att kopiera länken till ditt urklipp.")}),o("li",{children:x("Om din enhet stödjer det, kan du även använda dela-knappen för att dela länken direkt.")}),o("li",{children:x("Kom ihåg att spara (skriva ner) koden")})]}),o("label",{id:N,className:b.instructionParagraph,children:x("Välj formulär")}),o(g,{"aria-labelledby":N,placeholder:"-",onOptionSelect:(o,e)=>D(e.optionValue),children:S.map((o=>e(f,{value:o.name,text:`${o.title} (${o.name})`,children:[`${o.title} (${o.name})`," "]},o.name)))}),o(i,{appearance:"primary",disabled:!T,onClick:()=>{const o=S.find((o=>o.name===T));o?.url?w.sendMessage(`#ss-link #${T}`).then((e=>{const t=new Date(Date.now()+2592e5);w.generateApiToken(t).then((t=>{const n=o.url.includes("?")?"&":"?",r=`${o.url}${n}token=${t}`;C(r);const i=c(e);L(i)}))})):w.sendMessage(`#ss-link #${T}`).then((o=>{const e=`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}${window.location.pathname}`;C(`${e}#/formaccept?id=${o}`);const t=c(o);L(t)}))},children:x("Skapa länk")}),$&&e(t,{children:[o("p",{className:b.generatedLinkTitle,children:x("Här är din genererade länk (du kan kopiera eller dela den):")}),o("div",{className:b.inputAndButton,children:o(m,{className:b.input,value:$,readOnly:!0,onFocus:o=>o.target.select()})}),o("br",{}),e("div",{className:b.inputAndButton,children:[o(i,{appearance:"primary",title:x("Kopiera länk"),icon:"CopyRegular",onClick:()=>{$&&(navigator.clipboard.writeText($),I(!0),setTimeout((()=>{I(!1),C(void 0)}),2e3))},children:x("Kopiera")}),B&&o(i,{appearance:"primary",title:x("Dela länk"),icon:"ShareRegular",onClick:()=>{$&&(navigator.share({url:$}),setTimeout((()=>{C(void 0)}),2e3))},children:x("Dela")})]}),A&&o(s,{children:x("Länk kopierad!")})]})]})})})};export{b as default};
1
+ import{jsx as o,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as i}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import{Label as s}from"../components/Label.js";import{Input as m}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import l from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as c}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import d from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import u from"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as j}from"../components/Page.js";import{makeStyles as h}from"../node_modules/@griffel/react/makeStyles.esm.js";import{useId as k}from"../node_modules/@fluentui/react-utilities/lib/hooks/useId.js";import{Dropdown as g}from"../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js";import{Option as f}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const v=h({inputAndButton:{display:"flex",gap:"10px"},input:{minWidth:"90%"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},generatedLinkTitle:{marginBottom:"0.5em",fontWeight:"bold"},orderedList:{marginLeft:"20px",marginBottom:"1em"},instructionParagraph:{marginBottom:"1em",fontWeight:"bold"}}),b=({state:h})=>{const b=v(),{service:w}=h,{t:x}=d(),[S,y]=l(h.context.selectedApp+"_forms",[]),[C,$]=n(),[_,L]=n(),[A,I]=n(!1),[T,B]=n(),D=k("form-dropdown");r((()=>{w.getForms().then((o=>{o.sort(((o,e)=>o.name.localeCompare(e.name))),y(o)}))}),[w,x,y]);const N=void 0!==navigator.share;return o(j,{children:o("div",{className:b.container,style:{backgroundImage:`url(${p("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:e(u,{children:[o(a,{children:x("Skapa länk till formulär")}),o("p",{className:b.instructionParagraph,children:x("Instruktioner")}),e("ol",{className:b.orderedList,children:[o("li",{children:x("Välj ett formulär från rullgardinsmenyn nedan. Detta formulär kommer att användas för den genererade länken.")}),o("li",{children:x("Klicka på 'Skapa länk' för att generera en unik länk. Länken visar var aktiv och kan användas för att svara på formuläret.")}),o("li",{children:x("När länken visas, kan du klicka på kopiera-ikonen för att kopiera länken till ditt urklipp.")}),o("li",{children:x("Om din enhet stödjer det, kan du även använda dela-knappen för att dela länken direkt.")}),o("li",{children:x("Kom ihåg att spara (skriva ner) koden")})]}),o("label",{id:D,className:b.instructionParagraph,children:x("Välj formulär")}),o(g,{"aria-labelledby":D,placeholder:"-",onOptionSelect:(o,e)=>B(e.optionValue),children:S.map((o=>e(f,{value:o.name,text:`${o.title} (${o.name})`,children:[`${o.title} (${o.name})`," "]},o.name)))}),o(i,{appearance:"primary",disabled:!T,onClick:()=>{const o=S.find((o=>o.name===T));o?.url?w.sendMessage(`#ss-link #${T}`).then((e=>{const t=new Date(Date.now()+2592e5);w.generateApiToken(t).then((t=>{const n=o.url.includes("?")?"&":"?",r=`${o.url}${n}token=${t}`;$(r);const i=c(e);L(i)}))})):w.sendMessage(`#ss-link #${T}`).then((o=>{const e=`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}${window.location.pathname}`;$(`${e}#/formaccept?id=${o}`);const t=c(o);L(t)}))},children:x("Skapa länk")}),C&&e(t,{children:[o("p",{className:b.generatedLinkTitle,children:x("Här är din genererade länk (du kan kopiera eller dela den):")}),o("div",{className:b.inputAndButton,children:o(m,{className:b.input,value:C,readOnly:!0,onFocus:o=>o.target.select()})}),o("br",{}),e("div",{className:b.inputAndButton,children:[o(i,{appearance:"primary",title:x("Kopiera länk"),icon:"CopyRegular",onClick:()=>{C&&(navigator.clipboard.writeText(C),I(!0),setTimeout((()=>{I(!1),$(void 0)}),2e3))},children:x("Kopiera")}),N&&o(i,{appearance:"primary",title:x("Dela länk"),icon:"ShareRegular",onClick:()=>{C&&(navigator.share({url:C}),setTimeout((()=>{$(void 0)}),2e3))},children:x("Dela")})]}),A&&o(s,{children:x("Länk kopierad!")})]})]})})})};export{b as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as e,useEffect as s}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import{Text as i}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import n from"../components/HtmlView.js";import"../components/Footer.js";import{Page as r}from"../components/Page.js";import{Spinner as m}from"../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js";const p=({state:p})=>{const c=window.location.hash.match(/^#\/html\/(.+)$/),a=c?decodeURIComponent(c[1]):"",[l,d]=e(),[h,j]=e(!1),[u,f]=e(),{service:g}=p;return s((()=>{a&&g?(j(!0),f(void 0),g.getMessagesFast([a],void 0,1).then((o=>{if(0===o.length)return void f(`No messages found with tag: ${a}`);const t=o[0].content;d((o=>{const t=o.indexOf("```html");if(-1!==t){const e=o.indexOf("```",t+7);return-1===e?o.substring(t+7):o.substring(t+7,e)}const e=[/<!DOCTYPE[^>]*>[\s\S]*?<\/html>/i,/<html[^>]*>[\s\S]*?<\/html>/i,/<div[^>]*>[\s\S]*?<\/div>/i,/<body[^>]*>[\s\S]*?<\/body>/i,/<article[^>]*>[\s\S]*?<\/article>/i,/<section[^>]*>[\s\S]*?<\/section>/i];for(const t of e){const e=o.match(t);if(e)return e[0]}if(o.includes("<html")||o.includes("<!DOCTYPE")||o.includes("<div")||o.includes("<p>")||o.includes("<span")){const t=["<!DOCTYPE","<html","<div","<body","<article","<section"];let e=-1;for(const s of t){const t=o.indexOf(s);-1!==t&&(-1===e||t<e)&&(e=t)}if(-1!==e){let t=o.substring(e);const s=["</html>","</body>","</div>"];for(const o of s){const e=t.lastIndexOf(o);if(-1!==e){t=t.substring(0,e+o.length);break}}return t}return o}return o})(t))})).catch((o=>{console.error("Error fetching message:",o),f(`Error fetching message: ${o.message||"Unknown error"}`)})).finally((()=>{j(!1)}))):f("No tag provided or service unavailable")}),[a,g]),h?o(r,{hideHeader:!0,hideFooter:!0,children:o("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:o(m,{})})}):u?o(r,{hideHeader:!0,hideFooter:!0,children:t("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh",flexDirection:"column",gap:"20px"},children:[o(i,{children:u}),t(i,{children:["Tag: ",a]})]})}):l?o(n,{html:l,onDismiss:()=>window.history.back()}):o(r,{hideHeader:!0,hideFooter:!0,children:o("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:o(i,{children:"No HTML content available"})})})};export{p as default};
1
+ import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as e,useEffect as s}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Text as i}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import n from"../components/HtmlView.js";import"../components/Footer.js";import{Page as r}from"../components/Page.js";import{Spinner as m}from"../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js";const p=({state:p})=>{const c=window.location.hash.match(/^#\/html\/(.+)$/),a=c?decodeURIComponent(c[1]):"",[l,d]=e(),[h,j]=e(!1),[u,f]=e(),{service:g}=p;return s((()=>{a&&g?(j(!0),f(void 0),g.getMessagesFast([a],void 0,1).then((o=>{if(0===o.length)return void f(`No messages found with tag: ${a}`);const t=o[0].content;d((o=>{const t=o.indexOf("```html");if(-1!==t){const e=o.indexOf("```",t+7);return-1===e?o.substring(t+7):o.substring(t+7,e)}const e=[/<!DOCTYPE[^>]*>[\s\S]*?<\/html>/i,/<html[^>]*>[\s\S]*?<\/html>/i,/<div[^>]*>[\s\S]*?<\/div>/i,/<body[^>]*>[\s\S]*?<\/body>/i,/<article[^>]*>[\s\S]*?<\/article>/i,/<section[^>]*>[\s\S]*?<\/section>/i];for(const t of e){const e=o.match(t);if(e)return e[0]}if(o.includes("<html")||o.includes("<!DOCTYPE")||o.includes("<div")||o.includes("<p>")||o.includes("<span")){const t=["<!DOCTYPE","<html","<div","<body","<article","<section"];let e=-1;for(const s of t){const t=o.indexOf(s);-1!==t&&(-1===e||t<e)&&(e=t)}if(-1!==e){let t=o.substring(e);const s=["</html>","</body>","</div>"];for(const o of s){const e=t.lastIndexOf(o);if(-1!==e){t=t.substring(0,e+o.length);break}}return t}return o}return o})(t))})).catch((o=>{console.error("Error fetching message:",o),f(`Error fetching message: ${o.message||"Unknown error"}`)})).finally((()=>{j(!1)}))):f("No tag provided or service unavailable")}),[a,g]),h?o(r,{hideHeader:!0,hideFooter:!0,children:o("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:o(m,{})})}):u?o(r,{hideHeader:!0,hideFooter:!0,children:t("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh",flexDirection:"column",gap:"20px"},children:[o(i,{children:u}),t(i,{children:["Tag: ",a]})]})}):l?o(n,{html:l,onDismiss:()=>window.history.back()}):o(r,{hideHeader:!0,hideFooter:!0,children:o("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:o(i,{children:"No HTML content available"})})})};export{p as default};
@@ -1 +1 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import t from"react";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as i}from"../components/Button.js";import{Title as r}from"../components/Title.js";import{Text as s}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as n}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import m from"../hooks/useLocalization.js";import a from"../hooks/useAppStyles.js";import{makeStyles as p}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Image as c}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{mergeClasses as l}from"../node_modules/@griffel/core/mergeClasses.esm.js";const j=p({container:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",backgroundPosition:"calc(50% - 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",gap:"20px",padding:"0 20px"},button:{minWidth:"15rem"},image:{maxHeight:"200px"}}),g=({state:p})=>{const{loginWithRedirect:g}=p.auth,d=j(),u=a(),{t:_}=m(),I=n("LOGIN_REDIRECT");return t.useEffect((()=>{I&&g()}),[I]),o("div",I?{className:d.container,style:{backgroundImage:`url(${n("HOME_BACKGROUND_IMAGE_URL")})`},children:[e(r,{children:`${_("Välkommen till")} ${n("INDEX_TITLE")}!`}),e(s,{size:400,children:_("Omdirigerar till inloggning...")})]}:{className:d.container,style:{backgroundImage:`url(${n("HOME_BACKGROUND_IMAGE_URL")})`},children:[n("LOGIN_LOGO_URL")&&e(c,{src:n("LOGIN_LOGO_URL"),alt:n("INDEX_TITLE"),className:d.image}),!n("LOGIN_HIDE_WELCOME")&&e(r,{children:`${_("Välkommen till")} ${n("INDEX_TITLE")}!`}),e(s,{size:400,children:_(n("LOGIN_WELCOME_TEXT")||"Logga in, eller registrera ett konto, för att komma igång.")}),e(i,{className:l(u.button,d.button),size:"large",appearance:"primary",onClick:()=>g(),children:_("Logga in")}),!n("HIDE_REGISTER_BUTTON")&&e(i,{className:l(u.button,d.button),size:"large",appearance:"primary",onClick:()=>g({authorizationParams:{screen_hint:"signup"}}),children:_("Registrera")})]})};export{g as default};
1
+ import{jsxs as o,jsx as t}from"react/jsx-runtime";import e from"react";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as i}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as r}from"../components/Title.js";import{Text as s}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as n}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import m from"../hooks/useLocalization.js";import p from"../hooks/useAppStyles.js";import{makeStyles as a}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Image as c}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{mergeClasses as l}from"../node_modules/@griffel/core/mergeClasses.esm.js";const j=a({container:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",backgroundPosition:"calc(50% - 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",gap:"20px",padding:"0 20px"},button:{minWidth:"15rem"},image:{maxHeight:"200px"}}),g=({state:a})=>{const{loginWithRedirect:g}=a.auth,d=j(),u=p(),{t:_}=m(),I=n("LOGIN_REDIRECT");return e.useEffect((()=>{I&&g()}),[I]),o("div",I?{className:d.container,style:{backgroundImage:`url(${n("HOME_BACKGROUND_IMAGE_URL")})`},children:[t(r,{children:`${_("Välkommen till")} ${n("INDEX_TITLE")}!`}),t(s,{size:400,children:_("Omdirigerar till inloggning...")})]}:{className:d.container,style:{backgroundImage:`url(${n("HOME_BACKGROUND_IMAGE_URL")})`},children:[n("LOGIN_LOGO_URL")&&t(c,{src:n("LOGIN_LOGO_URL"),alt:n("INDEX_TITLE"),className:d.image}),!n("LOGIN_HIDE_WELCOME")&&t(r,{children:`${_("Välkommen till")} ${n("INDEX_TITLE")}!`}),t(s,{size:400,children:_(n("LOGIN_WELCOME_TEXT")||"Logga in, eller registrera ett konto, för att komma igång.")}),t(i,{className:l(u.button,d.button),size:"large",appearance:"primary",onClick:()=>g(),children:_("Logga in")}),!n("HIDE_REGISTER_BUTTON")&&t(i,{className:l(u.button,d.button),size:"large",appearance:"primary",onClick:()=>g({authorizationParams:{screen_hint:"signup"}}),children:_("Registrera")})]})};export{g as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useState as n,useCallback as i,useEffect as r}from"react";import"../components/Markdown.js";import{Textarea as s}from"../components/Textarea.js";import{Button as a}from"../components/Button.js";import{Text as l}from"../components/Text.js";import"../components/Spinner.js";import{Input as c}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import{Dialog as m,DialogTitle as p,DialogContent as d,DialogActions as h}from"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as g}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"../stores/chatStore.js";import u from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as f}from"../components/Page.js";import{makeStyles as j}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{shorthands as C}from"../node_modules/@griffel/core/index.esm.js";import{Image as _}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{mergeClasses as k}from"../node_modules/@griffel/core/mergeClasses.esm.js";const b=j({root:{display:"flex",flexDirection:"column",height:"100%",touchAction:"pan-y"},header:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:g("APP_HEADER_COLOR")||x.colorBrandBackground,color:x.colorNeutralForegroundOnBrand,...C.padding("10px","20px")},logo:{maxWidth:"100px",maxHeight:"50px",height:"auto",cursor:"pointer"},inputContainer:{display:"flex",justifyContent:"flex-end",alignItems:"center",maxWidth:"300px",width:"200px",paddingLeft:"10px"},dashboard:{display:"flex",justifyContent:"space-around",width:"100%",marginTop:"20px"},statBox:{...C.padding("10px"),...C.borderRadius("12px"),minWidth:"50px",textAlign:"center",color:"white"},buttonContainer:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"center",gap:"30px",alignItems:"center",...C.padding("20px")},actionButton:{width:"14rem",minWidth:"15rem",height:"3rem"},textAreaContainer:{display:"flex",flexDirection:"column",gap:"10px"},opened:{backgroundColor:"#1a5614"},not_home:{backgroundColor:"#f44336"},sales:{backgroundColor:"#2196F3"},call_back:{backgroundColor:"#FF9800"}}),v={opened:"#1a5614",not_home:"#f44336",sales:"#2196F3",call_back:"#FF9800"},w=()=>{const j=b(),{t:x}=u(),[C,w]=n(""),[y,I]=n(),[A,F]=n({opened:0,not_home:0,sales:0,call_back:0}),[$,P]=n([]),[N,S]=n(!1),[B,M]=n(""),[D,H]=n(""),[O,T]=n(""),[L,z]=n(!1),[E,G]=n(!1),R=i((()=>new Promise((e=>{navigator.geolocation?navigator.geolocation.getCurrentPosition((o=>{const t=`#position (${o.coords.latitude},${o.coords.longitude})`;e(t)})):e(void 0)}))),[I]);r((()=>{window.Codicent.getDataMessages({codicent:g("APP_NAME"),tags:["sales_code"]}).then((e=>{e=e.filter((e=>"1"!==e.data.inactive)),P(e)})).catch(console.error),R()}),[]);const U=async()=>{if(!C)return;const e=["not_home","sales","call_back","opened"],o=new Date;o.setHours(0,0,0,0);const t={...A};for(const n of e){const e=await window.Codicent.getMessages({search:`#${n} #sales_code_${C}`,afterTimestamp:o,length:1e4});t[n]=e.filter((e=>e.content.includes(`#${n} `)&&e.content.includes(`#sales_code_${C}`))).length}F(t)},W=async(e,o="")=>{const t=await R();console.log("Got position",t);const n=`@${g("APP_NAME")} #sales_code_${C} #${e} ${t||""} ${o.trim().length>0?"#comment ":""}${o}`.trim();await window.Codicent.postMessage({message:n}),U()};return e(f,{hideHeader:!0,children:o("div",{className:j.root,children:[o("div",{className:j.header,children:[e(_,{src:D||g("APP_ICON_URL")||"https://via.placeholder.com/100",className:j.logo,onClick:()=>O&&G(!0)}),e("div",{className:j.inputContainer,children:e(c,{value:C,onChange:e=>w(e.target.value),onBlur:()=>{const e=$.find((e=>e.data.code===C));if(e)H(`https://codicent.com/app/GetImage?fileId=${e.fileId}&width=100`),T(e.data.link),z(!0),U();else{const e=$.find((e=>e.data.code2===C.toUpperCase()));e?(H(`https://codicent.com/app/GetImage?fileId=${e.fileIds&&e.fileIds.length>1?e.fileIds[1]:e.fileId}&width=100`),T(e.data.link2),z(!0),U()):(z(!1),alert(x("Fel försäljningskod!")))}},placeholder:x("Fyll i försäljningskod"),maxLength:16,size:"large"})})]}),L&&o(t,{children:[e("div",{className:j.dashboard,children:Object.keys(A).map((o=>{return e("div",{className:(t=o,k(j.statBox,j[t])),children:e(l,{weight:"bold",size:400,children:A[o]})},o);var t}))}),e("div",{className:j.buttonContainer,children:Object.entries(v).map((([o,t])=>e(a,{size:"large",className:j.actionButton,style:{backgroundColor:t,color:"white"},onClick:()=>{W(o),"opened"===o&&S(!0),"sales"===o&&G(!0)},children:o.charAt(0).toUpperCase()+o.slice(1).replace("_"," ")},o)))}),o(m,{open:N,children:[e(p,{children:x("Skriv in avvikelse")}),e(d,{children:e("div",{className:j.textAreaContainer,children:e(s,{value:B,onChange:e=>M(e.target.value),placeholder:x("Skriv din text här..."),rows:4,size:"large"})})}),e(h,{children:e(a,{appearance:"primary",onClick:()=>{W("anomaly",`\n${B}`),S(!1),M("")},children:x("Spara")})})]}),o(m,{open:E,children:[e(p,{children:x("Godkännande")}),e(d,{children:x("Är kunden över 23 år?")}),o(h,{children:[e(a,{appearance:"primary",onClick:()=>window.open(O,"_blank"),children:x("OK")}),e(a,{appearance:"secondary",onClick:()=>G(!1),children:x("Avbryt")})]})]})]})]})})};export{w as Sales,w as default};
1
+ import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useState as n,useCallback as i,useEffect as r}from"react";import"../components/Markdown.js";import{Textarea as s}from"../components/Textarea.js";import{Button as a}from"../components/Button.js";import"../components/CompoundButton.js";import{Text as l}from"../components/Text.js";import"../components/Spinner.js";import{Input as c}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import{Dialog as m,DialogTitle as p,DialogContent as d,DialogActions as h}from"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as g}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"../stores/chatStore.js";import u from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as j}from"../components/Page.js";import{makeStyles as f}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{shorthands as C}from"../node_modules/@griffel/core/index.esm.js";import{Image as _}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{mergeClasses as k}from"../node_modules/@griffel/core/mergeClasses.esm.js";const b=f({root:{display:"flex",flexDirection:"column",height:"100%",touchAction:"pan-y"},header:{display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:g("APP_HEADER_COLOR")||x.colorBrandBackground,color:x.colorNeutralForegroundOnBrand,...C.padding("10px","20px")},logo:{maxWidth:"100px",maxHeight:"50px",height:"auto",cursor:"pointer"},inputContainer:{display:"flex",justifyContent:"flex-end",alignItems:"center",maxWidth:"300px",width:"200px",paddingLeft:"10px"},dashboard:{display:"flex",justifyContent:"space-around",width:"100%",marginTop:"20px"},statBox:{...C.padding("10px"),...C.borderRadius("12px"),minWidth:"50px",textAlign:"center",color:"white"},buttonContainer:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"center",gap:"30px",alignItems:"center",...C.padding("20px")},actionButton:{width:"14rem",minWidth:"15rem",height:"3rem"},textAreaContainer:{display:"flex",flexDirection:"column",gap:"10px"},opened:{backgroundColor:"#1a5614"},not_home:{backgroundColor:"#f44336"},sales:{backgroundColor:"#2196F3"},call_back:{backgroundColor:"#FF9800"}}),v={opened:"#1a5614",not_home:"#f44336",sales:"#2196F3",call_back:"#FF9800"},w=()=>{const f=b(),{t:x}=u(),[C,w]=n(""),[y,I]=n(),[A,F]=n({opened:0,not_home:0,sales:0,call_back:0}),[$,P]=n([]),[N,B]=n(!1),[S,M]=n(""),[D,H]=n(""),[O,T]=n(""),[L,z]=n(!1),[E,G]=n(!1),R=i((()=>new Promise((e=>{navigator.geolocation?navigator.geolocation.getCurrentPosition((o=>{const t=`#position (${o.coords.latitude},${o.coords.longitude})`;e(t)})):e(void 0)}))),[I]);r((()=>{window.Codicent.getDataMessages({codicent:g("APP_NAME"),tags:["sales_code"]}).then((e=>{e=e.filter((e=>"1"!==e.data.inactive)),P(e)})).catch(console.error),R()}),[]);const U=async()=>{if(!C)return;const e=["not_home","sales","call_back","opened"],o=new Date;o.setHours(0,0,0,0);const t={...A};for(const n of e){const e=await window.Codicent.getMessages({search:`#${n} #sales_code_${C}`,afterTimestamp:o,length:1e4});t[n]=e.filter((e=>e.content.includes(`#${n} `)&&e.content.includes(`#sales_code_${C}`))).length}F(t)},W=async(e,o="")=>{const t=await R();console.log("Got position",t);const n=`@${g("APP_NAME")} #sales_code_${C} #${e} ${t||""} ${o.trim().length>0?"#comment ":""}${o}`.trim();await window.Codicent.postMessage({message:n}),U()};return e(j,{hideHeader:!0,children:o("div",{className:f.root,children:[o("div",{className:f.header,children:[e(_,{src:D||g("APP_ICON_URL")||"https://via.placeholder.com/100",className:f.logo,onClick:()=>O&&G(!0)}),e("div",{className:f.inputContainer,children:e(c,{value:C,onChange:e=>w(e.target.value),onBlur:()=>{const e=$.find((e=>e.data.code===C));if(e)H(`https://codicent.com/app/GetImage?fileId=${e.fileId}&width=100`),T(e.data.link),z(!0),U();else{const e=$.find((e=>e.data.code2===C.toUpperCase()));e?(H(`https://codicent.com/app/GetImage?fileId=${e.fileIds&&e.fileIds.length>1?e.fileIds[1]:e.fileId}&width=100`),T(e.data.link2),z(!0),U()):(z(!1),alert(x("Fel försäljningskod!")))}},placeholder:x("Fyll i försäljningskod"),maxLength:16,size:"large"})})]}),L&&o(t,{children:[e("div",{className:f.dashboard,children:Object.keys(A).map((o=>{return e("div",{className:(t=o,k(f.statBox,f[t])),children:e(l,{weight:"bold",size:400,children:A[o]})},o);var t}))}),e("div",{className:f.buttonContainer,children:Object.entries(v).map((([o,t])=>e(a,{size:"large",className:f.actionButton,style:{backgroundColor:t,color:"white"},onClick:()=>{W(o),"opened"===o&&B(!0),"sales"===o&&G(!0)},children:o.charAt(0).toUpperCase()+o.slice(1).replace("_"," ")},o)))}),o(m,{open:N,children:[e(p,{children:x("Skriv in avvikelse")}),e(d,{children:e("div",{className:f.textAreaContainer,children:e(s,{value:S,onChange:e=>M(e.target.value),placeholder:x("Skriv din text här..."),rows:4,size:"large"})})}),e(h,{children:e(a,{appearance:"primary",onClick:()=>{W("anomaly",`\n${S}`),B(!1),M("")},children:x("Spara")})})]}),o(m,{open:E,children:[e(p,{children:x("Godkännande")}),e(d,{children:x("Är kunden över 23 år?")}),o(h,{children:[e(a,{appearance:"primary",onClick:()=>window.open(O,"_blank"),children:x("OK")}),e(a,{appearance:"secondary",onClick:()=>G(!1),children:x("Avbryt")})]})]})]})]})})};export{w as Sales,w as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useRef as t,useState as n,useEffect as i}from"react";import r from"../components/Markdown.js";import"../components/Textarea.js";import{Button as s}from"../components/Button.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import"../components/TextHeader.js";import m from"../components/TypingIndicator.js";import"../components/Dialog.js";import p from"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import l from"../hooks/useStateWithLocalStorage.js";import{CodicentService as c}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as d}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import{useChat as g}from"../hooks/useChat.js";import u from"../hooks/useLocalization.js";import{useTemplateVariables as f}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as h}from"../components/Page.js";import{makeStyles as j}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";const A=j({chatContainer:{width:"100%",flex:1,maxWidth:"800px",height:"100%",backgroundColor:"#ffffff",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",overflowY:"auto",marginBottom:"16px"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"},inputArea:{display:"flex",flexDirection:"column",justifyContent:"start",alignItems:"center",height:"100%",padding:"0 16px"},promptButtons:{display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"start",alignItems:"center",gap:"8px",marginTop:"8px",marginLeft:"6px",marginRight:"2px",marginBottom:"12px"},answerArea:{width:"100%",marginLeft:"12px",marginRight:"12px",backgroundColor:d("CHAT_BOT_BACKGROUND_COLOR")||x.colorBrandBackground2,padding:"12px",borderRadius:"16px",marginBottom:"24px"},title:{marginLeft:"12px",padding:"16px"}}),C=({state:j})=>{const x=A(),{t:C}=u(),{messages:w,isBotTyping:T,handleSend:_,newChat:b}=g(j.stateMachine),v=t(null),{service:k}=j,[N,y]=l(j.context.selectedApp+"_searchprompts",["Leta information","Vad kan jag göra?","Sök supportställe"]),[S,I]=n(),[O,B]=n(null),[F,M]=n(!1);f(k.uploadFile);i((()=>{T&&M(!0)}),[T]),i((()=>{b();const o=d("APP_CONFIG"),e=d("APP_BUTTONS");e?o.apps[e].questions&&y(o.apps[e].questions.map((o=>C(o)))):console.error("APP_BUTTONS is not defined in the configuration."),void 0!==d("ANONYMOUS_CODICENT")&&void 0!==d("ANONYMOUS_TOKEN")?(k.codicent=d("ANONYMOUS_CODICENT"),k.setToken(d("ANONYMOUS_TOKEN"))):console.error("Anonymous Codicent or Token is not defined in the configuration.")}),[b,k,y,C]),i((()=>{setTimeout((()=>{v.current?.scrollIntoView({behavior:"smooth"})}),10)}),[w]);const P=o=>{I(o),_(o)};return i((()=>{const o=w.filter((o=>"bot"===o.sender));let e=o.length>0?o[o.length-1]:null;B({...e,createdAt:new Date}),e&&M(!1)}),[w]),o(h,{hideHeader:!0,hideFooter:!0,children:e("div",{id:"search-container",className:x.chatContainer,style:{backgroundImage:`url(${d("CHAT_BACKGROUND_IMAGE_URL")})`},children:[o("div",{className:x.title,children:o(a,{children:C(d("APP_SEARCH_TITLE")||"Frågor")})}),e("div",{className:x.inputArea,children:[o(p,{noMemory:!0,defaultText:S,codicent:j.context.selectedApp,disableSend:T,onSend:P,rows:3,getImageUrl:c.getImageUrl,getFileInfo:o=>k.getFileInfo(o),selectAll:!0}),o("div",{className:x.promptButtons,children:N.length>0&&N.map(((e,t)=>o(s,{onClick:()=>P(e),size:"large",appearance:"primary",shape:"circular",children:e},`search-prompt-${t}`)))}),F&&o(m,{}),O&&!T&&e("div",{className:x.answerArea,children:[o("div",{ref:v}),o(r,{content:O.content})]})]})]})})};export{C as default};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useRef as t,useState as n,useEffect as i}from"react";import r from"../components/Markdown.js";import"../components/Textarea.js";import{Button as s}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import"../components/TextHeader.js";import m from"../components/TypingIndicator.js";import"../components/Dialog.js";import p from"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import l from"../hooks/useStateWithLocalStorage.js";import{CodicentService as c}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as d}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import{useChat as g}from"../hooks/useChat.js";import u from"../hooks/useLocalization.js";import{useTemplateVariables as f}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as h}from"../components/Page.js";import{makeStyles as j}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";const C=j({chatContainer:{width:"100%",flex:1,maxWidth:"800px",height:"100%",backgroundColor:"#ffffff",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",overflowY:"auto",marginBottom:"16px"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"},inputArea:{display:"flex",flexDirection:"column",justifyContent:"start",alignItems:"center",height:"100%",padding:"0 16px"},promptButtons:{display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"start",alignItems:"center",gap:"8px",marginTop:"8px",marginLeft:"6px",marginRight:"2px",marginBottom:"12px"},answerArea:{width:"100%",marginLeft:"12px",marginRight:"12px",backgroundColor:d("CHAT_BOT_BACKGROUND_COLOR")||x.colorBrandBackground2,padding:"12px",borderRadius:"16px",marginBottom:"24px"},title:{marginLeft:"12px",padding:"16px"}}),A=({state:j})=>{const x=C(),{t:A}=u(),{messages:w,isBotTyping:T,handleSend:_,newChat:b}=g(j.stateMachine),v=t(null),{service:k}=j,[N,y]=l(j.context.selectedApp+"_searchprompts",["Leta information","Vad kan jag göra?","Sök supportställe"]),[S,I]=n(),[O,B]=n(null),[F,M]=n(!1);f(k.uploadFile);i((()=>{T&&M(!0)}),[T]),i((()=>{b();const o=d("APP_CONFIG"),e=d("APP_BUTTONS");e?o.apps[e].questions&&y(o.apps[e].questions.map((o=>A(o)))):console.error("APP_BUTTONS is not defined in the configuration."),void 0!==d("ANONYMOUS_CODICENT")&&void 0!==d("ANONYMOUS_TOKEN")?(k.codicent=d("ANONYMOUS_CODICENT"),k.setToken(d("ANONYMOUS_TOKEN"))):console.error("Anonymous Codicent or Token is not defined in the configuration.")}),[b,k,y,A]),i((()=>{setTimeout((()=>{v.current?.scrollIntoView({behavior:"smooth"})}),10)}),[w]);const P=o=>{I(o),_(o)};return i((()=>{const o=w.filter((o=>"bot"===o.sender));let e=o.length>0?o[o.length-1]:null;B({...e,createdAt:new Date}),e&&M(!1)}),[w]),o(h,{hideHeader:!0,hideFooter:!0,children:e("div",{id:"search-container",className:x.chatContainer,style:{backgroundImage:`url(${d("CHAT_BACKGROUND_IMAGE_URL")})`},children:[o("div",{className:x.title,children:o(a,{children:A(d("APP_SEARCH_TITLE")||"Frågor")})}),e("div",{className:x.inputArea,children:[o(p,{noMemory:!0,defaultText:S,codicent:j.context.selectedApp,disableSend:T,onSend:P,rows:3,getImageUrl:c.getImageUrl,getFileInfo:o=>k.getFileInfo(o),selectAll:!0}),o("div",{className:x.promptButtons,children:N.length>0&&N.map(((e,t)=>o(s,{onClick:()=>P(e),size:"large",appearance:"primary",shape:"circular",children:e},`search-prompt-${t}`)))}),F&&o(m,{}),O&&!T&&e("div",{className:x.answerArea,children:[o("div",{ref:v}),o(r,{content:O.content})]})]})]})})};export{A as default};
@@ -1 +1 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import{useState as t,useRef as i,useMemo as n,useCallback as r,useEffect as s}from"react";import{useSearchParams as a,useNavigate as p}from"react-router-dom";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import{Text as l}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import{CombinedPlaceholderDialog as m}from"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import c from"../hooks/useLocalization.js";import{useTemplateVariables as d}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import h from"../components/MessageInput.js";import"../components/UploadFile.js";import u from"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import{makeStyles as g}from"../node_modules/@griffel/react/makeStyles.esm.js";const f=g({container:{position:"relative",height:"100vh",width:"100vw",overflow:"auto"},flashOverlay:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"transparent",transition:"background-color 0.2s ease-out",pointerEvents:"none",zIndex:3},video:{position:"absolute",top:0,left:0,width:"100%",height:"100%",objectFit:"cover",zIndex:1},canvas:{display:"none"},bottomControls:{position:"fixed",bottom:"100px",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",zIndex:2,boxSizing:"border-box"},controlContainer:{width:"100%",maxWidth:"600px",position:"relative"},sendButton:{position:"absolute",right:"10px",bottom:"10px",width:"50px",height:"50px",borderRadius:"50%",backgroundColor:"#0078d4",color:"white",border:"none",cursor:"pointer",display:"flex",justifyContent:"center",alignItems:"center"},topControls:{position:"fixed",top:"20px",width:"100%",display:"flex",justifyContent:"space-between",alignItems:"center",zIndex:2,padding:"0 10px",boxSizing:"border-box"},backButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},input:{padding:"5px",width:"200px",fontSize:"larger",backgroundColor:"#fff8"},bottomButtons:{position:"fixed",bottom:"0px",width:"100%",display:"flex",justifyContent:"space-around",alignItems:"center",zIndex:2,boxSizing:"border-box"},iconButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},centerText:{position:"fixed",top:"30%",left:"50%",transform:"translate(-50%, -50%)",zIndex:2,textAlign:"center"}}),w=({state:g,audio:w})=>{const j=f(),{service:b}=g,[x,v]=t(null),[y,C]=t(!0),k=i(null),I=i(null),[F]=a(),S=F.get("extra"),T=F.get("template"),[z,V]=t(""),[$]=t("log"),B=n((()=>new Audio("/audio/camera.mp3")),[]),[E,M]=t(!1),N=p(),{t:P}=c(),{extractTemplateVariables:_}=d(b.uploadFile),[A,H]=t(_(T||"")),[D,L]=t(A.length>0),[O,R]=t(""),[U,W]=t(100),K=r((()=>A.map((o=>`#${o.value}`)).join(" ")),[A]);s((()=>{const o=K();R(`${S?" #"+S:""}${o.length>0?" "+o:""}`.trim())}),[A,S,K]),s((()=>{if(window.visualViewport){const o=()=>{const o=window.visualViewport?window.innerHeight-window.visualViewport.height:0;W(o>150?o+20:100)};return window.visualViewport.addEventListener("resize",o),o(),()=>{window.visualViewport&&window.visualViewport.removeEventListener("resize",o)}}}),[]);const q=async o=>{try{const e=new FormData;e.append("file",o);const t=await b.uploadFile(o.name,e),i=K(),n=`${$?" #"+$:""}${S?" #"+S:""}${i.length>0?" "+i:""} #photo #file:${t}`;await b.sendMessage(n)}catch(o){alert(P("Failed to send image:")+" "+o)}};return s((()=>()=>{x&&x.getTracks().forEach((o=>o.stop()))}),[x]),o("div",{className:j.container,children:[e("div",{className:j.flashOverlay,style:{backgroundColor:E?"#ffffff":"transparent"}}),e("video",{ref:k,autoPlay:!0,playsInline:!0,className:j.video}),e("canvas",{ref:I,width:"640",height:"480",className:j.canvas}),!x&&e(l,{weight:"semibold",size:400,className:j.centerText,children:P("Klicka på Byt kamera för att starta!")}),e("div",{className:j.bottomControls,style:{bottom:`${U}px`},children:e("div",{className:j.controlContainer,children:e(h,{defaultText:z,onSend:async()=>{if(""===z.trim())return;const o=K(),e=`${$?" #"+$:""}${S?" #"+S:""}${o.length>0?" "+o:""} ${z}`;try{await b.sendMessage(e),V("")}catch(o){alert(P("Failed to send message: ")+o)}},rows:4,onChange:V,disableSend:!0})})}),e("div",{className:j.bottomButtons,children:e(u,{audio:w,onHome:()=>N("/"),onTakePhoto:()=>{const o=I.current,e=k.current;if(o&&e){o.width=e.videoWidth,o.height=e.videoHeight;const t=o.getContext("2d");t&&(B.play(),M(!0),setTimeout((()=>M(!1)),100),t.drawImage(e,0,0,o.width,o.height),o.toBlob((o=>{if(o){const e=new File([o],"snapshot.png",{type:"image/png"});q(e)}})))}},onSwichCamera:()=>{C((o=>!o)),(async()=>{x&&x.getTracks().forEach((o=>o.stop()));const o={video:{facingMode:y?"user":"environment"},audio:!1};try{const e=await navigator.mediaDevices.getUserMedia(o);v(e),k.current&&(k.current.srcObject=e,k.current.play())}catch(o){console.error("Error accessing the camera: ",o),o instanceof Error?alert(P("Error accessing the camera:")+" "+o.message):alert(P("Error accessing the camera"))}})()},tag:O})}),e(m,{open:D,templateVariables:A,filePlaceholders:[],onTemplateVariablesChange:H,onFilePlaceholdersChange:()=>{},onConfirm:()=>L(!1),onCancel:()=>{L(!1),N(-1)},uploadFile:b.uploadFile})]})};export{w as default};
1
+ import{jsxs as o,jsx as e}from"react/jsx-runtime";import{useState as t,useRef as i,useMemo as n,useCallback as r,useEffect as s}from"react";import{useSearchParams as a,useNavigate as p}from"react-router-dom";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Text as l}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import{CombinedPlaceholderDialog as m}from"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../stores/chatStore.js";import c from"../hooks/useLocalization.js";import{useTemplateVariables as d}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/FileThumbnail.js";import h from"../components/MessageInput.js";import"../components/UploadFile.js";import u from"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import{makeStyles as g}from"../node_modules/@griffel/react/makeStyles.esm.js";const f=g({container:{position:"relative",height:"100vh",width:"100vw",overflow:"auto"},flashOverlay:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"transparent",transition:"background-color 0.2s ease-out",pointerEvents:"none",zIndex:3},video:{position:"absolute",top:0,left:0,width:"100%",height:"100%",objectFit:"cover",zIndex:1},canvas:{display:"none"},bottomControls:{position:"fixed",bottom:"100px",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",zIndex:2,boxSizing:"border-box"},controlContainer:{width:"100%",maxWidth:"600px",position:"relative"},sendButton:{position:"absolute",right:"10px",bottom:"10px",width:"50px",height:"50px",borderRadius:"50%",backgroundColor:"#0078d4",color:"white",border:"none",cursor:"pointer",display:"flex",justifyContent:"center",alignItems:"center"},topControls:{position:"fixed",top:"20px",width:"100%",display:"flex",justifyContent:"space-between",alignItems:"center",zIndex:2,padding:"0 10px",boxSizing:"border-box"},backButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},input:{padding:"5px",width:"200px",fontSize:"larger",backgroundColor:"#fff8"},bottomButtons:{position:"fixed",bottom:"0px",width:"100%",display:"flex",justifyContent:"space-around",alignItems:"center",zIndex:2,boxSizing:"border-box"},iconButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},centerText:{position:"fixed",top:"30%",left:"50%",transform:"translate(-50%, -50%)",zIndex:2,textAlign:"center"}}),w=({state:g,audio:w})=>{const j=f(),{service:b}=g,[x,v]=t(null),[y,C]=t(!0),k=i(null),I=i(null),[F]=a(),S=F.get("extra"),T=F.get("template"),[z,V]=t(""),[$]=t("log"),B=n((()=>new Audio("/audio/camera.mp3")),[]),[E,M]=t(!1),N=p(),{t:P}=c(),{extractTemplateVariables:_}=d(b.uploadFile),[A,H]=t(_(T||"")),[D,L]=t(A.length>0),[O,R]=t(""),[U,W]=t(100),K=r((()=>A.map((o=>`#${o.value}`)).join(" ")),[A]);s((()=>{const o=K();R(`${S?" #"+S:""}${o.length>0?" "+o:""}`.trim())}),[A,S,K]),s((()=>{if(window.visualViewport){const o=()=>{const o=window.visualViewport?window.innerHeight-window.visualViewport.height:0;W(o>150?o+20:100)};return window.visualViewport.addEventListener("resize",o),o(),()=>{window.visualViewport&&window.visualViewport.removeEventListener("resize",o)}}}),[]);const q=async o=>{try{const e=new FormData;e.append("file",o);const t=await b.uploadFile(o.name,e),i=K(),n=`${$?" #"+$:""}${S?" #"+S:""}${i.length>0?" "+i:""} #photo #file:${t}`;await b.sendMessage(n)}catch(o){alert(P("Failed to send image:")+" "+o)}};return s((()=>()=>{x&&x.getTracks().forEach((o=>o.stop()))}),[x]),o("div",{className:j.container,children:[e("div",{className:j.flashOverlay,style:{backgroundColor:E?"#ffffff":"transparent"}}),e("video",{ref:k,autoPlay:!0,playsInline:!0,className:j.video}),e("canvas",{ref:I,width:"640",height:"480",className:j.canvas}),!x&&e(l,{weight:"semibold",size:400,className:j.centerText,children:P("Klicka på Byt kamera för att starta!")}),e("div",{className:j.bottomControls,style:{bottom:`${U}px`},children:e("div",{className:j.controlContainer,children:e(h,{defaultText:z,onSend:async()=>{if(""===z.trim())return;const o=K(),e=`${$?" #"+$:""}${S?" #"+S:""}${o.length>0?" "+o:""} ${z}`;try{await b.sendMessage(e),V("")}catch(o){alert(P("Failed to send message: ")+o)}},rows:4,onChange:V,disableSend:!0})})}),e("div",{className:j.bottomButtons,children:e(u,{audio:w,onHome:()=>N("/"),onTakePhoto:()=>{const o=I.current,e=k.current;if(o&&e){o.width=e.videoWidth,o.height=e.videoHeight;const t=o.getContext("2d");t&&(B.play(),M(!0),setTimeout((()=>M(!1)),100),t.drawImage(e,0,0,o.width,o.height),o.toBlob((o=>{if(o){const e=new File([o],"snapshot.png",{type:"image/png"});q(e)}})))}},onSwichCamera:()=>{C((o=>!o)),(async()=>{x&&x.getTracks().forEach((o=>o.stop()));const o={video:{facingMode:y?"user":"environment"},audio:!1};try{const e=await navigator.mediaDevices.getUserMedia(o);v(e),k.current&&(k.current.srcObject=e,k.current.play())}catch(o){console.error("Error accessing the camera: ",o),o instanceof Error?alert(P("Error accessing the camera:")+" "+o.message):alert(P("Error accessing the camera"))}})()},tag:O})}),e(m,{open:D,templateVariables:A,filePlaceholders:[],onTemplateVariablesChange:H,onFilePlaceholdersChange:()=>{},onConfirm:()=>L(!1),onCancel:()=>{L(!1),N(-1)},uploadFile:b.uploadFile})]})};export{w as default};