codicent-app-sdk 0.3.96 → 0.3.98
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.
- package/dist/cjs/components/AiInput.js +1 -1
- package/dist/cjs/components/AudioIcon.js +1 -1
- package/dist/cjs/components/ChatInput.js +1 -1
- package/dist/cjs/components/ChatMessage.js +1 -1
- package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
- package/dist/cjs/components/Footer.js +1 -1
- package/dist/cjs/components/Header.js +1 -1
- package/dist/cjs/components/HtmlView.js +1 -1
- package/dist/cjs/components/MessageInput.js +1 -1
- package/dist/cjs/components/MessageItem.js +1 -1
- package/dist/cjs/components/Profile.js +1 -1
- package/dist/cjs/components/Prompt.js +1 -1
- package/dist/cjs/components/SnapFooter.js +1 -1
- package/dist/cjs/components/TextHeader.js +1 -1
- package/dist/cjs/components/TypingIndicator.js +1 -1
- package/dist/cjs/components/UploadFile.js +1 -1
- package/dist/cjs/components/UrlProcessor.js +1 -1
- package/dist/cjs/components/VoiceIcon.js +1 -1
- package/dist/cjs/config/index.d.ts +1 -0
- package/dist/cjs/config/index.d.ts.map +1 -1
- package/dist/cjs/config/index.js +1 -1
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/useAuthState.d.ts +1 -0
- package/dist/cjs/hooks/useAuthState.d.ts.map +1 -1
- package/dist/cjs/hooks/useAuthState.js +1 -1
- package/dist/cjs/hooks/useCodicentApp.d.ts +5 -2
- package/dist/cjs/hooks/useCodicentApp.d.ts.map +1 -1
- package/dist/cjs/hooks/useCodicentApp.js +1 -1
- package/dist/cjs/hooks/useCodicentState.js +1 -1
- package/dist/cjs/hooks/useTools.d.ts +20 -2
- package/dist/cjs/hooks/useTools.d.ts.map +1 -1
- package/dist/cjs/hooks/useTools.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/pages/AppFrame.js +1 -1
- package/dist/cjs/pages/Chat.js +1 -1
- package/dist/cjs/pages/Compose.js +1 -1
- package/dist/cjs/pages/CrmPage.js +1 -1
- package/dist/cjs/pages/CrmPagePersistent.d.ts +8 -0
- package/dist/cjs/pages/CrmPagePersistent.d.ts.map +1 -0
- package/dist/cjs/pages/CrmPagePersistent.js +1 -0
- package/dist/cjs/pages/FormAccept.js +1 -1
- package/dist/cjs/pages/FormInvite.js +1 -1
- package/dist/cjs/pages/HtmlViewer.js +1 -1
- package/dist/cjs/pages/Login.d.ts.map +1 -1
- package/dist/cjs/pages/Login.js +1 -1
- package/dist/cjs/pages/Purchase.js +1 -0
- package/dist/cjs/pages/Sales.js +1 -1
- package/dist/cjs/pages/Search.js +1 -1
- package/dist/cjs/pages/Snap.js +1 -1
- package/dist/cjs/pages/index.d.ts +2 -0
- package/dist/cjs/pages/index.d.ts.map +1 -1
- package/dist/esm/components/AiInput.js +1 -1
- package/dist/esm/components/AudioIcon.js +1 -1
- package/dist/esm/components/ChatInput.js +1 -1
- package/dist/esm/components/ChatMessage.js +1 -1
- package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
- package/dist/esm/components/Footer.js +1 -1
- package/dist/esm/components/Header.js +1 -1
- package/dist/esm/components/HtmlView.js +1 -1
- package/dist/esm/components/MessageInput.js +1 -1
- package/dist/esm/components/MessageItem.js +1 -1
- package/dist/esm/components/Profile.js +1 -1
- package/dist/esm/components/Prompt.js +1 -1
- package/dist/esm/components/SnapFooter.js +1 -1
- package/dist/esm/components/TextHeader.js +1 -1
- package/dist/esm/components/TypingIndicator.js +1 -1
- package/dist/esm/components/UploadFile.js +1 -1
- package/dist/esm/components/UrlProcessor.js +1 -1
- package/dist/esm/components/VoiceIcon.js +1 -1
- package/dist/esm/config/index.d.ts +1 -0
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/useAuthState.d.ts +1 -0
- package/dist/esm/hooks/useAuthState.d.ts.map +1 -1
- package/dist/esm/hooks/useAuthState.js +1 -1
- package/dist/esm/hooks/useCodicentApp.d.ts +5 -2
- package/dist/esm/hooks/useCodicentApp.d.ts.map +1 -1
- package/dist/esm/hooks/useCodicentApp.js +1 -1
- package/dist/esm/hooks/useCodicentState.js +1 -1
- package/dist/esm/hooks/useTools.d.ts +20 -2
- package/dist/esm/hooks/useTools.d.ts.map +1 -1
- package/dist/esm/hooks/useTools.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/pages/AppFrame.js +1 -1
- package/dist/esm/pages/Chat.js +1 -1
- package/dist/esm/pages/Compose.js +1 -1
- package/dist/esm/pages/CrmPage.js +1 -1
- package/dist/esm/pages/CrmPagePersistent.d.ts +8 -0
- package/dist/esm/pages/CrmPagePersistent.d.ts.map +1 -0
- package/dist/esm/pages/CrmPagePersistent.js +1 -0
- package/dist/esm/pages/FormAccept.js +1 -1
- package/dist/esm/pages/FormInvite.js +1 -1
- package/dist/esm/pages/HtmlViewer.js +1 -1
- package/dist/esm/pages/Login.d.ts.map +1 -1
- package/dist/esm/pages/Login.js +1 -1
- package/dist/esm/pages/Purchase.js +1 -0
- package/dist/esm/pages/Sales.js +1 -1
- package/dist/esm/pages/Search.js +1 -1
- package/dist/esm/pages/Snap.js +1 -1
- package/dist/esm/pages/index.d.ts +2 -0
- package/dist/esm/pages/index.d.ts.map +1 -1
- package/dist/index.d.ts +36 -5
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ export * from "./useChat";
|
|
|
4
4
|
export { default as useCodicentState } from "./useCodicentState";
|
|
5
5
|
export * from "./useAudioRecorder";
|
|
6
6
|
export { default as useTools } from "./useTools";
|
|
7
|
+
export type { Tool, ToolMergeStrategy, ToolsConfig } from "./useTools";
|
|
7
8
|
export { default as useRealtimeVoiceAI } from "./useRealtimeVoiceAI";
|
|
8
9
|
export * from "./useRealtimeVoiceAI";
|
|
9
10
|
export { default as useLocalization } from "./useLocalization";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -12,6 +12,7 @@ export interface UseAuthState {
|
|
|
12
12
|
registerUser: (nickname: string) => Promise<string>;
|
|
13
13
|
codicentService: CodicentService;
|
|
14
14
|
loginWithRedirect: (options?: RedirectLoginOptions<AppState>) => Promise<void>;
|
|
15
|
+
loginPasswordless: (email: string) => Promise<void>;
|
|
15
16
|
}
|
|
16
17
|
declare const useAuthState: (auth0: Auth0ContextInterface) => UseAuthState;
|
|
17
18
|
export default useAuthState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"useAuthState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAUrC,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IAInB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,QAAA,MAAM,YAAY,UAAW,qBAAqB,KAAG,YAmRpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var s=require("../config/index.js");require("../stores/chatStore.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");exports.default=o=>{const{isAuthenticated:t,getAccessTokenSilently:n,user:i,isLoading:a,logout:u,getAccessTokenWithPopup:c,loginWithRedirect:l,loginWithPopup:g}=o,[p,q]=e.useState(null),[j,C]=e.useState(void 0),[m,E]=e.useState(null),[P,d]=e.useState(""),_=e.useMemo((()=>new r.CodicentService({API_BASE_URL:s.getConfigValue("API_BASE_URL"),APP_LOG_CODICENT:s.getConfigValue("APP_LOG_CODICENT"),APP_LOG_TOKEN:s.getConfigValue("APP_LOG_TOKEN"),APP_NAME:s.getConfigValue("APP_NAME"),APP_PREFIX:s.getConfigValue("APP_PREFIX"),APP_TEMPLATE:s.getConfigValue("APP_TEMPLATE"),BUTTON_TAG:s.getConfigValue("BUTTON_TAG"),STRIPE_PUBLIC_KEY:s.getConfigValue("STRIPE_PUBLIC_KEY"),SUBSCRIPTION_NEEDED:s.getConfigValue("SUBSCRIPTION_NEEDED"),USER_PREFIX:s.getConfigValue("USER_PREFIX"),ANONYMOUS_TOKEN:s.getConfigValue("ANONYMOUS_TOKEN")})),[]);e.useEffect((()=>{!a&&t&&(async()=>{try{const e=await n({});console.debug("CODICENT: ACCESS TOKEN",e),q(e)}catch(e){console.debug("CODICENT: Failed to get access token",e);const r=e;if(r&&"object"==typeof r&&"error"in r&&"login_required"===r.error)console.warn("CODICENT: Login required"),T();else if(r&&"object"==typeof r&&"error"in r&&"consent_required"===r.error)try{const e=await c();if(!e)return void E("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),q(e)}catch(e){console.warn("CODICENT: Failed to get access token with popup",e),T()}else E("Failed to get access token: "+(r.message?.toString()||r.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",r)}})().then((()=>{}))}),[t,c,n,l,a]),e.useEffect((()=>{if(i&&i.sub&&p&&void 0===j){let e=!0;return _.loginUser(i.sub,p).then((r=>{e&&(null===r?C(!1):""===r?E("Kontrollera internetanslutningen och försök igen."):(_.setToken(p),_.getNickname().then(d),C(!0)))})).catch((()=>{e&&(E("Ett fel uppstod. Försök igen senare."),C(!1))})),()=>{e=!1}}}),[i,p,j,_]);const T=e.useCallback((()=>{_.logout(),q(null),E(null),C(void 0),d(""),u({logoutParams:{returnTo:s.getConfigValue("AUTH_REDIRECT_URL")}})}),[_,u]),S=e.useCallback((async e=>{const r=await _.registerUser(e,i.email,i.sub,p);return r&&(_.setToken(p),C(!0)),r}),[_,i,p]);e.useEffect((()=>{_.onUnauthorized=T}),[_]);const A=e.useCallback((async e=>{try{await g({authorizationParams:{connection:"email",login_hint:e}})}catch(e){console.error("Passwordless login failed:",e),E(`Passwordless login failed: ${e}`)}}),[g]);return e.useMemo((()=>({isAuthenticated:t,isRegistered:j,accessToken:p,authError:m,isLoading:a,user:i,nickname:P,logout:T,registerUser:S,codicentService:_,loginWithRedirect:l,loginPasswordless:A})),[t,j,p,m,a,i,P,T,S,_,l,A])};
|
|
@@ -4,6 +4,7 @@ import { AppStateMachine, StateContext, AppStateDefinition } from "../utils";
|
|
|
4
4
|
import { AudioRecorderState } from "./useAudioRecorder";
|
|
5
5
|
import { UseAuthState } from "./useAuthState";
|
|
6
6
|
import { RealtimeVoice } from "./useRealtimeVoiceAI";
|
|
7
|
+
import { ToolsConfig } from "./useTools";
|
|
7
8
|
export interface CodicentAppState {
|
|
8
9
|
audio: AudioRecorderState;
|
|
9
10
|
auth: UseAuthState;
|
|
@@ -25,7 +26,9 @@ export interface CodicentAppState {
|
|
|
25
26
|
script: string;
|
|
26
27
|
currentStateName: string;
|
|
27
28
|
}
|
|
28
|
-
export
|
|
29
|
+
export interface UseCodicentAppOptions {
|
|
29
30
|
auth0: Auth0ContextInterface;
|
|
30
|
-
|
|
31
|
+
toolsConfig?: ToolsConfig;
|
|
32
|
+
}
|
|
33
|
+
export declare const useCodicentApp: ({ auth0, toolsConfig }: UseCodicentAppOptions) => CodicentAppState;
|
|
31
34
|
//# sourceMappingURL=useCodicentApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCodicentApp.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCodicentApp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAyB,MAAM,UAAU,CAAC;AACpG,OAAyB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAA2B,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"useCodicentApp.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCodicentApp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAyB,MAAM,UAAU,CAAC;AACpG,OAAyB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAA2B,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,2BAA4B,qBAAqB,KAmKrE,gBACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("react/jsx-runtime");var t=require("../utils/appState.js");require("../_virtual/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");var r=require("./useAudioRecorder.js"),s=require("./useAuthState.js"),n=require("./useRealtimeVoiceAI.js"),a=require("./useTools.js"),c=require("../config/index.js");exports.useCodicentApp=({auth0:u})=>{const
|
|
1
|
+
"use strict";var e=require("react");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("react/jsx-runtime");var t=require("../utils/appState.js");require("../_virtual/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");var r=require("./useAudioRecorder.js"),s=require("./useAuthState.js"),n=require("./useRealtimeVoiceAI.js"),a=require("./useTools.js"),c=require("../config/index.js");exports.useCodicentApp=({auth0:i,toolsConfig:u})=>{const o=s.default(i),l=e.useRef(t.createAppStateMachine(o.codicentService,(()=>{}))),[d,m]=e.useState(),{service:p,context:f}=l.current,{nickname:g,name:k,error:v,errorType:h,selectedApp:A}=f,C=e.useCallback(((e,t)=>{const r=e.get("file").name;p.uploadFile(r,e).then((e=>{p.sendMessage(`#transcribe ${""!==t?(t.startsWith("#")?"":"#")+t+" ":""}#file:${e}`).then((()=>{})).catch(console.warn)}))}),[p]),b=r.useAudioRecorder(C),[S,q]=e.useState(),[w,j]=e.useState(),[y,x]=e.useState(!1),T=e.useMemo((()=>new Audio("./notification.mp3")),[]),_=e.useCallback((()=>x(!0)),[]),I=a.default(p,q,j,T,S,_,u),E=e.useMemo((()=>c.getConfigValue("REALTIME_VOICE_API_KEY")||""),[]),M=n.default(p,E,I);e.useEffect((()=>{y&&(M?.disconnectConversation(),x(!1))}),[y,M]),e.useEffect((()=>{o.isAuthenticated&&o.user&&o.accessToken&&l.current.updateContext({isAuthenticated:o.isAuthenticated,user:{sub:o.user.sub,email:o.user.email},accessToken:o.accessToken})}),[o.isAuthenticated,o.user,o.accessToken]),e.useEffect((()=>l.current.updateContext({nickname:o.nickname})),[o.nickname]),e.useEffect((()=>{l.current.update();let e,t=l.current.getCurrentStateName();m(l.current.getCurrentStateName()),JSON.stringify(l.current.context);let r=!1;const s=n=>setInterval((()=>{const n=l.current.getCurrentStateName();if("hasAccess"===n&&!r)return console.log("🎯 Reached stable state - switching to slower polling (1000ms)"),r=!0,clearInterval(e),void(e=s(1e3));if("hasAccess"!==n&&r)return console.log("🚨 Left stable state - switching to fast polling (200ms)"),r=!1,clearInterval(e),void(e=s(200));const a=JSON.stringify(l.current.context);l.current.update();const c=JSON.stringify(l.current.context),i=l.current.getCurrentStateName();i===t&&a===c||(m(i),t=i)}),n);return e=s(200),()=>clearInterval(e)}),[]);const N=e.useCallback((e=>e.replace("{nickname}",g||"unknown").replace("{token}",encodeURIComponent(o.accessToken||"unknown")).replace("{app}",A||"unknown")),[g,o.accessToken,A]),R=e.useCallback((e=>{l.current.updateContext({isAnonymous:e})}),[]),O=e.useCallback((()=>l.current.isBusy()),[]);return e.useMemo((()=>({audio:b,auth:o,currentStateName:d,stateMachine:l.current,service:p,context:f,state:d,nickname:g,name:k,error:v,errorType:h,fixAppUrl:N,setAnonymous:R,allStates:l.current.allStates,isBusy:O,voice:M,html:S,setHtml:q,script:w})),[d,g,k,v,h,S,w,o.isAuthenticated,o.isLoading,b.isRecording,M?.isConnected,N,R,O])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./useStateWithLocalStorage.js");require("../services/codicent.js"),require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var s=require("../config/index.js");require("../stores/chatStore.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js");exports.default=t=>{const[o,i]=r.default("APP_WELCOME_STATE_TEXT_"+t.context.selectedApp,""),[n,a]=r.default("CODICENT_STATE_LAST_TIMESTAMP_"+t.context.selectedApp,0),{service:u,current:c}=t,[p,l]=e.useState(!1),j=e.useRef(!1),q=e.useCallback((async()=>{if(!j.current){j.current=!0;try{const e=await u.getMessagesFast(s.getConfigValue("LOGBOOK_TAGS").split(",").filter((e=>"chat"!==e))),r=e.length>0?e[0].createdAt.getTime():n;if(r>n){a(r),l(!0);const e=await u.chat(s.getConfigValue("WELCOME_STATUS_PROMPT"));i(e.content)}}finally{l(!1),j.current=!1}}}),[u,n,a,i]),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("./useStateWithLocalStorage.js");require("../services/codicent.js"),require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("react/jsx-runtime"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var s=require("../config/index.js");require("../stores/chatStore.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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("./useLocalization.js"),require("./useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js"),require("../components/Page.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");exports.default=t=>{const[o,i]=r.default("APP_WELCOME_STATE_TEXT_"+t.context.selectedApp,""),[n,a]=r.default("CODICENT_STATE_LAST_TIMESTAMP_"+t.context.selectedApp,0),{service:u,current:c}=t,[p,l]=e.useState(!1),j=e.useRef(!1),q=e.useCallback((async()=>{if(!j.current){j.current=!0;try{const e=await u.getMessagesFast(s.getConfigValue("LOGBOOK_TAGS").split(",").filter((e=>"chat"!==e))),r=e.length>0?e[0].createdAt.getTime():n;if(r>n){a(r),l(!0);const e=await u.chat(s.getConfigValue("WELCOME_STATUS_PROMPT"));i(e.content)}}finally{l(!1),j.current=!1}}}),[u,n,a,i]),g=e.useCallback((()=>{u&&s.getConfigValue("CHAT_INSTRUCTIONS")}),[u]);return e.useEffect((()=>{c===t.allStates.hasAccess&&s.getConfigValue("WELCOME_STATUS_PROMPT")?(q(),g()):s.getConfigValue("WELCOME_STATUS_PROMPT")||i("")}),[c,t,q,g,i]),{welcomeStatusText:o,updating:p}};
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { CodicentService } from "../services/codicent";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Represents a single tool with its definition and handler function
|
|
4
|
+
*/
|
|
5
|
+
export interface Tool {
|
|
3
6
|
definition: any;
|
|
4
7
|
handler: any;
|
|
5
|
-
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Strategy for merging custom tools with built-in tools
|
|
11
|
+
* - 'merge': Combine custom tools with built-in tools
|
|
12
|
+
* - 'replace': Use only custom tools, ignore built-in tools
|
|
13
|
+
* - 'builtin-only': Use only built-in tools, ignore custom tools
|
|
14
|
+
*/
|
|
15
|
+
export type ToolMergeStrategy = "merge" | "replace" | "builtin-only";
|
|
16
|
+
/**
|
|
17
|
+
* Configuration options for tools
|
|
18
|
+
*/
|
|
19
|
+
export interface ToolsConfig {
|
|
20
|
+
additionalTools?: Tool[];
|
|
21
|
+
mergeStrategy?: ToolMergeStrategy;
|
|
22
|
+
}
|
|
23
|
+
declare const useTools: (api: CodicentService, setHtml: ((html: string | undefined) => void) | undefined, injectScript: ((script: string) => void) | undefined, beep: HTMLAudioElement, html?: string, stopVoiceSession?: () => void, toolsConfig?: ToolsConfig) => Tool[];
|
|
6
24
|
export default useTools;
|
|
7
25
|
//# sourceMappingURL=useTools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTools.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,QAAA,MAAM,QAAQ,QACP,eAAe,YACX,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,8BAG7B,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,qBAGhC,gBAAgB,SACf,MAAM,qBACK,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"useTools.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,QAAA,MAAM,QAAQ,QACP,eAAe,YACX,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,8BAG7B,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,qBAGhC,gBAAgB,SACf,MAAM,qBACK,MAAM,IAAI,gBAGd,WAAW,WA8kB1B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../config/index.js");exports.default=(s,a=e=>{console.log(e)},n=e=>{console.log(e)},r,i,o=()=>{console.log("stopVoiceSession")})=>e.useMemo((()=>{const e=[],
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../config/index.js");exports.default=(s,a=e=>{console.log(e)},n=e=>{console.log(e)},r,i,o=()=>{console.log("stopVoiceSession")},p)=>e.useMemo((()=>{const e=[],c=(t,s)=>{e.push({definition:t,handler:s})},d=async()=>{const e=t.getConfigValue("APP_CONFIG"),a=t.getConfigValue("APP_BUTTONS");return[...a&&e.apps[a]?e.apps[a].tasks:[],...await s.getAppTasks()]};c({name:"stop_voice_session",description:"Stops the voice session.",parameters:{type:"object",properties:{}}},(async()=>(console.log("TOOL: stop_voice_session"),a(void 0),o(),{ok:!0}))),c({name:"inject_script",description:"Injects a script into the html/canvas view.",parameters:{type:"object",properties:{script:{type:"string",description:"The script to inject"}},required:["script"]}},(async({script:e})=>(console.log("TOOL: inject_script",e),n(e),{ok:!0}))),c({name:"post_codicent_message",description:"Posts a message to Codicent, only when requested by the user.",parameters:{type:"object",properties:{content:{type:"string",description:'The codicent message text, e.g. "remember to call Linda"'},parent_id:{type:"string",description:'The parent message id of a previous message that you will add a new revision to, by setting parent_id to the origin message being "edited"'}},required:["content"]}},(async({content:e,parent_id:t})=>await s.sendMessage(e,t))),c({name:"update_codicent_message",description:"Posts an edited message, which replaces the old message.",parameters:{type:"object",properties:{content:{type:"string",description:'The updated codicent message text, e.g. "remember to call Johan", usually including the tags from the original message.'},parent_id:{type:"string",description:"The message id of a previous/old message to be updated."}},required:["content","parent_id"]}},(async({content:e,parent_id:t})=>await s.sendMessage(e,t))),c({name:"get_messages_list",description:"Gets messages tagged with given tag name, optionally limited by num_messages. The messages are listed in chronological order, latest first.",parameters:{type:"object",properties:{num_messages:{type:"integer",description:"The number of matching messages to return"},search_text:{type:"string",description:"Search text to filter messages by"},tag_name:{type:"string",description:"Name of tag to find messages by"},after_timestamp:{type:"string",description:"Only return messages after this timestamp"},before_timestamp:{type:"string",description:"Only return messages before this timestamp"}},required:["num_messages"]}},(async({num_messages:e,search_text:t,tag_name:a,after_timestamp:n,before_timestamp:r})=>{let i=await s.getMessages(a?[a]:[]);return t&&(i=i.filter((e=>e.content.includes(t)))),n&&(i=i.filter((e=>e.createdAt>n))),r&&(i=i.filter((e=>e.createdAt<r))),i.slice(0,e)})),c({name:"chat_with_codicent_ai",description:"Sends a message to Codicent AI and gets a response message back. Remember that you can always ask codicent via this tool to find out more about what you can achieve from chatting with the codicent AI.",parameters:{type:"object",properties:{message:{type:"string",description:"Text of message to the codicent"}},required:["message"]}},(async({message:e})=>await s.chat(e))),c({name:"create_todo",description:"Saves a todo message in Codicent.",parameters:{type:"object",properties:{text:{type:"string",description:"Text of todo"}},required:["text"]}},(async({text:e})=>await s.sendMessage("#todo "+e))),c({name:"place_order",description:"Places and order with the Codicent AI.",parameters:{type:"object",properties:{message:{type:"string",description:"The text message of the order as spoken by the user."}},required:["message"]}},(async({message:e})=>await s.sendMessage(`#do Jag kommer ge dig en text (nedan) på vad jag ska beställa. Använd bara den text du får av mig, inga tools.\n Du ska skapa en tabell med detaljerad information inklusive lagerstatus \n för varje artikel i beställningen. Svara först när du har all info på plats. Ställ inga frågor på vägen utan använd det du får av mig.\n \n ----\n EXEMPEL PÅ SVAR:\n ----\n Här är en tabell med detaljerad information inklusive lagerstatus för varje artikel i beställningen:\n \n Artikel\tHyresobjekt\tNamn\tLagertyp\tGrupp\tNamn.1\tSRA/SBEF\tLeverantör\tLevnr\tDepå\tLager\tReserverat\tUthyrt nu\tTillgängligt nu\tMärke/typ\tTillverkarnr\tTillv.år\tInköpsdato\tInköpspris\tVikt\n Elverk\t12345\tElverk 1\tHyresobjekt\tMaskiner\tElverk\tSRA\tLeverantör A\t001\tDepå 1\t5\t0\t1\t4\tHonda EU22i\t123456\t2020\t2020-01-01\t10000 SEK\t21 kg\n Elverk\t12345\tElverk 2\tHyresobjekt\tMaskiner\tElverk\tSRA\tLeverantör B\t002\tDepå 2\t3\t0\t1\t2\tYamaha EF2000iS\t654321\t2019\t2019-05-01\t9000 SEK\t20 kg\n Observera att denna tabell är baserad på den information som finns tillgänglig i lagerstatusen. Om du behöver ytterligare detaljer eller om något specifikt saknas, vänligen meddela mig.\n ----\n \n --- här följer texten på vad jag vill beställa ---\n \n \n ${e}`))),c({name:"remember_info",description:"Saves info in your internal memory for future use. Use this tool to save insights on how to perform our conversations and tasks related to them.",parameters:{type:"object",properties:{message:{type:"string",description:"Your insights to improve our future conversations."}},required:["message"]}},(async({message:e})=>await s.sendMessage(`#index #insights\n\n${e}`))),c({name:"save_to_crm",description:"Saves CRM related info to your memory (logbook).",parameters:{type:"object",properties:{message:{type:"string",description:"CRM log entry description/contents."},company:{type:"string",description:"Company name for CRM log entry."},contact:{type:"string",description:"Contact name for CRM log entry."}},required:["message","company"]}},(async({message:e,company:t,contact:a})=>await s.sendMessage(`#crm\n\nFöretag: ${t}\n\nInfo: ${e}${a?"\n\nKontakt: "+a:""}`))),c({name:"set_page_html",description:"Sets the innerHtml of the div covering the full app page. You can display any html/javascript/style/mermaid content here for the user to see ;-). This view is usually referred to as the canvas, or tavlan in Swedish.",parameters:{type:"object",properties:{html:{type:"string",description:"The inner html to set the page to."}},required:["html"]}},(async({html:e})=>(a(e),r.play(),{ok:!0}))),c({name:"hide_page_html",description:"Hides the inner html of the page.",parameters:{type:"object",properties:{}}},(async()=>(a(void 0),{ok:!0}))),c({name:"get_page_html",description:"Gets the inner html of the page.",parameters:{type:"object",properties:{}}},(async()=>({html:i}))),c({name:"get_tasks",description:"Gets the list of possible tasks that can be performed. This lists task names and their id:s. Use get_task to get the task instructions given a task id.",parameters:{type:"object",properties:{},required:[]}},(async e=>(await d()).map((e=>({id:e.id,name:e.title}))))),c({name:"get_task",description:"Gets the task instructions for a given task id. Use get_tasks to get a list of possible tasks (with their id:s).",parameters:{type:"object",properties:{task_id:{type:"string",description:"The task id to get instructions for."}},required:["task_id"]}},(async({task_id:e})=>{const t=(await d()).find((t=>t.id===e));return t?t.content:"Task not found"}));const{additionalTools:m=[],mergeStrategy:g="merge"}=p||{};return"replace"===g?m:"builtin-only"===g?e:[...e,...m]}),[s,a,n,i,r,p]);
|
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("./services/codicent.js"),r=require("./components/Markdown.js"),
|
|
1
|
+
"use strict";var e=require("./services/codicent.js"),r=require("./components/Markdown.js"),t=require("./components/Textarea.js"),s=require("./components/Button.js"),o=require("./components/CompoundButton.js"),i=require("./components/Title.js"),a=require("./components/Text.js"),p=require("./components/Spinner.js"),u=require("./components/Label.js"),n=require("./components/Input.js"),l=require("./components/TextHeader.js"),c=require("./components/TypingIndicator.js"),x=require("./components/Prompt.js"),d=require("./components/ChatInput.js"),m=require("./components/CombinedPlaceholderDialog.js"),j=require("./components/ChatMessage.js"),q=require("./components/Header.js"),g=require("./components/VoiceIcon.js"),h=require("./components/AudioIcon.js"),f=require("./components/FileThumbnail.js"),C=require("./components/MessageInput.js"),S=require("./components/UploadFile.js"),P=require("./components/SnapFooter.js"),k=require("./components/Profile.js"),A=require("./components/MessageItem.js"),T=require("./components/Content.js"),I=require("./components/AiInput.js"),b=require("./components/SearchBox.js"),v=require("./components/HtmlView.js"),M=require("./components/Footer.js"),w=require("./components/Page.js"),F=require("./components/UrlProcessor.js"),L=require("./components/DatePicker.js"),V=require("./components/ColorPicker.js"),y=require("./components/TimePicker.js"),B=require("./hooks/useStateWithLocalStorage.js"),H=require("./hooks/useAuthState.js"),D=require("./hooks/useChat.js"),W=require("./hooks/useCodicentState.js"),R=require("./hooks/useAudioRecorder.js"),_=require("./hooks/useTools.js"),U=require("./hooks/useRealtimeVoiceAI.js"),z=require("./hooks/useLocalization.js"),G=require("./hooks/useTemplateVariables.js"),E=require("./hooks/useCodicentApp.js"),J=require("./hooks/useAppStyles.js"),K=require("./hooks/useToaster.js"),N=require("./utils/MessageContent.js"),O=require("./utils/theme.js"),Q=require("./utils/logging.js"),X=require("./utils/withWakeLock.js"),Y=require("./utils/appState.js"),Z=require("./_virtual/index.js");require("./lib/wavtools/lib/wav_packer.js"),require("./lib/wavtools/lib/analysis/audio_analysis.js");var $=require("./lib/wavtools/lib/wav_stream_player.js"),ee=require("./lib/wavtools/lib/wav_recorder.js"),re=require("./utils/device.js"),te=require("./utils/helpers.js"),se=require("./config/index.js"),oe=require("./pages/AppFrame.js"),ie=require("./pages/Chat.js"),ae=require("./pages/Compose.js"),pe=require("./pages/Snap.js"),ue=require("./pages/Search.js"),ne=require("./pages/Login.js"),le=require("./pages/Logout.js"),ce=require("./pages/CrmPage.js"),xe=require("./pages/CrmPagePersistent.js"),de=require("./pages/ImageView.js"),me=require("./pages/FormInvite.js"),je=require("./pages/FormAccept.js"),qe=require("./pages/Sales.js"),ge=require("./pages/HtmlViewer.js"),he=require("./pages/Purchase.js");exports.CodicentService=e.CodicentService,exports.Markdown=r.default,exports.Textarea=t.Textarea,exports.Button=s.Button,exports.CompoundButton=o.CompoundButton,exports.Title=i.Title,exports.Text=a.Text,exports.Spinner=p.Spinner,exports.Label=u.Label,exports.Input=n.Input,exports.TextHeader=l.default,exports.TypingIndicator=c.default,exports.Prompt=x.default,exports.ChatInput=d.default,exports.CombinedPlaceholderDialog=m.CombinedPlaceholderDialog,exports.ChatMessage=j.default,exports.Header=q.Header,exports.VoiceIcon=g.default,exports.AudioIcon=h.default,exports.FileThumbnail=f.FileThumbnail,exports.MessageInput=C.default,exports.UploadFile=S.default,exports.SnapFooter=P.default,exports.Profile=k.default,exports.MessageItem=A.default,exports.Content=T.default,exports.AiInput=I.default,exports.SearchBox=b.default,exports.HtmlView=v.default,exports.Footer=M.Footer,exports.Page=w.Page,exports.UrlProcessor=F.UrlProcessor,exports.DatePicker=L.DatePicker,exports.ColorPicker=V.ColorPicker,exports.TimePicker=y.TimePicker,exports.useStateWithLocalStorage=B.default,exports.useAuthState=H.default,exports.useChat=D.useChat,exports.useCodicentState=W.default,exports.useAudioRecorder=R.useAudioRecorder,exports.useTools=_.default,exports.useRealtimeVoiceAI=U.default,exports.useLocalization=z.default,exports.useTemplateVariables=G.useTemplateVariables,exports.useCodicentApp=E.useCodicentApp,exports.useAppStyles=J.default,exports.useToaster=K.default,exports.MessageContent=N.default,exports.generateBrandVariants=O.default,exports.log=Q.default,exports.withWakeLock=X.default,exports.AppStateMachine=Y.AppStateMachine,exports.createAppStateMachine=Y.createAppStateMachine,exports.WavStreamPlayer=$.WavStreamPlayer,exports.WavRecorder=ee.WavRecorder,exports.getGpsLocation=re.getGpsLocation,exports.isMobileDevice=re.isMobileDevice,exports.getTimeString=te.getTimeString,exports.AppConfig=se.AppConfig,exports.getConfigValue=se.getConfigValue,exports.initCodicentApp=se.initCodicentApp,exports.AppFrame=oe.default,exports.Chat=ie.default,exports.Compose=ae.Compose,exports.Snap=pe.default,exports.Search=ue.default,exports.Login=ne.default,exports.Logout=le.Logout,exports.CrmPage=ce.CrmPage,exports.CrmPagePersistent=xe.CrmPagePersistent,exports.ImageView=de.default,exports.FormInvite=me.default,exports.FormAccept=je.default,exports.Sales=qe.Sales,exports.HtmlViewer=ge.default,exports.Purchase=he.Purchase,exports.StateMachine=Z.distExports.StateMachine;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("react"),require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),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("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("../stores/chatStore.js"),require("../hooks/useLocalization.js"),require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var r=require("../components/Page.js");const s=require("../node_modules/@griffel/react/makeStyles.esm.js").makeStyles({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}});exports.default=({src:o,showFooter:i,title:t})=>{const n=s();return i?e.jsx(r.Page,{hideFooter:!i,hideHeader:!0,children:e.jsx("iframe",{title:t,src:o,className:`${n.iframe} ${i?n.fixFrameHeight:""}`})}):e.jsx("iframe",{title:t,src:o,className:n.iframe})};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("react"),require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),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("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js"),require("../hooks/useLocalization.js"),require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var r=require("../components/Page.js");const s=require("../node_modules/@griffel/react/makeStyles.esm.js").makeStyles({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}});exports.default=({src:o,showFooter:i,title:t})=>{const n=s();return i?e.jsx(r.Page,{hideFooter:!i,hideHeader:!0,children:e.jsx("iframe",{title:t,src:o,className:`${n.iframe} ${i?n.fixFrameHeight:""}`})}):e.jsx("iframe",{title:t,src:o,className:n.iframe})};
|
package/dist/cjs/pages/Chat.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("react-router-dom");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("react-router-dom");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var s=require("../components/TextHeader.js"),n=require("../components/TypingIndicator.js"),o=require("../components/Prompt.js"),a=require("../components/ChatInput.js"),i=require("../components/CombinedPlaceholderDialog.js"),l=require("../components/ChatMessage.js");require("../components/Header.js");var u=require("../hooks/useStateWithLocalStorage.js"),c=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var d=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("./AppFrame.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js");var p=require("../hooks/useChat.js"),m=require("../hooks/useLocalization.js"),g=require("../hooks/useTemplateVariables.js");require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var h=require("../components/Page.js"),j=require("../node_modules/@griffel/react/makeStyles.esm.js"),f=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js");const q=j.makeStyles({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"}});exports.default=({state:j})=>{const x=q(),{t:C,tAsync:b,getLanguageInfo:S}=m.default(),v=r.useNavigate(),{messages:y,isBotTyping:w,handleSend:P,newChat:k,openChat:_}=p.useChat(j.stateMachine),T=t.useRef(null),[F,I]=r.useSearchParams(),[A,V]=t.useState(null),[M,E]=t.useState(!1),[H,R]=t.useState(!1),{service:N,currentStateName:B}=j,[L,O]=t.useState([]),[W,D]=t.useState([]),[U,z]=t.useState(!1),[G,Y]=t.useState(),[$,K]=u.default(j.context.selectedApp+"_prompts",[]),[J,Q]=t.useState(!1),{extractTemplateVariables:X,replaceTemplateVariables:Z,extractFilePlaceholders:ee,replaceFilePlaceholders:te,handleSelectFiles:re}=g.useTemplateVariables(N.uploadFile),se=t.useRef(!1),ne=t.useRef(null);t.useEffect((()=>{const e=window.history.length>1,t=Boolean(document.referrer&&document.referrer!==window.location.href);R(e||t)}),[]);t.useEffect((()=>{d.getConfigValue("SHOW_CHAT_PROMPTS")&&0===y.length&&j.service.getAppPrompts().then(K).catch((e=>{console.error("Failed to get prompts",e)}))}),[j.service,K,y.length]),t.useEffect((()=>{setTimeout((()=>{T.current?.scrollIntoView({behavior:"smooth"})}),10)}),[y]),t.useEffect((()=>{if(se.current)return;se.current=!0;const e=F.get("text"),t=F.get("id"),r=F.get("fid");if(e){(async()=>{const t=ee(e),r=X(e);k(),t.length>0||r.length>0?(D(t),O(r),z(!0),V(C(e))):V(C(e))})()}else t?_(t):r&&Y(r)}),[]),t.useEffect((()=>{G&&"anonymous"===B&&ne.current!==G&&(ne.current=G,N.getFormById(G).then((async e=>{k();const t=S().language,r=e.prompt.replace("{{fid}}",G).replace("{{fname}}",e.name).replace("{{language}}",t);Q(!0);const s=await b(r);Q(!1),V(s),R(!1)})))}),[G,k,N,V,B,b,S,Q]),t.useEffect((()=>{if(A&&!U){let e=A;W.length>0&&(e=te(e,W)),L.length>0&&(e=Z(e,L)),P(e),I({},{replace:!0}),V(null),O([]),D([])}}),[A,U,P,I,te,Z,W,L]);const oe=e=>{const t=F.get("append");t&&(e+="\n---\n"+t),P(e)};return e.jsxs(h.Page,{hideHeader:!0,hideFooter:!!G,children:[e.jsxs("div",{id:"chat-container",className:x.chatContainer,style:{backgroundImage:`url(${d.getConfigValue("CHAT_BACKGROUND_IMAGE_URL")})`},children:[H&&e.jsx("button",{onClick:()=>{H&&v(-1)},"aria-label":C("Tillbaka"),style:{position:"absolute",top:12,left:12,zIndex:100,background:"var(--colorNeutralBackground1)",border:"none",cursor:"pointer",padding:8,borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx(f.CalendarWeekStart24Regular,{style:{transform:"rotate(180deg)"}})}),e.jsx("div",{style:{marginLeft:H?40:0},children:e.jsx(s.default,{title:C(d.getConfigValue("APP_CHAT_TITLE")||"Chatt"),onNewChat:G?void 0:()=>E(!0)})}),e.jsxs("div",{className:x.chatMessages,children:[d.getConfigValue("SHOW_CHAT_PROMPTS")&&$.length>0&&0===y.length&&e.jsx(l.default,{sender:"bot",content:C(d.getConfigValue("CHAT_WELCOME")||"Välkommen!"),children:$.map(((t,r)=>e.jsxs("div",{children:["> ",e.jsx("a",{href:"./#/chat",onClick:()=>{oe(t.title+"\n---\n"+t.prompt)},children:C(t.title)}),e.jsx("br",{})]},`prompt-${r}`)))}),y.map(((t,r)=>e.jsxs("div",{children:[(w&&r===y.length-1||!w&&r===y.length-2)&&e.jsx("div",{ref:T}),e.jsx(l.default,{sender:t.sender,content:t.content,isNew:t.isNew,showSuggestions:r===y.length-1,onSuggestionClicked:P},t.id)]},t.id))),J&&e.jsx(l.default,{sender:"user",content:C("Översätter...")}),w&&e.jsx(n.default,{})]}),e.jsx(a.default,{codicent:j.context.selectedApp,disableSend:w,onSend:oe,onSelectFiles:re,getImageUrl:c.CodicentService.getImageUrl,getFileInfo:e=>N.getFileInfo(e)})]}),e.jsx(o.default,{open:M,title:C("Vill du rensa chatten?"),content:C("En ny startas, men chatten kommer först sparas."),onYes:()=>{E(!1),k()},onNo:()=>E(!1)}),e.jsx(i.CombinedPlaceholderDialog,{open:U,templateVariables:L,filePlaceholders:W,onTemplateVariablesChange:O,onFilePlaceholdersChange:D,onConfirm:()=>z(!1),onCancel:()=>{z(!1),V(null),O([]),D([])},uploadFile:N.uploadFile})]})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),o=require("react"),r=require("react-router-dom"),t=require("../config/index.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var i=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var n=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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");var a=require("../utils/device.js");require("./AppFrame.js"),require("./Chat.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("../stores/chatStore.js");var s=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var l=require("../hooks/useToaster.js");require("../components/FileThumbnail.js");var u=require("../components/MessageInput.js"),c=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),o=require("react"),r=require("react-router-dom"),t=require("../config/index.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var i=require("../components/TextHeader.js");require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var n=require("../services/codicent.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/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");var a=require("../utils/device.js");require("./AppFrame.js"),require("./Chat.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js");var s=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var l=require("../hooks/useToaster.js");require("../components/FileThumbnail.js");var u=require("../components/MessageInput.js"),c=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js"),g=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 j=g.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"}}),q=({state:g})=>{const p=j(),{t:m}=s.default(),[q,f]=o.useState(!1),h=o.useRef(null),v=o.useRef(null),S=o.useRef(null),[x,C]=o.useState(null),[P,_]=o.useState([]),{service:b}=g,[I,F]=r.useSearchParams(),[w,U]=o.useState(void 0),[k,y]=o.useState(),E=l.default(),A=r.useNavigate(),M=o.useCallback((e=>{for(const o of e)b.getFileInfo(o).then((e=>{_((o=>[...o,e]))}))}),[b,_]),T=o.useCallback((e=>{const o=new FormData;o.append("file",e),b.uploadFile(e.name,o).then((e=>{M([e])})).catch((()=>{E.notify(m("Error"),m("Error uploading pasted image"),"")}))}),[b,M,E,m]),L=e=>{f(e)};o.useEffect((()=>{const e=I.get("text"),o=I.get("url"),r=I.get("parentId");e&&(U(e),I.delete("text")),r&&(y(r),I.delete("parentId")),o&&(I.delete("url"),U(((e||"")+" "+o).trim())),F(I,{replace:!0})}),[I,F,U,b,M]);return e.jsx(d.Page,{hideHeader:!0,children:e.jsxs("div",{className:p.container,style:{backgroundImage:`url(${t.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[e.jsx(i.default,{title:t.getConfigValue("APP_SAVE_TITLE")?m(t.getConfigValue("APP_SAVE_TITLE")):m("Spara")}),e.jsx(u.default,{disableSend:!0,defaultText:w,onSend:e=>{e=`${e}${x?" "+x:""}${P.length>0?"\n":""}${P.map((e=>`#file:${e.id}`)).join(" ")}`,b.sendMessage(e,k).then((()=>{E.notify(m("Meddelande"),m("Meddelandet är sparat."),""),k&&(y(void 0),A(-1))}))},files:P,onFilesChange:_,isUploading:q,onHandleDefaultFiles:M,onUploadFile:()=>{h.current?.triggerUpload(),console.log("attach-file")},onUploadImage:t.getConfigValue("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{v.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:t.getConfigValue("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{S.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:n.CodicentService.getImageUrl,onLocationChange:t.getConfigValue("COMPOSE_HIDE_LOCATION")?void 0:e=>{e?(async()=>{console.log("attach-location");const e=await a.getGpsLocation();e?(E.notify(m("Position"),m("Position tillagd."),""),C(`#gps(${e.coords.latitude},${e.coords.longitude})`)):console.log("Failed to get GPS location")})():(C(null),E.notify(m("Position"),m("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!x,onImagePasted:T}),e.jsx(c.default,{ref:h,onFileUploaded:M,onUploading:L,multiple:!0,codicentService:b}),e.jsx(c.default,{codicentService:b,ref:v,onFileUploaded:M,onUploading:L,multiple:!0,accept:"image/*"}),e.jsx(c.default,{codicentService:b,ref:S,onFileUploaded:M,onUploading:L,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.Compose=q,exports.default=q;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),n=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var 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");var o=require("../components/VoiceIcon.js"),s=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"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),n=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var 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");var o=require("../components/VoiceIcon.js"),s=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"),u=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 l=require("../components/Page.js");require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js");var c=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var d=require("../hooks/useToaster.js"),m=require("react-router-dom"),p=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"),h=require("../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js"),q=require("../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js");const v=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%",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:f.tokens.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"}}),x=({state:g,voice:j})=>{const f=v(),{t:x}=c.default(),[S,k]=r.useState(!1),b=r.useRef(null),w=r.useRef(null),C=r.useRef(null),[y]=r.useState(null),[_,I]=r.useState([]),{service:M}=g,[B,P]=m.useSearchParams(),[U,E]=r.useState(""),[A,F]=r.useState(void 0),T=d.default(),[N,R]=r.useState(void 0),[V,O]=r.useState("info"),$=r.useCallback((e=>{for(const r of e)M.getFileInfo(r).then((e=>{I((r=>[...r,e]))}))}),[M,I]),L=r.useCallback((e=>{const r=new FormData;r.append("file",e),M.uploadFile(e.name,r).then((e=>{$([e])})).catch((()=>{T.notify(x("Error"),x("Error uploading pasted image"),"")}))}),[M,$,T,x]),H=e=>{k(e)};r.useEffect((()=>{const e=B.get("text"),r=B.get("url");e&&(E(e),B.delete("text")),r&&(B.delete("url"),E(((e||"")+" "+r).trim())),P(B,{replace:!0})}),[B,P,E,M,$]);const z=r.useCallback((async e=>{if(!e||e.length<10)return;R(x("Analyserar...")),O("info");const r=await M.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(r){const e=new s.default(r.content);try{const r=JSON.parse(e.content);console.log("json",r);let n=0;for(const e in r)"true"===r[e]&&n++;R(x(4===n?"Allt är med":r.shortSummary||"Något saknas")),O(4===n?"success":"warning")}catch{R("Error: "+e.content),O("error")}}}),[M]),D=r.useMemo((()=>p.lodashExports.debounce(z,2e3)),[z]);return r.useEffect((()=>()=>{D.cancel()}),[D]),e.jsx(l.Page,{hideHeader:!0,children:e.jsxs("div",{className:f.container,style:{backgroundImage:`url(${a.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[j&&a.getConfigValue("SHOW_VOICE_BUTTON")&&e.jsx("div",{className:f.voiceIcon,children:e.jsx(o.default,{voice:j})}),e.jsx(t.default,{title:a.getConfigValue("APP_SAVE_TITLE")?x(a.getConfigValue("APP_SAVE_TITLE")):x("Spara")}),e.jsx(i.default,{defaultText:U,onSend:e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${g.context.name||g.context.user?.email||g.context.nickname||"-"}`}${y?" "+y:""}${_.length>0?"\n":""}${_.map((e=>`#file:${e.id}`)).join(" ")}`,M.sendMessage(e).then((()=>{T.notify(x("Meddelande"),x("Meddelandet är sparat."),"")}))},files:_,onFilesChange:I,isUploading:S,onUploadImage:()=>{w.current?.triggerUpload()},onUploadCamera:()=>{C.current?.triggerUpload()},getImageUrl:n.CodicentService.getImageUrl,hasLocation:!!y,disableSend:!0,rows:9,placeholder:x("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==A&&(F(e),e&&e.trim().length>0?D(e):(R(void 0),D.cancel()))},onImagePasted:L}),N&&e.jsxs("div",{className:f.review,children:[e.jsx("h3",{children:x("Analys")}),e.jsx(h.MessageBar,{intent:V,layout:"multiline",children:e.jsx(q.MessageBarBody,{children:x(N)})})]}),e.jsx(u.default,{ref:b,onFileUploaded:$,onUploading:H,multiple:!0,codicentService:M}),e.jsx(u.default,{codicentService:M,ref:w,onFileUploaded:$,onUploading:H,multiple:!0,accept:"image/*"}),e.jsx(u.default,{codicentService:M,ref:C,onFileUploaded:$,onUploading:H,multiple:!0,accept:"image/*",capture:"environment"})]})})};exports.CrmPage=x,exports.default=x;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CodicentAppState, RealtimeVoice } from "../hooks";
|
|
3
|
+
export declare const CrmPagePersistent: React.FC<{
|
|
4
|
+
state: CodicentAppState;
|
|
5
|
+
voice?: RealtimeVoice;
|
|
6
|
+
}>;
|
|
7
|
+
export default CrmPagePersistent;
|
|
8
|
+
//# sourceMappingURL=CrmPagePersistent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CrmPagePersistent.d.ts","sourceRoot":"","sources":["../../../src/pages/CrmPagePersistent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAWjF,OAAO,EAAE,gBAAgB,EAA+B,aAAa,EAAE,MAAM,UAAU,CAAC;AAiHxF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,CAqT1F,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("../services/codicent.js");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js"),require("../components/Spinner.js");var o=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 n=require("../components/VoiceIcon.js"),s=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");var i=require("../utils/device.js");require("../components/FileThumbnail.js");var l=require("../components/MessageInput.js"),c=require("../components/UploadFile.js");require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js");require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js");var u=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var p=require("../hooks/useToaster.js"),m=require("react-router-dom"),h=require("../node_modules/lodash/lodash.js"),g=require("../node_modules/@griffel/react/makeStyles.esm.js"),f=require("../node_modules/@griffel/core/index.esm.js"),j=require("../node_modules/@fluentui/tokens/lib/tokens.js"),x=require("../node_modules/@fluentui/react-text/lib/components/Text/Text.js"),S=require("../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js"),v=require("../node_modules/@fluentui/react-card/lib/components/Card/Card.js"),q=require("../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js"),y=require("../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js");const k=g.makeStyles({main:{flexGrow:1,...f.shorthands.padding("10px"),overflowY:"auto"},container:{display:"flex",flexDirection:"row",height:"100%",...f.shorthands.gap("16px"),...f.shorthands.padding("10px")},containerMobile:{display:"flex",flexDirection:"column",height:"100%",...f.shorthands.gap("16px"),...f.shorthands.padding("10px")},inputSection:{display:"flex",flexDirection:"column",flexGrow:1,maxWidth:"640px",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",position:"relative"},inputSectionMobile:{display:"flex",flexDirection:"column",width:"100%",position:"relative"},historySection:{flexBasis:"300px",flexShrink:0,display:"flex",flexDirection:"column",...f.shorthands.gap("8px"),overflowY:"auto",...f.shorthands.padding("8px")},historySectionMobile:{display:"flex",flexDirection:"column",...f.shorthands.gap("8px"),overflowY:"auto",...f.shorthands.padding("8px"),maxHeight:"300px"},historyCard:{...f.shorthands.padding("12px"),cursor:"pointer","&:hover":{backgroundColor:j.tokens.colorNeutralBackground1Hover}},historyCardContent:{display:"flex",flexDirection:"column",...f.shorthands.gap("4px")},historyDate:{fontSize:j.tokens.fontSizeBase200,color:j.tokens.colorNeutralForeground3},historyText:{fontSize:j.tokens.fontSizeBase300,wordBreak:"break-word",whiteSpace:"pre-wrap",maxHeight:"100px",overflow:"hidden",textOverflow:"ellipsis"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"},historyTitle:{fontSize:j.tokens.fontSizeBase400,fontWeight:j.tokens.fontWeightSemibold,marginBottom:"8px"},emptyState:{textAlign:"center",color:j.tokens.colorNeutralForeground3,padding:"20px"}}),b=({state:g,voice:f})=>{const j=k(),{t:b}=u.default(),[C,w]=r.useState(!1),M=r.useRef(null),T=r.useRef(null),_=r.useRef(null),[N]=r.useState(null),[B,I]=r.useState([]),{service:E}=g,[P,A]=m.useSearchParams(),[D,F]=r.useState(""),[U,$]=r.useState(void 0),O=p.default(),[R,V]=r.useState(void 0),[z,L]=r.useState("info"),[H,W]=r.useState([]),[G,J]=r.useState(!1),Y=i.isMobileDevice(),K=r.useCallback((e=>{for(const r of e)E.getFileInfo(r).then((e=>{I((r=>[...r,e]))}))}),[E,I]),X=r.useCallback((e=>{const r=new FormData;r.append("file",e),E.uploadFile(e.name,r).then((e=>{K([e])})).catch((()=>{O.notify(b("Error"),b("Error uploading pasted image"),"")}))}),[E,K,O,b]),Q=e=>{w(e)},Z=r.useCallback((async()=>{J(!0);try{const e=await E.getMessages(["crm"]);W(e)}catch(e){console.error("Error loading CRM messages:",e),O.notify(b("Error"),b("Failed to load CRM messages"),"","error")}finally{J(!1)}}),[E,O,b]);r.useEffect((()=>{Z()}),[Z]),r.useEffect((()=>{const e=P.get("text"),r=P.get("url");e&&(F(e),P.delete("text")),r&&(P.delete("url"),F(((e||"")+" "+r).trim())),A(P,{replace:!0})}),[P,A,F,E,K]);const ee=e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${g.context.name||g.context.user?.email||g.context.nickname||"-"}`}${N?" "+N:""}${B.length>0?"\n":""}${B.map((e=>`#file:${e.id}`)).join(" ")}`,E.sendMessage(e).then((()=>{O.notify(b("Meddelande"),b("Meddelandet är sparat."),""),Z(),$(""),V(void 0)}))},re=r.useCallback((async e=>{if(!e||e.length<10)return;V(b("Analyserar...")),L("info");const r=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(r){const e=new s.default(r.content);try{const r=JSON.parse(e.content);console.log("json",r);let t=0;for(const e in r)"true"===r[e]&&t++;V(b(4===t?"Allt är med":r.shortSummary||"Något saknas")),L(4===t?"success":"warning")}catch{V("Error: "+e.content),L("error")}}}),[E,b]),te=r.useMemo((()=>h.lodashExports.debounce(re,2e3)),[re]);r.useEffect((()=>()=>{te.cancel()}),[te]);const oe=e=>{const r=new Date,t=new Date(e),o=r.getTime()-t.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),a=Math.floor(o/864e5);return n<1?b("Just now"):n<60?`${n} ${b("minutes ago")}`:s<24?`${s} ${b("hours ago")}`:a<7?`${a} ${b("days ago")}`:t.toLocaleDateString()},ne=e=>{const r=e.split("\n").filter((e=>!e.startsWith("#")&&!e.startsWith("SALESPERSON:")&&e.trim().length>0)).join("\n");return r.substring(0,150)+(r.length>150?"...":"")},se=()=>e.jsxs("div",{className:Y?j.historySectionMobile:j.historySection,children:[e.jsx(x.Text,{className:j.historyTitle,children:b("Tidigare sparade")}),G?e.jsx("div",{className:j.emptyState,children:e.jsx(S.Spinner,{size:"small"})}):0===H.length?e.jsx("div",{className:j.emptyState,children:e.jsx(x.Text,{children:b("Inga sparade meddelanden än")})}):H.map((r=>e.jsx(v.Card,{className:j.historyCard,onClick:()=>(e=>{const r=ne(e.content);$(r)})(r),children:e.jsxs("div",{className:j.historyCardContent,children:[e.jsx(x.Text,{className:j.historyDate,children:oe(r.createdAt)}),e.jsx(x.Text,{className:j.historyText,children:ne(r.content)})]})},r.id)))]});return e.jsx(d.Page,{hideHeader:!0,children:e.jsxs("div",{className:Y?j.containerMobile:j.container,children:[!Y&&se(),e.jsxs("div",{className:Y?j.inputSectionMobile:j.inputSection,style:Y?void 0:{backgroundImage:`url(${a.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[f&&a.getConfigValue("SHOW_VOICE_BUTTON")&&e.jsx("div",{className:j.voiceIcon,children:e.jsx(n.default,{voice:f})}),e.jsx(o.default,{title:a.getConfigValue("APP_SAVE_TITLE")?b(a.getConfigValue("APP_SAVE_TITLE")):b("Spara")}),e.jsx(l.default,{defaultText:D,onSend:ee,files:B,onFilesChange:I,isUploading:C,onUploadImage:()=>{T.current?.triggerUpload()},onUploadCamera:()=>{_.current?.triggerUpload()},getImageUrl:t.CodicentService.getImageUrl,hasLocation:!!N,disableSend:!0,rows:9,placeholder:b("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==U&&($(e),e&&e.trim().length>0?te(e):(V(void 0),te.cancel()))},onImagePasted:X}),R&&e.jsxs("div",{className:j.review,children:[e.jsx("h3",{children:b("Analys")}),e.jsx(q.MessageBar,{intent:z,layout:"multiline",children:e.jsx(y.MessageBarBody,{children:b(R)})})]}),e.jsx(c.default,{ref:M,onFileUploaded:K,onUploading:Q,multiple:!0,codicentService:E}),e.jsx(c.default,{codicentService:E,ref:T,onFileUploaded:K,onUploading:Q,multiple:!0,accept:"image/*"}),e.jsx(c.default,{codicentService:E,ref:_,onFileUploaded:K,onUploading:Q,multiple:!0,accept:"image/*",capture:"environment"})]}),Y&&se()]})})};exports.CrmPagePersistent=b,exports.default=b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("../components/Markdown.js");require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js");var s=require("../components/Title.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("../components/Markdown.js");require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js");var s=require("../components/Title.js"),t=require("../components/Text.js");require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var i=require("react");require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var o=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");var n=require("../utils/helpers.js");require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js");var a=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js");var u=require("../components/Content.js");require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var c=require("../components/Page.js"),l=require("react-router-dom"),d=require("../node_modules/@griffel/react/makeStyles.esm.js"),m=require("../node_modules/@fluentui/react-button/lib/components/Button/Button.js");const j=d.makeStyles({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"}});exports.default=()=>{const{t:d,tAsync:p}=a.default(),[q]=l.useSearchParams(),g=l.useNavigate(),h=q.get("id"),x=j(),[f,v]=i.useState(""),[C,b]=i.useState(!1);return i.useEffect((()=>{(async()=>{const e=o.getConfigValue("FORM_ACCEPT_MARKDOWN");if(e){b(!0);const r=await p(e);b(!1),v(r.replace("{{code}}",n.formatGuidToShorterReadableCode(h||"")))}})()}),[p,h]),e.jsx(c.Page,{hideFooter:!0,hideHeader:!0,children:e.jsx("div",{className:x.container,style:{backgroundImage:`url(${o.getConfigValue("FORM_BACKGROUND_IMAGE_URL")})`},children:e.jsxs(u.default,{children:[C&&e.jsx(t.Text,{children:d("Översätter...")}),o.getConfigValue("FORM_ACCEPT_MARKDOWN")&&f&&!C&&e.jsx(r.default,{content:f}),!o.getConfigValue("FORM_ACCEPT_MARKDOWN")&&e.jsxs(e.Fragment,{children:[e.jsx(s.Title,{children:d("Din kod för formuläret")}),e.jsx("p",{className:x.instructionParagraph,children:d("Instruktioner:")}),e.jsxs("ol",{className:x.orderedList,children:[e.jsx("li",{children:d("Skriv ner eller kopiera den kod som visas nedan, du behöver den för att identifiera din session.")}),e.jsx("li",{children:d("Klicka på 'Starta' för att komma igång med chatten.")})]}),e.jsx(t.Text,{size:500,children:d("Din kod är (skriv ner den):")}),e.jsx(t.Text,{size:600,style:{userSelect:"all"},children:n.formatGuidToShorterReadableCode(h||"")})]}),h&&e.jsx(m.Button,{appearance:"primary",onClick:()=>g(`/chat?fid=${h}`),children:d("Starta")})]})})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react");require("../components/Markdown.js"),require("../components/Textarea.js");var n=require("../components/Button.js");require("../components/CompoundButton.js");var o=require("../components/Title.js");require("../components/Spinner.js");var t=require("../components/Label.js"),i=require("../components/Input.js");require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var a=require("../hooks/useStateWithLocalStorage.js");require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var s=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");var l=require("../utils/helpers.js");require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormAccept.js"),require("./Sales.js"),require("../stores/chatStore.js");var u=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js");var c=require("../components/Content.js");require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js"),p=require("../node_modules/@griffel/react/makeStyles.esm.js"),m=require("../node_modules/@fluentui/react-utilities/lib/hooks/useId.js"),j=require("../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js"),h=require("../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react");require("../components/Markdown.js"),require("../components/Textarea.js");var n=require("../components/Button.js");require("../components/CompoundButton.js");var o=require("../components/Title.js");require("../components/Spinner.js");var t=require("../components/Label.js"),i=require("../components/Input.js");require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js");var a=require("../hooks/useStateWithLocalStorage.js");require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var s=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");var l=require("../utils/helpers.js");require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js");var u=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js");var c=require("../components/Content.js");require("../components/AiInput.js"),require("../components/SearchBox.js"),require("../components/HtmlView.js"),require("../components/Footer.js");var d=require("../components/Page.js"),p=require("../node_modules/@griffel/react/makeStyles.esm.js"),m=require("../node_modules/@fluentui/react-utilities/lib/hooks/useId.js"),j=require("../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js"),h=require("../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js");const q=p.makeStyles({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"}});exports.default=({state:p})=>{const k=q(),{service:g}=p,{t:x}=u.default(),[v,f]=a.default(p.context.selectedApp+"_forms",[]),[b,w]=r.useState(),[S,C]=r.useState(),[y,_]=r.useState(!1),[$,P]=r.useState(),T=m.useId("form-dropdown");r.useEffect((()=>{g.getForms().then((e=>{e.sort(((e,r)=>e.name.localeCompare(r.name))),f(e)}))}),[g,x,f]);const B=void 0!==navigator.share;return e.jsx(d.Page,{children:e.jsx("div",{className:k.container,style:{backgroundImage:`url(${s.getConfigValue("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:e.jsxs(c.default,{children:[e.jsx(o.Title,{children:x("Skapa länk till formulär")}),e.jsx("p",{className:k.instructionParagraph,children:x("Instruktioner")}),e.jsxs("ol",{className:k.orderedList,children:[e.jsx("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.")}),e.jsx("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.")}),e.jsx("li",{children:x("När länken visas, kan du klicka på kopiera-ikonen för att kopiera länken till ditt urklipp.")}),e.jsx("li",{children:x("Om din enhet stödjer det, kan du även använda dela-knappen för att dela länken direkt.")}),e.jsx("li",{children:x("Kom ihåg att spara (skriva ner) koden")})]}),e.jsx("label",{id:T,className:k.instructionParagraph,children:x("Välj formulär")}),e.jsx(j.Dropdown,{"aria-labelledby":T,placeholder:"-",onOptionSelect:(e,r)=>P(r.optionValue),children:v.map((r=>e.jsxs(h.Option,{value:r.name,text:`${r.title} (${r.name})`,children:[`${r.title} (${r.name})`," "]},r.name)))}),e.jsx(n.Button,{appearance:"primary",disabled:!$,onClick:()=>{const e=v.find((e=>e.name===$));e?.url?g.sendMessage(`#ss-link #${$}`).then((r=>{const n=new Date(Date.now()+2592e5);g.generateApiToken(n).then((n=>{const o=e.url.includes("?")?"&":"?",t=`${e.url}${o}token=${n}`;w(t);const i=l.formatGuidToShorterReadableCode(r);C(i)}))})):g.sendMessage(`#ss-link #${$}`).then((e=>{const r=`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}${window.location.pathname}`;w(`${r}#/formaccept?id=${e}`);const n=l.formatGuidToShorterReadableCode(e);C(n)}))},children:x("Skapa länk")}),b&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:k.generatedLinkTitle,children:x("Här är din genererade länk (du kan kopiera eller dela den):")}),e.jsx("div",{className:k.inputAndButton,children:e.jsx(i.Input,{className:k.input,value:b,readOnly:!0,onFocus:e=>e.target.select()})}),e.jsx("br",{}),e.jsxs("div",{className:k.inputAndButton,children:[e.jsx(n.Button,{appearance:"primary",title:x("Kopiera länk"),icon:"CopyRegular",onClick:()=>{b&&(navigator.clipboard.writeText(b),_(!0),setTimeout((()=>{_(!1),w(void 0)}),2e3))},children:x("Kopiera")}),B&&e.jsx(n.Button,{appearance:"primary",title:x("Dela länk"),icon:"ShareRegular",onClick:()=>{b&&(navigator.share({url:b}),setTimeout((()=>{w(void 0)}),2e3))},children:x("Dela")})]}),y&&e.jsx(t.Label,{children:x("Länk kopierad!")})]})]})})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js");var s=require("../components/Text.js");require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("../stores/chatStore.js"),require("../hooks/useLocalization.js"),require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js");var i=require("../components/HtmlView.js");require("../components/Footer.js");var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react");require("../components/Markdown.js"),require("../components/Textarea.js"),require("../components/Button.js"),require("../components/CompoundButton.js");var s=require("../components/Text.js");require("../components/Spinner.js"),require("../components/TextHeader.js"),require("../components/TypingIndicator.js"),require("../components/Dialog.js"),require("../components/ChatInput.js"),require("../components/CombinedPlaceholderDialog.js"),require("../components/ChatMessage.js"),require("../components/Header.js"),require("../services/codicent.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./AppFrame.js"),require("./Chat.js"),require("./Compose.js"),require("./Snap.js"),require("./Search.js"),require("./Login.js"),require("./CrmPage.js"),require("./CrmPagePersistent.js"),require("./ImageView.js"),require("./FormInvite.js"),require("./FormAccept.js"),require("./Sales.js"),require("./Purchase.js"),require("../stores/chatStore.js"),require("../hooks/useLocalization.js"),require("../hooks/useAppStyles.js"),require("../components/FileThumbnail.js"),require("../components/MessageInput.js"),require("../components/UploadFile.js"),require("../components/SnapFooter.js"),require("../components/Profile.js"),require("../components/MessageItem.js"),require("../components/Content.js"),require("../components/AiInput.js"),require("../components/SearchBox.js");var i=require("../components/HtmlView.js");require("../components/Footer.js");var t=require("../components/Page.js"),n=require("../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js");exports.default=({state:o})=>{const c=window.location.hash.match(/^#\/html\/(.+)$/),a=c?decodeURIComponent(c[1]):"",[u,l]=r.useState(),[d,j]=r.useState(!1),[m,p]=r.useState(),{service:h}=o;return r.useEffect((()=>{a&&h?(j(!0),p(void 0),h.getMessagesFast([a],void 0,1).then((e=>{if(0===e.length)return void p(`No messages found with tag: ${a}`);const r=e[0].content;l((e=>{const r=e.indexOf("```html");if(-1!==r){const s=e.indexOf("```",r+7);return-1===s?e.substring(r+7):e.substring(r+7,s)}const s=[/<!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 r of s){const s=e.match(r);if(s)return s[0]}if(e.includes("<html")||e.includes("<!DOCTYPE")||e.includes("<div")||e.includes("<p>")||e.includes("<span")){const r=["<!DOCTYPE","<html","<div","<body","<article","<section"];let s=-1;for(const i of r){const r=e.indexOf(i);-1!==r&&(-1===s||r<s)&&(s=r)}if(-1!==s){let r=e.substring(s);const i=["</html>","</body>","</div>"];for(const e of i){const s=r.lastIndexOf(e);if(-1!==s){r=r.substring(0,s+e.length);break}}return r}return e}return e})(r))})).catch((e=>{console.error("Error fetching message:",e),p(`Error fetching message: ${e.message||"Unknown error"}`)})).finally((()=>{j(!1)}))):p("No tag provided or service unavailable")}),[a,h]),d?e.jsx(t.Page,{hideHeader:!0,hideFooter:!0,children:e.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:e.jsx(n.Spinner,{})})}):m?e.jsx(t.Page,{hideHeader:!0,hideFooter:!0,children:e.jsxs("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh",flexDirection:"column",gap:"20px"},children:[e.jsx(s.Text,{children:m}),e.jsxs(s.Text,{children:["Tag: ",a]})]})}):u?e.jsx(i.default,{html:u,onDismiss:()=>window.history.back()}):e.jsx(t.Page,{hideHeader:!0,hideFooter:!0,children:e.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:e.jsx(s.Text,{children:"No HTML content available"})})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login.d.ts","sourceRoot":"","sources":["../../../src/pages/Login.tsx"],"names":[],"mappings":"AAWA,OAAO,
|
|
1
|
+
{"version":3,"file":"Login.d.ts","sourceRoot":"","sources":["../../../src/pages/Login.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;AA8B3E,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,CAuGhD,CAAC;AAEF,eAAe,KAAK,CAAC"}
|