codicent-app-sdk 0.3.119 → 0.4.0
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/README.md +173 -26
- package/dist/cjs/_virtual/jsQR.js +1 -0
- package/dist/cjs/bootstrap.d.ts +112 -0
- package/dist/cjs/bootstrap.d.ts.map +1 -0
- package/dist/cjs/bootstrap.js +1 -0
- package/dist/cjs/components/AiInput.js +1 -1
- package/dist/cjs/components/AudioIcon.js +1 -1
- package/dist/cjs/components/BulkUploadDialog.d.ts +16 -0
- package/dist/cjs/components/BulkUploadDialog.d.ts.map +1 -0
- package/dist/cjs/components/BulkUploadDialog.js +1 -0
- 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/ErrorBoundary.d.ts +17 -0
- package/dist/cjs/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/cjs/components/ErrorBoundary.js +1 -0
- package/dist/cjs/components/Footer.js +1 -1
- package/dist/cjs/components/GenericJsonRenderer.d.ts +20 -0
- package/dist/cjs/components/GenericJsonRenderer.d.ts.map +1 -0
- package/dist/cjs/components/GenericJsonRenderer.js +1 -0
- package/dist/cjs/components/Header.js +1 -1
- package/dist/cjs/components/HtmlView.js +1 -1
- package/dist/cjs/components/LanguageSelector.d.ts +11 -0
- package/dist/cjs/components/LanguageSelector.d.ts.map +1 -0
- package/dist/cjs/components/LanguageSelector.js +1 -0
- package/dist/cjs/components/ListView.d.ts +39 -0
- package/dist/cjs/components/ListView.d.ts.map +1 -0
- package/dist/cjs/components/ListView.js +1 -0
- package/dist/cjs/components/MessageInput.js +1 -1
- package/dist/cjs/components/MessageItem.js +1 -1
- package/dist/cjs/components/OfflineMessage.d.ts +6 -0
- package/dist/cjs/components/OfflineMessage.d.ts.map +1 -0
- package/dist/cjs/components/OfflineMessage.js +1 -0
- package/dist/cjs/components/Profile.js +1 -1
- package/dist/cjs/components/Prompt.js +1 -1
- package/dist/cjs/components/QrScanner.d.ts +12 -0
- package/dist/cjs/components/QrScanner.d.ts.map +1 -0
- package/dist/cjs/components/QrScanner.js +1 -0
- package/dist/cjs/components/RecordModal.d.ts +13 -0
- package/dist/cjs/components/RecordModal.d.ts.map +1 -0
- package/dist/cjs/components/RecordModal.js +1 -0
- 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/components/index.d.ts +9 -0
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/config/index.d.ts +2 -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 +3 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/useAuthState.d.ts.map +1 -1
- package/dist/cjs/hooks/useAuthState.js +1 -1
- package/dist/cjs/hooks/useCodicentState.js +1 -1
- package/dist/cjs/hooks/useDebugLogs.d.ts +6 -0
- package/dist/cjs/hooks/useDebugLogs.d.ts.map +1 -0
- package/dist/cjs/hooks/useDebugLogs.js +1 -0
- package/dist/cjs/hooks/useObserveDataSchemas.d.ts +42 -0
- package/dist/cjs/hooks/useObserveDataSchemas.d.ts.map +1 -0
- package/dist/cjs/hooks/useObserveDataSchemas.js +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/node_modules/@auth0/auth0-react/dist/auth0-react.esm.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-button/lib/contexts/ButtonContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/Checkbox.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/renderCheckbox.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckbox.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckboxStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/Dialog.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/renderDialog.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialog.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialogContextValues.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/DialogActions.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/renderDialogActions.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActions.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActionsStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBackdropMotion.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/DialogBody.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/renderDialogBody.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBody.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBodyStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/DialogContent.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/renderDialogContent.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContent.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContentStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/DialogSurface.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/renderDialogSurface.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurface.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceContextValues.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogSurfaceMotion.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/DialogTitle.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/renderDialogTitle.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitle.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitleStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/DialogTrigger.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/renderDialogTrigger.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/useDialogTrigger.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/components/MotionRefForwarder.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/contexts/dialogContext.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/contexts/dialogSurfaceContext.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-dialog/lib/utils/useFocusFirstElement.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/contexts/IconDirectionContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-5.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-6.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-menu/lib/components/Menu/useMenu.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-menu/lib/components/MenuItem/useMenuItem.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/MessageBarActions.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/renderMessageBarActions.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActions.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsContextValues.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/MessageBarTitle.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/renderMessageBarTitle.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitle.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitleStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-motion/lib/slots/presenceMotionSlot.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-motion-components-preview/lib/components/Fade/Fade.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-positioning/lib/utils/mergeArrowOffset.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/FluentProvider.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/createCSSRuleFromTheme.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/renderFluentProvider.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProvider.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderContextValues.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderThemeStyleTag.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-search/lib/components/SearchBox/useSearchBox.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/OverridesContext/OverridesContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ProviderContext/ProviderContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ThemeClassNameContext/ThemeClassNameContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/ThemeContext/ThemeContext.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-shared-contexts/lib/TooltipVisibilityContext/TooltipContext.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-tabster/lib/hooks/useIsNavigatingWithKeyboard.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePicker.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/Tooltip.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/private/constants.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/renderTooltip.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltip.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltipStyles.styles.js +1 -0
- package/dist/cjs/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js +1 -1
- package/dist/cjs/node_modules/@fluentui/tokens/lib/alias/lightColor.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/alias/lightColorPalette.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/borderRadius.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/colorPalette.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/colors.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/curves.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/durations.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/fonts.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/spacings.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/global/strokeWidths.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/sharedColorNames.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/statusColorMapping.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/utils/createLightTheme.js +1 -0
- package/dist/cjs/node_modules/@fluentui/tokens/lib/utils/shadows.js +1 -0
- package/dist/cjs/node_modules/@griffel/react/TextDirectionContext.esm.js +1 -1
- package/dist/cjs/node_modules/jsqr/dist/jsQR.js +1 -0
- 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.js +1 -1
- package/dist/cjs/pages/Debug.d.ts +4 -0
- package/dist/cjs/pages/Debug.d.ts.map +1 -0
- package/dist/cjs/pages/Debug.js +1 -0
- package/dist/cjs/pages/FormAccept.js +1 -1
- package/dist/cjs/pages/FormInvite.js +1 -1
- package/dist/cjs/pages/FormPage.d.ts +11 -0
- package/dist/cjs/pages/FormPage.d.ts.map +1 -0
- package/dist/cjs/pages/FormPage.js +1 -0
- package/dist/cjs/pages/Help.d.ts +7 -0
- package/dist/cjs/pages/Help.d.ts.map +1 -0
- package/dist/cjs/pages/Help.js +1 -0
- package/dist/cjs/pages/HtmlViewer.js +1 -1
- package/dist/cjs/pages/Login.js +1 -1
- package/dist/cjs/pages/Purchase.js +1 -1
- package/dist/cjs/pages/QrScan.d.ts +12 -0
- package/dist/cjs/pages/QrScan.d.ts.map +1 -0
- package/dist/cjs/pages/QrScan.js +1 -0
- package/dist/cjs/pages/Sales.js +1 -1
- package/dist/cjs/pages/SchemaEditor.d.ts +2 -0
- package/dist/cjs/pages/SchemaEditor.d.ts.map +1 -0
- package/dist/cjs/pages/SchemaEditor.js +1 -0
- package/dist/cjs/pages/Search.js +1 -1
- package/dist/cjs/pages/Snap.js +1 -1
- package/dist/cjs/pages/index.d.ts +5 -0
- package/dist/cjs/pages/index.d.ts.map +1 -1
- package/dist/cjs/services/codicent.d.ts +7 -0
- package/dist/cjs/services/codicent.d.ts.map +1 -1
- package/dist/cjs/services/codicent.js +1 -1
- package/dist/cjs/types/index.d.ts +188 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/utils/appState.d.ts.map +1 -1
- package/dist/cjs/utils/appState.js +1 -1
- package/dist/esm/_virtual/jsQR.js +1 -0
- package/dist/esm/bootstrap.d.ts +112 -0
- package/dist/esm/bootstrap.d.ts.map +1 -0
- package/dist/esm/bootstrap.js +1 -0
- package/dist/esm/components/AiInput.js +1 -1
- package/dist/esm/components/AudioIcon.js +1 -1
- package/dist/esm/components/BulkUploadDialog.d.ts +16 -0
- package/dist/esm/components/BulkUploadDialog.d.ts.map +1 -0
- package/dist/esm/components/BulkUploadDialog.js +1 -0
- 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/ErrorBoundary.d.ts +17 -0
- package/dist/esm/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/esm/components/ErrorBoundary.js +1 -0
- package/dist/esm/components/Footer.js +1 -1
- package/dist/esm/components/GenericJsonRenderer.d.ts +20 -0
- package/dist/esm/components/GenericJsonRenderer.d.ts.map +1 -0
- package/dist/esm/components/GenericJsonRenderer.js +1 -0
- package/dist/esm/components/Header.js +1 -1
- package/dist/esm/components/HtmlView.js +1 -1
- package/dist/esm/components/LanguageSelector.d.ts +11 -0
- package/dist/esm/components/LanguageSelector.d.ts.map +1 -0
- package/dist/esm/components/LanguageSelector.js +1 -0
- package/dist/esm/components/ListView.d.ts +39 -0
- package/dist/esm/components/ListView.d.ts.map +1 -0
- package/dist/esm/components/ListView.js +1 -0
- package/dist/esm/components/MessageInput.js +1 -1
- package/dist/esm/components/MessageItem.js +1 -1
- package/dist/esm/components/OfflineMessage.d.ts +6 -0
- package/dist/esm/components/OfflineMessage.d.ts.map +1 -0
- package/dist/esm/components/OfflineMessage.js +1 -0
- package/dist/esm/components/Profile.js +1 -1
- package/dist/esm/components/Prompt.js +1 -1
- package/dist/esm/components/QrScanner.d.ts +12 -0
- package/dist/esm/components/QrScanner.d.ts.map +1 -0
- package/dist/esm/components/QrScanner.js +1 -0
- package/dist/esm/components/RecordModal.d.ts +13 -0
- package/dist/esm/components/RecordModal.d.ts.map +1 -0
- package/dist/esm/components/RecordModal.js +1 -0
- 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/components/index.d.ts +9 -0
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/config/index.d.ts +2 -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 +3 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/useAuthState.d.ts.map +1 -1
- package/dist/esm/hooks/useAuthState.js +1 -1
- package/dist/esm/hooks/useCodicentState.js +1 -1
- package/dist/esm/hooks/useDebugLogs.d.ts +6 -0
- package/dist/esm/hooks/useDebugLogs.d.ts.map +1 -0
- package/dist/esm/hooks/useDebugLogs.js +1 -0
- package/dist/esm/hooks/useObserveDataSchemas.d.ts +42 -0
- package/dist/esm/hooks/useObserveDataSchemas.d.ts.map +1 -0
- package/dist/esm/hooks/useObserveDataSchemas.js +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/node_modules/@auth0/auth0-react/dist/auth0-react.esm.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-button/lib/contexts/ButtonContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/Checkbox.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/renderCheckbox.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckbox.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-checkbox/lib/components/Checkbox/useCheckboxStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/Dialog.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/renderDialog.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialog.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/Dialog/useDialogContextValues.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/DialogActions.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/renderDialogActions.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActions.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogActions/useDialogActionsStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBackdropMotion.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/DialogBody.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/renderDialogBody.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBody.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogBody/useDialogBodyStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/DialogContent.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/renderDialogContent.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContent.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogContent/useDialogContentStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/DialogSurface.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/renderDialogSurface.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurface.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceContextValues.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurface/useDialogSurfaceStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogSurfaceMotion.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/DialogTitle.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/renderDialogTitle.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitle.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTitle/useDialogTitleStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/DialogTrigger.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/renderDialogTrigger.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/DialogTrigger/useDialogTrigger.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/components/MotionRefForwarder.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/contexts/dialogContext.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/contexts/dialogSurfaceContext.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/utils/useDisableBodyScroll.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-dialog/lib/utils/useFocusFirstElement.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-icons/lib/contexts/IconDirectionContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-5.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-6.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-menu/lib/components/Menu/useMenu.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-menu/lib/components/MenuItem/useMenuItem.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/MessageBarActions.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/renderMessageBarActions.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActions.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsContextValues.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/useMessageBarActionsStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/MessageBarTitle.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/renderMessageBarTitle.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitle.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/useMessageBarTitleStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-motion/lib/slots/presenceMotionSlot.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-motion-components-preview/lib/components/Fade/Fade.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-positioning/lib/utils/mergeArrowOffset.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/FluentProvider.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/createCSSRuleFromTheme.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/renderFluentProvider.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProvider.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderContextValues.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-provider/lib/components/FluentProvider/useFluentProviderThemeStyleTag.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-search/lib/components/SearchBox/useSearchBox.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/CustomStyleHooksContext/CustomStyleHooksContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/OverridesContext/OverridesContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ProviderContext/ProviderContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ThemeClassNameContext/ThemeClassNameContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/ThemeContext/ThemeContext.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-shared-contexts/lib/TooltipVisibilityContext/TooltipContext.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-tabster/lib/hooks/useIsNavigatingWithKeyboard.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePicker.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/Tooltip.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/private/constants.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/renderTooltip.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltip.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-tooltip/lib/components/Tooltip/useTooltipStyles.styles.js +1 -0
- package/dist/esm/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js +1 -1
- package/dist/esm/node_modules/@fluentui/tokens/lib/alias/lightColor.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/alias/lightColorPalette.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/borderRadius.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/colorPalette.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/colors.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/curves.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/durations.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/fonts.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/spacings.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/global/strokeWidths.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/sharedColorNames.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/statusColorMapping.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/utils/createLightTheme.js +1 -0
- package/dist/esm/node_modules/@fluentui/tokens/lib/utils/shadows.js +1 -0
- package/dist/esm/node_modules/@griffel/react/TextDirectionContext.esm.js +1 -1
- package/dist/esm/node_modules/jsqr/dist/jsQR.js +1 -0
- 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.js +1 -1
- package/dist/esm/pages/Debug.d.ts +4 -0
- package/dist/esm/pages/Debug.d.ts.map +1 -0
- package/dist/esm/pages/Debug.js +1 -0
- package/dist/esm/pages/FormAccept.js +1 -1
- package/dist/esm/pages/FormInvite.js +1 -1
- package/dist/esm/pages/FormPage.d.ts +11 -0
- package/dist/esm/pages/FormPage.d.ts.map +1 -0
- package/dist/esm/pages/FormPage.js +1 -0
- package/dist/esm/pages/Help.d.ts +7 -0
- package/dist/esm/pages/Help.d.ts.map +1 -0
- package/dist/esm/pages/Help.js +1 -0
- package/dist/esm/pages/HtmlViewer.js +1 -1
- package/dist/esm/pages/Login.js +1 -1
- package/dist/esm/pages/Purchase.js +1 -1
- package/dist/esm/pages/QrScan.d.ts +12 -0
- package/dist/esm/pages/QrScan.d.ts.map +1 -0
- package/dist/esm/pages/QrScan.js +1 -0
- package/dist/esm/pages/Sales.js +1 -1
- package/dist/esm/pages/SchemaEditor.d.ts +2 -0
- package/dist/esm/pages/SchemaEditor.d.ts.map +1 -0
- package/dist/esm/pages/SchemaEditor.js +1 -0
- package/dist/esm/pages/Search.js +1 -1
- package/dist/esm/pages/Snap.js +1 -1
- package/dist/esm/pages/index.d.ts +5 -0
- package/dist/esm/pages/index.d.ts.map +1 -1
- package/dist/esm/services/codicent.d.ts +7 -0
- package/dist/esm/services/codicent.d.ts.map +1 -1
- package/dist/esm/services/codicent.js +1 -1
- package/dist/esm/types/index.d.ts +188 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/utils/appState.d.ts.map +1 -1
- package/dist/esm/utils/appState.js +1 -1
- package/dist/index.d.ts +523 -28
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useRef as n,useCallback as r,useEffect as i,useMemo as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useRef as n,useCallback as r,useEffect as i,useMemo as s}from"react";import{CodicentService as a}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import m from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import p from"../components/VoiceIcon.js";import l from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as c}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import d from"../components/MessageInput.js";import u from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as g}from"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import j from"../hooks/useLocalization.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"./QrScan.js";import"react-dom/client";import{useNavigate as f,useSearchParams as h}from"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import v from"../hooks/useToaster.js";import{l as k}from"../node_modules/lodash/lodash.js";import{makeStyles as b}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as S}from"../node_modules/@griffel/core/index.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Button as w}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MessageBar as _}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js";import{MessageBarBody as y}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js";import{ArrowLeft24Regular as B}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js";const I=b({main:{flexGrow:1,...S.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%",position:"relative"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:x.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"},review:{padding:"10px",wordBreak:"break-word",whiteSpace:"pre-line",maxWidth:"100%",overflowWrap:"break-word"},voiceIcon:{position:"absolute",top:"20px",right:"12px",zIndex:1001,cursor:"pointer"},backButton:{marginBottom:"10px"}}),C=({state:b,voice:S})=>{const x=I(),{t:C}=j(),M=f(),[U,A]=t(!1),T=n(null),F=n(null),N=n(null),[P]=t(null),[E,L]=t([]),{service:O}=b,[R,$]=h(),[V,D]=t(""),[z,H]=t(void 0),G=v(),[W,Q]=t(void 0),[J,K]=t("info"),X=r((e=>{for(const o of e)O.getFileInfo(o).then((e=>{L((o=>[...o,e]))}))}),[O,L]),Y=r((e=>{const o=new FormData;o.append("file",e),O.uploadFile(e.name,o).then((e=>{X([e])})).catch((()=>{G.notify(C("Error"),C("Error uploading pasted image"),"")}))}),[O,X,G,C]),q=e=>{A(e)};i((()=>{const e=R.get("text"),o=R.get("url");e&&(D(e),R.delete("text")),o&&(R.delete("url"),D(((e||"")+" "+o).trim())),$(R,{replace:!0})}),[R,$,D,O,X]);const Z=r((async e=>{if(!e||e.length<10)return;Q(C("Analyserar...")),K("info");const o=await O.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(o){const e=new l(o.content);try{const o=JSON.parse(e.content);console.log("json",o);let t=0;for(const e in o)"true"===o[e]&&t++;Q(C(4===t?"Allt är med":o.shortSummary||"Något saknas")),K(4===t?"success":"warning")}catch{Q("Error: "+e.content),K("error")}}}),[O]),ee=s((()=>k.debounce(Z,2e3)),[Z]);return i((()=>()=>{ee.cancel()}),[ee]),e(g,{hideHeader:!0,children:o("div",{className:x.container,style:{backgroundImage:`url(${c("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[S&&c("SHOW_VOICE_BUTTON")&&e("div",{className:x.voiceIcon,children:e(p,{voice:S})}),e("div",{className:x.backButton,children:e(w,{appearance:"subtle",icon:e(B,{}),onClick:()=>M(-1),children:C("Tillbaka")})}),e(m,{title:c("APP_SAVE_TITLE")?C(c("APP_SAVE_TITLE")):C("Spara")}),e(d,{defaultText:V,onSend:e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${b.context.name||b.context.user?.email||b.context.nickname||"-"}`}${P?" "+P:""}${E.length>0?"\n":""}${E.map((e=>`#file:${e.id}`)).join(" ")}`,O.sendMessage(e).then((()=>{G.notify(C("Meddelande"),C("Meddelandet är sparat."),"")}))},files:E,onFilesChange:L,isUploading:U,onUploadImage:()=>{F.current?.triggerUpload()},onUploadCamera:()=>{N.current?.triggerUpload()},getImageUrl:a.getImageUrl,hasLocation:!!P,disableSend:!0,rows:9,placeholder:C("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==z&&(H(e),e&&e.trim().length>0?ee(e):(Q(void 0),ee.cancel()))},onImagePasted:Y}),W&&o("div",{className:x.review,children:[e("h3",{children:C("Analys")}),e(_,{intent:J,layout:"multiline",children:e(y,{children:C(W)})})]}),e(u,{ref:T,onFileUploaded:X,onUploading:q,multiple:!0,codicentService:O}),e(u,{codicentService:O,ref:F,onFileUploaded:X,onUploading:q,multiple:!0,accept:"image/*"}),e(u,{codicentService:O,ref:N,onFileUploaded:X,onUploading:q,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{C as CrmPage,C as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useRef as n,useCallback as r,useEffect as i,useMemo as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useRef as n,useCallback as r,useEffect as i,useMemo as s}from"react";import{CodicentService as a}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import l from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import m from"../components/VoiceIcon.js";import c from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{isMobileDevice as d}from"../utils/device.js";import"../components/FileThumbnail.js";import u from"../components/MessageInput.js";import f from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{Page as g}from"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import h from"../hooks/useLocalization.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"./QrScan.js";import"react-dom/client";import{useNavigate as j,useSearchParams as x}from"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import S from"../hooks/useToaster.js";import{l as v}from"../node_modules/lodash/lodash.js";import{makeStyles as y}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as k}from"../node_modules/@griffel/core/index.esm.js";import{tokens as b}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Text as w}from"../node_modules/@fluentui/react-text/lib/components/Text/Text.js";import{Spinner as C}from"../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js";import{Card as M}from"../node_modules/@fluentui/react-card/lib/components/Card/Card.js";import{Button as _}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MessageBar as N}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js";import{MessageBarBody as B}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js";import{ArrowLeft24Regular as T}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js";const I=y({main:{flexGrow:1,...k.padding("10px"),overflowY:"auto"},container:{display:"flex",flexDirection:"row",height:"100%",...k.gap("16px"),...k.padding("10px")},containerMobile:{display:"flex",flexDirection:"column",height:"100%",...k.gap("16px"),...k.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",...k.gap("8px"),overflowY:"auto",...k.padding("8px")},historySectionMobile:{display:"flex",flexDirection:"column",...k.gap("8px"),overflowY:"auto",...k.padding("8px"),maxHeight:"300px"},historyCard:{...k.padding("12px"),cursor:"pointer","&:hover":{backgroundColor:b.colorNeutralBackground1Hover}},historyCardContent:{display:"flex",flexDirection:"column",...k.gap("4px")},historyDate:{fontSize:b.fontSizeBase200,color:b.colorNeutralForeground3},historyText:{fontSize:b.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:b.fontSizeBase400,fontWeight:b.fontWeightSemibold,marginBottom:"8px"},emptyState:{textAlign:"center",color:b.colorNeutralForeground3,padding:"20px"},backButton:{marginBottom:"10px"}}),D=({state:y,voice:k})=>{const b=I(),{t:D}=h(),U=j(),[A,E]=t(!1),F=n(null),$=n(null),P=n(null),[O]=t(null),[z,L]=t([]),{service:R}=y,[H,V]=x(),[W,G]=t(""),[J,Q]=t(void 0),Y=S(),[K,X]=t(void 0),[q,Z]=t("info"),[ee,oe]=t([]),[te,ne]=t(!1),re=d(),ie=r((e=>{for(const o of e)R.getFileInfo(o).then((e=>{L((o=>[...o,e]))}))}),[R,L]),se=r((e=>{const o=new FormData;o.append("file",e),R.uploadFile(e.name,o).then((e=>{ie([e])})).catch((()=>{Y.notify(D("Error"),D("Error uploading pasted image"),"")}))}),[R,ie,Y,D]),ae=e=>{E(e)},le=r((async()=>{ne(!0);try{const e=await R.getMessages(["crm"]);oe(e)}catch(e){console.error("Error loading CRM messages:",e),Y.notify(D("Error"),D("Failed to load CRM messages"),"","error")}finally{ne(!1)}}),[R,Y,D]);i((()=>{le()}),[le]),i((()=>{const e=H.get("text"),o=H.get("url");e&&(G(e),H.delete("text")),o&&(H.delete("url"),G(((e||"")+" "+o).trim())),V(H,{replace:!0})}),[H,V,G,R,ie]);const me=e=>{e=`${e=`#crm\n${e.replace("#log ","")}\nSALESPERSON: ${y.context.name||y.context.user?.email||y.context.nickname||"-"}`}${O?" "+O:""}${z.length>0?"\n":""}${z.map((e=>`#file:${e.id}`)).join(" ")}`,R.sendMessage(e).then((()=>{Y.notify(D("Meddelande"),D("Meddelandet är sparat."),""),le(),Q(""),X(void 0)}))},ce=r((async e=>{if(!e||e.length<10)return;X(D("Analyserar...")),Z("info");const o=await R.chat((e=>`Skapa kort ja/nej-status över hur CRM-aktiviteten som följer, givet dessa punkter: \n1. Namn på kunden finns med? ja/nej \n2. Syftet med mötet finns (varför träffar du kunden, kan täckas av 3 nedan) ja/nej\n3. Vad som framkommer under mötet (viktiga punkter och diskussioner) ja/nej\n4. Nästa steg finns med (hur ni kommer att träffas igen, och om något har sålts) ja/nej. \n\nSvara endast med ja/nej för varje punkt, ett svar per rad i följande exempel i JSON-format:\n{\n "customerName": "true",\n "purpose": "false",\n "meetingNotes": "true",\n "nextSteps": "false",\n "shortSummary": "Syfte med mötet och nästa steg saknas."\n}\n\n---\nTEXT:\n\n${e}`)(e));if(o){const e=new c(o.content);try{const o=JSON.parse(e.content);console.log("json",o);let t=0;for(const e in o)"true"===o[e]&&t++;X(D(4===t?"Allt är med":o.shortSummary||"Något saknas")),Z(4===t?"success":"warning")}catch{X("Error: "+e.content),Z("error")}}}),[R,D]),pe=s((()=>v.debounce(ce,2e3)),[ce]);i((()=>()=>{pe.cancel()}),[pe]);const de=e=>{const o=new Date,t=new Date(e),n=o.getTime()-t.getTime(),r=Math.floor(n/6e4),i=Math.floor(n/36e5),s=Math.floor(n/864e5);return r<1?D("Just now"):r<60?`${r} ${D("minutes ago")}`:i<24?`${i} ${D("hours ago")}`:s<7?`${s} ${D("days ago")}`:t.toLocaleDateString()},ue=e=>{const o=e.split("\n").filter((e=>!e.startsWith("#")&&!e.startsWith("SALESPERSON:")&&e.trim().length>0)).join("\n");return o.substring(0,150)+(o.length>150?"...":"")},fe=()=>o("div",{className:re?b.historySectionMobile:b.historySection,children:[e(w,{className:b.historyTitle,children:D("Tidigare sparade")}),te?e("div",{className:b.emptyState,children:e(C,{size:"small"})}):0===ee.length?e("div",{className:b.emptyState,children:e(w,{children:D("Inga sparade meddelanden än")})}):ee.map((t=>e(M,{className:b.historyCard,onClick:()=>(e=>{const o=ue(e.content);Q(o)})(t),children:o("div",{className:b.historyCardContent,children:[e(w,{className:b.historyDate,children:de(t.createdAt)}),e(w,{className:b.historyText,children:ue(t.content)})]})},t.id)))]});return e(g,{hideHeader:!0,children:o("div",{className:re?b.containerMobile:b.container,children:[!re&&fe(),o("div",{className:re?b.inputSectionMobile:b.inputSection,style:re?void 0:{backgroundImage:`url(${p("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[k&&p("SHOW_VOICE_BUTTON")&&e("div",{className:b.voiceIcon,children:e(m,{voice:k})}),e("div",{className:b.backButton,children:e(_,{appearance:"subtle",icon:e(T,{}),onClick:()=>U(-1),children:D("Tillbaka")})}),e(l,{title:p("APP_SAVE_TITLE")?D(p("APP_SAVE_TITLE")):D("Spara")}),e(u,{defaultText:W,onSend:me,files:z,onFilesChange:L,isUploading:A,onUploadImage:()=>{$.current?.triggerUpload()},onUploadCamera:()=>{P.current?.triggerUpload()},getImageUrl:a.getImageUrl,hasLocation:!!O,disableSend:!0,rows:9,placeholder:D("Beskriv CRM-aktivitet här..."),onChange:e=>{e!==J&&(Q(e),e&&e.trim().length>0?pe(e):(X(void 0),pe.cancel()))},onImagePasted:se}),K&&o("div",{className:b.review,children:[e("h3",{children:D("Analys")}),e(N,{intent:q,layout:"multiline",children:e(B,{children:D(K)})})]}),e(f,{ref:F,onFileUploaded:ie,onUploading:ae,multiple:!0,codicentService:R}),e(f,{codicentService:R,ref:$,onFileUploaded:ie,onUploading:ae,multiple:!0,accept:"image/*"}),e(f,{codicentService:R,ref:P,onFileUploaded:ie,onUploading:ae,multiple:!0,accept:"image/*",capture:"environment"})]}),re&&fe()]})})};export{D as CrmPagePersistent,D as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Debug.d.ts","sourceRoot":"","sources":["../../../src/pages/Debug.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAGjD,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAgDlB,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as o,jsx as r}from"react/jsx-runtime";import{useRef as e,useEffect as t}from"react";import i from"../hooks/useDebugLogs.js";const n=()=>{const{logs:n,clearLogs:l}=i(),c=e(null);return t((()=>{c.current&&(c.current.scrollTop=c.current.scrollHeight)}),[n]),o("div",{style:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"#000",color:"#fff",padding:"10px",fontFamily:"monospace",fontSize:"12px",lineHeight:"1.5",overflowY:"auto"},ref:c,children:[r("div",{style:{position:"sticky",top:0,backgroundColor:"#000",padding:"5px 0",zIndex:1},children:r("button",{onClick:l,style:{backgroundColor:"#f44336",color:"white",border:"none",padding:"5px 10px",cursor:"pointer"},children:"Clear Logs"})}),n.map(((o,e)=>r("div",{children:o},e)))]})};export{n as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import r from"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Title as i}from"../components/Title.js";import{Text as n}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{useState as s,useEffect as m}from"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as a}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./Sales.js";import"./Purchase.js";import c from"../
|
|
1
|
+
import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import r from"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Title as i}from"../components/Title.js";import{Text as n}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{useState as s,useEffect as m}from"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as a}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./Sales.js";import"./Purchase.js";import c from"../components/Content.js";import{Page as l}from"../components/Page.js";import"./QrScan.js";import d from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import{useSearchParams as j,useNavigate as u}from"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{makeStyles as h}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Button as g}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";const f=h({container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},instructionParagraph:{fontWeight:"bold",marginBottom:"1em"},orderedList:{marginLeft:"20px",marginBottom:"1em",fontSize:"1.3em"}}),k=()=>{const{t:h,tAsync:k}=d(),[C]=j(),_=u(),b=C.get("id"),S=f(),[v,M]=s(""),[y,P]=s(!1);return m((()=>{(async()=>{const o=p("FORM_ACCEPT_MARKDOWN");if(o){P(!0);const t=await k(o);P(!1),M(t.replace("{{code}}",a(b||"")))}})()}),[k,b]),o(l,{hideFooter:!0,hideHeader:!0,children:o("div",{className:S.container,style:{backgroundImage:`url(${p("FORM_BACKGROUND_IMAGE_URL")})`},children:t(c,{children:[y&&o(n,{children:h("Översätter...")}),p("FORM_ACCEPT_MARKDOWN")&&v&&!y&&o(r,{content:v}),!p("FORM_ACCEPT_MARKDOWN")&&t(e,{children:[o(i,{children:h("Din kod för formuläret")}),o("p",{className:S.instructionParagraph,children:h("Instruktioner:")}),t("ol",{className:S.orderedList,children:[o("li",{children:h("Skriv ner eller kopiera den kod som visas nedan, du behöver den för att identifiera din session.")}),o("li",{children:h("Klicka på 'Starta' för att komma igång med chatten.")})]}),o(n,{size:500,children:h("Din kod är (skriv ner den):")}),o(n,{size:600,style:{userSelect:"all"},children:a(b||"")})]}),b&&o(g,{appearance:"primary",onClick:()=>_(`/chat?fid=${b}`),children:h("Starta")})]})})})};export{k as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as i}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import{Label as s}from"../components/Label.js";import{Input as m}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import p from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as l}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as c}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import d from"../
|
|
1
|
+
import{jsx as o,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as i}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import{Label as s}from"../components/Label.js";import{Input as m}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import p from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as l}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{formatGuidToShorterReadableCode as c}from"../utils/helpers.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import d from"../components/Content.js";import{Page as u}from"../components/Page.js";import"./QrScan.js";import j from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{makeStyles as h}from"../node_modules/@griffel/react/makeStyles.esm.js";import{useId as k}from"../node_modules/@fluentui/react-utilities/lib/hooks/useId.js";import{Dropdown as g}from"../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js";import{Option as f}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const v=h({inputAndButton:{display:"flex",gap:"10px"},input:{minWidth:"90%"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},generatedLinkTitle:{marginBottom:"0.5em",fontWeight:"bold"},orderedList:{marginLeft:"20px",marginBottom:"1em"},instructionParagraph:{marginBottom:"1em",fontWeight:"bold"}}),b=({state:h})=>{const b=v(),{service:w}=h,{t:S}=j(),[x,C]=p(h.context.selectedApp+"_forms",[]),[y,$]=n(),[_,L]=n(),[D,M]=n(!1),[P,A]=n(),B=k("form-dropdown");r((()=>{w.getForms().then((o=>{o.sort(((o,e)=>o.name.localeCompare(e.name))),C(o)}))}),[w,S,C]);const I=void 0!==navigator.share;return o(u,{children:o("div",{className:b.container,style:{backgroundImage:`url(${l("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:e(d,{children:[o(a,{children:S("Skapa länk till formulär")}),o("p",{className:b.instructionParagraph,children:S("Instruktioner")}),e("ol",{className:b.orderedList,children:[o("li",{children:S("Välj ett formulär från rullgardinsmenyn nedan. Detta formulär kommer att användas för den genererade länken.")}),o("li",{children:S("Klicka på 'Skapa länk' för att generera en unik länk. Länken visar var aktiv och kan användas för att svara på formuläret.")}),o("li",{children:S("När länken visas, kan du klicka på kopiera-ikonen för att kopiera länken till ditt urklipp.")}),o("li",{children:S("Om din enhet stödjer det, kan du även använda dela-knappen för att dela länken direkt.")}),o("li",{children:S("Kom ihåg att spara (skriva ner) koden")})]}),o("label",{id:B,className:b.instructionParagraph,children:S("Välj formulär")}),o(g,{"aria-labelledby":B,placeholder:"-",onOptionSelect:(o,e)=>A(e.optionValue),children:x.map((o=>e(f,{value:o.name,text:`${o.title} (${o.name})`,children:[`${o.title} (${o.name})`," "]},o.name)))}),o(i,{appearance:"primary",disabled:!P,onClick:()=>{const o=x.find((o=>o.name===P));o?.url?w.sendMessage(`#ss-link #${P}`).then((e=>{const t=new Date(Date.now()+2592e5);w.generateApiToken(t).then((t=>{const n=o.url.includes("?")?"&":"?",r=`${o.url}${n}token=${t}`;$(r);const i=c(e);L(i)}))})):w.sendMessage(`#ss-link #${P}`).then((o=>{const e=`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}${window.location.pathname}`;$(`${e}#/formaccept?id=${o}`);const t=c(o);L(t)}))},children:S("Skapa länk")}),y&&e(t,{children:[o("p",{className:b.generatedLinkTitle,children:S("Här är din genererade länk (du kan kopiera eller dela den):")}),o("div",{className:b.inputAndButton,children:o(m,{className:b.input,value:y,readOnly:!0,onFocus:o=>o.target.select()})}),o("br",{}),e("div",{className:b.inputAndButton,children:[o(i,{appearance:"primary",title:S("Kopiera länk"),icon:"CopyRegular",onClick:()=>{y&&(navigator.clipboard.writeText(y),M(!0),setTimeout((()=>{M(!1),$(void 0)}),2e3))},children:S("Kopiera")}),I&&o(i,{appearance:"primary",title:S("Dela länk"),icon:"ShareRegular",onClick:()=>{y&&(navigator.share({url:y}),setTimeout((()=>{$(void 0)}),2e3))},children:S("Dela")})]}),D&&o(s,{children:S("Länk kopierad!")})]})]})})})};export{b as default};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CodicentService } from "../services/codicent";
|
|
3
|
+
interface FormProps {
|
|
4
|
+
formId: string;
|
|
5
|
+
service: CodicentService;
|
|
6
|
+
appName: string;
|
|
7
|
+
onFormSubmit?: (messageId: string) => void;
|
|
8
|
+
}
|
|
9
|
+
declare const Form: React.FC<FormProps>;
|
|
10
|
+
export default Form;
|
|
11
|
+
//# sourceMappingURL=FormPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormPage.d.ts","sourceRoot":"","sources":["../../../src/pages/FormPage.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQvD,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAyE7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useRef as t,useState as n,useEffect as s}from"react";import r from"../components/Content.js";import{Page as a}from"../components/Page.js";import c from"../hooks/useLocalization.js";import m from"../components/GenericJsonRenderer.js";import{useObserveDataSchemas as i}from"../hooks/useObserveDataSchemas.js";const h=({formId:h,service:d,appName:l,onFormSubmit:f})=>{const g=t(null),{t:p}=c(),{getSchemas:u,createDefaultDataFromSchema:S}=i({service:d}),[D,j]=n(),[w,F]=n();return s((()=>{h&&g.current!==h&&(g.current=h,d.getFormById(h).then((e=>{const o=e.schema||"_schema_unknown_";u().then((e=>{if(console.log("Fetched schemas:",e[l],o),e[l]&&e[l][o]){console.log("Setting schema:",e[l][o]),j(e[l][o]);const t=S(e[l][o]);console.log("Default data from schema:",t),d.sendMessage(`#${o} #data\n${JSON.stringify(t)}`).then((e=>{console.log("Message sent with ID:",e),F({id:e,content:`#${o} #data\n${JSON.stringify(t)}`,createdAt:new Date})}))}else j(void 0)})).catch((e=>{console.error("Error fetching schemas:",e)}))})))}),[h,d,u,S,l]),e(a,{hideHeader:!0,hideFooter:!0,children:o(r,{children:[!w&&p("Loading..."),D&&w&&e(m,{onSend:(e,o)=>new Promise(((t,n)=>{d.sendMessage(e,o).then((n=>{F({id:n,content:e,createdAt:new Date}),console.log("Send data:",e,o,n),f&&f(n),t(n)})).catch(n)})),schema:D,item:w})]})})};export{h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Help.d.ts","sourceRoot":"","sources":["../../../src/pages/Help.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAK3B,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAQvB,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import t from"../components/Markdown.js";import n from"../components/Content.js";import{Page as r}from"../components/Page.js";const e=({content:e=""})=>o(r,{children:o(n,{children:o(t,{content:e})})});export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as e,useEffect as s}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Text as i}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../
|
|
1
|
+
import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as e,useEffect as s}from"react";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Text as i}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import{Page as n}from"../components/Page.js";import"./QrScan.js";import"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import r from"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{Spinner as m}from"../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js";const p=({state:p})=>{const c=window.location.hash.match(/^#\/html\/(.+)$/),a=c?decodeURIComponent(c[1]):"",[l,d]=e(),[j,h]=e(!1),[u,g]=e(),{service:f}=p;return s((()=>{a&&f?(h(!0),g(void 0),f.getMessagesFast([a],void 0,1).then((o=>{if(0===o.length)return void g(`No messages found with tag: ${a}`);const t=o[0].content;d((o=>{const t=o.indexOf("```html");if(-1!==t){const e=o.indexOf("```",t+7);return-1===e?o.substring(t+7):o.substring(t+7,e)}const e=[/<!DOCTYPE[^>]*>[\s\S]*?<\/html>/i,/<html[^>]*>[\s\S]*?<\/html>/i,/<div[^>]*>[\s\S]*?<\/div>/i,/<body[^>]*>[\s\S]*?<\/body>/i,/<article[^>]*>[\s\S]*?<\/article>/i,/<section[^>]*>[\s\S]*?<\/section>/i];for(const t of e){const e=o.match(t);if(e)return e[0]}if(o.includes("<html")||o.includes("<!DOCTYPE")||o.includes("<div")||o.includes("<p>")||o.includes("<span")){const t=["<!DOCTYPE","<html","<div","<body","<article","<section"];let e=-1;for(const s of t){const t=o.indexOf(s);-1!==t&&(-1===e||t<e)&&(e=t)}if(-1!==e){let t=o.substring(e);const s=["</html>","</body>","</div>"];for(const o of s){const e=t.lastIndexOf(o);if(-1!==e){t=t.substring(0,e+o.length);break}}return t}return o}return o})(t))})).catch((o=>{console.error("Error fetching message:",o),g(`Error fetching message: ${o.message||"Unknown error"}`)})).finally((()=>{h(!1)}))):g("No tag provided or service unavailable")}),[a,f]),j?o(n,{hideHeader:!0,hideFooter:!0,children:o("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:o(m,{})})}):u?o(n,{hideHeader:!0,hideFooter:!0,children:t("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh",flexDirection:"column",gap:"20px"},children:[o(i,{children:u}),t(i,{children:["Tag: ",a]})]})}):l?o(r,{html:l,onDismiss:()=>window.history.back()}):o(n,{hideHeader:!0,hideFooter:!0,children:o("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:o(i,{children:"No HTML content available"})})})};export{p as default};
|
package/dist/esm/pages/Login.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as o,jsx as e,Fragment as t}from"react/jsx-runtime";import i,{useState as n}from"react";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as r}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as s}from"../components/Title.js";import{Text as m}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as a}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import
|
|
1
|
+
import{jsxs as o,jsx as e,Fragment as t}from"react/jsx-runtime";import i,{useState as n}from"react";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as r}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as s}from"../components/Title.js";import{Text as m}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as a}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import p from"../hooks/useLocalization.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"./QrScan.js";import"react-dom/client";import"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import c from"../hooks/useAppStyles.js";import{makeStyles as l}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Image as d}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{Input as j}from"../node_modules/@fluentui/react-input/lib/components/Input/Input.js";import{mergeClasses as g}from"../node_modules/@griffel/core/mergeClasses.esm.js";const u=l({container:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",backgroundPosition:"calc(50% - 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",gap:"20px",padding:"0 20px"},button:{minWidth:"15rem"},input:{minWidth:"15rem",marginBottom:"10px"},image:{maxHeight:"200px"}}),h=({state:l})=>{const{loginWithRedirect:h,loginPasswordless:_}=l.auth,f=u(),I=c(),{t:b}=p(),[E,k]=n(""),[L,C]=n(!1),y=a("LOGIN_REDIRECT"),N=a("AUTH0_PASSWORDLESS_ENABLED");i.useEffect((()=>{y&&h()}),[y]);return o("div",y?{className:f.container,style:{backgroundImage:`url(${a("HOME_BACKGROUND_IMAGE_URL")})`},children:[e(s,{children:`${b("Välkommen till")} ${a("INDEX_TITLE")}!`}),e(m,{size:400,children:b("Omdirigerar till inloggning...")})]}:{className:f.container,style:{backgroundImage:`url(${a("HOME_BACKGROUND_IMAGE_URL")})`},children:[a("LOGIN_LOGO_URL")&&e(d,{src:a("LOGIN_LOGO_URL"),alt:a("INDEX_TITLE"),className:f.image}),!a("LOGIN_HIDE_WELCOME")&&e(s,{children:`${b("Välkommen till")} ${a("INDEX_TITLE")}!`}),e(m,{size:400,children:b(a("LOGIN_WELCOME_TEXT")||"Logga in, eller registrera ett konto, för att komma igång.")}),o(t,N?{children:[e(j,{className:f.input,type:"email",placeholder:b("Ange din e-postadress"),value:E,onChange:o=>k(o.target.value),disabled:L}),e(r,{className:g(I.button,f.button),size:"large",appearance:"primary",onClick:async()=>{if(E.trim()){C(!0);try{await _(E)}catch(o){console.error("Passwordless login failed:",o)}finally{C(!1)}}},disabled:!E.trim()||L,children:b(L?"Skickar...":"Skicka inloggningslänk")})]}:{children:[e(r,{className:g(I.button,f.button),size:"large",appearance:"primary",onClick:()=>h(),children:b("Logga in")}),!a("HIDE_REGISTER_BUTTON")&&e(r,{className:g(I.button,f.button),size:"large",appearance:"primary",onClick:()=>h({authorizationParams:{screen_hint:"signup"}}),children:b("Registrera")})]})]})};export{h as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as o,jsx as
|
|
1
|
+
import{jsxs as o,jsx as t}from"react/jsx-runtime";import{useState as e,useEffect as r}from"react";import{Link as i}from"react-router-dom";import"../components/Markdown.js";import"../components/Textarea.js";import{Button as n}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as s}from"../components/Title.js";import{Text as m}from"../components/Text.js";import{Spinner as a}from"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as p}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"../components/Content.js";import"../components/Page.js";import"./QrScan.js";import"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{makeStyles as c}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as l}from"../node_modules/@fluentui/tokens/lib/tokens.js";const d=c({container:{display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",padding:"20px"},pricing:{padding:"20px",paddingLeft:"30px",border:"1px solid #ccc",borderRadius:"8px",backgroundColor:l.colorNeutralBackground1}}),j=({state:c})=>{const l=d(),[j,u]=e(!1),{service:g,stateMachine:h}=c,{updateContext:f}=h;r((()=>{new URLSearchParams(window.location.search).get("session_id")&&f({hasValidPurchase:void 0})}),[]);return o("div",{className:l.container,children:[t(s,{children:"Starta ditt abonnemang"}),t("div",{className:l.pricing,children:o("ul",{children:[t("li",{children:t(m,{size:400,children:"Kreditkort krävs inte"})}),t("li",{children:t(m,{size:400,children:"Gratis de 2 första månaderna"})}),t("li",{children:t(m,{size:400,children:"Därefter 89 kr/månad"})})]})}),t(n,{appearance:"primary",onClick:async()=>{try{u(!0),await g.redirectToCheckout(p("STRIPE_PRICE_ID"))}catch(o){console.error("Purchase error:",o)}finally{u(!1)}},disabled:j,children:j?t(a,{size:"tiny"}):"Starta abonnemang"}),t("div",{children:o(m,{size:400,children:["Har du redan ett abonnemang? Kanske har du loggat in med fel konto. ",t(i,{to:"/logout",children:"Logga ut"})," och sedan in igen för att komma igång."]})})]})};export{j as Purchase,j as default};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FC } from "react";
|
|
2
|
+
interface QrScanProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
singleShot?: boolean;
|
|
5
|
+
onScanned: (result: string) => Promise<void>;
|
|
6
|
+
onBack?: () => void;
|
|
7
|
+
backgroundImageUrl?: string;
|
|
8
|
+
audioUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const QrScan: FC<QrScanProps>;
|
|
11
|
+
export default QrScan;
|
|
12
|
+
//# sourceMappingURL=QrScan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QrScan.d.ts","sourceRoot":"","sources":["../../../src/pages/QrScan.tsx"],"names":[],"mappings":"AAWA,OAAO,EAA0C,EAAE,EAAE,MAAM,OAAO,CAAC;AA8CnE,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA6E3B,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as n}from"react/jsx-runtime";import{useState as o,useMemo as r,useRef as t,useCallback as a}from"react";import s from"../components/QrScanner.js";import{Page as i}from"../components/Page.js";import c from"../components/TextHeader.js";import l from"../hooks/useLocalization.js";import{makeStyles as m}from"../node_modules/@griffel/react/makeStyles.esm.js";import{MessageBar as d}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBar/MessageBar.js";import{MessageBarBody as u}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarBody/MessageBarBody.js";import{MessageBarTitle as f}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarTitle/MessageBarTitle.js";import{MessageBarActions as p}from"../node_modules/@fluentui/react-message-bar/lib/components/MessageBarActions/MessageBarActions.js";import{Button as g}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";const h=m({container:{backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%",touchAction:"pan-y",margin:"0 auto",maxWidth:"800px",display:"flex",flexDirection:"column",alignItems:"center"},flashOverlay:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"transparent",transition:"background-color 0.2s ease-out",pointerEvents:"none",zIndex:3},scannerContainer:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,width:"100%"}}),b=({title:m,singleShot:b,onScanned:y,onBack:B,backgroundImageUrl:j,audioUrl:k="/audio/camera.mp3"})=>{const x=h(),{t:S}=l(),[v,M]=o(),C=r((()=>new Audio(k)),[k]),[_,A]=o(!1),[E,I]=o(!1),T=t(void 0),w=a((async e=>{if(e!==T.current){T.current=e,I(!0),console.log("Scanned result:",e),C.play(),A(!0),setTimeout((()=>A(!1)),100),setTimeout((()=>I(!1)),1e3);try{await y(e),!0===b&&B&&B()}catch(e){console.error("Error handling scanned result:",e),M(e instanceof Error?e.message:String(e))}}}),[C,y,b,B]),z=a((e=>{console.log("QR Scanner Error:",e),M(e)}),[]);return e(i,{hideHeader:!0,children:n("div",{className:x.container,style:j?{backgroundImage:`url('${j}')`}:void 0,children:[e("div",{className:x.flashOverlay,style:{backgroundColor:_?"#ffffff":"transparent"}}),v&&n(d,{intent:"error",children:[n(u,{children:[e(f,{children:S("Fel")}),v]}),e(p,{containerAction:e(g,{appearance:"transparent",icon:"DismissRegular"}),children:e(g,{onClick:()=>M(void 0),children:S("OK")})})]}),e(c,{title:m||S("Skanna")}),e("div",{className:x.scannerContainer,children:e(s,{onScan:e=>{E||w(e)},onError:z})})]})})};export{b as default};
|
package/dist/esm/pages/Sales.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useState as n,useCallback as i,useEffect as r}from"react";import{useNavigate as s}from"react-router-dom";import"../components/Markdown.js";import{Textarea as a}from"../components/Textarea.js";import{Button as l}from"../components/Button.js";import"../components/CompoundButton.js";import{Text as c}from"../components/Text.js";import"../components/Spinner.js";import{Input as m}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import{Dialog as p,DialogTitle as d,DialogContent as h,DialogActions as g}from"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as u}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Purchase.js";import
|
|
1
|
+
import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useState as n,useCallback as i,useEffect as r}from"react";import{useNavigate as s}from"react-router-dom";import"../components/Markdown.js";import{Textarea as a}from"../components/Textarea.js";import{Button as l}from"../components/Button.js";import"../components/CompoundButton.js";import{Text as c}from"../components/Text.js";import"../components/Spinner.js";import{Input as m}from"../components/Input.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import{Dialog as p,DialogTitle as d,DialogContent as h,DialogActions as g}from"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as u}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Purchase.js";import"../components/Content.js";import{Page as j}from"../components/Page.js";import"./QrScan.js";import f from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import{QrCodeDialog as x}from"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{makeStyles as C}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as k}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{shorthands as b}from"../node_modules/@griffel/core/index.esm.js";import{Image as _}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{mergeClasses as w}from"../node_modules/@griffel/core/mergeClasses.esm.js";const v=C({root:{display:"flex",flexDirection:"column",height:"100%",touchAction:"pan-y"},header:{display:"flex",justifyContent:"space-between",alignItems:"center",color:k.colorNeutralForegroundOnBrand,...b.padding("10px","20px")},logo:{maxWidth:"100px",maxHeight:"50px",height:"auto",cursor:"pointer"},inputContainer:{display:"flex",justifyContent:"flex-end",alignItems:"center",maxWidth:"300px",width:"200px",paddingLeft:"10px"},dashboard:{display:"flex",justifyContent:"space-around",width:"100%",marginTop:"20px"},statBox:{...b.padding("10px"),...b.borderRadius("12px"),minWidth:"50px",textAlign:"center",color:"white"},buttonContainer:{display:"flex",flexDirection:"column",height:"100%",justifyContent:"center",gap:"30px",alignItems:"center",...b.padding("20px")},actionButton:{width:"14rem",minWidth:"15rem",height:"3rem"},textAreaContainer:{display:"flex",flexDirection:"column",gap:"10px"},opened:{backgroundColor:"#1a5614"},not_home:{backgroundColor:"#f44336"},sales:{backgroundColor:"#2196F3"},call_back:{backgroundColor:"#FF9800"},backButton:{position:"absolute",top:"10px",left:"10px",zIndex:1e3}}),y={opened:"#1a5614",not_home:"#f44336",sales:"#2196F3",call_back:"#FF9800"},I=()=>{const C=v(),{t:b}=f(),I=s(),[A,P]=n(""),[F,$]=n(),[B,N]=n({opened:0,not_home:0,sales:0,call_back:0}),[M,S]=n([]),[D,L]=n(!1),[O,T]=n(""),[H,z]=n(""),[R,U]=n(""),[E,G]=n(!1),[W,Q]=n(!1),[V,K]=n(!1),q={backgroundColor:u("APP_HEADER_COLOR")||k.colorBrandBackground},J=i((()=>new Promise((e=>{navigator.geolocation?navigator.geolocation.getCurrentPosition((o=>{const t=`#position (${o.coords.latitude},${o.coords.longitude})`;e(t)})):e(void 0)}))),[$]);r((()=>{window.Codicent.getDataMessages({codicent:u("APP_NAME"),tags:["sales_code"]}).then((e=>{e=e.filter((e=>"1"!==e.data.inactive)),S(e)})).catch(console.error),J()}),[]);const X=async()=>{if(!A)return;const e=["not_home","sales","call_back","opened"],o=new Date;o.setHours(0,0,0,0);const t={...B};for(const n of e){const e=await window.Codicent.getMessages({search:`#${n} #sales_code_${A}`,afterTimestamp:o,length:1e4});t[n]=e.filter((e=>e.content.includes(`#${n} `)&&e.content.includes(`#sales_code_${A}`))).length}N(t)},Y=async(e,o="")=>{const t=await J();console.log("Got position",t);const n=`@${u("APP_NAME")} #sales_code_${A} #${e} ${t||""} ${o.trim().length>0?"#comment ":""}${o}`.trim();await window.Codicent.postMessage({message:n}),X()};return e(j,{hideHeader:!0,children:o("div",{className:C.root,children:[e("div",{className:C.backButton,children:e(l,{appearance:"subtle",icon:"ArrowLeft24Regular",onClick:()=>I(-1),children:b("Tillbaka")})}),o("div",{className:C.header,style:q,children:[e(_,{src:H||u("APP_ICON_URL")||"https://via.placeholder.com/100",className:C.logo,onClick:()=>{H?K(!0):R&&Q(!0)}}),e("div",{className:C.inputContainer,children:e(m,{value:A,onChange:e=>P(e.target.value),onBlur:()=>{const e=M.find((e=>e.data.code===A));if(e)z(`https://codicent.com/app/GetImage?fileId=${e.fileId}&width=100`),U(e.data.link),G(!0),X();else{const e=M.find((e=>e.data.code2===A.toUpperCase()));e?(z(`https://codicent.com/app/GetImage?fileId=${e.fileIds&&e.fileIds.length>1?e.fileIds[1]:e.fileId}&width=100`),U(e.data.link2),G(!0),X()):(G(!1),alert(b("Fel försäljningskod!")))}},placeholder:b("Fyll i försäljningskod"),maxLength:16,size:"large"})})]}),E&&o(t,{children:[e("div",{className:C.dashboard,children:Object.keys(B).map((o=>{return e("div",{className:(t=o,w(C.statBox,C[t])),children:e(c,{weight:"bold",size:400,children:B[o]})},o);var t}))}),e("div",{className:C.buttonContainer,children:Object.entries(y).map((([o,t])=>e(l,{size:"large",className:C.actionButton,style:{backgroundColor:t,color:"white"},onClick:()=>{Y(o),"opened"===o&&L(!0),"sales"===o&&Q(!0)},children:o.charAt(0).toUpperCase()+o.slice(1).replace("_"," ")},o)))}),o(p,{open:D,children:[e(d,{children:b("Skriv in avvikelse")}),e(h,{children:e("div",{className:C.textAreaContainer,children:e(a,{value:O,onChange:e=>T(e.target.value),placeholder:b("Skriv din text här..."),rows:4,size:"large"})})}),e(g,{children:e(l,{appearance:"primary",onClick:()=>{Y("anomaly",`\n${O}`),L(!1),T("")},children:b("Spara")})})]}),o(p,{open:W,children:[e(d,{children:b("Godkännande")}),e(h,{children:b("Är kunden över 23 år?")}),o(g,{children:[e(l,{appearance:"primary",onClick:()=>window.open(R,"_blank"),children:b("OK")}),e(l,{appearance:"secondary",onClick:()=>Q(!1),children:b("Avbryt")})]})]})]}),e(x,{isOpen:V,onDismiss:()=>K(!1),imageUrl:H})]})})};export{I as Sales,I as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaEditor.d.ts","sourceRoot":"","sources":["../../../src/pages/SchemaEditor.tsx"],"names":[],"mappings":"AAgEA,MAAM,CAAC,OAAO,UAAU,YAAY,4CA2cnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as e,Fragment as t,jsx as i}from"react/jsx-runtime";import{useState as n}from"react";import l from"../components/Content.js";import{Header as r}from"../components/Header.js";import{Button as o}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{Input as a}from"../node_modules/@fluentui/react-input/lib/components/Input/Input.js";import{Edit16Regular as d}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-6.js";import{ArrowUp16Regular as s}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js";import{ArrowDown16Regular as p}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js";import{Delete16Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-5.js";import{Dropdown as m}from"../node_modules/@fluentui/react-combobox/lib/components/Dropdown/Dropdown.js";import{Option as h}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const u=[{key:"string",text:"Text/Sträng"},{key:"boolean",text:"Ja/Nej (boolean)"},{key:"array",text:"Val (array)"}],y={string:[{key:"",text:"Ingen"},{key:"photo",text:"Foto"},{key:"color",text:"Färg"},{key:"date",text:"Datum"},{key:"time",text:"Tid"},{key:"title",text:"Titel"}],boolean:[{key:"",text:"Ingen"},{key:"open",text:"Öppna/stäng"}],array:[{key:"",text:"Ingen"}]};function f(e){const t={$schema:"http://json-schema.org/draft-07/schema#",type:"object",...e};return JSON.stringify(t,null,2)}function g(){const[g,x]=n({title:"",description:"","ui:options":{icon:""},properties:{}}),[v,b]=n(""),[k,C]=n(null),[j,w]=n(!1),[I,O]=n(""),[S,D]=n(null),[z,F]=n(!1);const W=!!v.trim()&&!Object.prototype.hasOwnProperty.call(g.properties,v);function T(e,t,i){x({...g,properties:{...g.properties,[e]:{...g.properties[e],[t]:i}}})}return e(t,{children:[i(r,{title:"Codicent Schema Editor"}),i(l,{children:i("div",{style:{display:"flex",justifyContent:"center",width:"100%"},children:e("div",{style:{maxWidth:700,width:"100%",display:"flex",flexDirection:"column",gap:16,overflowY:"auto",maxHeight:"calc(100vh - 80px)"},children:[i("div",{style:{display:"flex",justifyContent:"flex-end"},children:i(o,{appearance:"secondary",onClick:()=>w(!0),children:"Importera JSON"})}),j&&i("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0,0,0,0.3)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{style:{background:"#fff",padding:24,borderRadius:8,minWidth:350,maxWidth:600,boxShadow:"0 2px 16px rgba(0,0,0,0.2)",display:"flex",flexDirection:"column",gap:16},children:[i("h4",{children:"Importera schema från JSON"}),i("textarea",{value:I,onChange:e=>O(e.target.value),rows:12,style:{width:"100%",fontFamily:"monospace",fontSize:14},placeholder:"Klistra in JSON här..."}),S&&i("div",{style:{color:"red"},children:S}),e("div",{style:{display:"flex",gap:8,justifyContent:"flex-end"},children:[i(o,{onClick:()=>w(!1),children:"Avbryt"}),i(o,{appearance:"primary",onClick:function(){D(null);try{let e=JSON.parse(I);const{$schema:t,type:i,...n}=e;let l={...n};l["ui:options"]||(l["ui:options"]={icon:""}),l["ui:options"].icon||(l["ui:options"].icon=""),l.properties||(l.properties={}),x(l),w(!1),O("")}catch(e){D("Ogiltig JSON: "+e.message)}},children:"Importera"})]})]})}),i("h3",{children:"Schema"}),e("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[i("label",{children:"Titel"}),i(a,{value:g.title,onChange:e=>x({...g,title:e.target.value})})]}),e("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[i("label",{children:"Beskrivning"}),i(a,{value:g.description,onChange:e=>x({...g,description:e.target.value})})]}),i("hr",{}),i("h3",{children:"Fält"}),e("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[e("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:4},children:[i("label",{children:"Fältnamn (unikt id)"}),i(a,{value:v,onChange:e=>b(e.target.value)})]}),i(o,{onClick:function(){W&&(x((e=>({...e,properties:{...e.properties,[v]:{title:"",type:"string",description:""}}}))),b(""))},disabled:!W,appearance:W?"primary":"secondary",children:"Lägg till fält"})]}),i("div",{style:{display:"flex",flexDirection:"column",gap:8},children:Object.keys(g.properties).map(((t,n,l)=>{const r=g.properties[t];return e("div",{style:{border:"1px solid #ccc",padding:8,margin:8,borderRadius:4,display:"flex",alignItems:"center",gap:8},children:[i(o,{icon:i(d,{}),size:"small",title:"Redigera",onClick:()=>C(t),style:{minWidth:28,padding:0}}),i(o,{icon:i(s,{}),size:"small",title:"Flytta upp",onClick:()=>function(e){const t=Object.keys(g.properties),i=t.indexOf(e);if(i>0){const e=[...t];[e[i-1],e[i]]=[e[i],e[i-1]];const n={};e.forEach((e=>{n[e]=g.properties[e]})),x({...g,properties:n})}}(t),disabled:0===n,style:{minWidth:28,padding:0}}),i(o,{icon:i(p,{}),size:"small",title:"Flytta ner",onClick:()=>function(e){const t=Object.keys(g.properties),i=t.indexOf(e);if(i<t.length-1){const e=[...t];[e[i+1],e[i]]=[e[i],e[i+1]];const n={};e.forEach((e=>{n[e]=g.properties[e]})),x({...g,properties:n})}}(t),disabled:n===l.length-1,style:{minWidth:28,padding:0}}),i("span",{style:{fontFamily:"Courier"},children:t}),i("span",{children:r.title}),i("span",{children:r.type}),i(o,{icon:i(c,{}),size:"small",title:"Ta bort",onClick:()=>function(e){const{[e]:t,...i}=g.properties;x({...g,properties:i}),k===e&&C(null)}(t),style:{marginLeft:"auto",minWidth:28,padding:0}})]},t)}))}),k&&g.properties[k]&&i("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",background:"rgba(0,0,0,0.3)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{style:{background:"#fff",padding:24,borderRadius:8,minWidth:350,maxWidth:600,boxShadow:"0 2px 16px rgba(0,0,0,0.2)",display:"flex",flexDirection:"column",gap:16},children:[e("h4",{children:["Redigera fält: ",k]}),e("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[i("label",{htmlFor:"field-title",style:{marginBottom:2},children:"Titel"}),i(a,{id:"field-title",value:g.properties[k].title,onChange:e=>T(k,"title",e.target.value),style:{minWidth:0,width:340,maxWidth:"100%"}})]}),e("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[i("label",{htmlFor:"field-description",style:{marginBottom:2},children:"Beskrivning"}),i(a,{id:"field-description",value:g.properties[k].description,onChange:e=>T(k,"description",e.target.value),style:{minWidth:0,width:400,maxWidth:"100%"}})]}),e("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[i("label",{htmlFor:"field-type",style:{marginBottom:2},children:"Typ"}),i(m,{id:"field-type",value:g.properties[k].type,onOptionSelect:(e,t)=>t&&T(k,"type",t.optionValue),style:{width:160},children:u.map((e=>i(h,{value:e.key,children:e.text},e.key)))})]}),e("div",{style:{display:"flex",flexDirection:"column",gap:10},children:[i("label",{htmlFor:"field-format",style:{marginBottom:2},children:"Format"}),i(m,{id:"field-format",value:g.properties[k].format||"",onOptionSelect:(e,t)=>t&&T(k,"format",t.optionValue),style:{width:180},children:(y[g.properties[k].type]||[]).map((e=>i(h,{value:e.key,children:e.text},e.key)))})]}),"array"===g.properties[k].type&&e("label",{children:["Enum-värden (kommaseparerade)",i(a,{value:g.properties[k].items&&g.properties[k].items.enum.join(", ")||"",onChange:e=>{return t=k,i=e.target.value,void x({...g,properties:{...g.properties,[t]:{...g.properties[t],items:{enum:i.split(",").map((e=>e.trim()))}}}});var t,i}})]}),i("div",{style:{display:"flex",gap:8,justifyContent:"flex-end"},children:i(o,{appearance:"secondary",onClick:()=>C(null),children:"Klar"})})]})}),i("hr",{}),e("div",{style:{display:"flex",alignItems:"center",gap:8},children:[i("h3",{style:{margin:0},children:"Schema JSON"}),i(o,{appearance:"secondary",size:"small",onClick:()=>{navigator.clipboard.writeText(f(g)),F(!0),setTimeout((()=>F(!1)),1200)},children:"Kopiera"}),z&&i("span",{style:{color:"green",fontSize:13},children:"Kopierat!"})]}),i("pre",{style:{background:"#eee",padding:8,borderRadius:4},children:f(g)})]})})})]})}export{g as default};
|
package/dist/esm/pages/Search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as
|
|
1
|
+
import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useRef as e,useState as n,useEffect as r}from"react";import i from"../components/Markdown.js";import"../components/Textarea.js";import{Button as s}from"../components/Button.js";import"../components/CompoundButton.js";import{Title as a}from"../components/Title.js";import"../components/Spinner.js";import"../components/TextHeader.js";import m from"../components/TypingIndicator.js";import"../components/Dialog.js";import p from"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import c from"../hooks/useStateWithLocalStorage.js";import{CodicentService as l}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as d}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import{Page as u}from"../components/Page.js";import"./QrScan.js";import g from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"react-router-dom";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{useChat as j}from"../hooks/useChat.js";import{useTemplateVariables as h}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{makeStyles as f}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as x}from"../node_modules/@fluentui/tokens/lib/tokens.js";const C=f({chatContainer:{width:"100%",flex:1,maxWidth:"800px",height:"100%",backgroundColor:"#ffffff",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden","@media (max-width: 768px)":{maxWidth:"100%",borderRadius:"0"},"@media (max-width: 480px)":{},backgroundPosition:"calc(50%) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",touchAction:"pan-y",overflowY:"auto",marginBottom:"16px"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"},inputArea:{display:"flex",flexDirection:"column",justifyContent:"start",alignItems:"center",height:"100%",padding:"0 16px"},promptButtons:{display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"start",alignItems:"center",gap:"8px",marginTop:"8px",marginLeft:"6px",marginRight:"2px",marginBottom:"12px"},answerArea:{width:"100%",marginLeft:"12px",marginRight:"12px",padding:"12px",borderRadius:"16px",marginBottom:"24px"},title:{marginLeft:"12px",padding:"16px"}}),A=({state:f})=>{const A=C(),{t:w}=g(),{messages:_,isBotTyping:T,handleSend:S,newChat:v}=j(f.stateMachine),b=e(null),{service:k}=f;d("CHAT_BOT_BACKGROUND_COLOR")||x.colorBrandBackground2;const[N,y]=c(f.context.selectedApp+"_searchprompts",["Leta information","Vad kan jag göra?","Sök supportställe"]),[O,I]=n(),[B,M]=n(null),[P,D]=n(!1);h(k.uploadFile);r((()=>{T&&D(!0)}),[T]),r((()=>{v();const o=d("APP_CONFIG"),t=d("APP_BUTTONS");t?o.apps[t].questions&&y(o.apps[t].questions.map((o=>w(o)))):console.error("APP_BUTTONS is not defined in the configuration."),void 0!==d("ANONYMOUS_CODICENT")&&void 0!==d("ANONYMOUS_TOKEN")?(k.codicent=d("ANONYMOUS_CODICENT"),k.setToken(d("ANONYMOUS_TOKEN"))):console.error("Anonymous Codicent or Token is not defined in the configuration.")}),[v,k,y,w]),r((()=>{setTimeout((()=>{b.current?.scrollIntoView({behavior:"smooth"})}),10)}),[_]);const F=o=>{I(o),S(o)};return r((()=>{const o=_.filter((o=>"bot"===o.sender));let t=o.length>0?o[o.length-1]:null;M({...t,createdAt:new Date}),t&&D(!1)}),[_]),o(u,{hideHeader:!0,hideFooter:!0,children:t("div",{id:"search-container",className:A.chatContainer,style:{backgroundImage:`url(${d("CHAT_BACKGROUND_IMAGE_URL")})`},children:[o("div",{className:A.title,children:o(a,{children:w(d("APP_SEARCH_TITLE")||"Frågor")})}),t("div",{className:A.inputArea,children:[o(p,{noMemory:!0,defaultText:O,codicent:f.context.selectedApp,disableSend:T,onSend:F,rows:3,getImageUrl:l.getImageUrl,getFileInfo:o=>k.getFileInfo(o),selectAll:!0}),o("div",{className:A.promptButtons,children:N.length>0&&N.map(((t,e)=>o(s,{onClick:()=>F(t),size:"large",appearance:"primary",shape:"circular",children:t},`search-prompt-${e}`)))}),P&&o(m,{}),B&&!T&&t("div",{className:A.answerArea,children:[o("div",{ref:b}),o(i,{content:B.content})]})]})]})})};export{A as default};
|
package/dist/esm/pages/Snap.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as o,jsx as
|
|
1
|
+
import{jsxs as o,jsx as t}from"react/jsx-runtime";import{useState as e,useRef as n,useMemo as i,useCallback as r,useEffect as s}from"react";import{useSearchParams as a,useNavigate as p}from"react-router-dom";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import{Text as m}from"../components/Text.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import{CombinedPlaceholderDialog as c}from"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./AppFrame.js";import"./Chat.js";import"./Compose.js";import"./Search.js";import"./Login.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import"../components/Page.js";import"./QrScan.js";import l from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{useTemplateVariables as d}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import h from"../components/MessageInput.js";import"../components/UploadFile.js";import u from"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import{makeStyles as g}from"../node_modules/@griffel/react/makeStyles.esm.js";const j=g({container:{position:"relative",height:"100vh",width:"100vw",overflow:"auto"},flashOverlay:{position:"fixed",top:0,left:0,width:"100%",height:"100%",backgroundColor:"transparent",transition:"background-color 0.2s ease-out",pointerEvents:"none",zIndex:3},video:{position:"absolute",top:0,left:0,width:"100%",height:"100%",objectFit:"cover",zIndex:1},canvas:{display:"none"},bottomControls:{position:"fixed",bottom:"100px",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",zIndex:2,boxSizing:"border-box"},controlContainer:{width:"100%",maxWidth:"600px",position:"relative"},sendButton:{position:"absolute",right:"10px",bottom:"10px",width:"50px",height:"50px",borderRadius:"50%",backgroundColor:"#0078d4",color:"white",border:"none",cursor:"pointer",display:"flex",justifyContent:"center",alignItems:"center"},topControls:{position:"fixed",top:"20px",width:"100%",display:"flex",justifyContent:"space-between",alignItems:"center",zIndex:2,padding:"0 10px",boxSizing:"border-box"},backButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},input:{padding:"5px",width:"200px",fontSize:"larger",backgroundColor:"#fff8"},bottomButtons:{position:"fixed",bottom:"0px",width:"100%",display:"flex",justifyContent:"space-around",alignItems:"center",zIndex:2,boxSizing:"border-box"},iconButton:{width:"60px",height:"60px",borderRadius:"50%",backgroundColor:"transparent",color:"white",border:"none",cursor:"pointer"},centerText:{position:"fixed",top:"30%",left:"50%",transform:"translate(-50%, -50%)",zIndex:2,textAlign:"center"}}),f=({state:g,audio:f})=>{const w=j(),{service:b}=g,[x,v]=e(null),[y,C]=e(!0),k=n(null),I=n(null),[F]=a(),S=F.get("extra"),z=F.get("template"),[T,V]=e(""),[M]=e("log"),$=i((()=>new Audio("/audio/camera.mp3")),[]),[B,P]=e(!1),E=p(),{t:_}=l(),{extractTemplateVariables:N}=d(b.uploadFile),[A,D]=e(N(z||"")),[H,L]=e(A.length>0),[O,R]=e(""),[Q,U]=e(100),W=r((()=>A.map((o=>`#${o.value}`)).join(" ")),[A]);s((()=>{const o=W();R(`${S?" #"+S:""}${o.length>0?" "+o:""}`.trim())}),[A,S,W]),s((()=>{if(window.visualViewport){const o=()=>{const o=window.visualViewport?window.innerHeight-window.visualViewport.height:0;U(o>150?o+20:100)};return window.visualViewport.addEventListener("resize",o),o(),()=>{window.visualViewport&&window.visualViewport.removeEventListener("resize",o)}}}),[]);const K=async o=>{try{const t=new FormData;t.append("file",o);const e=await b.uploadFile(o.name,t),n=W(),i=`${M?" #"+M:""}${S?" #"+S:""}${n.length>0?" "+n:""} #photo #file:${e}`;await b.sendMessage(i)}catch(o){alert(_("Failed to send image:")+" "+o)}};return s((()=>()=>{x&&x.getTracks().forEach((o=>o.stop()))}),[x]),o("div",{className:w.container,children:[t("div",{className:w.flashOverlay,style:{backgroundColor:B?"#ffffff":"transparent"}}),t("video",{ref:k,autoPlay:!0,playsInline:!0,className:w.video}),t("canvas",{ref:I,width:"640",height:"480",className:w.canvas}),!x&&t(m,{weight:"semibold",size:400,className:w.centerText,children:_("Klicka på Byt kamera för att starta!")}),t("div",{className:w.bottomControls,style:{bottom:`${Q}px`},children:t("div",{className:w.controlContainer,children:t(h,{onSend:async()=>{if(""===T.trim())return;const o=W(),t=`${M?" #"+M:""}${S?" #"+S:""}${o.length>0?" "+o:""} ${T}`;try{await b.sendMessage(t),V("")}catch(o){alert(_("Failed to send message: ")+o)}},rows:4,onChange:V})})}),t("div",{className:w.bottomButtons,children:t(u,{audio:f,onHome:()=>E("/"),onTakePhoto:()=>{const o=I.current,t=k.current;if(o&&t){o.width=t.videoWidth,o.height=t.videoHeight;const e=o.getContext("2d");e&&($.play(),P(!0),setTimeout((()=>P(!1)),100),e.drawImage(t,0,0,o.width,o.height),o.toBlob((o=>{if(o){const t=new File([o],"snapshot.png",{type:"image/png"});K(t)}})))}},onSwichCamera:()=>{C((o=>!o)),(async()=>{x&&x.getTracks().forEach((o=>o.stop()));const o={video:{facingMode:y?"user":"environment"},audio:!1};try{const t=await navigator.mediaDevices.getUserMedia(o);v(t),k.current&&(k.current.srcObject=t,k.current.play())}catch(o){console.error("Error accessing the camera: ",o),o instanceof Error?alert(_("Error accessing the camera:")+" "+o.message):alert(_("Error accessing the camera"))}})()},tag:O})}),t(c,{open:H,templateVariables:A,filePlaceholders:[],onTemplateVariablesChange:D,onFilePlaceholdersChange:()=>{},onConfirm:()=>L(!1),onCancel:()=>{L(!1),E(-1)},uploadFile:b.uploadFile})]})};export{f as default};
|
|
@@ -13,4 +13,9 @@ export { default as FormAccept } from "./FormAccept";
|
|
|
13
13
|
export { default as Sales } from "./Sales";
|
|
14
14
|
export { default as HtmlViewer } from "./HtmlViewer";
|
|
15
15
|
export { default as Purchase } from "./Purchase";
|
|
16
|
+
export { default as Help } from "./Help";
|
|
17
|
+
export { default as Debug } from "./Debug";
|
|
18
|
+
export { default as SchemaEditor } from "./SchemaEditor";
|
|
19
|
+
export { default as QrScan } from "./QrScan";
|
|
20
|
+
export { default as FormPage } from "./FormPage";
|
|
16
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -46,6 +46,8 @@ export interface CodicentServiceOptions {
|
|
|
46
46
|
APP_TEMPLATE: string;
|
|
47
47
|
BUTTON_TAG: string;
|
|
48
48
|
STRIPE_PUBLIC_KEY: string;
|
|
49
|
+
STRIPE_SOURCE?: string;
|
|
50
|
+
STRIPE_TRIAL_PERIOD_DAYS?: number;
|
|
49
51
|
SUBSCRIPTION_NEEDED: boolean;
|
|
50
52
|
USER_PREFIX: string;
|
|
51
53
|
ANONYMOUS_TOKEN?: string;
|
|
@@ -56,6 +58,11 @@ export declare class CodicentService {
|
|
|
56
58
|
readOneDataMessage: (id: string) => Promise<DataMessage | null>;
|
|
57
59
|
updateDataMessage: (id: string, data: object, codicent?: string) => Promise<string>;
|
|
58
60
|
deleteDataMessage: (id: string, codicent?: string) => Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Gets the JSON Schema for a given data tag.
|
|
63
|
+
* Schemas are stored as data messages with #schema #tagname tags.
|
|
64
|
+
*/
|
|
65
|
+
getSchema: (tag: string, codicent?: string) => Promise<object | null>;
|
|
59
66
|
codicent: string;
|
|
60
67
|
private options;
|
|
61
68
|
onUnauthorized?: () => void;
|