@spteck/license-manager-react-components 1.0.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/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/atoms/appGlobalState.d.ts +4 -0
- package/dist/components/RenderLabel/RenderLabel.d.ts +8 -0
- package/dist/components/RenderLabel/index.d.ts +2 -0
- package/dist/components/RenderLabel/useRenderLabelStylesStyles.d.ts +1 -0
- package/dist/components/customControlBar/CustomControlBar.d.ts +15 -0
- package/dist/components/customControlBar/index.d.ts +1 -0
- package/dist/components/dropDownField/DropDownField.d.ts +3 -0
- package/dist/components/dropDownField/IDropDownFieldProps.d.ts +15 -0
- package/dist/components/dropDownField/IOption.d.ts +8 -0
- package/dist/components/dropDownField/index.d.ts +3 -0
- package/dist/components/errorSVG/ErrorSVG.d.ts +2 -0
- package/dist/components/informationBar/InformationBar.d.ts +6 -0
- package/dist/components/licenseControl/LicenseControl.d.ts +10 -0
- package/dist/components/licenseControl/useLicenseControlStyles.d.ts +5 -0
- package/dist/components/licensePlaceHolder/LicensePlaceHolder.d.ts +8 -0
- package/dist/components/licensePlaceHolder/licensePlaceHolderStyles.d.ts +8 -0
- package/dist/components/licenseProvider/ILicenseProviderProps.d.ts +17 -0
- package/dist/components/licenseProvider/LicenseProvider.d.ts +3 -0
- package/dist/components/mailTo/Mailto.d.ts +12 -0
- package/dist/components/pricePlan/PricePlan.d.ts +9 -0
- package/dist/components/pricePlan/usePricePlansStyles.d.ts +12 -0
- package/dist/components/registerDialog/RegisterDialog.d.ts +10 -0
- package/dist/components/renderHeader/RenderHeader.d.ts +8 -0
- package/dist/components/renderHeader/index.d.ts +2 -0
- package/dist/components/renderHeader/useRenderHeaderStyles.d.ts +1 -0
- package/dist/components/showError/ShowError.d.ts +6 -0
- package/dist/components/trialLicense.ts/TrialLicense.d.ts +6 -0
- package/dist/components/trialLicense.ts/useTrialLicenseStyles.d.ts +5 -0
- package/dist/constants/constants.d.ts +3 -0
- package/dist/hooks/useUtils.d.ts +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/license-manager-react-components.cjs.development.js +1433 -0
- package/dist/license-manager-react-components.cjs.development.js.map +1 -0
- package/dist/license-manager-react-components.cjs.production.min.js +2 -0
- package/dist/license-manager-react-components.cjs.production.min.js.map +1 -0
- package/dist/license-manager-react-components.esm.js +1406 -0
- package/dist/license-manager-react-components.esm.js.map +1 -0
- package/dist/loc/IStrings.d.ts +56 -0
- package/dist/loc/en.json +61 -0
- package/dist/models/EAppHostName.d.ts +7 -0
- package/dist/models/ETabsOptions.d.ts +5 -0
- package/dist/models/IGlobalState.d.ts +8 -0
- package/dist/zodSchemas/pricePlan.d.ts +47 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-manager-react-components.cjs.development.js","sources":["../src/models/ETabsOptions.ts","../src/constants/constants.ts","../src/components/mailTo/Mailto.tsx","../src/atoms/appGlobalState.ts","../src/components/licenseControl/useLicenseControlStyles.ts","../src/hooks/useUtils.ts","../src/components/licenseControl/LicenseControl.tsx","../src/components/renderHeader/useRenderHeaderStyles.ts","../src/components/renderHeader/RenderHeader.tsx","../src/components/RenderLabel/useRenderLabelStylesStyles.ts","../src/components/RenderLabel/RenderLabel.tsx","../src/components/trialLicense.ts/useTrialLicenseStyles.ts","../src/components/trialLicense.ts/TrialLicense.tsx","../src/components/registerDialog/RegisterDialog.tsx","../src/components/licensePlaceHolder/licensePlaceHolderStyles.tsx","../src/components/licensePlaceHolder/LicensePlaceHolder.tsx","../src/components/informationBar/InformationBar.tsx","../src/components/errorSVG/ErrorSVG.tsx","../src/components/showError/ShowError.tsx","../src/components/licenseProvider/LicenseProvider.tsx"],"sourcesContent":["export enum ETabsOptions {\n Trial = 'trial',\n License = 'license',\n Apps = 'apps',\n} ","export const SUPPORT_EMAIL = \"geral@spteck.com\";\nexport const EMAIL_BODY_TEMPLATE = `Subject: Support Request from {0} {1}\n\nDear Support Team,\n\nI am reaching out to you because I am experiencing issues with my license. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email**: {7}\n\n {8}\n\nBest regards,\n{9} {10}`\n\nexport const EMAIL_BODY_TEMPLATE_REQUEST_LICENSE = `Subject: Request for New License {0} {1}\n\nDear Support Team,\n\nI am just contacting you to request a license for the following product. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email **: {7}\n\nBest regards,\n{8} {9}`;","import React, { ElementType } from 'react';\n\ninterface MailtoProps<C extends ElementType> {\n to: string; // Required recipient email\n from?: string; // Optional sender email\n subject?: string; // Optional email subject\n body?: string; // Optional email body\n children: React.ReactNode; // Content to be displayed inside the component\n as?: C; // The component type to render\n componentProps?: React.ComponentProps<C>; // Additional props specific to the component type\n \n}\n\nexport const Mailto = <C extends ElementType = \"a\">(props: MailtoProps<C>) => {\n const {\n to,\n from,\n subject,\n body,\n children,\n as: Component,\n componentProps = {} as React.ComponentProps<C>,\n \n } = props;\n // Construct the mailto link\n const mailtoLink = `mailto:${to}?${from ? `from=${encodeURIComponent(from)}&` : \"\"}${\n subject ? `subject=${encodeURIComponent(subject)}&` : \"\"\n }${body ? `body=${encodeURIComponent(body)}` : \"\"}`;\n\n // Ensure the correct element type is rendered\n const RenderedComponent = Component || \"a\";\n\n // Handle the click event\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n window.open(mailtoLink, \"_blank\");\n };\n\n return (\n <RenderedComponent\n href={mailtoLink}\n aria-label={`Send an email to ${to}`}\n onClick={handleClick}\n {...componentProps}\n >\n {children}\n </RenderedComponent>\n );\n};\n","import { atom } from 'jotai';\n\nimport { webLightTheme } from '@fluentui/react-components';\n\nimport stringsLocEn from '../loc/en.json';\nimport { IStrings } from '../loc/IStrings';\nimport { IGlobalState } from '../models/IGlobalState';\n\nexport const appGlobalStateAtom = atom<IGlobalState>({\n theme: webLightTheme,\n language: \"en\" , \n strings: stringsLocEn as unknown as IStrings,\n refresh: false,\n\n\n} as IGlobalState);\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const useLicenseControlStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ${tokens.colorNeutralBackground1};\n flex: 1;\n `,\n\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n `,\n footer : css`\n justify-content: end;\n position: absolute;\n bottom: 20px;\n right: 20px;\n `,\n };\n};","import React from 'react';\n\nimport { SHA256 } from 'crypto-js';\n\nexport const useUtils = () => {\n const formatString = React.useCallback((template: string, ...args: any[]): string => {\n return template.replace(/{(\\d+)}/g, (match, number) =>\n typeof args[number] !== \"undefined\" ? args[number] : match\n );\n }, []);\n const generateSalt = React.useCallback((tenantId: string, appId: string): string => {\n // Concatenate the inputs with a delimiter\n const inputData = `${tenantId}:${appId}`;\n // Create a SHA-256 hash\n const hash = SHA256(inputData).toString();\n return hash;\n }, []);\n return { formatString, generateSalt };\n};\n","import {\n Button,\n CardFooter,\n Text,\n} from '@fluentui/react-components';\nimport {\n EMAIL_BODY_TEMPLATE,\n EMAIL_BODY_TEMPLATE_REQUEST_LICENSE,\n SUPPORT_EMAIL,\n} from '../../constants/constants';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { Mailto } from '../mailTo/Mailto';\nimport React from 'react';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useLicenseControlStyles } from './useLicenseControlStyles';\nimport { useUtils } from '../../hooks/useUtils';\n\ninterface ILicenseControlProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n onDismiss: () => void;\n}\n\nexport const LicenseControl: React.FC<ILicenseControlProps> = ({\n licenseStatus,\n onDismiss,\n licenseType,\n expiryDate,\n}) => {\n const styles = useLicenseControlStyles();\n const formatDate = new Date(expiryDate as number).toLocaleDateString();\n const appglobalState = useAtomValue(appGlobalStateAtom);\n const { tenantId, applicationId, applicationName, userInformation, strings } = appglobalState;\n const { formatString } = useUtils();\n\n const getMessageAndAction = React.useCallback(() => {\n switch (licenseStatus) {\n case EStatus.blocked:\n return {\n message: formatString(strings.messageStatusBlocked, licenseType),\n actionLabel: \"Contact Support\",\n };\n case EStatus.expired:\n return {\n message: formatString(strings.messageStatusExpired, licenseType, formatDate),\n\n actionLabel: \"Renew License\",\n };\n case EStatus.invalid:\n return {\n message: formatString(strings.messageStatusInvalid, licenseType),\n actionLabel: \"Request New License\",\n };\n case EStatus.notFound:\n return {\n message: strings.messageStatusNotFound,\n actionLabel: \"Request License\",\n };\n case EStatus.genericError:\n return {\n message: formatString(strings.messageStatusGenericError, \"\"),\n actionLabel: \"Contact Support\",\n };\n case EStatus.valid:\n return {\n message: formatString(strings.messageStatusValid, licenseType, formatDate),\n actionLabel: undefined,\n };\n default:\n return undefined;\n }\n }, [licenseStatus]);\n\n let content = React.useMemo(() => getMessageAndAction(), [getMessageAndAction]);\n\n // utils.ts\n const generateBodyText = React.useCallback((): string => {\n const { mail, givenName, surname } = userInformation;\n let body = EMAIL_BODY_TEMPLATE;\n\n if (licenseStatus === EStatus.notFound) {\n body = EMAIL_BODY_TEMPLATE_REQUEST_LICENSE;\n content = {\n actionLabel: \"Request License\",\n message: \"\",\n };\n }\n const message = formatString(\n body,\n givenName,\n surname,\n tenantId,\n applicationId,\n applicationName,\n givenName,\n surname,\n mail,\n content?.message,\n givenName,\n surname\n );\n return message;\n }, [tenantId, applicationId, userInformation, content]);\n\n if (!content) return <></>;\n\n return (\n <div className={styles.container}>\n <Text>{content.message}</Text>\n <CardFooter className={styles.footer}>\n {content.actionLabel && (\n <Mailto\n to={SUPPORT_EMAIL}\n from={userInformation?.mail as string}\n subject={`Support request - ${applicationName}`}\n body={generateBodyText()}\n as={Button}\n componentProps={{\n appearance: \"primary\",\n target: \"_blank\",\n }}\n >\n {content.actionLabel}\n </Mailto>\n )}\n <Button appearance=\"secondary\" onClick={onDismiss}>\n Close\n </Button>\n </CardFooter>\n </div>\n );\n};\n","import {\n makeStyles,\n shorthands,\n tokens,\n} from '@fluentui/react-components';\n\nexport const useRenderHeaderStyles = makeStyles({\n closeButton: {\n marginLeft: \"auto\",\n position: \"absolute\",\n top: \"10px\",\n right: \"10px\",\n zIndex: 99999,\n },\n\n divider: {\n width: \"100%\",\n height: \"1px\",\n backgroundColor: tokens.colorNeutralStroke1,\n marginTop: \"6px\",\n },\n\n renderHeaderContent: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n alignItems: \"stretch\",\n\n width: \"100%\",\n },\n renderHeaderHeader: {\n \n\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"10px\"),\n gap: \"20px\",\n },\n renderHeaderFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"20px\"),\n gap: \"20px\",\n },\n renderHeaderBody: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"20px\"),\n gap: \"20px\",\n },\n renderHeaderTitleContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n renderHeaderTitle: {\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"1\",\n \"-webkit-box-orient\": \"vertical\",\n\n textAlign: \"start\",\n textOverflow: \"ellipsis\",\n wordBreak: \"break-word\",\n },\n renderHeaderDescription: {\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"4\",\n \"-webkit-box-orient\": \"vertical\",\n\n textAlign: \"start\",\n textOverflow: \"ellipsis\",\n wordBreak: \"break-word\",\n },\n dialogTitleAndDescriptionContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"start\",\n alignItems: \"start\",\n paddingLeft: \"10px\",\n paddingRight: \"20px\",\n },\n});\n","import * as React from 'react';\n\nimport {\n Button,\n Caption1,\n Subtitle1,\n} from '@fluentui/react-components';\nimport { Dismiss24Regular } from '@fluentui/react-icons';\nimport { Icon } from '@iconify/react';\n\nimport { useRenderHeaderStyles } from './useRenderHeaderStyles';\n\nexport interface IRenderHeaderProps {\n onDismiss: (open?: boolean) => void;\n icon?: string | JSX.Element;\n title: string | React.ReactNode;\n description?: string | React.ReactNode;\n}\n\nexport const RenderHeader: React.FunctionComponent<IRenderHeaderProps> = (\n props: React.PropsWithChildren<IRenderHeaderProps>\n) => {\n const { onDismiss, title, description, icon } = props;\n const styles = useRenderHeaderStyles();\n\n return (\n <>\n <div className={styles.renderHeaderContent}>\n <div\n className={styles.renderHeaderHeader}>\n <Button\n appearance=\"subtle\"\n className={styles.closeButton}\n onClick={(ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.stopPropagation();\n ev.preventDefault();\n onDismiss(false)}}\n icon={<Dismiss24Regular />}\n />\n\n <div className={styles.renderHeaderTitleContainer}>\n {React.isValidElement(icon) ? icon : <Icon icon={icon as string} />}\n <div className={styles.dialogTitleAndDescriptionContainer}>\n {React.isValidElement(title) ? (\n title\n ) : (\n <Subtitle1 className={styles.renderHeaderTitle}>{title}</Subtitle1>\n )}\n {React.isValidElement(description) ? (\n description\n ) : (\n <Caption1 className={styles.renderHeaderDescription}>{description}</Caption1>\n )}\n </div>\n </div>\n </div>\n <div className={styles.divider} />\n </div>\n </>\n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n makeStyles,\n shorthands,\n} from '@fluentui/react-components';\n\nexport const useRenderLabelStyles = makeStyles({\n\n labelContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n ...shorthands.gap(\"6px\"),\n },\n iconStyles: {\n width: \"26px\",\n },\n item: {\n paddingLeft: \"15px\",\n },\n \n\n});\n","import * as React from 'react';\n\nimport {\n Caption1,\n tokens,\n} from '@fluentui/react-components';\nimport { Icon } from '@iconify/react';\n\nimport { useRenderLabelStyles } from './useRenderLabelStylesStyles';\n\nexport interface IRenderLabelProps {\n label: string; icon?: string | JSX.Element; isRequired?: boolean\n}\n\nexport const RenderLabel: React.FunctionComponent<IRenderLabelProps> = (props: React.PropsWithChildren<IRenderLabelProps>) => {\n const { label, icon, isRequired } = props;\n const styles = useRenderLabelStyles();\n return (\n <>\n <div className={styles.labelContainer}>\n {icon && React.isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n icon={icon as string}\n className={styles.iconStyles}\n width={\"20px\"}\n height={\"20px\"}\n color={tokens.colorBrandForeground1}\n />\n )}\n <Caption1 style={{ color: tokens.colorBrandForeground1 }}>{label}</Caption1>\n <Caption1 style={{ color: tokens.colorPaletteRedForeground1 }}>{isRequired ? \" *\" : \"\"}</Caption1>\n </div>\n </>\n );\n};\n\nexport default RenderLabel;\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const useStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ${tokens.colorNeutralBackground1};\n `,\n\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n `,\n cardFooter : css`\n align-self: flex-end;\n margin-top: 15px;\n `,\n };\n};\n","import * as React from 'react';\n\nimport {\n Body1,\n Body1Strong,\n Button,\n CardFooter,\n Field,\n Input,\n MessageBar,\n} from '@fluentui/react-components';\n\nimport { RenderLabel } from '../RenderLabel';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useLicenseManager } from '@spteck/react-hooks-library';\nimport { useStyles } from './useTrialLicenseStyles';\nimport { useUtils } from '../../hooks/useUtils';\nimport { z } from 'zod';\n\nexport interface ITrialLicenseProps {\n onTrialLicenseAdded: () => void;\n onDismiss: () => void;\n}\n\nexport const TrialLicense: React.FunctionComponent<ITrialLicenseProps> = (\n props: React.PropsWithChildren<ITrialLicenseProps>\n) => {\n const [errors, setErrors] = React.useState<{ [key: string]: string | null }>({});\n const { onTrialLicenseAdded, onDismiss } = props;\n const appGlobalState = useAtomValue(appGlobalStateAtom);\n const { userInformation, strings, tenantId, context } = appGlobalState;\n const { generateSalt } = useUtils();\n const [error, setError] = React.useState<Error | undefined>(undefined);\n\n const { requestTrialLicense } = useLicenseManager(\n tenantId as string,\n context?.manifest.id as string,\n generateSalt(tenantId as string, context?.manifest.id as string),\n context\n ) as any;\n\n // Define Zod schema for validation\n const trialLicenseSchema = z.object({\n contactFirstName: z.string().min(1, strings.contactFirstNameError),\n contactLastName: z.string().min(1, strings.contactLastNameError),\n contactEmail: z.string().email(strings.contactEmailError),\n contactCompany: z.string().min(1, strings.contactCompanyError),\n });\n\n const [formData, setFormData] = React.useState({\n contactFirstName: userInformation?.givenName as string,\n contactLastName: userInformation?.surname as string,\n contactEmail: userInformation?.mail as string,\n contactCompany: \"\",\n });\n\n const handleInputChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = e.target;\n setFormData((prev) => ({ ...prev, [name]: value }));\n }, []);\n\n const styles = useStyles();\n\n const handleSubmit = React.useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n // Validate form data using Zod schema\n const validation = trialLicenseSchema.safeParse(formData);\n if (!validation.success) {\n // Map errors for display\n const fieldErrors: { [key: string]: string } = {};\n validation.error.errors.forEach((error) => {\n const fieldName = error.path[0] as string;\n fieldErrors[fieldName] = error.message;\n });\n setErrors(fieldErrors);\n } else {\n // Clear errors and call the parent function\n setErrors({});\n try {\n await requestTrialLicense(\n tenantId as string,\n context.manifest.id as string,\n formData.contactFirstName,\n formData.contactLastName,\n formData.contactEmail,\n formData.contactCompany\n );\n onTrialLicenseAdded();\n } catch (error) {\n console.error(error);\n setError(error as Error);\n }\n }\n },\n [formData, onTrialLicenseAdded]\n );\n\n return (\n <div className={styles.container}>\n <div>\n <Body1Strong className={styles.title}>{strings.trialLicenseTitle}</Body1Strong>\n <Body1>{strings.trialLicenseText}</Body1>\n </div>\n\n <>\n <Field\n label={<RenderLabel label={strings.firstName} isRequired />}\n validationState={errors.contactFirstName ? \"error\" : \"none\"}\n validationMessage={errors.contactFirstName || undefined}\n >\n <Input\n name=\"contactFirstName\"\n value={formData.contactFirstName}\n onChange={handleInputChange}\n placeholder={strings.firstNamePlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.lastName} isRequired />}\n validationState={errors.contactLastName ? \"error\" : \"none\"}\n validationMessage={errors.contactLastName || undefined}\n >\n <Input\n name=\"contactLastName\"\n value={formData.contactLastName}\n onChange={handleInputChange}\n placeholder={strings.lastNamePlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.email} isRequired />}\n validationState={errors.contactEmail ? \"error\" : \"none\"}\n validationMessage={errors.contactEmail || undefined}\n >\n <Input\n name=\"contactEmail\"\n value={formData.contactEmail}\n onChange={handleInputChange}\n placeholder={strings.emailPlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.company} isRequired />}\n validationState={errors.contactCompany ? \"error\" : \"none\"}\n validationMessage={errors.contactCompany || undefined}\n >\n <Input\n name=\"contactCompany\"\n value={formData.contactCompany}\n onChange={handleInputChange}\n placeholder={strings.companyPlaceholder}\n />\n </Field>\n {error && (\n <MessageBar style={{ marginTop: 10, marginBottom: 10 }} intent=\"error\">\n {\" \"}\n {error.message}\n </MessageBar>\n )}\n <CardFooter className={styles.cardFooter}>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {strings.register}\n </Button>\n <Button appearance=\"secondary\" onClick={onDismiss}>\n {strings.cancel}\n </Button>\n </CardFooter>\n </>\n </div>\n );\n};\n","import {\n Apps20Regular,\n Clock20Regular,\n Key20Regular,\n} from '@fluentui/react-icons';\nimport {\n Dialog,\n DialogActions,\n DialogSurface,\n DialogTitle,\n FluentProvider,\n SelectTabData,\n SelectTabEvent,\n Tab,\n TabList,\n TabValue,\n} from '@fluentui/react-components';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { ETabsOptions } from '../../models/ETabsOptions';\nimport { LicenseControl } from '../licenseControl/LicenseControl';\nimport React from 'react';\nimport { RenderHeader } from '../renderHeader';\nimport { TrialLicense } from '../trialLicense.ts/TrialLicense';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtom } from 'jotai';\n\nexport interface IRegisterDialogProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n open: boolean;\n onDismiss: (update?: boolean) => void;\n}\n\ninterface ITab {\n id: string;\n value: string;\n label: string;\n icon: JSX.Element;\n}\n\nexport const RegisterDialog: React.FC<IRegisterDialogProps> = (props: IRegisterDialogProps) => {\n const { licenseStatus, open, onDismiss, licenseType, expiryDate } = props;\n const [appGlobalState, setAppGlobalState] = useAtom(appGlobalStateAtom);\n const { theme, applicationName, applicationIcon, strings, showApps = false } = appGlobalState;\n\n const [selectedValue, setSelectedValue] = React.useState<TabValue>(\"trial\");\n\n const tabs: ITab[] = React.useMemo(() => {\n const defaultTabs = [\n { id: \"trial\", value: \"trial\", label: strings.trial, icon: <Clock20Regular /> },\n { id: \"license\", value: \"license\", label: strings.license, icon: <Key20Regular /> },\n ];\n if (showApps) {\n tabs.push({ id: \"apps\", value: \"apps\", label: strings.apps, icon: <Apps20Regular /> });\n }\n return defaultTabs;\n }, [strings]);\n\n const onTabSelect = React.useCallback((_event: SelectTabEvent, data: SelectTabData) => {\n setSelectedValue(data.value);\n }, []);\n\n React.useEffect(() => {\n const statusToTab = {\n [EStatus.notFound]: ETabsOptions.Trial,\n [EStatus.expired]: ETabsOptions.License,\n [EStatus.invalid]: ETabsOptions.License,\n [EStatus.blocked]: ETabsOptions.License,\n [EStatus.genericError]: ETabsOptions.License,\n [EStatus.valid]: ETabsOptions.License,\n };\n setSelectedValue(statusToTab[licenseStatus] || ETabsOptions.Trial);\n }, [licenseStatus]);\n\n const renderPanel = React.useMemo((): JSX.Element => {\n switch (selectedValue) {\n case \"trial\":\n return (\n <TrialLicense\n onTrialLicenseAdded={() => {\n setAppGlobalState({ ...appGlobalState, refresh: true });\n onDismiss();\n }}\n onDismiss={onDismiss}\n />\n );\n case \"license\":\n return (\n <LicenseControl\n licenseStatus={licenseStatus}\n onDismiss={onDismiss}\n licenseType={licenseType}\n expiryDate={expiryDate}\n />\n );\n case \"apps\":\n return <div>Apps</div>;\n default:\n return <></>;\n }\n }, [selectedValue, licenseStatus, licenseType, expiryDate]);\n\n const filterTabs = React.useCallback(\n (tab: ITab) => {\n if (\n licenseType?.toLocaleLowerCase() === ETabsOptions.Trial.toLocaleLowerCase() ||\n licenseStatus.toLocaleLowerCase() === EStatus.genericError.toLocaleLowerCase()\n ) {\n return tab.id.toLocaleLowerCase() !== ETabsOptions.Trial.toLocaleLowerCase();\n }\n return true;\n },\n [licenseType, licenseStatus]\n );\n\n return (\n <FluentProvider theme={theme}>\n <Dialog open={open} modalType=\"modal\">\n <DialogSurface style={{ minHeight: 300 }}>\n <DialogTitle>\n <RenderHeader icon={applicationIcon} title={applicationName} onDismiss={onDismiss} />\n </DialogTitle>\n\n <TabList selectedValue={selectedValue} onTabSelect={onTabSelect} selectTabOnFocus={true} size=\"medium\">\n {tabs.filter(filterTabs).map((tab) => (\n <Tab key={tab.id} value={tab.value} icon={tab.icon}>\n {tab.label}\n </Tab>\n ))}\n </TabList>\n {renderPanel}\n <DialogActions></DialogActions>\n </DialogSurface>\n </Dialog>\n </FluentProvider>\n );\n};\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const \n useStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n margin-bottom: 30px;\n `,\n titleContainer: css`\n display: flex;\n flex-direction: column;\n width: 100%;\n justify-content: center;\n align-items: center;\n gap: 10px;\n `,\n titleAndIcon: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n `,\n informationPanel: css`\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background-color: ${tokens.colorNeutralBackground3};\n `,\n infoRow: css`\n display: flex;\n gap: 10px;\n justify-content: center;\n align-items: center;\n width: 100%;\n `,\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n `,\n };\n};","import * as React from 'react';\n\nimport {\n Body1,\n Body1Strong,\n Button,\n DialogActions,\n FluentProvider,\n Subtitle1,\n} from '@fluentui/react-components';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { RegisterDialog } from '../registerDialog/RegisterDialog';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useStyles } from './licensePlaceHolderStyles';\nimport { useUtils } from '../../hooks/useUtils';\n\nexport interface ILicensePlaceHolderProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n}\n\nexport const LicensePlaceHolder: React.FunctionComponent<ILicensePlaceHolderProps> = (\n props: React.PropsWithChildren<ILicensePlaceHolderProps>\n) => {\n const appglobalState = useAtomValue(appGlobalStateAtom);\n const { theme, applicationName, applicationIcon, placeHolderText, strings } = appglobalState;\n const styles = useStyles();\n const [isOpenLicenseForm, setIsOpenLicenseForm] = React.useState<boolean>(false);\n const { licenseStatus, licenseType, expiryDate } = props;\n const { formatString } = useUtils();\n const onDissmiss = React.useCallback(() => {\n setIsOpenLicenseForm(false);\n }, []);\n\n const formatDate = React.useMemo(() => new Date(expiryDate as number).toLocaleDateString(), [expiryDate]);\n\n const getMessageAndAction = React.useCallback(() => {\n switch (licenseStatus) {\n case EStatus.blocked:\n return {\n message: formatString(strings.messageStatusBlockedShort, licenseType),\n actionLabel: strings.details,\n };\n case EStatus.expired:\n return {\n message: formatString(strings.messageStatusExpiredShort, licenseType, formatDate),\n actionLabel: strings.buyLicense,\n };\n case EStatus.invalid:\n return {\n message: formatString(strings.messageStatusInvalidShort, licenseType ?? \"\"),\n actionLabel: strings.details,\n };\n case EStatus.notFound:\n return {\n message: formatString(strings.messageStatusNotFoundShort),\n actionLabel: strings.requestLicense,\n };\n case EStatus.genericError:\n return {\n message: formatString(strings.messageStatusGenericErrorShort, licenseType ?? \"\"),\n actionLabel: strings.details,\n };\n default:\n return undefined;\n }\n }, [licenseStatus]);\n\n const content = React.useMemo(() => {\n return getMessageAndAction();\n }, [getMessageAndAction]);\n\n return (\n <>\n <FluentProvider theme={theme}>\n <div className={styles.informationPanel}>\n <div className={styles.infoRow}>\n <div className={styles.title}>\n <div className={styles.titleContainer}>\n <div className={styles.titleAndIcon}>\n {applicationIcon} <Subtitle1> {applicationName}</Subtitle1>{\" \"}\n </div>\n <Body1>{placeHolderText}</Body1>\n </div>\n </div>\n </div>\n <div className={styles.infoRow}>\n <Body1Strong> {content?.message}</Body1Strong>\n </div>\n <div className={styles.infoRow}>\n <DialogActions style={{ marginTop: 15 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n setIsOpenLicenseForm(true);\n }}\n >\n {content?.actionLabel}\n </Button>\n </DialogActions>\n {isOpenLicenseForm && (\n <RegisterDialog\n licenseStatus={licenseStatus}\n licenseType={licenseType}\n expiryDate={expiryDate}\n open={isOpenLicenseForm}\n onDismiss={onDissmiss}\n />\n )}\n </div>\n </div>\n </FluentProvider>\n </>\n );\n};\n","import * as React from 'react';\n\nimport {\n Button,\n MessageBar,\n MessageBarActions,\n MessageBarBody,\n MessageBarTitle,\n} from '@fluentui/react-components';\n\nexport interface IInformationBarProps {\n message: JSX.Element | string;\n onAction?: () => void;\n}\n\nexport const InformationBar: React.FunctionComponent<IInformationBarProps> = (\n props: React.PropsWithChildren<IInformationBarProps>\n) => {\n const { message, onAction } = props;\n return (\n <>\n <MessageBar intent={\"warning\"}>\n <MessageBarBody>\n <MessageBarTitle>License Manager</MessageBarTitle>\n {message}\n </MessageBarBody>\n <MessageBarActions>\n <Button onClick={onAction}>Details</Button>\n </MessageBarActions>\n </MessageBar>\n </>\n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport React from \"react\";\nimport type { SVGProps } from \"react\";\n\nexport function ErrorIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path d=\"M2 6.95c0-.883 0-1.324.07-1.692A4 4 0 0 1 5.257 2.07C5.626 2 6.068 2 6.95 2c.386 0 .58 0 .766.017a4 4 0 0 1 2.18.904c.144.119.28.255.554.529L11 4c.816.816 1.224 1.224 1.712 1.495a4 4 0 0 0 .848.352C14.098 6 14.675 6 15.828 6h.374c2.632 0 3.949 0 4.804.77q.119.105.224.224c.77.855.77 2.172.77 4.804V14c0 3.771 0 5.657-1.172 6.828S17.771 22 14 22h-4c-3.771 0-5.657 0-6.828-1.172S2 17.771 2 14z\" />\n <path strokeLinecap=\"round\" d=\"m10.5 15l3-3m0 3l-3-3\" />\n </g>\n </svg>\n );\n}\n","import React from 'react';\n\nimport { css } from '@emotion/css';\nimport {\n Body1Strong,\n shorthands,\n Subtitle1,\n tokens,\n} from '@fluentui/react-components';\n\nimport { ErrorIcon } from '../errorSVG/ErrorSVG';\n\ninterface IErrorDisplayProps {\n message: string;\n}\n\nconst styles = {\n container: css({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n textAlign: \"center\",\n backgroundColor: tokens.colorNeutralBackground2,\n borderRadius: tokens.borderRadiusMedium,\n ...shorthands.padding(tokens.spacingVerticalXL, tokens.spacingHorizontalXL),\n color: tokens.colorNeutralForeground1,\n }),\n icon: css({\n marginTop: tokens.spacingHorizontalXL,\n fontSize: \"50px\",\n marginBottom: tokens.spacingHorizontalXL,\n color: tokens.colorBrandBackground,\n }),\n message: css({\n marginBottom: tokens.spacingHorizontalXL,\n }),\n};\n\nexport const ShowError: React.FC<IErrorDisplayProps> = ({ message }) => {\n return (\n <div className={styles.container}>\n <Subtitle1>News Feed - Application</Subtitle1>\n <ErrorIcon className={styles.icon} />\n <Body1Strong className={styles.message}>{message}</Body1Strong>\n </div>\n );\n};\n\nexport default ShowError;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport {\n EStatus,\n ICheckAndUpdateLicesingResponse,\n useLicenseManager,\n useUser,\n} from '@spteck/react-hooks-library';\nimport {\n FluentProvider,\n IdPrefixProvider,\n teamsLightTheme,\n} from '@fluentui/react-components';\n\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { IGlobalState } from '../../models/IGlobalState';\nimport { ILicenseProviderProps } from './ILicenseProviderProps';\nimport { InformationBar } from '../informationBar/InformationBar';\nimport { LicensePlaceHolder } from '../licensePlaceHolder/LicensePlaceHolder';\nimport { RegisterDialog } from '../registerDialog/RegisterDialog';\nimport ShowError from '../showError/ShowError';\nimport { User } from '@microsoft/microsoft-graph-types';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { css } from '@emotion/css';\nimport { differenceInDays } from 'date-fns';\nimport { useAtom } from 'jotai';\nimport { useUtils } from '../../hooks/useUtils';\n\nconst NUMBER_DAYS_WARNING = 30;\n\nexport const LicenseProvider: React.FunctionComponent<ILicenseProviderProps> = (\n props: React.PropsWithChildren<ILicenseProviderProps>\n) => {\n const { theme = teamsLightTheme, context, children, tenantId, language = \"en\", applicationId } = props;\n\n /* const instanceId = context?.instanceId as string;\n const tenantId = context?.pageContext.legacyPageContext.aadTenantId; */\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const [isLoading, setIsLoading] = React.useState<boolean>(true);\n const [licensingResponse, setLicenseResponse] = React.useState<ICheckAndUpdateLicesingResponse>();\n const [appglobalState, setAppGlobalState] = useAtom<IGlobalState>(appGlobalStateAtom);\n const { userInformation } = useUser(context);\n const [isOpenRegisterDialog, setIsOpenRegisterDialog] = React.useState<boolean>(false);\n const { formatString } = useUtils();\n const { strings, refresh } = appglobalState;\n const { generateSalt } = useUtils();\n const { status, licenseType, expiryDate } = (licensingResponse as ICheckAndUpdateLicesingResponse) || {};\n\n const { checkAndUpdateLicensing } = useLicenseManager(\n tenantId as string,\n applicationId as string, \n generateSalt(tenantId as string, applicationId as string),\n context\n ) as any;\n\n const styles = React.useMemo(() => {\n return {\n root: css({\n backgroundColor: \"transparent\",\n padding: 20,\n }),\n };\n }, []);\n\n React.useEffect(() => {\n (async () => {\n try {\n const stringsLoc = await import(`./loc/${language}.json`);\n setAppGlobalState((prev) => ({\n ...prev,\n ...props,\n strings: stringsLoc,\n userInformation: userInformation as User,\n }));\n const result = await checkAndUpdateLicensing();\n setLicenseResponse(result);\n setIsLoading(false);\n } catch (error) {\n if (error instanceof Error) setError(error);\n setIsLoading(false);\n }\n })();\n }, [userInformation]);\n\n const fallbackRender = React.useCallback(({ error }: { error: Error }) => {\n console.error(`[LicenseManager:Error: ${error.message}`);\n return <ShowError message={error.message} />;\n }, []);\n\n const onMessageBarAction = React.useCallback(() => {\n setIsOpenRegisterDialog(true);\n }, []);\n\n // ipdate liecense status on refresh\n React.useEffect(() => {\n (async () => {\n try {\n setAppGlobalState((prev) => ({\n ...prev,\n refresh: false,\n }));\n const result = await checkAndUpdateLicensing();\n setLicenseResponse(result);\n setIsLoading(false);\n } catch (error) {\n if (error instanceof Error) setError(error);\n setIsLoading(false);\n }\n })();\n }, [refresh]);\n\n const onDissmiss = React.useCallback(() => {\n setIsOpenRegisterDialog(false);\n }, []);\n\n // renderMessagebar if the license is about to expire\n const renderMessagebar = React.useCallback(\n (licenseType: string, expiryDate: number, warningDays: number): JSX.Element => {\n const expirationDate = new Date(expiryDate);\n const today = new Date();\n const formatedExpiredDate = expirationDate.toLocaleDateString();\n const dayDiff = differenceInDays(expirationDate, today);\n let message = \"\";\n if (dayDiff <= warningDays) {\n message = formatString(strings.messageLicenseWarning, licenseType, dayDiff, formatedExpiredDate);\n return <InformationBar message={message} onAction={onMessageBarAction} />;\n }\n return <></>;\n },\n [expiryDate]\n );\n\n // render the control based on the license status\n const renderContent = React.useCallback((): JSX.Element => {\n switch (status) {\n case EStatus.valid:\n return (\n <>\n {renderMessagebar(licenseType as string, expiryDate as number, NUMBER_DAYS_WARNING)}\n {children}\n </>\n );\n case EStatus.genericError:\n case EStatus.notFound:\n case EStatus.blocked:\n case EStatus.expired:\n case EStatus.invalid:\n return <LicensePlaceHolder licenseStatus={status} licenseType={licenseType} expiryDate={expiryDate} />;\n default:\n break;\n }\n return <></>;\n }, [licensingResponse, refresh]);\n\n if (isLoading) return null;\n if (error) return <ShowError message={error.message} />;\n\n return (\n <>\n <IdPrefixProvider value=\"news-feed-\">\n <FluentProvider theme={theme} className={styles.root}>\n <ErrorBoundary fallbackRender={fallbackRender}>\n {renderContent()}\n {isOpenRegisterDialog && (\n <RegisterDialog\n licenseStatus={status}\n licenseType={licenseType}\n expiryDate={expiryDate}\n open={isOpenRegisterDialog}\n onDismiss={onDissmiss}\n />\n )}\n </ErrorBoundary>\n </FluentProvider>\n </IdPrefixProvider>\n </>\n );\n};\n"],"names":["ETabsOptions","SUPPORT_EMAIL","EMAIL_BODY_TEMPLATE","EMAIL_BODY_TEMPLATE_REQUEST_LICENSE","Mailto","props","to","from","subject","body","children","Component","as","_props$componentProps","componentProps","mailtoLink","encodeURIComponent","RenderedComponent","handleClick","e","preventDefault","window","open","React","href","onClick","appGlobalStateAtom","atom","theme","webLightTheme","language","strings","stringsLocEn","refresh","useLicenseControlStyles","container","css","_templateObject","_taggedTemplateLiteralLoose","tokens","colorNeutralBackground1","title","_templateObject2","footer","_templateObject3","useUtils","formatString","useCallback","template","args","Array","_len","_key","arguments","replace","match","number","generateSalt","tenantId","appId","inputData","hash","SHA256","toString","LicenseControl","_ref","licenseStatus","onDismiss","licenseType","expiryDate","styles","formatDate","Date","toLocaleDateString","appglobalState","useAtomValue","applicationId","applicationName","userInformation","_useUtils","getMessageAndAction","EStatus","blocked","message","messageStatusBlocked","actionLabel","expired","messageStatusExpired","invalid","messageStatusInvalid","notFound","messageStatusNotFound","genericError","messageStatusGenericError","valid","messageStatusValid","undefined","content","useMemo","generateBodyText","mail","givenName","surname","_content","className","Text","CardFooter","Button","appearance","target","useRenderHeaderStyles","makeStyles","closeButton","marginLeft","position","top","right","zIndex","divider","width","height","backgroundColor","colorNeutralStroke1","marginTop","renderHeaderContent","display","flexDirection","justifyContent","alignItems","renderHeaderHeader","_extends","shorthands","padding","gap","renderHeaderFooter","renderHeaderBody","renderHeaderTitleContainer","renderHeaderTitle","textAlign","textOverflow","wordBreak","renderHeaderDescription","dialogTitleAndDescriptionContainer","paddingLeft","paddingRight","RenderHeader","description","icon","ev","stopPropagation","Dismiss24Regular","Icon","Subtitle1","Caption1","useRenderLabelStyles","labelContainer","iconStyles","item","RenderLabel","label","isRequired","color","colorBrandForeground1","style","colorPaletteRedForeground1","useStyles","cardFooter","TrialLicense","_React$useState","errors","setErrors","onTrialLicenseAdded","appGlobalState","context","_React$useState2","error","setError","_useLicenseManager","useLicenseManager","manifest","id","requestTrialLicense","trialLicenseSchema","z","object","contactFirstName","string","min","contactFirstNameError","contactLastName","contactLastNameError","contactEmail","email","contactEmailError","contactCompany","contactCompanyError","_React$useState3","formData","setFormData","handleInputChange","_e$target","name","value","prev","_extends2","handleSubmit","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validation","fieldErrors","wrap","_callee$","_context","next","safeParse","success","forEach","fieldName","path","t0","console","stop","_x","apply","Body1Strong","trialLicenseTitle","Body1","trialLicenseText","Field","firstName","validationState","validationMessage","Input","onChange","placeholder","firstNamePlaceholder","lastName","lastNamePlaceholder","emailPlaceholder","company","companyPlaceholder","MessageBar","marginBottom","intent","register","cancel","RegisterDialog","_useAtom","useAtom","setAppGlobalState","applicationIcon","_appGlobalState$showA","showApps","useState","selectedValue","setSelectedValue","tabs","defaultTabs","trial","Clock20Regular","license","Key20Regular","push","apps","Apps20Regular","onTabSelect","_event","data","useEffect","statusToTab","_statusToTab","Trial","License","renderPanel","filterTabs","tab","toLocaleLowerCase","FluentProvider","Dialog","modalType","DialogSurface","minHeight","DialogTitle","TabList","selectTabOnFocus","size","filter","map","Tab","key","DialogActions","titleContainer","titleAndIcon","informationPanel","_templateObject4","colorNeutralBackground3","infoRow","_templateObject5","_templateObject6","LicensePlaceHolder","placeHolderText","isOpenLicenseForm","setIsOpenLicenseForm","onDissmiss","messageStatusBlockedShort","details","messageStatusExpiredShort","buyLicense","messageStatusInvalidShort","messageStatusNotFoundShort","requestLicense","messageStatusGenericErrorShort","InformationBar","onAction","MessageBarBody","MessageBarTitle","MessageBarActions","ErrorIcon","xmlns","viewBox","fill","stroke","strokeWidth","d","strokeLinecap","colorNeutralBackground2","borderRadius","borderRadiusMedium","spacingVerticalXL","spacingHorizontalXL","colorNeutralForeground1","fontSize","colorBrandBackground","ShowError","NUMBER_DAYS_WARNING","LicenseProvider","_props$theme","teamsLightTheme","_props$language","isLoading","setIsLoading","licensingResponse","setLicenseResponse","_useUser","useUser","_React$useState4","isOpenRegisterDialog","setIsOpenRegisterDialog","_useUtils2","status","checkAndUpdateLicensing","root","stringsLoc","result","sent","Error","fallbackRender","_ref3","onMessageBarAction","_callee2","_callee2$","_context2","renderMessagebar","warningDays","expirationDate","today","formatedExpiredDate","dayDiff","differenceInDays","messageLicenseWarning","renderContent","IdPrefixProvider","ErrorBoundary"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";function e(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t.default=e,t}Object.defineProperty(exports,"__esModule",{value:!0});var t,n,r=require("react"),a=(t=r)&&"object"==typeof t&&"default"in t?t.default:t,o=require("@fluentui/react-components"),i=require("@spteck/react-hooks-library"),s=require("@fluentui/react-icons"),c=require("jotai"),l=require("@emotion/css"),u=require("crypto-js"),m=require("@iconify/react"),d=require("zod"),p=require("react-error-boundary"),f=require("date-fns");function g(e,t,n,r,a,o,i){try{var s=e[o](i),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,a)}function h(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){g(o,r,a,i,s,"next",e)}function s(e){g(o,r,a,i,s,"throw",e)}i(void 0)}))}}function y(){return(y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}function v(){v=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=Object.create((t&&t.prototype instanceof h?t:h).prototype),i=new F(r||[]);return a(o,"_invoke",{value:N(e,n,i)}),o}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",p="executing",f="completed",g={};function h(){}function y(){}function E(){}var x={};l(x,i,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(B([])));w&&w!==n&&r.call(w,i)&&(x=w);var L=E.prototype=h.prototype=Object.create(x);function S(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(a,o,i,s){var c=m(e[a],e,o);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==typeof u&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,s)}),(function(e){n("throw",e,i,s)})):t.resolve(u).then((function(e){l.value=e,i(l)}),(function(e){return n("throw",e,i,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function N(t,n,r){var a=d;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===f){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var s=r.delegate;if(s){var c=C(s,r);if(c){if(c===g)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=f,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=p;var l=m(t,n,r);if("normal"===l.type){if(a=r.done?f:"suspendedYield",l.arg===g)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=f,r.method="throw",r.arg=l.arg)}}}function C(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var o=m(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,g;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function T(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function D(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(T,this),this.reset(!0)}function B(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(typeof t+" is not iterable")}return y.prototype=E,a(L,"constructor",{value:E,configurable:!0}),a(E,"constructor",{value:y,configurable:!0}),y.displayName=l(E,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,E):(e.__proto__=E,l(e,c,"GeneratorFunction")),e.prototype=Object.create(L),e},t.awrap=function(e){return{__await:e}},S(k.prototype),l(k.prototype,s,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new k(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},S(L),l(L,c,"Generator"),l(L,i,(function(){return this})),l(L,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=B,F.prototype={constructor:F,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(D),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return s.type="throw",s.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,g):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),D(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;D(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:B(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}function E(e,t){return t||(t=e.slice(0)),e.raw=t,e}!function(e){e.Trial="trial",e.License="license",e.Apps="apps"}(n||(n={}));var x,b,w,L,S,k,N,C,T,D,F,B,I=function(e){var t=e.to,n=e.from,r=e.subject,o=e.body,i=e.children,s=e.as,c=e.componentProps,l=void 0===c?{}:c,u="mailto:"+t+"?"+(n?"from="+encodeURIComponent(n)+"&":"")+(r?"subject="+encodeURIComponent(r)+"&":"")+(o?"body="+encodeURIComponent(o):"");return a.createElement(s||"a",Object.assign({href:u,"aria-label":"Send an email to "+t,onClick:function(e){e.preventDefault(),window.open(u,"_blank")}},l),i)},j=c.atom({theme:o.webLightTheme,language:"en",strings:{openDialog:"Open campaign dialog",deleteCampaign:"Delete this campaign?",tenantInformation:"Tenant Information",licensingType:"Licensing Type",startDate:"Start Date",endDate:"End Date",licenseKey:"License Key",generate:"Generate",cancel:"Cancel",tenantId:"Tenant Id",tenantUrl:"Tenant Url",applicationId:"Application Id",dateError:"End date must be after start date.",submit:"Generate",placeHolderTitle:"Try or Buy Application",placeHolderText:"To use this application, you need to buy a license. Please click on the button below to register and buy a license, or get 'Trial' license to try the application for free.",placeHolderTrialButton:"Try",placeHolderBuyButton:"Buy",placeHolderRegistryButton:"Buy",companyName:"Company Name",contactFirstName:"Contact First Name",contactLastName:"Contact Last Name",contactEmail:"Contact Email",register:"Register",messageLicenseWarning:"The License {0} will expire in {1} day(s) (expires on {2});",trial:"Trial",license:"License",apps:"Apps",contactFirstNameError:"First name is required",contactLastNameError:"Last name is required",contactEmailError:"format Email is invalid",companyNameError:"Company name is required",trialLicenseTitle:"Register for a trial license",trialLicenseText:"To use this application, you need to register for a trial license. Please fill in the form below to get a trial license.",firstName:"First Name",firstnamePlaceholder:"Enter your first name",lastName:"Last Name",lastnamePlaceholder:"Enter your last name",email:"Email",emailPlaceholder:"Enter your email",company:"Company",companyPlaceholder:"Enter your company",messageStatusBlocked:"Your {0} license has been blocked. Please contact support for assistance.",messageStatusExpired:"Your {0} license has expired at {1}. Please renew it to continue using the application.",messageStatusInvalid:"Your {0} license is invalid. This could be due to incorrect information or an issue with the license itself. Please contact support to request a new license.",messageStatusNotFound:"No valid license was found. This could be because you haven't yet requested. Please contact our support team to request a license and gain access to all features.",messageStatusGenericError:"An error occurred while validating your {0} license. Please contact support for assistance",messageStatusValid:"Your {0} license is valid until {1}. You have full access to the application.",messageStatusBlockedShort:"Your {0} license has been blocked.",messageStatusExpiredShort:"Your {0} license has expired at {1}",messageStatusInvalidShort:"Your {0} license is invalid.",messageStatusNotFoundShort:"No valid license was found, Start a trial or request a license for full access.",messageStatusGenericErrorShort:"An error occurred while validating your {0} license.",details:"Details",buyLicense:"Buy License",requestLicense:"Request License"},refresh:!1}),P=function(){return{formatString:a.useCallback((function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return e.replace(/{(\d+)}/g,(function(e,t){return void 0!==n[t]?n[t]:e}))}),[]),generateSalt:a.useCallback((function(e,t){return u.SHA256(e+":"+t).toString()}),[])}},A=function(e){var t=e.licenseStatus,n=e.onDismiss,r=e.licenseType,s=e.expiryDate,u={container:l.css(x||(x=E(["\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ",";\n flex: 1;\n "])),o.tokens.colorNeutralBackground1),title:l.css(b||(b=E(["\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n "]))),footer:l.css(w||(w=E(["\n justify-content: end;\n position: absolute;\n bottom: 20px;\n right: 20px;\n "])))},m=new Date(s).toLocaleDateString(),d=c.useAtomValue(j),p=d.tenantId,f=d.applicationId,g=d.applicationName,h=d.userInformation,y=d.strings,v=P().formatString,L=a.useCallback((function(){switch(t){case i.EStatus.blocked:return{message:v(y.messageStatusBlocked,r),actionLabel:"Contact Support"};case i.EStatus.expired:return{message:v(y.messageStatusExpired,r,m),actionLabel:"Renew License"};case i.EStatus.invalid:return{message:v(y.messageStatusInvalid,r),actionLabel:"Request New License"};case i.EStatus.notFound:return{message:y.messageStatusNotFound,actionLabel:"Request License"};case i.EStatus.genericError:return{message:v(y.messageStatusGenericError,""),actionLabel:"Contact Support"};case i.EStatus.valid:return{message:v(y.messageStatusValid,r,m),actionLabel:void 0};default:return}}),[t]),S=a.useMemo((function(){return L()}),[L]),k=a.useCallback((function(){var e,n=h.givenName,r=h.surname,a="Subject: Support Request from {0} {1}\n\nDear Support Team,\n\nI am reaching out to you because I am experiencing issues with my license. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email**: {7}\n\n {8}\n\nBest regards,\n{9} {10}";return t===i.EStatus.notFound&&(a="Subject: Request for New License {0} {1}\n\nDear Support Team,\n\nI am just contacting you to request a license for the following product. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email **: {7}\n\nBest regards,\n{8} {9}",S={actionLabel:"Request License",message:""}),v(a,n,r,p,f,g,n,r,h.mail,null==(e=S)?void 0:e.message,n,r)}),[p,f,h,S]);return S?a.createElement("div",{className:u.container},a.createElement(o.Text,null,S.message),a.createElement(o.CardFooter,{className:u.footer},S.actionLabel&&a.createElement(I,{to:"geral@spteck.com",from:null==h?void 0:h.mail,subject:"Support request - "+g,body:k(),as:o.Button,componentProps:{appearance:"primary",target:"_blank"}},S.actionLabel),a.createElement(o.Button,{appearance:"secondary",onClick:n},"Close"))):a.createElement(a.Fragment,null)},q=o.makeStyles({closeButton:{marginLeft:"auto",position:"absolute",top:"10px",right:"10px",zIndex:99999},divider:{width:"100%",height:"1px",backgroundColor:o.tokens.colorNeutralStroke1,marginTop:"6px"},renderHeaderContent:{display:"flex",flexDirection:"column",justifyContent:"flex-start",alignItems:"stretch",width:"100%"},renderHeaderHeader:y({display:"flex",flexDirection:"column",justifyContent:"flex-start"},o.shorthands.padding("10px"),{gap:"20px"}),renderHeaderFooter:y({display:"flex",flexDirection:"row",justifyContent:"flex-start"},o.shorthands.padding("20px"),{gap:"20px"}),renderHeaderBody:y({display:"flex",flexDirection:"column",justifyContent:"flex-start"},o.shorthands.padding("20px"),{gap:"20px"}),renderHeaderTitleContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",alignItems:"center"},renderHeaderTitle:{display:"-webkit-box","-webkit-line-clamp":"1","-webkit-box-orient":"vertical",textAlign:"start",textOverflow:"ellipsis",wordBreak:"break-word"},renderHeaderDescription:{display:"-webkit-box","-webkit-line-clamp":"4","-webkit-box-orient":"vertical",textAlign:"start",textOverflow:"ellipsis",wordBreak:"break-word"},dialogTitleAndDescriptionContainer:{display:"flex",flexDirection:"column",justifyContent:"start",alignItems:"start",paddingLeft:"10px",paddingRight:"20px"}}),R=function(e){var t=e.onDismiss,n=e.title,a=e.description,i=e.icon,c=q();return r.createElement(r.Fragment,null,r.createElement("div",{className:c.renderHeaderContent},r.createElement("div",{className:c.renderHeaderHeader},r.createElement(o.Button,{appearance:"subtle",className:c.closeButton,onClick:function(e){e.stopPropagation(),e.preventDefault(),t(!1)},icon:r.createElement(s.Dismiss24Regular,null)}),r.createElement("div",{className:c.renderHeaderTitleContainer},r.isValidElement(i)?i:r.createElement(m.Icon,{icon:i}),r.createElement("div",{className:c.dialogTitleAndDescriptionContainer},r.isValidElement(n)?n:r.createElement(o.Subtitle1,{className:c.renderHeaderTitle},n),r.isValidElement(a)?a:r.createElement(o.Caption1,{className:c.renderHeaderDescription},a)))),r.createElement("div",{className:c.divider})))},H=o.makeStyles({labelContainer:y({display:"flex",flexDirection:"row",justifyContent:"flex-start",alignItems:"center"},o.shorthands.gap("6px")),iconStyles:{width:"26px"},item:{paddingLeft:"15px"}}),O=function(e){var t=e.label,n=e.icon,a=e.isRequired,i=H();return r.createElement(r.Fragment,null,r.createElement("div",{className:i.labelContainer},n&&r.isValidElement(n)?n:r.createElement(m.Icon,{icon:n,className:i.iconStyles,width:"20px",height:"20px",color:o.tokens.colorBrandForeground1}),r.createElement(o.Caption1,{style:{color:o.tokens.colorBrandForeground1}},t),r.createElement(o.Caption1,{style:{color:o.tokens.colorPaletteRedForeground1}},a?" *":"")))},M=function(e){var t=r.useState({}),n=t[0],a=t[1],s=e.onTrialLicenseAdded,u=e.onDismiss,m=c.useAtomValue(j),p=m.userInformation,f=m.strings,g=m.tenantId,x=m.context,b=P().generateSalt,w=r.useState(void 0),N=w[0],C=w[1],T=i.useLicenseManager(g,null==x?void 0:x.manifest.id,b(g,null==x?void 0:x.manifest.id),x).requestTrialLicense,D=d.z.object({contactFirstName:d.z.string().min(1,f.contactFirstNameError),contactLastName:d.z.string().min(1,f.contactLastNameError),contactEmail:d.z.string().email(f.contactEmailError),contactCompany:d.z.string().min(1,f.contactCompanyError)}),F=r.useState({contactFirstName:null==p?void 0:p.givenName,contactLastName:null==p?void 0:p.surname,contactEmail:null==p?void 0:p.mail,contactCompany:""}),B=F[0],I=F[1],A=r.useCallback((function(e){var t=e.target,n=t.name,r=t.value;I((function(e){var t;return y({},e,((t={})[n]=r,t))}))}),[]),q={container:l.css(L||(L=E(["\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ",";\n "])),o.tokens.colorNeutralBackground1),title:l.css(S||(S=E(["\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n "]))),cardFooter:l.css(k||(k=E(["\n align-self: flex-end;\n margin-top: 15px;\n "])))},R=r.useCallback(function(){var e=h(v().mark((function e(t){var n,r;return v().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),(n=D.safeParse(B)).success){e.next=8;break}r={},n.error.errors.forEach((function(e){r[e.path[0]]=e.message})),a(r),e.next=19;break;case 8:return a({}),e.prev=9,e.next=12,T(g,x.manifest.id,B.contactFirstName,B.contactLastName,B.contactEmail,B.contactCompany);case 12:s(),e.next=19;break;case 15:e.prev=15,e.t0=e.catch(9),console.error(e.t0),C(e.t0);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),[B,s]);return r.createElement("div",{className:q.container},r.createElement("div",null,r.createElement(o.Body1Strong,{className:q.title},f.trialLicenseTitle),r.createElement(o.Body1,null,f.trialLicenseText)),r.createElement(r.Fragment,null,r.createElement(o.Field,{label:r.createElement(O,{label:f.firstName,isRequired:!0}),validationState:n.contactFirstName?"error":"none",validationMessage:n.contactFirstName||void 0},r.createElement(o.Input,{name:"contactFirstName",value:B.contactFirstName,onChange:A,placeholder:f.firstNamePlaceholder})),r.createElement(o.Field,{label:r.createElement(O,{label:f.lastName,isRequired:!0}),validationState:n.contactLastName?"error":"none",validationMessage:n.contactLastName||void 0},r.createElement(o.Input,{name:"contactLastName",value:B.contactLastName,onChange:A,placeholder:f.lastNamePlaceholder})),r.createElement(o.Field,{label:r.createElement(O,{label:f.email,isRequired:!0}),validationState:n.contactEmail?"error":"none",validationMessage:n.contactEmail||void 0},r.createElement(o.Input,{name:"contactEmail",value:B.contactEmail,onChange:A,placeholder:f.emailPlaceholder})),r.createElement(o.Field,{label:r.createElement(O,{label:f.company,isRequired:!0}),validationState:n.contactCompany?"error":"none",validationMessage:n.contactCompany||void 0},r.createElement(o.Input,{name:"contactCompany",value:B.contactCompany,onChange:A,placeholder:f.companyPlaceholder})),N&&r.createElement(o.MessageBar,{style:{marginTop:10,marginBottom:10},intent:"error"}," ",N.message),r.createElement(o.CardFooter,{className:q.cardFooter},r.createElement(o.Button,{appearance:"primary",onClick:R},f.register),r.createElement(o.Button,{appearance:"secondary",onClick:u},f.cancel))))},_=function(e){var t=e.licenseStatus,r=e.open,l=e.onDismiss,u=e.licenseType,m=e.expiryDate,d=c.useAtom(j),p=d[0],f=d[1],g=p.theme,h=p.applicationName,v=p.applicationIcon,E=p.strings,x=p.showApps,b=void 0!==x&&x,w=a.useState("trial"),L=w[0],S=w[1],k=a.useMemo((function(){var e=[{id:"trial",value:"trial",label:E.trial,icon:a.createElement(s.Clock20Regular,null)},{id:"license",value:"license",label:E.license,icon:a.createElement(s.Key20Regular,null)}];return b&&k.push({id:"apps",value:"apps",label:E.apps,icon:a.createElement(s.Apps20Regular,null)}),e}),[E]),N=a.useCallback((function(e,t){S(t.value)}),[]);a.useEffect((function(){var e,r=((e={})[i.EStatus.notFound]=n.Trial,e[i.EStatus.expired]=n.License,e[i.EStatus.invalid]=n.License,e[i.EStatus.blocked]=n.License,e[i.EStatus.genericError]=n.License,e[i.EStatus.valid]=n.License,e);S(r[t]||n.Trial)}),[t]);var C=a.useMemo((function(){switch(L){case"trial":return a.createElement(M,{onTrialLicenseAdded:function(){f(y({},p,{refresh:!0})),l()},onDismiss:l});case"license":return a.createElement(A,{licenseStatus:t,onDismiss:l,licenseType:u,expiryDate:m});case"apps":return a.createElement("div",null,"Apps");default:return a.createElement(a.Fragment,null)}}),[L,t,u,m]),T=a.useCallback((function(e){return(null==u?void 0:u.toLocaleLowerCase())!==n.Trial.toLocaleLowerCase()&&t.toLocaleLowerCase()!==i.EStatus.genericError.toLocaleLowerCase()||e.id.toLocaleLowerCase()!==n.Trial.toLocaleLowerCase()}),[u,t]);return a.createElement(o.FluentProvider,{theme:g},a.createElement(o.Dialog,{open:r,modalType:"modal"},a.createElement(o.DialogSurface,{style:{minHeight:300}},a.createElement(o.DialogTitle,null,a.createElement(R,{icon:v,title:h,onDismiss:l})),a.createElement(o.TabList,{selectedValue:L,onTabSelect:N,selectTabOnFocus:!0,size:"medium"},k.filter(T).map((function(e){return a.createElement(o.Tab,{key:e.id,value:e.value,icon:e.icon},e.label)}))),C,a.createElement(o.DialogActions,null))))},z=function(e){var t=c.useAtomValue(j),n=t.theme,a=t.applicationName,s=t.applicationIcon,u=t.placeHolderText,m=t.strings,d={container:l.css(N||(N=E(["\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n margin-bottom: 30px;\n "]))),titleContainer:l.css(C||(C=E(["\n display: flex;\n flex-direction: column;\n width: 100%;\n justify-content: center;\n align-items: center;\n gap: 10px;\n "]))),titleAndIcon:l.css(T||(T=E(["\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n "]))),informationPanel:l.css(D||(D=E(["\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background-color: ",";\n "])),o.tokens.colorNeutralBackground3),infoRow:l.css(F||(F=E(["\n display: flex;\n gap: 10px;\n justify-content: center;\n align-items: center;\n width: 100%;\n "]))),title:l.css(B||(B=E(["\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n "])))},p=r.useState(!1),f=p[0],g=p[1],h=e.licenseStatus,y=e.licenseType,v=e.expiryDate,x=P().formatString,b=r.useCallback((function(){g(!1)}),[]),w=r.useMemo((function(){return new Date(v).toLocaleDateString()}),[v]),L=r.useCallback((function(){switch(h){case i.EStatus.blocked:return{message:x(m.messageStatusBlockedShort,y),actionLabel:m.details};case i.EStatus.expired:return{message:x(m.messageStatusExpiredShort,y,w),actionLabel:m.buyLicense};case i.EStatus.invalid:return{message:x(m.messageStatusInvalidShort,null!=y?y:""),actionLabel:m.details};case i.EStatus.notFound:return{message:x(m.messageStatusNotFoundShort),actionLabel:m.requestLicense};case i.EStatus.genericError:return{message:x(m.messageStatusGenericErrorShort,null!=y?y:""),actionLabel:m.details};default:return}}),[h]),S=r.useMemo((function(){return L()}),[L]);return r.createElement(r.Fragment,null,r.createElement(o.FluentProvider,{theme:n},r.createElement("div",{className:d.informationPanel},r.createElement("div",{className:d.infoRow},r.createElement("div",{className:d.title},r.createElement("div",{className:d.titleContainer},r.createElement("div",{className:d.titleAndIcon},s," ",r.createElement(o.Subtitle1,null," ",a)," "),r.createElement(o.Body1,null,u)))),r.createElement("div",{className:d.infoRow},r.createElement(o.Body1Strong,null," ",null==S?void 0:S.message)),r.createElement("div",{className:d.infoRow},r.createElement(o.DialogActions,{style:{marginTop:15}},r.createElement(o.Button,{appearance:"primary",onClick:function(){g(!0)}},null==S?void 0:S.actionLabel)),f&&r.createElement(_,{licenseStatus:h,licenseType:y,expiryDate:v,open:f,onDismiss:b})))))},G=function(e){var t=e.message,n=e.onAction;return r.createElement(r.Fragment,null,r.createElement(o.MessageBar,{intent:"warning"},r.createElement(o.MessageBarBody,null,r.createElement(o.MessageBarTitle,null,"License Manager"),t),r.createElement(o.MessageBarActions,null,r.createElement(o.Button,{onClick:n},"Details"))))};function V(e){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24"},e),a.createElement("g",{fill:"none",stroke:"currentColor",strokeWidth:1.5},a.createElement("path",{d:"M2 6.95c0-.883 0-1.324.07-1.692A4 4 0 0 1 5.257 2.07C5.626 2 6.068 2 6.95 2c.386 0 .58 0 .766.017a4 4 0 0 1 2.18.904c.144.119.28.255.554.529L11 4c.816.816 1.224 1.224 1.712 1.495a4 4 0 0 0 .848.352C14.098 6 14.675 6 15.828 6h.374c2.632 0 3.949 0 4.804.77q.119.105.224.224c.77.855.77 2.172.77 4.804V14c0 3.771 0 5.657-1.172 6.828S17.771 22 14 22h-4c-3.771 0-5.657 0-6.828-1.172S2 17.771 2 14z"}),a.createElement("path",{strokeLinecap:"round",d:"m10.5 15l3-3m0 3l-3-3"})))}var U={container:l.css(y({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center",backgroundColor:o.tokens.colorNeutralBackground2,borderRadius:o.tokens.borderRadiusMedium},o.shorthands.padding(o.tokens.spacingVerticalXL,o.tokens.spacingHorizontalXL),{color:o.tokens.colorNeutralForeground1})),icon:l.css({marginTop:o.tokens.spacingHorizontalXL,fontSize:"50px",marginBottom:o.tokens.spacingHorizontalXL,color:o.tokens.colorBrandBackground}),message:l.css({marginBottom:o.tokens.spacingHorizontalXL})},Y=function(e){var t=e.message;return a.createElement("div",{className:U.container},a.createElement(o.Subtitle1,null,"News Feed - Application"),a.createElement(V,{className:U.icon}),a.createElement(o.Body1Strong,{className:U.message},t))};exports.LicensePlaceHolder=z,exports.LicenseProvider=function(t){var n=t.theme,a=void 0===n?o.teamsLightTheme:n,s=t.context,u=t.children,m=t.tenantId,d=t.language,g=void 0===d?"en":d,E=t.applicationId,x=r.useState(void 0),b=x[0],w=x[1],L=r.useState(!0),S=L[0],k=L[1],N=r.useState(),C=N[0],T=N[1],D=c.useAtom(j),F=D[0],B=D[1],I=i.useUser(s).userInformation,A=r.useState(!1),q=A[0],R=A[1],H=P().formatString,O=F.strings,M=F.refresh,V=P(),U=C||{},X=U.status,K=U.licenseType,W=U.expiryDate,J=i.useLicenseManager(m,E,(0,V.generateSalt)(m,E),s).checkAndUpdateLicensing,Q=r.useMemo((function(){return{root:l.css({backgroundColor:"transparent",padding:20})}}),[]);r.useEffect((function(){h(v().mark((function n(){var r;return v().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,new Promise((function(t){t(e(require("./loc/"+g+".json")))}));case 3:return r=n.sent,B((function(e){return y({},e,t,{strings:r,userInformation:I})})),n.next=7,J();case 7:T(n.sent),k(!1),n.next=16;break;case 12:n.prev=12,n.t0=n.catch(0),n.t0 instanceof Error&&w(n.t0),k(!1);case 16:case"end":return n.stop()}}),n,null,[[0,12]])})))()}),[I]);var Z=r.useCallback((function(e){var t=e.error;return console.error("[LicenseManager:Error: "+t.message),r.createElement(Y,{message:t.message})}),[]),$=r.useCallback((function(){R(!0)}),[]);r.useEffect((function(){h(v().mark((function e(){return v().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,B((function(e){return y({},e,{refresh:!1})})),e.next=4,J();case 4:T(e.sent),k(!1),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(0),e.t0 instanceof Error&&w(e.t0),k(!1);case 13:case"end":return e.stop()}}),e,null,[[0,9]])})))()}),[M]);var ee=r.useCallback((function(){R(!1)}),[]),te=r.useCallback((function(e,t,n){var a=new Date(t),o=new Date,i=a.toLocaleDateString(),s=f.differenceInDays(a,o),c="";return s<=n?(c=H(O.messageLicenseWarning,e,s,i),r.createElement(G,{message:c,onAction:$})):r.createElement(r.Fragment,null)}),[W]),ne=r.useCallback((function(){switch(X){case i.EStatus.valid:return r.createElement(r.Fragment,null,te(K,W,30),u);case i.EStatus.genericError:case i.EStatus.notFound:case i.EStatus.blocked:case i.EStatus.expired:case i.EStatus.invalid:return r.createElement(z,{licenseStatus:X,licenseType:K,expiryDate:W})}return r.createElement(r.Fragment,null)}),[C,M]);return S?null:b?r.createElement(Y,{message:b.message}):r.createElement(r.Fragment,null,r.createElement(o.IdPrefixProvider,{value:"news-feed-"},r.createElement(o.FluentProvider,{theme:a,className:Q.root},r.createElement(p.ErrorBoundary,{fallbackRender:Z},ne(),q&&r.createElement(_,{licenseStatus:X,licenseType:K,expiryDate:W,open:q,onDismiss:ee})))))};
|
|
2
|
+
//# sourceMappingURL=license-manager-react-components.cjs.production.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-manager-react-components.cjs.production.min.js","sources":["../src/models/ETabsOptions.ts","../src/constants/constants.ts","../src/components/mailTo/Mailto.tsx","../src/atoms/appGlobalState.ts","../src/hooks/useUtils.ts","../src/components/licenseControl/LicenseControl.tsx","../src/components/licenseControl/useLicenseControlStyles.ts","../src/components/renderHeader/useRenderHeaderStyles.ts","../src/components/renderHeader/RenderHeader.tsx","../src/components/RenderLabel/useRenderLabelStylesStyles.ts","../src/components/RenderLabel/RenderLabel.tsx","../src/components/trialLicense.ts/TrialLicense.tsx","../src/components/trialLicense.ts/useTrialLicenseStyles.ts","../src/components/registerDialog/RegisterDialog.tsx","../src/components/licensePlaceHolder/LicensePlaceHolder.tsx","../src/components/licensePlaceHolder/licensePlaceHolderStyles.tsx","../src/components/informationBar/InformationBar.tsx","../src/components/errorSVG/ErrorSVG.tsx","../src/components/showError/ShowError.tsx","../src/components/licenseProvider/LicenseProvider.tsx"],"sourcesContent":["export enum ETabsOptions {\n Trial = 'trial',\n License = 'license',\n Apps = 'apps',\n} ","export const SUPPORT_EMAIL = \"geral@spteck.com\";\nexport const EMAIL_BODY_TEMPLATE = `Subject: Support Request from {0} {1}\n\nDear Support Team,\n\nI am reaching out to you because I am experiencing issues with my license. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email**: {7}\n\n {8}\n\nBest regards,\n{9} {10}`\n\nexport const EMAIL_BODY_TEMPLATE_REQUEST_LICENSE = `Subject: Request for New License {0} {1}\n\nDear Support Team,\n\nI am just contacting you to request a license for the following product. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email **: {7}\n\nBest regards,\n{8} {9}`;","import React, { ElementType } from 'react';\n\ninterface MailtoProps<C extends ElementType> {\n to: string; // Required recipient email\n from?: string; // Optional sender email\n subject?: string; // Optional email subject\n body?: string; // Optional email body\n children: React.ReactNode; // Content to be displayed inside the component\n as?: C; // The component type to render\n componentProps?: React.ComponentProps<C>; // Additional props specific to the component type\n \n}\n\nexport const Mailto = <C extends ElementType = \"a\">(props: MailtoProps<C>) => {\n const {\n to,\n from,\n subject,\n body,\n children,\n as: Component,\n componentProps = {} as React.ComponentProps<C>,\n \n } = props;\n // Construct the mailto link\n const mailtoLink = `mailto:${to}?${from ? `from=${encodeURIComponent(from)}&` : \"\"}${\n subject ? `subject=${encodeURIComponent(subject)}&` : \"\"\n }${body ? `body=${encodeURIComponent(body)}` : \"\"}`;\n\n // Ensure the correct element type is rendered\n const RenderedComponent = Component || \"a\";\n\n // Handle the click event\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n window.open(mailtoLink, \"_blank\");\n };\n\n return (\n <RenderedComponent\n href={mailtoLink}\n aria-label={`Send an email to ${to}`}\n onClick={handleClick}\n {...componentProps}\n >\n {children}\n </RenderedComponent>\n );\n};\n","import { atom } from 'jotai';\n\nimport { webLightTheme } from '@fluentui/react-components';\n\nimport stringsLocEn from '../loc/en.json';\nimport { IStrings } from '../loc/IStrings';\nimport { IGlobalState } from '../models/IGlobalState';\n\nexport const appGlobalStateAtom = atom<IGlobalState>({\n theme: webLightTheme,\n language: \"en\" , \n strings: stringsLocEn as unknown as IStrings,\n refresh: false,\n\n\n} as IGlobalState);\n","import React from 'react';\n\nimport { SHA256 } from 'crypto-js';\n\nexport const useUtils = () => {\n const formatString = React.useCallback((template: string, ...args: any[]): string => {\n return template.replace(/{(\\d+)}/g, (match, number) =>\n typeof args[number] !== \"undefined\" ? args[number] : match\n );\n }, []);\n const generateSalt = React.useCallback((tenantId: string, appId: string): string => {\n // Concatenate the inputs with a delimiter\n const inputData = `${tenantId}:${appId}`;\n // Create a SHA-256 hash\n const hash = SHA256(inputData).toString();\n return hash;\n }, []);\n return { formatString, generateSalt };\n};\n","import {\n Button,\n CardFooter,\n Text,\n} from '@fluentui/react-components';\nimport {\n EMAIL_BODY_TEMPLATE,\n EMAIL_BODY_TEMPLATE_REQUEST_LICENSE,\n SUPPORT_EMAIL,\n} from '../../constants/constants';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { Mailto } from '../mailTo/Mailto';\nimport React from 'react';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useLicenseControlStyles } from './useLicenseControlStyles';\nimport { useUtils } from '../../hooks/useUtils';\n\ninterface ILicenseControlProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n onDismiss: () => void;\n}\n\nexport const LicenseControl: React.FC<ILicenseControlProps> = ({\n licenseStatus,\n onDismiss,\n licenseType,\n expiryDate,\n}) => {\n const styles = useLicenseControlStyles();\n const formatDate = new Date(expiryDate as number).toLocaleDateString();\n const appglobalState = useAtomValue(appGlobalStateAtom);\n const { tenantId, applicationId, applicationName, userInformation, strings } = appglobalState;\n const { formatString } = useUtils();\n\n const getMessageAndAction = React.useCallback(() => {\n switch (licenseStatus) {\n case EStatus.blocked:\n return {\n message: formatString(strings.messageStatusBlocked, licenseType),\n actionLabel: \"Contact Support\",\n };\n case EStatus.expired:\n return {\n message: formatString(strings.messageStatusExpired, licenseType, formatDate),\n\n actionLabel: \"Renew License\",\n };\n case EStatus.invalid:\n return {\n message: formatString(strings.messageStatusInvalid, licenseType),\n actionLabel: \"Request New License\",\n };\n case EStatus.notFound:\n return {\n message: strings.messageStatusNotFound,\n actionLabel: \"Request License\",\n };\n case EStatus.genericError:\n return {\n message: formatString(strings.messageStatusGenericError, \"\"),\n actionLabel: \"Contact Support\",\n };\n case EStatus.valid:\n return {\n message: formatString(strings.messageStatusValid, licenseType, formatDate),\n actionLabel: undefined,\n };\n default:\n return undefined;\n }\n }, [licenseStatus]);\n\n let content = React.useMemo(() => getMessageAndAction(), [getMessageAndAction]);\n\n // utils.ts\n const generateBodyText = React.useCallback((): string => {\n const { mail, givenName, surname } = userInformation;\n let body = EMAIL_BODY_TEMPLATE;\n\n if (licenseStatus === EStatus.notFound) {\n body = EMAIL_BODY_TEMPLATE_REQUEST_LICENSE;\n content = {\n actionLabel: \"Request License\",\n message: \"\",\n };\n }\n const message = formatString(\n body,\n givenName,\n surname,\n tenantId,\n applicationId,\n applicationName,\n givenName,\n surname,\n mail,\n content?.message,\n givenName,\n surname\n );\n return message;\n }, [tenantId, applicationId, userInformation, content]);\n\n if (!content) return <></>;\n\n return (\n <div className={styles.container}>\n <Text>{content.message}</Text>\n <CardFooter className={styles.footer}>\n {content.actionLabel && (\n <Mailto\n to={SUPPORT_EMAIL}\n from={userInformation?.mail as string}\n subject={`Support request - ${applicationName}`}\n body={generateBodyText()}\n as={Button}\n componentProps={{\n appearance: \"primary\",\n target: \"_blank\",\n }}\n >\n {content.actionLabel}\n </Mailto>\n )}\n <Button appearance=\"secondary\" onClick={onDismiss}>\n Close\n </Button>\n </CardFooter>\n </div>\n );\n};\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const useLicenseControlStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ${tokens.colorNeutralBackground1};\n flex: 1;\n `,\n\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n `,\n footer : css`\n justify-content: end;\n position: absolute;\n bottom: 20px;\n right: 20px;\n `,\n };\n};","import {\n makeStyles,\n shorthands,\n tokens,\n} from '@fluentui/react-components';\n\nexport const useRenderHeaderStyles = makeStyles({\n closeButton: {\n marginLeft: \"auto\",\n position: \"absolute\",\n top: \"10px\",\n right: \"10px\",\n zIndex: 99999,\n },\n\n divider: {\n width: \"100%\",\n height: \"1px\",\n backgroundColor: tokens.colorNeutralStroke1,\n marginTop: \"6px\",\n },\n\n renderHeaderContent: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n alignItems: \"stretch\",\n\n width: \"100%\",\n },\n renderHeaderHeader: {\n \n\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"10px\"),\n gap: \"20px\",\n },\n renderHeaderFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"20px\"),\n gap: \"20px\",\n },\n renderHeaderBody: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"20px\"),\n gap: \"20px\",\n },\n renderHeaderTitleContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n renderHeaderTitle: {\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"1\",\n \"-webkit-box-orient\": \"vertical\",\n\n textAlign: \"start\",\n textOverflow: \"ellipsis\",\n wordBreak: \"break-word\",\n },\n renderHeaderDescription: {\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"4\",\n \"-webkit-box-orient\": \"vertical\",\n\n textAlign: \"start\",\n textOverflow: \"ellipsis\",\n wordBreak: \"break-word\",\n },\n dialogTitleAndDescriptionContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"start\",\n alignItems: \"start\",\n paddingLeft: \"10px\",\n paddingRight: \"20px\",\n },\n});\n","import * as React from 'react';\n\nimport {\n Button,\n Caption1,\n Subtitle1,\n} from '@fluentui/react-components';\nimport { Dismiss24Regular } from '@fluentui/react-icons';\nimport { Icon } from '@iconify/react';\n\nimport { useRenderHeaderStyles } from './useRenderHeaderStyles';\n\nexport interface IRenderHeaderProps {\n onDismiss: (open?: boolean) => void;\n icon?: string | JSX.Element;\n title: string | React.ReactNode;\n description?: string | React.ReactNode;\n}\n\nexport const RenderHeader: React.FunctionComponent<IRenderHeaderProps> = (\n props: React.PropsWithChildren<IRenderHeaderProps>\n) => {\n const { onDismiss, title, description, icon } = props;\n const styles = useRenderHeaderStyles();\n\n return (\n <>\n <div className={styles.renderHeaderContent}>\n <div\n className={styles.renderHeaderHeader}>\n <Button\n appearance=\"subtle\"\n className={styles.closeButton}\n onClick={(ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.stopPropagation();\n ev.preventDefault();\n onDismiss(false)}}\n icon={<Dismiss24Regular />}\n />\n\n <div className={styles.renderHeaderTitleContainer}>\n {React.isValidElement(icon) ? icon : <Icon icon={icon as string} />}\n <div className={styles.dialogTitleAndDescriptionContainer}>\n {React.isValidElement(title) ? (\n title\n ) : (\n <Subtitle1 className={styles.renderHeaderTitle}>{title}</Subtitle1>\n )}\n {React.isValidElement(description) ? (\n description\n ) : (\n <Caption1 className={styles.renderHeaderDescription}>{description}</Caption1>\n )}\n </div>\n </div>\n </div>\n <div className={styles.divider} />\n </div>\n </>\n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n makeStyles,\n shorthands,\n} from '@fluentui/react-components';\n\nexport const useRenderLabelStyles = makeStyles({\n\n labelContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n ...shorthands.gap(\"6px\"),\n },\n iconStyles: {\n width: \"26px\",\n },\n item: {\n paddingLeft: \"15px\",\n },\n \n\n});\n","import * as React from 'react';\n\nimport {\n Caption1,\n tokens,\n} from '@fluentui/react-components';\nimport { Icon } from '@iconify/react';\n\nimport { useRenderLabelStyles } from './useRenderLabelStylesStyles';\n\nexport interface IRenderLabelProps {\n label: string; icon?: string | JSX.Element; isRequired?: boolean\n}\n\nexport const RenderLabel: React.FunctionComponent<IRenderLabelProps> = (props: React.PropsWithChildren<IRenderLabelProps>) => {\n const { label, icon, isRequired } = props;\n const styles = useRenderLabelStyles();\n return (\n <>\n <div className={styles.labelContainer}>\n {icon && React.isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n icon={icon as string}\n className={styles.iconStyles}\n width={\"20px\"}\n height={\"20px\"}\n color={tokens.colorBrandForeground1}\n />\n )}\n <Caption1 style={{ color: tokens.colorBrandForeground1 }}>{label}</Caption1>\n <Caption1 style={{ color: tokens.colorPaletteRedForeground1 }}>{isRequired ? \" *\" : \"\"}</Caption1>\n </div>\n </>\n );\n};\n\nexport default RenderLabel;\n","import * as React from 'react';\n\nimport {\n Body1,\n Body1Strong,\n Button,\n CardFooter,\n Field,\n Input,\n MessageBar,\n} from '@fluentui/react-components';\n\nimport { RenderLabel } from '../RenderLabel';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useLicenseManager } from '@spteck/react-hooks-library';\nimport { useStyles } from './useTrialLicenseStyles';\nimport { useUtils } from '../../hooks/useUtils';\nimport { z } from 'zod';\n\nexport interface ITrialLicenseProps {\n onTrialLicenseAdded: () => void;\n onDismiss: () => void;\n}\n\nexport const TrialLicense: React.FunctionComponent<ITrialLicenseProps> = (\n props: React.PropsWithChildren<ITrialLicenseProps>\n) => {\n const [errors, setErrors] = React.useState<{ [key: string]: string | null }>({});\n const { onTrialLicenseAdded, onDismiss } = props;\n const appGlobalState = useAtomValue(appGlobalStateAtom);\n const { userInformation, strings, tenantId, context } = appGlobalState;\n const { generateSalt } = useUtils();\n const [error, setError] = React.useState<Error | undefined>(undefined);\n\n const { requestTrialLicense } = useLicenseManager(\n tenantId as string,\n context?.manifest.id as string,\n generateSalt(tenantId as string, context?.manifest.id as string),\n context\n ) as any;\n\n // Define Zod schema for validation\n const trialLicenseSchema = z.object({\n contactFirstName: z.string().min(1, strings.contactFirstNameError),\n contactLastName: z.string().min(1, strings.contactLastNameError),\n contactEmail: z.string().email(strings.contactEmailError),\n contactCompany: z.string().min(1, strings.contactCompanyError),\n });\n\n const [formData, setFormData] = React.useState({\n contactFirstName: userInformation?.givenName as string,\n contactLastName: userInformation?.surname as string,\n contactEmail: userInformation?.mail as string,\n contactCompany: \"\",\n });\n\n const handleInputChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = e.target;\n setFormData((prev) => ({ ...prev, [name]: value }));\n }, []);\n\n const styles = useStyles();\n\n const handleSubmit = React.useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n // Validate form data using Zod schema\n const validation = trialLicenseSchema.safeParse(formData);\n if (!validation.success) {\n // Map errors for display\n const fieldErrors: { [key: string]: string } = {};\n validation.error.errors.forEach((error) => {\n const fieldName = error.path[0] as string;\n fieldErrors[fieldName] = error.message;\n });\n setErrors(fieldErrors);\n } else {\n // Clear errors and call the parent function\n setErrors({});\n try {\n await requestTrialLicense(\n tenantId as string,\n context.manifest.id as string,\n formData.contactFirstName,\n formData.contactLastName,\n formData.contactEmail,\n formData.contactCompany\n );\n onTrialLicenseAdded();\n } catch (error) {\n console.error(error);\n setError(error as Error);\n }\n }\n },\n [formData, onTrialLicenseAdded]\n );\n\n return (\n <div className={styles.container}>\n <div>\n <Body1Strong className={styles.title}>{strings.trialLicenseTitle}</Body1Strong>\n <Body1>{strings.trialLicenseText}</Body1>\n </div>\n\n <>\n <Field\n label={<RenderLabel label={strings.firstName} isRequired />}\n validationState={errors.contactFirstName ? \"error\" : \"none\"}\n validationMessage={errors.contactFirstName || undefined}\n >\n <Input\n name=\"contactFirstName\"\n value={formData.contactFirstName}\n onChange={handleInputChange}\n placeholder={strings.firstNamePlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.lastName} isRequired />}\n validationState={errors.contactLastName ? \"error\" : \"none\"}\n validationMessage={errors.contactLastName || undefined}\n >\n <Input\n name=\"contactLastName\"\n value={formData.contactLastName}\n onChange={handleInputChange}\n placeholder={strings.lastNamePlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.email} isRequired />}\n validationState={errors.contactEmail ? \"error\" : \"none\"}\n validationMessage={errors.contactEmail || undefined}\n >\n <Input\n name=\"contactEmail\"\n value={formData.contactEmail}\n onChange={handleInputChange}\n placeholder={strings.emailPlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.company} isRequired />}\n validationState={errors.contactCompany ? \"error\" : \"none\"}\n validationMessage={errors.contactCompany || undefined}\n >\n <Input\n name=\"contactCompany\"\n value={formData.contactCompany}\n onChange={handleInputChange}\n placeholder={strings.companyPlaceholder}\n />\n </Field>\n {error && (\n <MessageBar style={{ marginTop: 10, marginBottom: 10 }} intent=\"error\">\n {\" \"}\n {error.message}\n </MessageBar>\n )}\n <CardFooter className={styles.cardFooter}>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {strings.register}\n </Button>\n <Button appearance=\"secondary\" onClick={onDismiss}>\n {strings.cancel}\n </Button>\n </CardFooter>\n </>\n </div>\n );\n};\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const useStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ${tokens.colorNeutralBackground1};\n `,\n\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n `,\n cardFooter : css`\n align-self: flex-end;\n margin-top: 15px;\n `,\n };\n};\n","import {\n Apps20Regular,\n Clock20Regular,\n Key20Regular,\n} from '@fluentui/react-icons';\nimport {\n Dialog,\n DialogActions,\n DialogSurface,\n DialogTitle,\n FluentProvider,\n SelectTabData,\n SelectTabEvent,\n Tab,\n TabList,\n TabValue,\n} from '@fluentui/react-components';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { ETabsOptions } from '../../models/ETabsOptions';\nimport { LicenseControl } from '../licenseControl/LicenseControl';\nimport React from 'react';\nimport { RenderHeader } from '../renderHeader';\nimport { TrialLicense } from '../trialLicense.ts/TrialLicense';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtom } from 'jotai';\n\nexport interface IRegisterDialogProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n open: boolean;\n onDismiss: (update?: boolean) => void;\n}\n\ninterface ITab {\n id: string;\n value: string;\n label: string;\n icon: JSX.Element;\n}\n\nexport const RegisterDialog: React.FC<IRegisterDialogProps> = (props: IRegisterDialogProps) => {\n const { licenseStatus, open, onDismiss, licenseType, expiryDate } = props;\n const [appGlobalState, setAppGlobalState] = useAtom(appGlobalStateAtom);\n const { theme, applicationName, applicationIcon, strings, showApps = false } = appGlobalState;\n\n const [selectedValue, setSelectedValue] = React.useState<TabValue>(\"trial\");\n\n const tabs: ITab[] = React.useMemo(() => {\n const defaultTabs = [\n { id: \"trial\", value: \"trial\", label: strings.trial, icon: <Clock20Regular /> },\n { id: \"license\", value: \"license\", label: strings.license, icon: <Key20Regular /> },\n ];\n if (showApps) {\n tabs.push({ id: \"apps\", value: \"apps\", label: strings.apps, icon: <Apps20Regular /> });\n }\n return defaultTabs;\n }, [strings]);\n\n const onTabSelect = React.useCallback((_event: SelectTabEvent, data: SelectTabData) => {\n setSelectedValue(data.value);\n }, []);\n\n React.useEffect(() => {\n const statusToTab = {\n [EStatus.notFound]: ETabsOptions.Trial,\n [EStatus.expired]: ETabsOptions.License,\n [EStatus.invalid]: ETabsOptions.License,\n [EStatus.blocked]: ETabsOptions.License,\n [EStatus.genericError]: ETabsOptions.License,\n [EStatus.valid]: ETabsOptions.License,\n };\n setSelectedValue(statusToTab[licenseStatus] || ETabsOptions.Trial);\n }, [licenseStatus]);\n\n const renderPanel = React.useMemo((): JSX.Element => {\n switch (selectedValue) {\n case \"trial\":\n return (\n <TrialLicense\n onTrialLicenseAdded={() => {\n setAppGlobalState({ ...appGlobalState, refresh: true });\n onDismiss();\n }}\n onDismiss={onDismiss}\n />\n );\n case \"license\":\n return (\n <LicenseControl\n licenseStatus={licenseStatus}\n onDismiss={onDismiss}\n licenseType={licenseType}\n expiryDate={expiryDate}\n />\n );\n case \"apps\":\n return <div>Apps</div>;\n default:\n return <></>;\n }\n }, [selectedValue, licenseStatus, licenseType, expiryDate]);\n\n const filterTabs = React.useCallback(\n (tab: ITab) => {\n if (\n licenseType?.toLocaleLowerCase() === ETabsOptions.Trial.toLocaleLowerCase() ||\n licenseStatus.toLocaleLowerCase() === EStatus.genericError.toLocaleLowerCase()\n ) {\n return tab.id.toLocaleLowerCase() !== ETabsOptions.Trial.toLocaleLowerCase();\n }\n return true;\n },\n [licenseType, licenseStatus]\n );\n\n return (\n <FluentProvider theme={theme}>\n <Dialog open={open} modalType=\"modal\">\n <DialogSurface style={{ minHeight: 300 }}>\n <DialogTitle>\n <RenderHeader icon={applicationIcon} title={applicationName} onDismiss={onDismiss} />\n </DialogTitle>\n\n <TabList selectedValue={selectedValue} onTabSelect={onTabSelect} selectTabOnFocus={true} size=\"medium\">\n {tabs.filter(filterTabs).map((tab) => (\n <Tab key={tab.id} value={tab.value} icon={tab.icon}>\n {tab.label}\n </Tab>\n ))}\n </TabList>\n {renderPanel}\n <DialogActions></DialogActions>\n </DialogSurface>\n </Dialog>\n </FluentProvider>\n );\n};\n","import * as React from 'react';\n\nimport {\n Body1,\n Body1Strong,\n Button,\n DialogActions,\n FluentProvider,\n Subtitle1,\n} from '@fluentui/react-components';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { RegisterDialog } from '../registerDialog/RegisterDialog';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useStyles } from './licensePlaceHolderStyles';\nimport { useUtils } from '../../hooks/useUtils';\n\nexport interface ILicensePlaceHolderProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n}\n\nexport const LicensePlaceHolder: React.FunctionComponent<ILicensePlaceHolderProps> = (\n props: React.PropsWithChildren<ILicensePlaceHolderProps>\n) => {\n const appglobalState = useAtomValue(appGlobalStateAtom);\n const { theme, applicationName, applicationIcon, placeHolderText, strings } = appglobalState;\n const styles = useStyles();\n const [isOpenLicenseForm, setIsOpenLicenseForm] = React.useState<boolean>(false);\n const { licenseStatus, licenseType, expiryDate } = props;\n const { formatString } = useUtils();\n const onDissmiss = React.useCallback(() => {\n setIsOpenLicenseForm(false);\n }, []);\n\n const formatDate = React.useMemo(() => new Date(expiryDate as number).toLocaleDateString(), [expiryDate]);\n\n const getMessageAndAction = React.useCallback(() => {\n switch (licenseStatus) {\n case EStatus.blocked:\n return {\n message: formatString(strings.messageStatusBlockedShort, licenseType),\n actionLabel: strings.details,\n };\n case EStatus.expired:\n return {\n message: formatString(strings.messageStatusExpiredShort, licenseType, formatDate),\n actionLabel: strings.buyLicense,\n };\n case EStatus.invalid:\n return {\n message: formatString(strings.messageStatusInvalidShort, licenseType ?? \"\"),\n actionLabel: strings.details,\n };\n case EStatus.notFound:\n return {\n message: formatString(strings.messageStatusNotFoundShort),\n actionLabel: strings.requestLicense,\n };\n case EStatus.genericError:\n return {\n message: formatString(strings.messageStatusGenericErrorShort, licenseType ?? \"\"),\n actionLabel: strings.details,\n };\n default:\n return undefined;\n }\n }, [licenseStatus]);\n\n const content = React.useMemo(() => {\n return getMessageAndAction();\n }, [getMessageAndAction]);\n\n return (\n <>\n <FluentProvider theme={theme}>\n <div className={styles.informationPanel}>\n <div className={styles.infoRow}>\n <div className={styles.title}>\n <div className={styles.titleContainer}>\n <div className={styles.titleAndIcon}>\n {applicationIcon} <Subtitle1> {applicationName}</Subtitle1>{\" \"}\n </div>\n <Body1>{placeHolderText}</Body1>\n </div>\n </div>\n </div>\n <div className={styles.infoRow}>\n <Body1Strong> {content?.message}</Body1Strong>\n </div>\n <div className={styles.infoRow}>\n <DialogActions style={{ marginTop: 15 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n setIsOpenLicenseForm(true);\n }}\n >\n {content?.actionLabel}\n </Button>\n </DialogActions>\n {isOpenLicenseForm && (\n <RegisterDialog\n licenseStatus={licenseStatus}\n licenseType={licenseType}\n expiryDate={expiryDate}\n open={isOpenLicenseForm}\n onDismiss={onDissmiss}\n />\n )}\n </div>\n </div>\n </FluentProvider>\n </>\n );\n};\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const \n useStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n margin-bottom: 30px;\n `,\n titleContainer: css`\n display: flex;\n flex-direction: column;\n width: 100%;\n justify-content: center;\n align-items: center;\n gap: 10px;\n `,\n titleAndIcon: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n `,\n informationPanel: css`\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background-color: ${tokens.colorNeutralBackground3};\n `,\n infoRow: css`\n display: flex;\n gap: 10px;\n justify-content: center;\n align-items: center;\n width: 100%;\n `,\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n `,\n };\n};","import * as React from 'react';\n\nimport {\n Button,\n MessageBar,\n MessageBarActions,\n MessageBarBody,\n MessageBarTitle,\n} from '@fluentui/react-components';\n\nexport interface IInformationBarProps {\n message: JSX.Element | string;\n onAction?: () => void;\n}\n\nexport const InformationBar: React.FunctionComponent<IInformationBarProps> = (\n props: React.PropsWithChildren<IInformationBarProps>\n) => {\n const { message, onAction } = props;\n return (\n <>\n <MessageBar intent={\"warning\"}>\n <MessageBarBody>\n <MessageBarTitle>License Manager</MessageBarTitle>\n {message}\n </MessageBarBody>\n <MessageBarActions>\n <Button onClick={onAction}>Details</Button>\n </MessageBarActions>\n </MessageBar>\n </>\n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport React from \"react\";\nimport type { SVGProps } from \"react\";\n\nexport function ErrorIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path d=\"M2 6.95c0-.883 0-1.324.07-1.692A4 4 0 0 1 5.257 2.07C5.626 2 6.068 2 6.95 2c.386 0 .58 0 .766.017a4 4 0 0 1 2.18.904c.144.119.28.255.554.529L11 4c.816.816 1.224 1.224 1.712 1.495a4 4 0 0 0 .848.352C14.098 6 14.675 6 15.828 6h.374c2.632 0 3.949 0 4.804.77q.119.105.224.224c.77.855.77 2.172.77 4.804V14c0 3.771 0 5.657-1.172 6.828S17.771 22 14 22h-4c-3.771 0-5.657 0-6.828-1.172S2 17.771 2 14z\" />\n <path strokeLinecap=\"round\" d=\"m10.5 15l3-3m0 3l-3-3\" />\n </g>\n </svg>\n );\n}\n","import React from 'react';\n\nimport { css } from '@emotion/css';\nimport {\n Body1Strong,\n shorthands,\n Subtitle1,\n tokens,\n} from '@fluentui/react-components';\n\nimport { ErrorIcon } from '../errorSVG/ErrorSVG';\n\ninterface IErrorDisplayProps {\n message: string;\n}\n\nconst styles = {\n container: css({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n textAlign: \"center\",\n backgroundColor: tokens.colorNeutralBackground2,\n borderRadius: tokens.borderRadiusMedium,\n ...shorthands.padding(tokens.spacingVerticalXL, tokens.spacingHorizontalXL),\n color: tokens.colorNeutralForeground1,\n }),\n icon: css({\n marginTop: tokens.spacingHorizontalXL,\n fontSize: \"50px\",\n marginBottom: tokens.spacingHorizontalXL,\n color: tokens.colorBrandBackground,\n }),\n message: css({\n marginBottom: tokens.spacingHorizontalXL,\n }),\n};\n\nexport const ShowError: React.FC<IErrorDisplayProps> = ({ message }) => {\n return (\n <div className={styles.container}>\n <Subtitle1>News Feed - Application</Subtitle1>\n <ErrorIcon className={styles.icon} />\n <Body1Strong className={styles.message}>{message}</Body1Strong>\n </div>\n );\n};\n\nexport default ShowError;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport {\n EStatus,\n ICheckAndUpdateLicesingResponse,\n useLicenseManager,\n useUser,\n} from '@spteck/react-hooks-library';\nimport {\n FluentProvider,\n IdPrefixProvider,\n teamsLightTheme,\n} from '@fluentui/react-components';\n\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { IGlobalState } from '../../models/IGlobalState';\nimport { ILicenseProviderProps } from './ILicenseProviderProps';\nimport { InformationBar } from '../informationBar/InformationBar';\nimport { LicensePlaceHolder } from '../licensePlaceHolder/LicensePlaceHolder';\nimport { RegisterDialog } from '../registerDialog/RegisterDialog';\nimport ShowError from '../showError/ShowError';\nimport { User } from '@microsoft/microsoft-graph-types';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { css } from '@emotion/css';\nimport { differenceInDays } from 'date-fns';\nimport { useAtom } from 'jotai';\nimport { useUtils } from '../../hooks/useUtils';\n\nconst NUMBER_DAYS_WARNING = 30;\n\nexport const LicenseProvider: React.FunctionComponent<ILicenseProviderProps> = (\n props: React.PropsWithChildren<ILicenseProviderProps>\n) => {\n const { theme = teamsLightTheme, context, children, tenantId, language = \"en\", applicationId } = props;\n\n /* const instanceId = context?.instanceId as string;\n const tenantId = context?.pageContext.legacyPageContext.aadTenantId; */\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const [isLoading, setIsLoading] = React.useState<boolean>(true);\n const [licensingResponse, setLicenseResponse] = React.useState<ICheckAndUpdateLicesingResponse>();\n const [appglobalState, setAppGlobalState] = useAtom<IGlobalState>(appGlobalStateAtom);\n const { userInformation } = useUser(context);\n const [isOpenRegisterDialog, setIsOpenRegisterDialog] = React.useState<boolean>(false);\n const { formatString } = useUtils();\n const { strings, refresh } = appglobalState;\n const { generateSalt } = useUtils();\n const { status, licenseType, expiryDate } = (licensingResponse as ICheckAndUpdateLicesingResponse) || {};\n\n const { checkAndUpdateLicensing } = useLicenseManager(\n tenantId as string,\n applicationId as string, \n generateSalt(tenantId as string, applicationId as string),\n context\n ) as any;\n\n const styles = React.useMemo(() => {\n return {\n root: css({\n backgroundColor: \"transparent\",\n padding: 20,\n }),\n };\n }, []);\n\n React.useEffect(() => {\n (async () => {\n try {\n const stringsLoc = await import(`./loc/${language}.json`);\n setAppGlobalState((prev) => ({\n ...prev,\n ...props,\n strings: stringsLoc,\n userInformation: userInformation as User,\n }));\n const result = await checkAndUpdateLicensing();\n setLicenseResponse(result);\n setIsLoading(false);\n } catch (error) {\n if (error instanceof Error) setError(error);\n setIsLoading(false);\n }\n })();\n }, [userInformation]);\n\n const fallbackRender = React.useCallback(({ error }: { error: Error }) => {\n console.error(`[LicenseManager:Error: ${error.message}`);\n return <ShowError message={error.message} />;\n }, []);\n\n const onMessageBarAction = React.useCallback(() => {\n setIsOpenRegisterDialog(true);\n }, []);\n\n // ipdate liecense status on refresh\n React.useEffect(() => {\n (async () => {\n try {\n setAppGlobalState((prev) => ({\n ...prev,\n refresh: false,\n }));\n const result = await checkAndUpdateLicensing();\n setLicenseResponse(result);\n setIsLoading(false);\n } catch (error) {\n if (error instanceof Error) setError(error);\n setIsLoading(false);\n }\n })();\n }, [refresh]);\n\n const onDissmiss = React.useCallback(() => {\n setIsOpenRegisterDialog(false);\n }, []);\n\n // renderMessagebar if the license is about to expire\n const renderMessagebar = React.useCallback(\n (licenseType: string, expiryDate: number, warningDays: number): JSX.Element => {\n const expirationDate = new Date(expiryDate);\n const today = new Date();\n const formatedExpiredDate = expirationDate.toLocaleDateString();\n const dayDiff = differenceInDays(expirationDate, today);\n let message = \"\";\n if (dayDiff <= warningDays) {\n message = formatString(strings.messageLicenseWarning, licenseType, dayDiff, formatedExpiredDate);\n return <InformationBar message={message} onAction={onMessageBarAction} />;\n }\n return <></>;\n },\n [expiryDate]\n );\n\n // render the control based on the license status\n const renderContent = React.useCallback((): JSX.Element => {\n switch (status) {\n case EStatus.valid:\n return (\n <>\n {renderMessagebar(licenseType as string, expiryDate as number, NUMBER_DAYS_WARNING)}\n {children}\n </>\n );\n case EStatus.genericError:\n case EStatus.notFound:\n case EStatus.blocked:\n case EStatus.expired:\n case EStatus.invalid:\n return <LicensePlaceHolder licenseStatus={status} licenseType={licenseType} expiryDate={expiryDate} />;\n default:\n break;\n }\n return <></>;\n }, [licensingResponse, refresh]);\n\n if (isLoading) return null;\n if (error) return <ShowError message={error.message} />;\n\n return (\n <>\n <IdPrefixProvider value=\"news-feed-\">\n <FluentProvider theme={theme} className={styles.root}>\n <ErrorBoundary fallbackRender={fallbackRender}>\n {renderContent()}\n {isOpenRegisterDialog && (\n <RegisterDialog\n licenseStatus={status}\n licenseType={licenseType}\n expiryDate={expiryDate}\n open={isOpenRegisterDialog}\n onDismiss={onDissmiss}\n />\n )}\n </ErrorBoundary>\n </FluentProvider>\n </IdPrefixProvider>\n </>\n );\n};\n"],"names":["ETabsOptions","Mailto","props","to","from","subject","body","children","Component","as","_props$componentProps","componentProps","mailtoLink","encodeURIComponent","React","href","onClick","e","preventDefault","window","open","appGlobalStateAtom","atom","theme","webLightTheme","language","strings","refresh","useUtils","formatString","useCallback","template","args","Array","_len","_key","arguments","replace","match","number","generateSalt","tenantId","appId","SHA256","toString","LicenseControl","_ref","licenseStatus","onDismiss","licenseType","expiryDate","styles","container","css","_templateObject","_taggedTemplateLiteralLoose","tokens","colorNeutralBackground1","title","_templateObject2","footer","_templateObject3","formatDate","Date","toLocaleDateString","appglobalState","useAtomValue","applicationId","applicationName","userInformation","getMessageAndAction","EStatus","blocked","message","messageStatusBlocked","actionLabel","expired","messageStatusExpired","invalid","messageStatusInvalid","notFound","messageStatusNotFound","genericError","messageStatusGenericError","valid","messageStatusValid","undefined","content","useMemo","generateBodyText","givenName","surname","mail","_content","className","Text","CardFooter","Button","appearance","target","useRenderHeaderStyles","makeStyles","closeButton","marginLeft","position","top","right","zIndex","divider","width","height","backgroundColor","colorNeutralStroke1","marginTop","renderHeaderContent","display","flexDirection","justifyContent","alignItems","renderHeaderHeader","_extends","shorthands","padding","gap","renderHeaderFooter","renderHeaderBody","renderHeaderTitleContainer","renderHeaderTitle","-webkit-line-clamp","-webkit-box-orient","textAlign","textOverflow","wordBreak","renderHeaderDescription","dialogTitleAndDescriptionContainer","paddingLeft","paddingRight","RenderHeader","description","icon","ev","stopPropagation","Dismiss24Regular","Icon","Subtitle1","Caption1","useRenderLabelStyles","labelContainer","iconStyles","item","RenderLabel","label","isRequired","color","colorBrandForeground1","style","colorPaletteRedForeground1","TrialLicense","_React$useState","errors","setErrors","onTrialLicenseAdded","appGlobalState","context","_React$useState2","error","setError","requestTrialLicense","useLicenseManager","manifest","id","trialLicenseSchema","z","object","contactFirstName","string","min","contactFirstNameError","contactLastName","contactLastNameError","contactEmail","email","contactEmailError","contactCompany","contactCompanyError","_React$useState3","formData","setFormData","handleInputChange","_e$target","name","value","prev","_extends2","cardFooter","handleSubmit","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validation","fieldErrors","wrap","_context","next","safeParse","success","forEach","path","t0","console","stop","_x","apply","Body1Strong","trialLicenseTitle","Body1","trialLicenseText","Field","firstName","validationState","validationMessage","Input","onChange","placeholder","firstNamePlaceholder","lastName","lastNamePlaceholder","emailPlaceholder","company","companyPlaceholder","MessageBar","marginBottom","intent","register","cancel","RegisterDialog","_useAtom","useAtom","setAppGlobalState","applicationIcon","_appGlobalState$showA","showApps","useState","selectedValue","setSelectedValue","tabs","defaultTabs","trial","Clock20Regular","license","Key20Regular","push","apps","Apps20Regular","onTabSelect","_event","data","useEffect","statusToTab","_statusToTab","Trial","License","renderPanel","filterTabs","tab","toLocaleLowerCase","FluentProvider","Dialog","modalType","DialogSurface","minHeight","DialogTitle","TabList","selectTabOnFocus","size","filter","map","Tab","key","DialogActions","LicensePlaceHolder","placeHolderText","titleContainer","titleAndIcon","informationPanel","_templateObject4","colorNeutralBackground3","infoRow","_templateObject5","_templateObject6","isOpenLicenseForm","setIsOpenLicenseForm","onDissmiss","messageStatusBlockedShort","details","messageStatusExpiredShort","buyLicense","messageStatusInvalidShort","messageStatusNotFoundShort","requestLicense","messageStatusGenericErrorShort","InformationBar","onAction","MessageBarBody","MessageBarTitle","MessageBarActions","ErrorIcon","xmlns","viewBox","fill","stroke","strokeWidth","d","strokeLinecap","colorNeutralBackground2","borderRadius","borderRadiusMedium","spacingVerticalXL","spacingHorizontalXL","colorNeutralForeground1","fontSize","colorBrandBackground","ShowError","_props$theme","teamsLightTheme","_props$language","isLoading","setIsLoading","licensingResponse","setLicenseResponse","useUser","_React$useState4","isOpenRegisterDialog","setIsOpenRegisterDialog","_useUtils2","status","checkAndUpdateLicensing","root","stringsLoc","sent","Error","fallbackRender","_ref3","onMessageBarAction","_callee2","_context2","renderMessagebar","warningDays","expirationDate","today","formatedExpiredDate","dayDiff","differenceInDays","messageLicenseWarning","renderContent","IdPrefixProvider","ErrorBoundary"],"mappings":"sTAAYA,gxOAAZ,SAAYA,GACRA,gBACAA,oBACAA,cAHJ,CAAYA,IAAAA,OCAL,4BCaMC,EAAS,SAA8BC,GAClD,IACEC,EAQED,EARFC,GACAC,EAOEF,EAPFE,KACAC,EAMEH,EANFG,QACAC,EAKEJ,EALFI,KACAC,EAIEL,EAJFK,SACIC,EAGFN,EAHFO,GAAEC,EAGAR,EAFFS,eAAAA,WAAcD,EAAG,GAA6BA,EAI1CE,YAAuBT,OAAMC,UAAeS,mBAAmBT,OAAW,KAC9EC,aAAqBQ,mBAAmBR,OAAc,KACrDC,UAAeO,mBAAmBP,GAAU,IAW/C,OACEQ,gBATwBN,GAAa,mBAUnCO,KAAMH,mCAC0BT,EAChCa,QATgB,SAACC,GACnBA,EAAEC,iBACFC,OAAOC,KAAKR,EAAY,YAQlBD,GAEHJ,ICrCMc,EAAqBC,OAAmB,CACjDC,MAAOC,gBACPC,SAAU,KACVC,2yFACAC,SAAS,ICRAC,EAAW,WAatB,MAAO,CAAEC,aAZYf,EAAMgB,aAAY,SAACC,8BAAqBC,MAAWC,MAAAC,IAAAA,OAAAC,IAAAA,EAAAD,EAAAC,IAAXH,EAAWG,KAAAC,UAAAD,GACtE,OAAOJ,EAASM,QAAQ,YAAY,SAACC,EAAOC,GAAM,YACxB,IAAjBP,EAAKO,GAA0BP,EAAKO,GAAUD,OAEtD,IAQoBE,aAPF1B,EAAMgB,aAAY,SAACW,EAAkBC,GAKxD,OADaC,SAFQF,MAAYC,GAEFE,aAE9B,MCUQC,EAAiD,SAAnCC,OACzBC,EAAaD,EAAbC,cACAC,EAASF,EAATE,UACAC,EAAWH,EAAXG,YACAC,EAAUJ,EAAVI,WAEMC,EC5BC,CACLC,UAAWC,MAAGC,IAAAA,EAAAC,sLAMQC,SAAOC,yBAI7BC,MAAOL,MAAGM,IAAAA,EAAAJ,+IAOVK,OAASP,MAAGQ,IAAAA,EAAAN,+HDWRO,EAAa,IAAIC,KAAKb,GAAsBc,qBAC5CC,EAAiBC,eAAa7C,GAC5BoB,EAAuEwB,EAAvExB,SAAU0B,EAA6DF,EAA7DE,cAAeC,EAA8CH,EAA9CG,gBAAiBC,EAA6BJ,EAA7BI,gBAAiB3C,EAAYuC,EAAZvC,QAC3DG,EAAiBD,IAAjBC,aAEFyC,EAAsBxD,EAAMgB,aAAY,WAC5C,OAAQiB,GACN,KAAKwB,UAAQC,QACX,MAAO,CACLC,QAAS5C,EAAaH,EAAQgD,qBAAsBzB,GACpD0B,YAAa,mBAEjB,KAAKJ,UAAQK,QACX,MAAO,CACLH,QAAS5C,EAAaH,EAAQmD,qBAAsB5B,EAAaa,GAEjEa,YAAa,iBAEjB,KAAKJ,UAAQO,QACX,MAAO,CACLL,QAAS5C,EAAaH,EAAQqD,qBAAsB9B,GACpD0B,YAAa,uBAEjB,KAAKJ,UAAQS,SACX,MAAO,CACLP,QAAS/C,EAAQuD,sBACjBN,YAAa,mBAEjB,KAAKJ,UAAQW,aACX,MAAO,CACLT,QAAS5C,EAAaH,EAAQyD,0BAA2B,IACzDR,YAAa,mBAEjB,KAAKJ,UAAQa,MACX,MAAO,CACLX,QAAS5C,EAAaH,EAAQ2D,mBAAoBpC,EAAaa,GAC/Da,iBAAaW,GAEjB,QACE,UAEH,CAACvC,IAEAwC,EAAUzE,EAAM0E,SAAQ,WAAA,OAAMlB,MAAuB,CAACA,IAGpDmB,EAAmB3E,EAAMgB,aAAY,iBAC3B4D,EAAuBrB,EAAvBqB,UAAWC,EAAYtB,EAAZsB,QACrBrF,kVAuBJ,OArBIyC,IAAkBwB,UAAQS,WAC5B1E,2UACAiF,EAAU,CACRZ,YAAa,kBACbF,QAAS,KAGG5C,EACdvB,EACAoF,EACAC,EACAlD,EACA0B,EACAC,EACAsB,EACAC,EAlBmCtB,EAA7BuB,YAmBFC,EACJN,UAAAM,EAASpB,QACTiB,EACAC,KAGD,CAAClD,EAAU0B,EAAeE,EAAiBkB,IAE9C,OAAKA,EAGHzE,uBAAKgF,UAAW3C,EAAOC,WACrBtC,gBAACiF,YAAMR,EAAQd,SACf3D,gBAACkF,cAAWF,UAAW3C,EAAOS,QAC3B2B,EAAQZ,aACP7D,gBAACb,GACCE,GJnHiB,mBIoHjBC,WAAMiE,SAAAA,EAAiBuB,KACvBvF,6BAA8B+D,EAC9B9D,KAAMmF,IACNhF,GAAIwF,SACJtF,eAAgB,CACduF,WAAY,UACZC,OAAQ,WAGTZ,EAAQZ,aAGb7D,gBAACmF,UAAOC,WAAW,YAAYlF,QAASgC,cArBzBlC,kCErGVsF,EAAwBC,aAAW,CAC9CC,YAAa,CACXC,WAAY,OACZC,SAAU,WACVC,IAAK,OACLC,MAAO,OACPC,OAAQ,OAGVC,QAAS,CACPC,MAAO,OACPC,OAAQ,MACRC,gBAAiBvD,SAAOwD,oBACxBC,UAAW,OAGbC,oBAAqB,CACnBC,QAAS,OACTC,cAAe,SACfC,eAAgB,aAChBC,WAAY,UAEZT,MAAO,QAETU,mBAAkBC,GAGhBL,QAAS,OACTC,cAAe,SACfC,eAAgB,cACbI,aAAWC,QAAQ,SACtBC,IAAK,SAEPC,mBAAkBJ,GAChBL,QAAS,OACTC,cAAe,MACfC,eAAgB,cACbI,aAAWC,QAAQ,SACtBC,IAAK,SAEPE,iBAAgBL,GACdL,QAAS,OACTC,cAAe,SACfC,eAAgB,cACbI,aAAWC,QAAQ,SACtBC,IAAK,SAEPG,2BAA4B,CAC1BX,QAAS,OACTC,cAAe,MACfC,eAAgB,aAChBC,WAAY,UAEdS,kBAAmB,CACjBZ,QAAS,cACTa,qBAAsB,IACtBC,qBAAsB,WAEtBC,UAAW,QACXC,aAAc,WACdC,UAAW,cAEbC,wBAAyB,CACvBlB,QAAS,cACTa,qBAAsB,IACtBC,qBAAsB,WAEtBC,UAAW,QACXC,aAAc,WACdC,UAAW,cAEbE,mCAAoC,CAClCnB,QAAS,OACTC,cAAe,SACfC,eAAgB,QAChBC,WAAY,QACZiB,YAAa,OACbC,aAAc,UChELC,EAA4D,SACvEvI,GAEA,IAAQ8C,EAAwC9C,EAAxC8C,UAAWU,EAA6BxD,EAA7BwD,MAAOgF,EAAsBxI,EAAtBwI,YAAaC,EAASzI,EAATyI,KACjCxF,EAASiD,IAEf,OACEtF,gCACEA,uBAAKgF,UAAW3C,EAAO+D,qBACrBpG,uBACEgF,UAAW3C,EAAOoE,oBAClBzG,gBAACmF,UACCC,WAAW,SACXJ,UAAW3C,EAAOmD,YAClBtF,QAAS,SAAC4H,GACRA,EAAGC,kBACHD,EAAG1H,iBACH8B,GAAU,IACZ2F,KAAM7H,gBAACgI,2BAGThI,uBAAKgF,UAAW3C,EAAO2E,4BACpBhH,iBAAqB6H,GAAQA,EAAO7H,gBAACiI,QAAKJ,KAAMA,IACjD7H,uBAAKgF,UAAW3C,EAAOmF,oCACpBxH,iBAAqB4C,GACpBA,EAEA5C,gBAACkI,aAAUlD,UAAW3C,EAAO4E,mBAAoBrE,GAElD5C,iBAAqB4H,GACpBA,EAEA5H,gBAACmI,YAASnD,UAAW3C,EAAOkF,yBAA0BK,MAK9D5H,uBAAKgF,UAAW3C,EAAOyD,aCjDlBsC,EAAuB7C,aAAW,CAE7C8C,eAAc3B,GACZL,QAAS,OACTC,cAAe,MACfC,eAAgB,aAChBC,WAAY,UACTG,aAAWE,IAAI,QAEpByB,WAAY,CACVvC,MAAO,QAETwC,KAAM,CACJd,YAAa,UCNJe,EAA0D,SAACpJ,GACtE,IAAQqJ,EAA4BrJ,EAA5BqJ,MAAOZ,EAAqBzI,EAArByI,KAAMa,EAAetJ,EAAfsJ,WACfrG,EAAS+F,IACf,OACEpI,gCACEA,uBAAKgF,UAAW3C,EAAOgG,gBACpBR,GAAQ7H,iBAAqB6H,GAC5BA,EAEA7H,gBAACiI,QACCJ,KAAMA,EACN7C,UAAW3C,EAAOiG,WAClBvC,MAAO,OACPC,OAAQ,OACR2C,MAAOjG,SAAOkG,wBAGlB5I,gBAACmI,YAASU,MAAO,CAAEF,MAAOjG,SAAOkG,wBAA0BH,GAC3DzI,gBAACmI,YAASU,MAAO,CAAEF,MAAOjG,SAAOoG,6BAA+BJ,EAAa,KAAO,OCP/EK,EAA4D,SACvE3J,GAEA,IAAA4J,EAA4BhJ,WAAiD,IAAtEiJ,EAAMD,KAAEE,EAASF,KAChBG,EAAmC/J,EAAnC+J,oBAAqBjH,EAAc9C,EAAd8C,UACvBkH,EAAiBhG,eAAa7C,GAC5BgD,EAAgD6F,EAAhD7F,gBAAiB3C,EAA+BwI,EAA/BxI,QAASe,EAAsByH,EAAtBzH,SAAU0H,EAAYD,EAAZC,QACpC3H,EAAiBZ,IAAjBY,aACR4H,EAA0BtJ,gBAAkCwE,GAArD+E,EAAKD,KAAEE,EAAQF,KAEdG,EAAwBC,oBAC9B/H,QACA0H,SAAAA,EAASM,SAASC,GAClBlI,EAAaC,QAAoB0H,SAAAA,EAASM,SAASC,IACnDP,GAJMI,oBAQFI,EAAqBC,IAAEC,OAAO,CAClCC,iBAAkBF,IAAEG,SAASC,IAAI,EAAGtJ,EAAQuJ,uBAC5CC,gBAAiBN,IAAEG,SAASC,IAAI,EAAGtJ,EAAQyJ,sBAC3CC,aAAcR,IAAEG,SAASM,MAAM3J,EAAQ4J,mBACvCC,eAAgBX,IAAEG,SAASC,IAAI,EAAGtJ,EAAQ8J,uBAG5CC,EAAgC3K,WAAe,CAC7CgK,uBAAkBzG,SAAAA,EAAiBqB,UACnCwF,sBAAiB7G,SAAAA,EAAiBsB,QAClCyF,mBAAc/G,SAAAA,EAAiBuB,KAC/B2F,eAAgB,KAJXG,EAAQD,KAAEE,EAAWF,KAOtBG,EAAoB9K,eAAkB,SAACG,GAC3C,IAAA4K,EAAwB5K,EAAEkF,OAAlB2F,EAAID,EAAJC,KAAMC,EAAKF,EAALE,MACdJ,GAAY,SAACK,GAAI,IAAAC,EAAA,OAAAzE,KAAWwE,IAAIC,MAAGH,GAAOC,EAAKE,SAC9C,IAEG9I,EC1DC,CACLC,UAAWC,MAAGC,IAAAA,EAAAC,sKAMQC,SAAOC,yBAG7BC,MAAOL,MAAGM,IAAAA,EAAAJ,+IAOV2I,WAAa7I,MAAGQ,IAAAA,EAAAN,yED2CZ4I,EAAerL,yBAAiB,IAAAgC,EAAAsJ,EAAAC,IAAAC,MACpC,SAAAC,EAAOtL,GAAkB,IAAAuL,EAAAC,EAAA,OAAAJ,IAAAK,eAAAC,GAAA,cAAAA,EAAAX,KAAAW,EAAAC,MAAA,OAGkC,GAFzD3L,EAAEC,kBAEIsL,EAAa7B,EAAmBkC,UAAUnB,IAChCoB,SAAOH,EAAAC,OAAA,MAEfH,EAAyC,GAC/CD,EAAWnC,MAAMN,OAAOgD,SAAQ,SAAC1C,GAE/BoC,EADkBpC,EAAM2C,KAAK,IACJ3C,EAAM5F,WAEjCuF,EAAUyC,GAAaE,EAAAC,QAAA,MAAA,OAGT,OAAd5C,EAAU,IAAI2C,EAAAX,OAAAW,EAAAC,QAENrC,EACJ9H,EACA0H,EAAQM,SAASC,GACjBgB,EAASZ,iBACTY,EAASR,gBACTQ,EAASN,aACTM,EAASH,gBACV,QACDtB,IAAsB0C,EAAAC,QAAA,MAAA,QAAAD,EAAAX,QAAAW,EAAAM,GAAAN,WAEtBO,QAAQ7C,MAAKsC,EAAAM,IACb3C,EAAQqC,EAAAM,IAAiB,QAAA,UAAA,OAAAN,EAAAQ,UAAAZ,qBAG9B,gBAAAa,GAAA,OAAAtK,EAAAuK,WAAAjL,eACD,CAACsJ,EAAUzB,IAGb,OACEnJ,uBAAKgF,UAAW3C,EAAOC,WACrBtC,2BACEA,gBAACwM,eAAYxH,UAAW3C,EAAOO,OAAQhC,EAAQ6L,mBAC/CzM,gBAAC0M,aAAO9L,EAAQ+L,mBAGlB3M,gCACEA,gBAAC4M,SACCnE,MAAOzI,gBAACwI,GAAYC,MAAO7H,EAAQiM,UAAWnE,gBAC9CoE,gBAAiB7D,EAAOe,iBAAmB,QAAU,OACrD+C,kBAAmB9D,EAAOe,uBAAoBxF,GAE9CxE,gBAACgN,SACChC,KAAK,mBACLC,MAAOL,EAASZ,iBAChBiD,SAAUnC,EACVoC,YAAatM,EAAQuM,wBAGzBnN,gBAAC4M,SACCnE,MAAOzI,gBAACwI,GAAYC,MAAO7H,EAAQwM,SAAU1E,gBAC7CoE,gBAAiB7D,EAAOmB,gBAAkB,QAAU,OACpD2C,kBAAmB9D,EAAOmB,sBAAmB5F,GAE7CxE,gBAACgN,SACChC,KAAK,kBACLC,MAAOL,EAASR,gBAChB6C,SAAUnC,EACVoC,YAAatM,EAAQyM,uBAGzBrN,gBAAC4M,SACCnE,MAAOzI,gBAACwI,GAAYC,MAAO7H,EAAQ2J,MAAO7B,gBAC1CoE,gBAAiB7D,EAAOqB,aAAe,QAAU,OACjDyC,kBAAmB9D,EAAOqB,mBAAgB9F,GAE1CxE,gBAACgN,SACChC,KAAK,eACLC,MAAOL,EAASN,aAChB2C,SAAUnC,EACVoC,YAAatM,EAAQ0M,oBAGzBtN,gBAAC4M,SACCnE,MAAOzI,gBAACwI,GAAYC,MAAO7H,EAAQ2M,QAAS7E,gBAC5CoE,gBAAiB7D,EAAOwB,eAAiB,QAAU,OACnDsC,kBAAmB9D,EAAOwB,qBAAkBjG,GAE5CxE,gBAACgN,SACChC,KAAK,iBACLC,MAAOL,EAASH,eAChBwC,SAAUnC,EACVoC,YAAatM,EAAQ4M,sBAGxBjE,GACCvJ,gBAACyN,cAAW5E,MAAO,CAAE1C,UAAW,GAAIuH,aAAc,IAAMC,OAAO,SAC5D,IACApE,EAAM5F,SAGX3D,gBAACkF,cAAWF,UAAW3C,EAAO+I,YAC5BpL,gBAACmF,UAAOC,WAAW,UAAUlF,QAASmL,GACnCzK,EAAQgN,UAEX5N,gBAACmF,UAAOC,WAAW,YAAYlF,QAASgC,GACrCtB,EAAQiN,YE5HRC,EAAiD,SAAC1O,GAC7D,IAAQ6C,EAA4D7C,EAA5D6C,cAAe3B,EAA6ClB,EAA7CkB,KAAM4B,EAAuC9C,EAAvC8C,UAAWC,EAA4B/C,EAA5B+C,YAAaC,EAAehD,EAAfgD,WACrD2L,EAA4CC,UAAQzN,GAA7C6I,EAAc2E,KAAEE,EAAiBF,KAChCtN,EAAuE2I,EAAvE3I,MAAO6C,EAAgE8F,EAAhE9F,gBAAiB4K,EAA+C9E,EAA/C8E,gBAAiBtN,EAA8BwI,EAA9BxI,QAAOuN,EAAuB/E,EAArBgF,SAAAA,WAAQD,GAAQA,EAE1EnF,EAA0ChJ,EAAMqO,SAAmB,SAA5DC,EAAatF,KAAEuF,EAAgBvF,KAEhCwF,EAAexO,EAAM0E,SAAQ,WACjC,IAAM+J,EAAc,CAClB,CAAE7E,GAAI,QAASqB,MAAO,QAASxC,MAAO7H,EAAQ8N,MAAO7G,KAAM7H,gBAAC2O,wBAC5D,CAAE/E,GAAI,UAAWqB,MAAO,UAAWxC,MAAO7H,EAAQgO,QAAS/G,KAAM7H,gBAAC6O,uBAKpE,OAHIT,GACFI,EAAKM,KAAK,CAAElF,GAAI,OAAQqB,MAAO,OAAQxC,MAAO7H,EAAQmO,KAAMlH,KAAM7H,gBAACgP,wBAE9DP,IACN,CAAC7N,IAEEqO,EAAcjP,EAAMgB,aAAY,SAACkO,EAAwBC,GAC7DZ,EAAiBY,EAAKlE,SACrB,IAEHjL,EAAMoP,WAAU,iBACRC,IAAWC,MACd7L,UAAQS,UAAWhF,EAAaqQ,MAAKD,EACrC7L,UAAQK,SAAU5E,EAAasQ,QAAOF,EACtC7L,UAAQO,SAAU9E,EAAasQ,QAAOF,EACtC7L,UAAQC,SAAUxE,EAAasQ,QAAOF,EACtC7L,UAAQW,cAAelF,EAAasQ,QAAOF,EAC3C7L,UAAQa,OAAQpF,EAAasQ,QAAOF,GAEvCf,EAAiBc,EAAYpN,IAAkB/C,EAAaqQ,SAC3D,CAACtN,IAEJ,IAAMwN,EAAczP,EAAM0E,SAAQ,WAChC,OAAQ4J,GACN,IAAK,QACH,OACEtO,gBAAC+I,GACCI,oBAAqB,WACnB8E,EAAiBvH,KAAM0C,GAAgBvI,SAAS,KAChDqB,KAEFA,UAAWA,IAGjB,IAAK,UACH,OACElC,gBAAC+B,GACCE,cAAeA,EACfC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,IAGlB,IAAK,OACH,OAAOpC,mCACT,QACE,OAAOA,oCAEV,CAACsO,EAAerM,EAAeE,EAAaC,IAEzCsN,EAAa1P,EAAMgB,aACvB,SAAC2O,GACC,aACExN,SAAAA,EAAayN,uBAAwB1Q,EAAaqQ,MAAMK,qBACxD3N,EAAc2N,sBAAwBnM,UAAQW,aAAawL,qBAEpDD,EAAI/F,GAAGgG,sBAAwB1Q,EAAaqQ,MAAMK,sBAI7D,CAACzN,EAAaF,IAGhB,OACEjC,gBAAC6P,kBAAepP,MAAOA,GACrBT,gBAAC8P,UAAOxP,KAAMA,EAAMyP,UAAU,SAC5B/P,gBAACgQ,iBAAcnH,MAAO,CAAEoH,UAAW,MACjCjQ,gBAACkQ,mBACClQ,gBAAC2H,GAAaE,KAAMqG,EAAiBtL,MAAOU,EAAiBpB,UAAWA,KAG1ElC,gBAACmQ,WAAQ7B,cAAeA,EAAeW,YAAaA,EAAamB,kBAAkB,EAAMC,KAAK,UAC3F7B,EAAK8B,OAAOZ,GAAYa,KAAI,SAACZ,GAAG,OAC/B3P,gBAACwQ,OAAIC,IAAKd,EAAI/F,GAAIqB,MAAO0E,EAAI1E,MAAOpD,KAAM8H,EAAI9H,MAC3C8H,EAAIlH,WAIVgH,EACDzP,gBAAC0Q,0BC7GEC,EAAwE,SACnFvR,GAEA,IAAM+D,EAAiBC,eAAa7C,GAC5BE,EAAsE0C,EAAtE1C,MAAO6C,EAA+DH,EAA/DG,gBAAiB4K,EAA8C/K,EAA9C+K,gBAAiB0C,EAA6BzN,EAA7ByN,gBAAiBhQ,EAAYuC,EAAZvC,QAC5DyB,ECxBC,CACLC,UAAWC,MAAGC,IAAAA,EAAAC,gJAOdoO,eAAgBtO,MAAGM,IAAAA,EAAAJ,uKAQnBqO,aAAcvO,MAAGQ,IAAAA,EAAAN,gHAMjBsO,iBAAkBxO,MAAGyO,IAAAA,EAAAvO,0IAKCC,SAAOuO,yBAE7BC,QAAS3O,MAAG4O,IAAAA,EAAA1O,wIAOZG,MAAOL,MAAG6O,IAAAA,EAAA3O,iHDXZuG,EAAkDhJ,YAAwB,GAAnEqR,EAAiBrI,KAAEsI,EAAoBtI,KACtC/G,EAA2C7C,EAA3C6C,cAAeE,EAA4B/C,EAA5B+C,YAAaC,EAAehD,EAAfgD,WAC5BrB,EAAiBD,IAAjBC,aACFwQ,EAAavR,eAAkB,WACnCsR,GAAqB,KACpB,IAEGtO,EAAahD,WAAc,WAAA,OAAM,IAAIiD,KAAKb,GAAsBc,uBAAsB,CAACd,IAEvFoB,EAAsBxD,eAAkB,WAC5C,OAAQiC,GACN,KAAKwB,UAAQC,QACX,MAAO,CACLC,QAAS5C,EAAaH,EAAQ4Q,0BAA2BrP,GACzD0B,YAAajD,EAAQ6Q,SAEzB,KAAKhO,UAAQK,QACX,MAAO,CACLH,QAAS5C,EAAaH,EAAQ8Q,0BAA2BvP,EAAaa,GACtEa,YAAajD,EAAQ+Q,YAEzB,KAAKlO,UAAQO,QACX,MAAO,CACLL,QAAS5C,EAAaH,EAAQgR,gCAA2BzP,EAAAA,EAAe,IACxE0B,YAAajD,EAAQ6Q,SAEzB,KAAKhO,UAAQS,SACX,MAAO,CACLP,QAAS5C,EAAaH,EAAQiR,4BAC9BhO,YAAajD,EAAQkR,gBAEzB,KAAKrO,UAAQW,aACX,MAAO,CACLT,QAAS5C,EAAaH,EAAQmR,qCAAgC5P,EAAAA,EAAe,IAC7E0B,YAAajD,EAAQ6Q,SAEzB,QACE,UAEH,CAACxP,IAEEwC,EAAUzE,WAAc,WAC5B,OAAOwD,MACN,CAACA,IAEJ,OACExD,gCACEA,gBAAC6P,kBAAepP,MAAOA,GACrBT,uBAAKgF,UAAW3C,EAAO0O,kBACrB/Q,uBAAKgF,UAAW3C,EAAO6O,SACrBlR,uBAAKgF,UAAW3C,EAAOO,OACrB5C,uBAAKgF,UAAW3C,EAAOwO,gBACrB7Q,uBAAKgF,UAAW3C,EAAOyO,cACpB5C,MAAiBlO,gBAACkI,qBAAY5E,GAA6B,KAE9DtD,gBAAC0M,aAAOkE,MAId5Q,uBAAKgF,UAAW3C,EAAO6O,SACrBlR,gBAACwM,6BAAc/H,SAAAA,EAASd,UAE1B3D,uBAAKgF,UAAW3C,EAAO6O,SACrBlR,gBAAC0Q,iBAAc7H,MAAO,CAAE1C,UAAW,KACjCnG,gBAACmF,UACCC,WAAW,UACXlF,QAAS,WACPoR,GAAqB,WAGtB7M,SAAAA,EAASZ,cAGbwN,GACCrR,gBAAC8N,GACC7L,cAAeA,EACfE,YAAaA,EACbC,WAAYA,EACZ9B,KAAM+Q,EACNnP,UAAWqP,SE9FdS,EAAgE,SAC3E5S,GAEA,IAAQuE,EAAsBvE,EAAtBuE,QAASsO,EAAa7S,EAAb6S,SACjB,OACEjS,gCACEA,gBAACyN,cAAWE,OAAQ,WAClB3N,gBAACkS,sBACClS,gBAACmS,0CACAxO,GAEH3D,gBAACoS,yBACCpS,gBAACmF,UAAOjF,QAAS+R,2BCvBXI,EAAUjT,GACxB,OACEY,qCAAKsS,MAAM,6BAA6BvM,MAAM,MAAMC,OAAO,MAAMuM,QAAQ,aAAgBnT,GACvFY,qBAAGwS,KAAK,OAAOC,OAAO,eAAeC,YAAa,KAChD1S,wBAAM2S,EAAE,4YACR3S,wBAAM4S,cAAc,QAAQD,EAAE,gCCOhCtQ,EAAS,CACbC,UAAWC,MAAGmE,GACZL,QAAS,OACTC,cAAe,SACfE,WAAY,SACZD,eAAgB,SAChBP,OAAQ,OACRoB,UAAW,SACXnB,gBAAiBvD,SAAOmQ,wBACxBC,aAAcpQ,SAAOqQ,oBAClBpM,aAAWC,QAAQlE,SAAOsQ,kBAAmBtQ,SAAOuQ,sBACvDtK,MAAOjG,SAAOwQ,2BAEhBrL,KAAMtF,MAAI,CACR4D,UAAWzD,SAAOuQ,oBAClBE,SAAU,OACVzF,aAAchL,SAAOuQ,oBACrBtK,MAAOjG,SAAO0Q,uBAEhBzP,QAASpB,MAAI,CACXmL,aAAchL,SAAOuQ,uBAIZI,EAA0C,SAAjCrR,OAAoC2B,EAAO3B,EAAP2B,QACxD,OACE3D,uBAAKgF,UAAW3C,EAAOC,WACrBtC,gBAACkI,4CACDlI,gBAACqS,GAAUrN,UAAW3C,EAAOwF,OAC7B7H,gBAACwM,eAAYxH,UAAW3C,EAAOsB,SAAUA,0DCdgC,SAC7EvE,GAEA,IAAAkU,EAAiGlU,EAAzFqB,MAAAA,WAAK6S,EAAGC,kBAAeD,EAAEjK,EAAgEjK,EAAhEiK,QAAS5J,EAAuDL,EAAvDK,SAAUkC,EAA6CvC,EAA7CuC,SAAQ6R,EAAqCpU,EAAnCuB,SAAAA,WAAQ6S,EAAG,KAAIA,EAAEnQ,EAAkBjE,EAAlBiE,cAI/E2F,EAA0BhJ,gBAAkCwE,GAArD+E,EAAKP,KAAEQ,EAAQR,KACtBM,EAAkCtJ,YAAwB,GAAnDyT,EAASnK,KAAEoK,EAAYpK,KAC9BqB,EAAgD3K,aAAzC2T,EAAiBhJ,KAAEiJ,EAAkBjJ,KAC5CoD,EAA4CC,UAAsBzN,GAA3D4C,EAAc4K,KAAEE,EAAiBF,KAChCxK,EAAoBsQ,UAAQxK,GAA5B9F,gBACRuQ,EAAwD9T,YAAwB,GAAzE+T,EAAoBD,KAAEE,EAAuBF,KAC5C/S,EAAiBD,IAAjBC,aACAH,EAAqBuC,EAArBvC,QAASC,EAAYsC,EAAZtC,QACjBoT,EAAyBnT,IACzBkB,EAA6C2R,GAAyD,GAA9FO,EAAMlS,EAANkS,OAAQ/R,EAAWH,EAAXG,YAAaC,EAAUJ,EAAVI,WAErB+R,EAA4BzK,oBAClC/H,EACA0B,GACA3B,EANkBuS,EAAZvS,cAMOC,EAAoB0B,GACjCgG,GAJM8K,wBAOF9R,EAASrC,WAAc,WAC3B,MAAO,CACLoU,KAAM7R,MAAI,CACR0D,gBAAiB,cACjBW,QAAS,QAGZ,IAEH5G,aAAgB,WACdsL,EAAAC,IAAAC,MAAC,SAAAC,IAAA,IAAA4I,EAAA,OAAA9I,IAAAK,eAAAC,GAAA,cAAAA,EAAAX,KAAAW,EAAAC,MAAA,OAAA,OAAAD,EAAAX,OAAAW,EAAAC,OAE4B,8CAAgBnL,gBAAgB,OAMrD,OANE0T,EAAUxI,EAAAyI,KAChBrG,GAAkB,SAAC/C,GAAI,OAAAxE,KAClBwE,EACA9L,GACHwB,QAASyT,EACT9Q,gBAAiBA,OACfsI,EAAAC,OACiBqI,IAAyB,OAC9CP,EADY/H,EAAAyI,MAEZZ,GAAa,GAAO7H,EAAAC,QAAA,MAAA,QAAAD,EAAAX,QAAAW,EAAAM,GAAAN,WAEhBA,EAAAM,cAAiBoI,OAAO/K,EAAQqC,EAAAM,IACpCuH,GAAa,GAAO,QAAA,UAAA,OAAA7H,EAAAQ,UAAAZ,oBAdxBH,KAiBC,CAAC/H,IAEJ,IAAMiR,EAAiBxU,eAAkB,SAAAyU,OAAGlL,EAAKkL,EAALlL,MAE1C,OADA6C,QAAQ7C,gCAAgCA,EAAM5F,SACvC3D,gBAACqT,GAAU1P,QAAS4F,EAAM5F,YAChC,IAEG+Q,EAAqB1U,eAAkB,WAC3CgU,GAAwB,KACvB,IAGHhU,aAAgB,WACdsL,EAAAC,IAAAC,MAAC,SAAAmJ,IAAA,OAAApJ,IAAAK,eAAAgJ,GAAA,cAAAA,EAAA1J,KAAA0J,EAAA9I,MAAA,OAKO,OALP8I,EAAA1J,OAEG+C,GAAkB,SAAC/C,GAAI,OAAAxE,KAClBwE,GACHrK,SAAS,OACP+T,EAAA9I,OACiBqI,IAAyB,OAC9CP,EADYgB,EAAAN,MAEZZ,GAAa,GAAOkB,EAAA9I,QAAA,MAAA,OAAA8I,EAAA1J,OAAA0J,EAAAzI,GAAAyI,WAEhBA,EAAAzI,cAAiBoI,OAAO/K,EAAQoL,EAAAzI,IACpCuH,GAAa,GAAO,QAAA,UAAA,OAAAkB,EAAAvI,UAAAsI,mBAXxBrJ,KAcC,CAACzK,IAEJ,IAAM0Q,GAAavR,eAAkB,WACnCgU,GAAwB,KACvB,IAGGa,GAAmB7U,eACvB,SAACmC,EAAqBC,EAAoB0S,GACxC,IAAMC,EAAiB,IAAI9R,KAAKb,GAC1B4S,EAAQ,IAAI/R,KACZgS,EAAsBF,EAAe7R,qBACrCgS,EAAUC,mBAAiBJ,EAAgBC,GAC7CrR,EAAU,GACd,OAAIuR,GAAWJ,GACbnR,EAAU5C,EAAaH,EAAQwU,sBAAuBjT,EAAa+S,EAASD,GACrEjV,gBAACgS,GAAerO,QAASA,EAASsO,SAAUyC,KAE9C1U,mCAET,CAACoC,IAIGiT,GAAgBrV,eAAkB,WACtC,OAAQkU,GACN,KAAKzQ,UAAQa,MACX,OACEtE,gCACG6U,GAAiB1S,EAAuBC,EA9GzB,IA+Gf3C,GAGP,KAAKgE,UAAQW,aACb,KAAKX,UAAQS,SACb,KAAKT,UAAQC,QACb,KAAKD,UAAQK,QACb,KAAKL,UAAQO,QACX,OAAOhE,gBAAC2Q,GAAmB1O,cAAeiS,EAAQ/R,YAAaA,EAAaC,WAAYA,IAI5F,OAAOpC,mCACN,CAAC2T,EAAmB9S,IAEvB,OAAI4S,EAAkB,KAClBlK,EAAcvJ,gBAACqT,GAAU1P,QAAS4F,EAAM5F,UAG1C3D,gCACEA,gBAACsV,oBAAiBrK,MAAM,cACtBjL,gBAAC6P,kBAAepP,MAAOA,EAAOuE,UAAW3C,EAAO+R,MAC9CpU,gBAACuV,iBAAcf,eAAgBA,GAC5Ba,KACAtB,GACC/T,gBAAC8N,GACC7L,cAAeiS,EACf/R,YAAaA,EACbC,WAAYA,EACZ9B,KAAMyT,EACN7R,UAAWqP"}
|