codicent-app-sdk 0.3.35 → 0.3.36

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.
@@ -1 +1 @@
1
- {"version":3,"file":"CrmPage.d.ts","sourceRoot":"","sources":["../../../src/pages/CrmPage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAA+B,MAAM,UAAU,CAAC;AAuDzE,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,CA8QzD,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"CrmPage.d.ts","sourceRoot":"","sources":["../../../src/pages/CrmPage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAA+B,MAAM,UAAU,CAAC;AAuDzE,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAoRzD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/Spinner.js");var r=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var o=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var a=require("../config/index.js");require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("../components/FileThumbnail.js");var i=require("../components/MessageInput.js"),s=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js");var l=require("../components/AiInput.js");require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var u=require("../components/Page.js");require("./AppFrame.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("../stores/chatStore.js");var c=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var d=require("../hooks/useToaster.js"),p=require("react-router-dom"),m=require("../node_modules/lodash/lodash.js"),g=require("../node_modules/@griffel/react/makeStyles.esm.js"),j=require("../node_modules/@griffel/core/index.esm.js"),f=require("../node_modules/@fluentui/tokens/lib/tokens.js");const h=g.makeStyles({main:{flexGrow:1,...j.shorthands.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:f.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),v=({state:g})=>{const j=h(),{t:f}=c.default(),[v,q]=t.useState(!1),x=t.useRef(null),k=t.useRef(null),S=t.useRef(null),[b]=t.useState(null),[C,$]=t.useState([]),{service:w}=g,[y,T]=p.useSearchParams(),[_,E]=t.useState(""),[M,U]=t.useState(void 0),[I,P]=t.useState(void 0),[F,V]=t.useState(void 0),[A,K]=t.useState(void 0),R=d.default(),O=[f("Kundinteraktion"),f("Försäljningsaktivitet"),f("Offertskapande"),f("Att-göra-uppgift")],L=[f("Kund 1"),f("Kund 2"),f("Kund 3")],B=[f("Kontakt 1"),f("Kontakt 2"),f("Kontakt 3")],N=e=>`Vilken typ av CRM-aktivitet är det? Välj från ${O[0]}, ${O[1]}, ${O[2]} eller ${O[3]}. Svara bara med en av dessa, ingen annan text.\nTEXT:\n\n${e}`,D=e=>`Vilken kund är det? Välj från ${L[0]}, ${L[1]} eller ${L[2]}. Svara med en av dessa om de matchar, annars extrahera nytt kundnamn från texten, ingen annan text.\nTEXT:\n\n${e}`,G=e=>`Vilken kontakt är det? Svara med kontaktnamn från texten om det går, ingen annan text.\nTEXT:\n\n${e}`,H=t.useCallback((e=>{for(const t of e)w.getFileInfo(t).then((e=>{$((t=>[...t,e]))}))}),[w,$]),z=t.useCallback((e=>{const t=new FormData;t.append("file",e),w.uploadFile(e.name,t).then((e=>{H([e])})).catch((()=>{R.notify(f("Error"),f("Error uploading pasted image"),"")}))}),[w,H,R,f]),X=e=>{q(e)};t.useEffect((()=>{const e=y.get("text"),t=y.get("url");e&&(E(e),y.delete("text")),t&&(y.delete("url"),E(((e||"")+" "+t).trim())),T(y,{replace:!0})}),[y,T,E,w,H]);const Y=t.useCallback((async e=>{if(!e)return;const t=await w.chat(N(e));if(t){const e=new o.default(t.content);console.log("typeMsg",e.content),U(e.content)}const n=await w.chat(D(e));if(n){const e=new o.default(n.content);console.log("customerMsg",e.content),P(e.content)}const r=await w.chat(G(e));if(r){const e=new o.default(r.content);console.log("contactMsg",e.content),V(e.content)}}),[w]),J=t.useMemo((()=>m.lodashExports.debounce(Y,1e3)),[Y]);return t.useEffect((()=>()=>{J.cancel()}),[J]),e.jsx(u.Page,{hideHeader:!0,children:e.jsxs("div",{className:j.container,style:{backgroundImage:`url(${a.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[e.jsx(r.default,{title:a.getConfigValue("APP_SAVE_TITLE")?f(a.getConfigValue("APP_SAVE_TITLE")):f("Spara")}),e.jsx(i.default,{defaultText:_,onSend:e=>{if(M===O[3])e+=`\nTYPE: ${M||""}\nCUSTOMER: ${I||""}\nCONTACT: ${F||""}`,e=`${e+=`\nSALESPERSON: ${g.context.name||g.context.user?.email||g.context.nickname||"-"}`}${b?" "+b:""}${M===O[3]?" #todo ":""}${C.map((e=>`#file:${e.id}`)).join(" ")}`;else{const t=JSON.stringify({type:M,customer:I,contact:F,message:e.replace("#log ",""),salesperson:g.context.name||g.context.user?.email||g.context.nickname||"-"});e=`${e="#crm #data\n"+t}${b?" "+b:""}${C.length>0?"\n":""}${C.map((e=>`#file:${e.id}`)).join(" ")}`}w.sendMessage(e).then((()=>{R.notify(f("Meddelande"),f("Meddelandet är sparat."),"")}))},files:C,onFilesChange:$,isUploading:v,onUploadImage:()=>{k.current?.triggerUpload()},onUploadCamera:()=>{S.current?.triggerUpload()},getImageUrl:n.CodicentService.getImageUrl,hasLocation:!!b,disableSend:!0,rows:9,placeholder:f("Beskriv CRM-aktivitet här..."),onChange:e=>{K(e),J(e)},onImagePasted:z}),e.jsx(l.default,{title:f("Typ"),id:"crm-type",options:O,placeholder:f("Typ av aktivitet..."),value:M,onChangeValue:U,prompt:N(A||""),service:w}),e.jsx(l.default,{title:f("Kund"),id:"crm-customer",options:L,placeholder:f("Kund..."),value:I,onChangeValue:P,prompt:D(A||""),service:w}),e.jsx(l.default,{title:f("Kontakt"),id:"crm-contact",options:B,placeholder:f("Kontaktperson..."),value:F,onChangeValue:V,prompt:G(A||""),service:w}),e.jsx(s.default,{ref:x,onFileUploaded:H,onUploading:X,multiple:!0,codicentService:w}),e.jsx(s.default,{codicentService:w,ref:k,onFileUploaded:H,onUploading:X,multiple:!0,accept:"image/*"}),e.jsx(s.default,{codicentService:w,ref:S,onFileUploaded:H,onUploading:X,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.CrmPage=v,exports.default=v;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),o=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/Spinner.js");var t=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var i=require("../config/index.js");require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("../components/FileThumbnail.js");var n=require("../components/MessageInput.js"),s=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var a=require("../components/Page.js");require("./AppFrame.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("../stores/chatStore.js");var l=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var u=require("../hooks/useToaster.js"),c=require("react-router-dom"),d=require("../node_modules/@griffel/react/makeStyles.esm.js"),p=require("../node_modules/@griffel/core/index.esm.js"),m=require("../node_modules/@fluentui/tokens/lib/tokens.js");const g=d.makeStyles({main:{flexGrow:1,...p.shorthands.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:m.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),j=({state:d})=>{const p=g(),{t:m}=l.default(),[j,q]=r.useState(!1),h=r.useRef(null),f=r.useRef(null),v=r.useRef(null),[x]=r.useState(null),[S,b]=r.useState([]),{service:C}=d,[k,_]=c.useSearchParams(),[w,I]=r.useState("");r.useState(void 0),r.useState(void 0),r.useState(void 0);const[U,y]=r.useState(void 0),F=u.default(),P=r.useCallback((e=>{for(const r of e)C.getFileInfo(r).then((e=>{b((r=>[...r,e]))}))}),[C,b]),M=r.useCallback((e=>{const r=new FormData;r.append("file",e),C.uploadFile(e.name,r).then((e=>{P([e])})).catch((()=>{F.notify(m("Error"),m("Error uploading pasted image"),"")}))}),[C,P,F,m]),A=e=>{q(e)};r.useEffect((()=>{const e=k.get("text"),r=k.get("url");e&&(I(e),k.delete("text")),r&&(k.delete("url"),I(((e||"")+" "+r).trim())),_(k,{replace:!0})}),[k,_,I,C,P]);return e.jsx(a.Page,{hideHeader:!0,children:e.jsxs("div",{className:p.container,style:{backgroundImage:`url(${i.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[e.jsx(t.default,{title:i.getConfigValue("APP_SAVE_TITLE")?m(i.getConfigValue("APP_SAVE_TITLE")):m("Spara")}),e.jsx(n.default,{defaultText:w,onSend:e=>{e=`${e="#crm\n"+e.replace("#log ","")}${x?" "+x:""}${S.length>0?"\n":""}${S.map((e=>`#file:${e.id}`)).join(" ")}`,C.sendMessage(e).then((()=>{F.notify(m("Meddelande"),m("Meddelandet är sparat."),"")}))},files:S,onFilesChange:b,isUploading:j,onUploadImage:()=>{f.current?.triggerUpload()},onUploadCamera:()=>{v.current?.triggerUpload()},getImageUrl:o.CodicentService.getImageUrl,hasLocation:!!x,disableSend:!0,rows:9,placeholder:m("Beskriv CRM-aktivitet här..."),onChange:e=>{y(e)},onImagePasted:M}),e.jsx(s.default,{ref:h,onFileUploaded:P,onUploading:A,multiple:!0,codicentService:C}),e.jsx(s.default,{codicentService:C,ref:f,onFileUploaded:P,onUploading:A,multiple:!0,accept:"image/*"}),e.jsx(s.default,{codicentService:C,ref:v,onFileUploaded:P,onUploading:A,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.CrmPage=j,exports.default=j;
2
2
  //# sourceMappingURL=CrmPage.js.map
@@ -1,2 +1,2 @@
1
- import{commonjsGlobal as t,getDefaultExportFromCjs as r}from"../../../_virtual/_commonjsHelpers.js";import"../../style-to-object/cjs/index.js";import"./utilities.js";import{__exports as e}from"../../../_virtual/index4.js";import{__exports as i}from"../../../_virtual/utilities.js";var o=(t&&t.__importDefault||function(t){return t&&t.__esModule?t:{default:t}})(e),s=i;function a(t,r){var e={};return t&&"string"==typeof t?((0,o.default)(t,(function(t,i){t&&i&&(e[(0,s.camelCase)(t,r)]=i)})),e):e}a.default=a;var u=r(a);export{u as default};
1
+ import{getDefaultExportFromCjs as t,commonjsGlobal as r}from"../../../_virtual/_commonjsHelpers.js";import"../../style-to-object/cjs/index.js";import"./utilities.js";import{__exports as e}from"../../../_virtual/index4.js";import{__exports as i}from"../../../_virtual/utilities.js";var o=(r&&r.__importDefault||function(t){return t&&t.__esModule?t:{default:t}})(e),s=i;function a(t,r){var e={};return t&&"string"==typeof t?((0,o.default)(t,(function(t,i){t&&i&&(e[(0,s.camelCase)(t,r)]=i)})),e):e}a.default=a;var u=t(a);export{u as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrmPage.d.ts","sourceRoot":"","sources":["../../../src/pages/CrmPage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAA+B,MAAM,UAAU,CAAC;AAuDzE,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,CA8QzD,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"CrmPage.d.ts","sourceRoot":"","sources":["../../../src/pages/CrmPage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAA+B,MAAM,UAAU,CAAC;AAuDzE,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAoRzD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,2 +1,2 @@
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"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as l}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 c from"../components/MessageInput.js";import d from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import g from"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as u}from"../components/Page.js";import"./AppFrame.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 f from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import j 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 x}from"../node_modules/@griffel/core/index.esm.js";import{tokens as S}from"../node_modules/@fluentui/tokens/lib/tokens.js";const $=k({main:{flexGrow:1,...x.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:S.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),b=({state:k})=>{const x=$(),{t:S}=f(),[b,w]=t(!1),T=n(null),y=n(null),C=n(null),[_]=t(null),[U,I]=t([]),{service:M}=k,[E,F]=h(),[A,K]=t(""),[P,V]=t(void 0),[R,L]=t(void 0),[O,B]=t(void 0),[N,D]=t(void 0),G=j(),H=[S("Kundinteraktion"),S("Försäljningsaktivitet"),S("Offertskapande"),S("Att-göra-uppgift")],z=[S("Kund 1"),S("Kund 2"),S("Kund 3")],X=[S("Kontakt 1"),S("Kontakt 2"),S("Kontakt 3")],Y=e=>`Vilken typ av CRM-aktivitet är det? Välj från ${H[0]}, ${H[1]}, ${H[2]} eller ${H[3]}. Svara bara med en av dessa, ingen annan text.\nTEXT:\n\n${e}`,J=e=>`Vilken kund är det? Välj från ${z[0]}, ${z[1]} eller ${z[2]}. Svara med en av dessa om de matchar, annars extrahera nytt kundnamn från texten, ingen annan text.\nTEXT:\n\n${e}`,W=e=>`Vilken kontakt är det? Svara med kontaktnamn från texten om det går, ingen annan text.\nTEXT:\n\n${e}`,q=r((e=>{for(const o of e)M.getFileInfo(o).then((e=>{I((o=>[...o,e]))}))}),[M,I]),Q=r((e=>{const o=new FormData;o.append("file",e),M.uploadFile(e.name,o).then((e=>{q([e])})).catch((()=>{G.notify(S("Error"),S("Error uploading pasted image"),"")}))}),[M,q,G,S]),Z=e=>{w(e)};i((()=>{const e=E.get("text"),o=E.get("url");e&&(K(e),E.delete("text")),o&&(E.delete("url"),K(((e||"")+" "+o).trim())),F(E,{replace:!0})}),[E,F,K,M,q]);const ee=r((async e=>{if(!e)return;const o=await M.chat(Y(e));if(o){const e=new p(o.content);console.log("typeMsg",e.content),V(e.content)}const t=await M.chat(J(e));if(t){const e=new p(t.content);console.log("customerMsg",e.content),L(e.content)}const n=await M.chat(W(e));if(n){const e=new p(n.content);console.log("contactMsg",e.content),B(e.content)}}),[M]),oe=a((()=>v.debounce(ee,1e3)),[ee]);return i((()=>()=>{oe.cancel()}),[oe]),e(u,{hideHeader:!0,children:o("div",{className:x.container,style:{backgroundImage:`url(${l("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[e(m,{title:l("APP_SAVE_TITLE")?S(l("APP_SAVE_TITLE")):S("Spara")}),e(c,{defaultText:A,onSend:e=>{if(P===H[3])e+=`\nTYPE: ${P||""}\nCUSTOMER: ${R||""}\nCONTACT: ${O||""}`,e=`${e+=`\nSALESPERSON: ${k.context.name||k.context.user?.email||k.context.nickname||"-"}`}${_?" "+_:""}${P===H[3]?" #todo ":""}${U.map((e=>`#file:${e.id}`)).join(" ")}`;else{const o=JSON.stringify({type:P,customer:R,contact:O,message:e.replace("#log ",""),salesperson:k.context.name||k.context.user?.email||k.context.nickname||"-"});e=`${e="#crm #data\n"+o}${_?" "+_:""}${U.length>0?"\n":""}${U.map((e=>`#file:${e.id}`)).join(" ")}`}M.sendMessage(e).then((()=>{G.notify(S("Meddelande"),S("Meddelandet är sparat."),"")}))},files:U,onFilesChange:I,isUploading:b,onUploadImage:()=>{y.current?.triggerUpload()},onUploadCamera:()=>{C.current?.triggerUpload()},getImageUrl:s.getImageUrl,hasLocation:!!_,disableSend:!0,rows:9,placeholder:S("Beskriv CRM-aktivitet här..."),onChange:e=>{D(e),oe(e)},onImagePasted:Q}),e(g,{title:S("Typ"),id:"crm-type",options:H,placeholder:S("Typ av aktivitet..."),value:P,onChangeValue:V,prompt:Y(N||""),service:M}),e(g,{title:S("Kund"),id:"crm-customer",options:z,placeholder:S("Kund..."),value:R,onChangeValue:L,prompt:J(N||""),service:M}),e(g,{title:S("Kontakt"),id:"crm-contact",options:X,placeholder:S("Kontaktperson..."),value:O,onChangeValue:B,prompt:W(N||""),service:M}),e(d,{ref:T,onFileUploaded:q,onUploading:Z,multiple:!0,codicentService:M}),e(d,{codicentService:M,ref:y,onFileUploaded:q,onUploading:Z,multiple:!0,accept:"image/*"}),e(d,{codicentService:M,ref:C,onFileUploaded:q,onUploading:Z,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{b as CrmPage,b as default};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useRef as r,useCallback as i,useEffect as n}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 a 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"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as m}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 p from"../components/MessageInput.js";import l 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 c}from"../components/Page.js";import"./AppFrame.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 d from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import g from"../hooks/useToaster.js";import{useSearchParams as j}from"react-router-dom";import{makeStyles as u}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as f}from"../node_modules/@griffel/core/index.esm.js";import{tokens as h}from"../node_modules/@fluentui/tokens/lib/tokens.js";const v=u({main:{flexGrow:1,...f.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:h.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),x=({state:u})=>{const f=v(),{t:h}=d(),[x,b]=t(!1),S=r(null),w=r(null),_=r(null),[I]=t(null),[U,k]=t([]),{service:F}=u,[C,y]=j(),[A,M]=t("");t(void 0),t(void 0),t(void 0);const[P,T]=t(void 0),E=g(),B=i((o=>{for(const e of o)F.getFileInfo(e).then((o=>{k((e=>[...e,o]))}))}),[F,k]),L=i((o=>{const e=new FormData;e.append("file",o),F.uploadFile(o.name,e).then((o=>{B([o])})).catch((()=>{E.notify(h("Error"),h("Error uploading pasted image"),"")}))}),[F,B,E,h]),R=o=>{b(o)};n((()=>{const o=C.get("text"),e=C.get("url");o&&(M(o),C.delete("text")),e&&(C.delete("url"),M(((o||"")+" "+e).trim())),y(C,{replace:!0})}),[C,y,M,F,B]);return o(c,{hideHeader:!0,children:e("div",{className:f.container,style:{backgroundImage:`url(${m("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[o(a,{title:m("APP_SAVE_TITLE")?h(m("APP_SAVE_TITLE")):h("Spara")}),o(p,{defaultText:A,onSend:o=>{o=`${o="#crm\n"+o.replace("#log ","")}${I?" "+I:""}${U.length>0?"\n":""}${U.map((o=>`#file:${o.id}`)).join(" ")}`,F.sendMessage(o).then((()=>{E.notify(h("Meddelande"),h("Meddelandet är sparat."),"")}))},files:U,onFilesChange:k,isUploading:x,onUploadImage:()=>{w.current?.triggerUpload()},onUploadCamera:()=>{_.current?.triggerUpload()},getImageUrl:s.getImageUrl,hasLocation:!!I,disableSend:!0,rows:9,placeholder:h("Beskriv CRM-aktivitet här..."),onChange:o=>{T(o)},onImagePasted:L}),o(l,{ref:S,onFileUploaded:B,onUploading:R,multiple:!0,codicentService:F}),o(l,{codicentService:F,ref:w,onFileUploaded:B,onUploading:R,multiple:!0,accept:"image/*"}),o(l,{codicentService:F,ref:_,onFileUploaded:B,onUploading:R,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{x as CrmPage,x as default};
2
2
  //# sourceMappingURL=CrmPage.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codicent-app-sdk",
3
- "version": "0.3.35",
3
+ "version": "0.3.36",
4
4
  "description": "SDK for building AI-powered applications with Codicent",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.js",