{"version":3,"file":"317.0182dd45863a21823cc7.js","mappings":"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","sources":["webpack://matrix-licensor/./shared/Components/Shared/actionButtons.tsx","webpack://matrix-licensor/./shared/Components/Shared/editorState.ts","webpack://matrix-licensor/./shared/Components/Shared/pureG.tsx","webpack://matrix-licensor/./shared/Components/Utils/buildCommandRequest.ts","webpack://matrix-licensor/./shared/Components/Utils/commandFetcher.ts","webpack://matrix-licensor/./shared/Components/Utils/getCommandApiUrls.ts","webpack://matrix-licensor/./portal/Components/Accounts/accountsApiClient.ts","webpack://matrix-licensor/./shared/Components/Shared/errorLoggerListener.ts","webpack://matrix-licensor/./shared/Components/Shared/errorBoundary.tsx","webpack://matrix-licensor/./shared/Components/Shared/errorLogger.ts","webpack://matrix-licensor/./shared/Components/Shared/401ErrorDialog.tsx","webpack://matrix-licensor/./portal/Components/Shared/portalApp.tsx","webpack://matrix-licensor/./shared/Components/Shared/configureFetchers.tsx","webpack://matrix-licensor/./shared/Components/Shared/routerErrorStrings.ts","webpack://matrix-licensor/./portal/Components/Accounts/changePasswordDialog.tsx","webpack://matrix-licensor/./portal/Components/Accounts/editUserAccountDialog.tsx","webpack://matrix-licensor/./portal/Components/HelpDialog/helpText.tsx","webpack://matrix-licensor/./portal/Components/HelpDialog/helpFile.tsx","webpack://matrix-licensor/./portal/Components/HelpDialog/helpDialog.tsx","webpack://matrix-licensor/./shared/Components/Shared/fullPageLoadingBanner.tsx","webpack://matrix-licensor/./portal/Components/HelpDialog/helpDialogApiClient.ts","webpack://matrix-licensor/./portal/Components/Shared/portalFullHeader.tsx","webpack://matrix-licensor/./portal/Components/Shared/portalPage.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\n\r\nexport interface Props {\r\n renderLeft?: React.ReactNode;\r\n}\r\n\r\nexport class ActionButtons extends React.Component {\r\n render() {\r\n return (\r\n
\r\n {this.props.renderLeft ? (\r\n
\r\n
{this.props.renderLeft}
\r\n
{this.renderActionButtons()}
\r\n
\r\n ) : (\r\n this.renderActionButtons()\r\n )}\r\n
\r\n );\r\n }\r\n\r\n private renderActionButtons = () => {\r\n return
{this.props.children}
;\r\n };\r\n}\r\n\r\nexport interface ActionButtonBaseProps {\r\n transparent?: boolean;\r\n white?: boolean;\r\n primary?: boolean;\r\n disabled?: boolean;\r\n title?: string;\r\n hasSubtext?: boolean;\r\n}\r\n\r\nexport interface ActionButtonClickProps extends ActionButtonBaseProps {\r\n onClick: React.MouseEventHandler;\r\n}\r\n\r\nfunction getClasses(props: ActionButtonBaseProps) {\r\n const transparent = props.transparent ? \"pure-button-transparent\" : \"\";\r\n const white = props.white ? \"pure-button-white\" : \"\";\r\n const primary = props.primary ? \"pure-button-primary\" : \"\";\r\n const subtext = props.hasSubtext ? \"button-with-subtext\" : \"\";\r\n return classnames(\"pure-button\", transparent, white, primary, subtext);\r\n}\r\n\r\nfunction getBaseButtonProps(props: ActionButtonBaseProps) {\r\n return {\r\n className: getClasses(props),\r\n disabled: props.disabled,\r\n title: props.title,\r\n };\r\n}\r\n\r\nexport class ActionButton extends React.Component {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface SubmitFormProps {\r\n onSubmit: () => void;\r\n}\r\n\r\n// When you want your form to submit when the user hits the enter key while\r\n// they have focus on any input in the form, then this is the component to use\r\nexport class SubmitForm extends React.Component {\r\n render() {\r\n // HTML forms by default handle the enter key by finding the first \r\n );\r\n }\r\n}\r\n","import { UndoState } from \"./undoState\";\r\nimport { PropertyError } from \"spry-react/utils/apiTypes\";\r\n\r\nexport interface EditorState extends UndoState {\r\n errors: PropertyError[];\r\n warnings: PropertyError[];\r\n}\r\n\r\nexport function New(originalState: T, warnings: PropertyError[] = [], errors: PropertyError[] = []): EditorState {\r\n return {\r\n originalState,\r\n currentState: originalState,\r\n errors,\r\n warnings,\r\n };\r\n}\r\n\r\ninterface UpdateParams {\r\n next?: T;\r\n errors?: PropertyError[];\r\n warnings?: PropertyError[];\r\n}\r\n\r\nexport function Update(prev: EditorState, params: UpdateParams): EditorState {\r\n return {\r\n originalState: prev.originalState,\r\n currentState: params.next ? params.next : prev.currentState,\r\n errors: params.errors ? params.errors : prev.errors,\r\n warnings: params.warnings ? params.warnings : prev.warnings,\r\n };\r\n}\r\n","import * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport produce from \"immer\";\r\n\r\nexport class PureG extends React.Component<{ className?: string; style?: React.CSSProperties }, {}> {\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport interface PureUProps {\r\n size?: PureUSizes;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n title?: string;\r\n}\r\n\r\nexport class PureU extends React.Component {\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport type PureUSizes =\r\n | \"1\"\r\n | \"1-2\"\r\n | \"1-3\"\r\n | \"2-3\"\r\n | \"1-4\"\r\n | \"3-4\"\r\n | \"1-6\"\r\n | \"1-8\"\r\n | \"3-8\"\r\n | \"5-8\"\r\n | \"7-8\"\r\n | \"5-12\"\r\n | \"7-12\"\r\n | \"1-16\"\r\n | \"1-24\"\r\n | \"5-24\"\r\n | \"6-24\"\r\n | \"9-24\"\r\n | \"13-24\"\r\n | \"15-24\"\r\n | \"17-24\"\r\n | \"24-24\";\r\n\r\nexport function PureUSizeClass(size?: PureUSizes) {\r\n return size ? `pure-u-${size}` : \"pure-u-1\";\r\n}\r\n\r\nexport interface FieldProps {\r\n inline?: boolean;\r\n size?: PureUSizes;\r\n style?: React.CSSProperties;\r\n className?: string;\r\n noPadding?: boolean;\r\n}\r\n\r\nexport class Field extends React.Component {\r\n render() {\r\n const { inline, size, children, style, className, noPadding } = this.props;\r\n const inlineClass = inline ? \"field-inline\" : \"\";\r\n const noPaddingClass = noPadding ? \"field-v-0\" : \"\";\r\n const classes = classnames(\"field\", \"field-h\", PureUSizeClass(size), inlineClass, className, noPaddingClass);\r\n\r\n let styles = style;\r\n if (inline)\r\n styles = style\r\n ? produce(style, (style) => {\r\n style.paddingBottom = \"1rem\";\r\n })\r\n : { paddingBottom: \"1rem\" };\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport class PureGU1Field extends React.Component<{}, {}> {\r\n render() {\r\n return (\r\n
\r\n
{this.props.children}
\r\n
\r\n );\r\n }\r\n}\r\n","import { FeedbackType } from \"spry-react/SerialOperation/serialOperation\";\r\nimport { ApiRequest, SerialOperationApiRequestOptions } from \"spry-react/utils/apiClient\";\r\nimport { getCommandApiUrls } from \"./getCommandApiUrls\";\r\n\r\nexport function buildCommandRequest(commandName: string, exeOrLoad: \"EXE\" | \"LOAD\", request: any): ApiRequest {\r\n const urls = getCommandApiUrls();\r\n const options: SerialOperationApiRequestOptions = {\r\n serialOperationOptions: {\r\n feedbackType: exeOrLoad === \"EXE\" ? FeedbackType.FullPageSpinner : FeedbackType.LoadingBanner,\r\n },\r\n };\r\n\r\n return {\r\n method: \"POST\",\r\n url: exeOrLoad === \"EXE\" ? `${urls.apiExecuteUrl}${commandName}` : `${urls.apiLoadUrl}${commandName}`,\r\n body: { name: commandName, request: request },\r\n options: options,\r\n };\r\n}\r\n\r\nexport function buildWithFilesCommandRequest(commandName: string, request: any, files: File[]): ApiRequest {\r\n const urls = getCommandApiUrls();\r\n const options: SerialOperationApiRequestOptions = {\r\n serialOperationOptions: {\r\n feedbackType: FeedbackType.FullPageSpinner,\r\n },\r\n };\r\n\r\n const body = new FormData();\r\n body.append(\"Request\", JSON.stringify(request));\r\n files.forEach((f) => body.append(\"File\", f));\r\n\r\n return {\r\n method: \"POST\",\r\n url: `${urls.apiExecuteWithFilesUrl}${commandName}`,\r\n body: body,\r\n options: options,\r\n };\r\n}\r\n\r\nexport function buildUploadFilesCommandRequest(commandName: string, token: string, filesForm: FormData): ApiRequest {\r\n const urls = getCommandApiUrls();\r\n const options: SerialOperationApiRequestOptions = {\r\n serialOperationOptions: {\r\n feedbackType: FeedbackType.FullPageSpinner,\r\n },\r\n };\r\n\r\n return {\r\n method: \"POST\",\r\n url: `${urls.apiUploadFilesUrl}${commandName}&token=${token}`,\r\n body: filesForm,\r\n options: options,\r\n };\r\n}\r\n","import { FeedbackType } from \"spry-react/SerialOperation/serialOperation\";\r\nimport { ConcurrentPromises } from \"spry-react/utils/concurrentPromises\";\r\nimport { RpcCommandResponse } from \"shared/Components/Api/CustomDTOs/RpcCommandResponse\";\r\n\r\ninterface PostFetcher {\r\n postJson(url: string, data: any, concurrencyContext?: ConcurrentPromises, feedbackType?: FeedbackType): Promise;\r\n}\r\n\r\ninterface ApiUrls {\r\n apiExecuteUrl: string;\r\n apiLoadUrl: string;\r\n}\r\n\r\nexport class CommandFetcher {\r\n private readonly fetcher: PostFetcher;\r\n private readonly apiUrls: ApiUrls;\r\n\r\n constructor(fetcher: PostFetcher, apiUrls: ApiUrls) {\r\n this.fetcher = fetcher;\r\n this.apiUrls = apiUrls;\r\n }\r\n\r\n async commandExecute(command: string, data: any, concurrencyContext?: ConcurrentPromises): Promise {\r\n return await this.fetcher.postJson(\r\n this.buildUrl(this.apiUrls.apiExecuteUrl, command),\r\n {\r\n name: command,\r\n request: data,\r\n },\r\n concurrencyContext,\r\n );\r\n }\r\n\r\n async commandLoad(command: string, data?: any, concurrencyContext?: ConcurrentPromises): Promise {\r\n return await this.fetcher.postJson(\r\n this.buildUrl(this.apiUrls.apiLoadUrl, command),\r\n {\r\n name: command,\r\n request: data,\r\n },\r\n concurrencyContext,\r\n FeedbackType.LoadingBanner,\r\n );\r\n }\r\n\r\n private buildUrl = (baseurl: string, commandname: string) => {\r\n return `${baseurl}${commandname}`;\r\n };\r\n}\r\n","import { RpcCommandApiUrls } from \"../Api/CustomDTOs/RpcCommandApiUrls\";\r\n\r\n/** This is effectively a singleton instance of the RpcCommandApiUrls. It has to be set once by the main\r\n * App component and then it can be accessed by the code generated command api methods.\r\n */\r\ninterface CommandApiUrlsSingleton {\r\n commandApiUrls: RpcCommandApiUrls;\r\n}\r\n\r\n/** Sets the singleton RpcCommandApiUrls to be accessed by the code generated command api methods. */\r\nexport function registerCommandApiUrls(urls: RpcCommandApiUrls) {\r\n (window as unknown as CommandApiUrlsSingleton).commandApiUrls = urls;\r\n}\r\n\r\n/** Gets the singleton RpcCommandApiUrls. */\r\nexport function getCommandApiUrls(): RpcCommandApiUrls {\r\n const commandApiUrls = (window as unknown as CommandApiUrlsSingleton).commandApiUrls;\r\n if (!commandApiUrls) throw \"CommandApiUrls have not been registered. Use registerCommandApiUrls() when initializing your app\";\r\n\r\n return commandApiUrls;\r\n}\r\n","import { SignInRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/SignInRequest\";\r\nimport { SignInResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/SignInResponse\";\r\nimport { CreateNewUserRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/CreateNewUserRequest\";\r\nimport { CreateNewUserResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/CreateNewUserResponse\";\r\nimport { AccountsApiClientUrls } from \"Components/Api/GeneratedDTOs/Api/Accounts/AccountsApiClientUrls\";\r\nimport { CreateOrganizationRequest } from \"Components/Api/GeneratedDTOs/Api/Commands/Accounts/CreateOrganizationRequest\";\r\nimport { CreateOrganizationResponse } from \"Components/Api/GeneratedDTOs/Api/Commands/Accounts/CreateOrganizationResponse\";\r\nimport { GetChangePasswordInfoResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/GetChangePasswordInfoResponse\";\r\nimport { ChangePasswordRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ChangePasswordRequest\";\r\nimport { ChangePasswordResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ChangePasswordResponse\";\r\nimport { GetPersonResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/GetPersonResponse\";\r\nimport { IFetcher } from \"spry-react/utils/IFetcher\";\r\nimport { ConfirmCreateCodeRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ConfirmCreateCodeRequest\";\r\nimport { ConfirmCreateCodeResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ConfirmCreateCodeResponse\";\r\nimport { ResendCreateCodeResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResendCreateCodeResponse\";\r\nimport { AccountSetupRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/AccountSetupRequest\";\r\nimport { AccountSetupResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/AccountSetupResponse\";\r\nimport { ForgotPasswordEmailRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ForgotPasswordEmailRequest\";\r\nimport { ForgotPasswordEmailResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ForgotPasswordEmailResponse\";\r\nimport { ConfirmPasswordResetCodeRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ConfirmPasswordResetCodeRequest\";\r\nimport { ConfirmPasswordResetCodeResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ConfirmPasswordResetCodeResponse\";\r\nimport { ResendPasswordResetCodeRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResendPasswordResetCodeRequest\";\r\nimport { ResendPasswordResetCodeResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResendPasswordResetCodeResponse\";\r\nimport { ResetPasswordRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResetPasswordRequest\";\r\nimport { ResetPasswordResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResetPasswordResponse\";\r\nimport { ForgotUsernameEmailRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ForgotUsernameEmailRequest\";\r\nimport { ForgotUsernameEmailResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ForgotUsernameEmailResponse\";\r\nimport { GetEditUserAccountInfoResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/GetEditUserAccountInfoResponse\";\r\nimport { EditUserAccountInfoResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/EditUserAccountInfoResponse\";\r\nimport { EditUserAccountInfoRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/EditUserAccountInfoRequest\";\r\nimport { OrgMembershipRequestRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/OrgMembershipRequestRequest\";\r\nimport { OrgMembershipRequestResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/OrgMembershipRequestResponse\";\r\nimport { ResendMembershipRequestRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResendMembershipRequestRequest\";\r\nimport { ResendMembershipRequestResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/ResendMembershipRequestResponse\";\r\nimport { CancelMembershipRequestRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/CancelMembershipRequestRequest\";\r\nimport { CancelMembershipRequestResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/CancelMembershipRequestResponse\";\r\nimport { GetAccessRequestsRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/GetAccessRequestsRequest\";\r\nimport { GetAccessRequestsSentResponse } from \"Components/Api/GeneratedDTOs/Api/Accounts/GetAccessRequestsSentResponse\";\r\nimport { CommandFetcher } from \"shared/Components/Utils/commandFetcher\";\r\n\r\nexport class AccountsApiClient {\r\n private readonly signInUrl: string;\r\n private readonly createNewUserUrl: string;\r\n private readonly confirmCreateCodeUrl: string;\r\n private readonly resendCreateCodeUrl: string;\r\n private readonly accountSetupUrl: string;\r\n private readonly orgMembershipRequestUrl: string;\r\n private readonly resendMembershipRequestUrl: string;\r\n private readonly cancelMembershipRequestUrl: string;\r\n private readonly getChangePasswordInfoUrl: string;\r\n private readonly changePasswordUrl: string;\r\n private readonly getPersonUrl: string;\r\n private readonly forgotPasswordEmailUrl: string;\r\n private readonly confirmPasswordResetCodeUrl: string;\r\n private readonly resendPasswordResetCodeUrl: string;\r\n private readonly resetPasswordUrl: string;\r\n private readonly forgotUsernameEmailUrl: string;\r\n private readonly getEditUserAccountInfoUrl: string;\r\n private readonly editUserAccountInfoUrl: string;\r\n private readonly getAccessRequestsUrl: string;\r\n\r\n private readonly fetcher: IFetcher;\r\n private readonly commandFetcher: CommandFetcher;\r\n\r\n constructor(accountsApiClientUrls: AccountsApiClientUrls, fetcher: IFetcher, commandFetcher: CommandFetcher) {\r\n this.signInUrl = accountsApiClientUrls.signInUrl;\r\n this.createNewUserUrl = accountsApiClientUrls.createNewUserUrl;\r\n this.confirmCreateCodeUrl = accountsApiClientUrls.confirmCreateCodeUrl;\r\n this.resendCreateCodeUrl = accountsApiClientUrls.resendCreateCodeUrl;\r\n this.accountSetupUrl = accountsApiClientUrls.accountSetupUrl;\r\n this.orgMembershipRequestUrl = accountsApiClientUrls.orgMembershipRequestUrl;\r\n this.resendMembershipRequestUrl = accountsApiClientUrls.resendMembershipRequestUrl;\r\n this.cancelMembershipRequestUrl = accountsApiClientUrls.cancelMembershipRequestUrl;\r\n this.getChangePasswordInfoUrl = accountsApiClientUrls.getChangePasswordInfoUrl;\r\n this.changePasswordUrl = accountsApiClientUrls.changePasswordUrl;\r\n this.getPersonUrl = accountsApiClientUrls.getPersonUrl;\r\n this.forgotPasswordEmailUrl = accountsApiClientUrls.forgotPasswordEmailUrl;\r\n this.confirmPasswordResetCodeUrl = accountsApiClientUrls.confirmPasswordResetCodeUrl;\r\n this.resendPasswordResetCodeUrl = accountsApiClientUrls.resendPasswordResetCodeUrl;\r\n this.resetPasswordUrl = accountsApiClientUrls.resetPasswordUrl;\r\n this.forgotUsernameEmailUrl = accountsApiClientUrls.forgotUsernameEmailUrl;\r\n this.getEditUserAccountInfoUrl = accountsApiClientUrls.getEditUserAccountInfoUrl;\r\n this.editUserAccountInfoUrl = accountsApiClientUrls.editUserAccountInfoUrl;\r\n this.getAccessRequestsUrl = accountsApiClientUrls.getAccessRequestsUrl;\r\n\r\n this.fetcher = fetcher;\r\n this.commandFetcher = commandFetcher;\r\n }\r\n\r\n public signIn(data: SignInRequest): Promise {\r\n return this.fetcher.postJson(this.signInUrl, data);\r\n }\r\n\r\n public createNewUser(data: CreateNewUserRequest): Promise {\r\n return this.fetcher.postJson(this.createNewUserUrl, data);\r\n }\r\n\r\n public confirmCreateCode(data: ConfirmCreateCodeRequest): Promise {\r\n return this.fetcher.postJson(this.confirmCreateCodeUrl, data);\r\n }\r\n\r\n public resendCreateCode(email: string): Promise {\r\n return this.fetcher.postJson(this.resendCreateCodeUrl, { email });\r\n }\r\n\r\n public accountSetup(data: AccountSetupRequest): Promise {\r\n return this.fetcher.postJson(this.accountSetupUrl, data);\r\n }\r\n\r\n public orgMembershipRequest(data: OrgMembershipRequestRequest): Promise {\r\n return this.fetcher.postJson(this.orgMembershipRequestUrl, data);\r\n }\r\n\r\n public resendMembershipRequest(data: ResendMembershipRequestRequest): Promise {\r\n return this.fetcher.postJson(this.resendMembershipRequestUrl, data);\r\n }\r\n\r\n public cancelMembershipRequest(data: CancelMembershipRequestRequest): Promise {\r\n return this.fetcher.postJson(this.cancelMembershipRequestUrl, data);\r\n }\r\n\r\n public createOrganization(data: CreateOrganizationRequest): Promise {\r\n return this.commandFetcher.commandExecute(\"CreateOrganization\", data);\r\n }\r\n\r\n public getChangePasswordInfo(): Promise {\r\n return this.fetcher.getJson(this.getChangePasswordInfoUrl, undefined);\r\n }\r\n\r\n public changePassword(data: ChangePasswordRequest): Promise {\r\n return this.fetcher.postJson(this.changePasswordUrl, data);\r\n }\r\n\r\n public getPerson(organizationId: number, personId: number): Promise {\r\n return this.fetcher.getJsonWithData(this.getPersonUrl, {\r\n organizationId,\r\n personId,\r\n });\r\n }\r\n\r\n public forgotPasswordEmail(data: ForgotPasswordEmailRequest): Promise {\r\n return this.fetcher.postJson(this.forgotPasswordEmailUrl, data);\r\n }\r\n\r\n public confirmPasswordResetCode(data: ConfirmPasswordResetCodeRequest): Promise {\r\n return this.fetcher.postJson(this.confirmPasswordResetCodeUrl, data);\r\n }\r\n\r\n public resendPasswordResetCode(data: ResendPasswordResetCodeRequest): Promise {\r\n return this.fetcher.postJson(this.resendPasswordResetCodeUrl, data);\r\n }\r\n\r\n public resetPassword(data: ResetPasswordRequest): Promise {\r\n return this.fetcher.postJson(this.resetPasswordUrl, data);\r\n }\r\n\r\n public forgotUsernameEmail(data: ForgotUsernameEmailRequest): Promise {\r\n return this.fetcher.postJson(this.forgotUsernameEmailUrl, data);\r\n }\r\n\r\n public getEditUserAccountInfo(): Promise {\r\n return this.fetcher.getJson(this.getEditUserAccountInfoUrl);\r\n }\r\n\r\n public editUserAccountInfo(data: EditUserAccountInfoRequest): Promise {\r\n return this.fetcher.postJson(this.editUserAccountInfoUrl, data);\r\n }\r\n\r\n public getAccessRequests(data: GetAccessRequestsRequest): Promise {\r\n return this.fetcher.getJsonWithData(this.getAccessRequestsUrl, data);\r\n }\r\n}\r\n","import { ErrorLogger } from \"./errorLogger\";\r\n\r\nexport namespace ErrorLoggerListener {\r\n let initialized: boolean = false;\r\n let errLogger: ErrorLogger | undefined;\r\n let baseConsoleError: ((message?: any, ...optionalParams: any[]) => void) | undefined;\r\n\r\n export function start(errorLogger: ErrorLogger) {\r\n if (initialized) return;\r\n\r\n errLogger = errorLogger;\r\n\r\n //Overwrite console.error so any error logging gets sent to the server even if there is no exception\r\n //e.g. React logs duplicate key errors but does not throw, we want these errors persisted\r\n baseConsoleError = console.error;\r\n console.error = consoleError;\r\n\r\n //Log any uncaught exceptions\r\n //e.g. exceptions caught outside the react Error Boundary/on old V3 pages\r\n window.addEventListener(\"error\", logErrorEvent);\r\n\r\n initialized = true;\r\n }\r\n\r\n export function stop() {\r\n if (!initialized) return;\r\n\r\n console.error = baseConsoleError as (message?: any, ...optionalParams: any[]) => void;\r\n window.removeEventListener(\"error\", logErrorEvent);\r\n\r\n errLogger = undefined;\r\n baseConsoleError = undefined;\r\n initialized = false;\r\n }\r\n\r\n function consoleError(message?: string) {\r\n baseConsoleError!.apply(console, arguments);\r\n\r\n var substitutedMessage = message;\r\n if (substitutedMessage !== undefined && arguments.length > 1) {\r\n var otherArgs = Array.prototype.slice.call(arguments, 1);\r\n var count = 0;\r\n substitutedMessage = substitutedMessage.replace(/%s/g, () => otherArgs[count++]);\r\n }\r\n\r\n errLogger!.log({\r\n message: substitutedMessage || null,\r\n pageUrl: window.location.href,\r\n loggedFrom: \"console.error\",\r\n stack: null,\r\n componentStack: null,\r\n scriptUrl: null,\r\n userAgent: null,\r\n line: null,\r\n });\r\n }\r\n\r\n function logErrorEvent(e: ErrorEvent) {\r\n errLogger!.log({\r\n message: e.message,\r\n pageUrl: window.location.href,\r\n loggedFrom: \"window.onerror\",\r\n stack: e.error ? e.error.stack : null,\r\n componentStack: null,\r\n scriptUrl: e.filename,\r\n userAgent: navigator.userAgent,\r\n line: e.lineno,\r\n });\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { ErrorLogger } from \"Components/Shared/errorLogger\";\r\n\r\ninterface Props {\r\n errorLogger: ErrorLogger;\r\n}\r\n\r\ninterface State {\r\n error: any;\r\n errorInfo: any;\r\n}\r\n\r\nexport class ErrorBoundary extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n error: null,\r\n errorInfo: null,\r\n };\r\n }\r\n\r\n render() {\r\n if (this.state.errorInfo) {\r\n return (\r\n <>\r\n

An unexpected error has occurred

\r\n The details of the error have been logged. Try refreshing the page and trying the operation again. If the problem persists please contact\r\n technical support.\r\n \r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n\r\n componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void {\r\n //We're manually logging this error here to get the component stack.\r\n //The errorLoggerListener will also log react's console.error call, but it doesn't have as much information\r\n this.props.errorLogger.log({\r\n message: error.message,\r\n pageUrl: window.location.href,\r\n loggedFrom: \"ErrorBoundary.ComponentDidCatch\",\r\n stack: error.stack || null,\r\n componentStack: errorInfo.componentStack,\r\n scriptUrl: null,\r\n userAgent: navigator.userAgent,\r\n line: null,\r\n });\r\n\r\n this.setState({ error, errorInfo });\r\n }\r\n}\r\n","import * as fetch from \"spry-react/utils/fetchExtensions\";\r\nimport { LoggableError } from \"shared/Components/Api/GeneratedDTOs/DTOs/LoggableError\";\r\n\r\nexport class ErrorLogger {\r\n private readonly errorLoggingUrl: string;\r\n private readonly getCsrfInfo: () => fetch.CrossSiteRequestForgeryTokenInfo;\r\n\r\n constructor(errorLoggingUrl: string, getCsrfInfo: () => fetch.CrossSiteRequestForgeryTokenInfo) {\r\n this.errorLoggingUrl = errorLoggingUrl;\r\n this.getCsrfInfo = getCsrfInfo;\r\n }\r\n\r\n public log = (error: LoggableError) => {\r\n try {\r\n fetch.postJson(this.errorLoggingUrl, error, this.getCsrfInfo).catch(() => {\r\n /* ignore any api errors */\r\n });\r\n } catch {\r\n /* ignore any thrown js errors */\r\n }\r\n };\r\n}\r\n","import * as React from \"react\";\r\nimport { Dialog } from \"spry-react/Dialog/dialog\";\r\n\r\nexport function Render401ErrorDialog(close: () => void) {\r\n return ;\r\n}\r\n\r\nexport interface Props {\r\n close: () => void;\r\n}\r\n\r\nexport class Error401Dialog extends React.PureComponent {\r\n constructor(props: Props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n

Your session has expired. Please refresh the page and login.

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private refresh = () => {\r\n window.location.reload();\r\n };\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport { IPortalAppContext } from \"./appContext\";\r\nimport { App } from \"spry-react/App/app\";\r\nimport { Layout } from \"Components/Api/GeneratedDTOs/Api/Shared/Layout\";\r\nimport { AccountsApiClient } from \"../Accounts/accountsApiClient\";\r\nimport { CrossSiteRequestForgeryTokenInfo } from \"spry-react/utils/fetchExtensions\";\r\nimport { ErrorLoggerListener } from \"shared/Components/Shared/errorLoggerListener\";\r\nimport { ErrorBoundary } from \"shared/Components/Shared/errorBoundary\";\r\nimport { ErrorLogger } from \"shared/Components/Shared/errorLogger\";\r\nimport { configureFetchers } from \"shared/Components/Shared/configureFetchers\";\r\n\r\ninterface WithLayout {\r\n layout: Layout;\r\n}\r\n\r\nexport interface Props {\r\n data: WithLayout;\r\n renderChildren: (\r\n appContext: IPortalAppContext,\r\n ) => React.ReactElement | React.ReactElement[] | React.ReactPortal | string | number | null | false;\r\n}\r\nexport interface State {\r\n csrfInfo: CrossSiteRequestForgeryTokenInfo;\r\n}\r\n\r\nexport class PortalApp extends React.Component {\r\n private readonly errorLogger: ErrorLogger;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n csrfInfo: props.data.layout.csrfInfo,\r\n };\r\n this.errorLogger = new ErrorLogger(this.props.data.layout.errorLoggingUrl, () => this.state.csrfInfo);\r\n }\r\n\r\n componentDidMount() {\r\n ErrorLoggerListener.start(this.errorLogger);\r\n }\r\n\r\n componentWillUnmount() {\r\n ErrorLoggerListener.stop();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {\r\n const layout = this.props.data.layout;\r\n const getCsrfInfo = () => this.state.csrfInfo;\r\n const fetchers = configureFetchers(openDialog, startSerialOperation, getCsrfInfo, layout.jsonCommandApiUrls);\r\n\r\n const accountsApiClient = new AccountsApiClient(\r\n this.props.data.layout.accountsApiClientUrls,\r\n fetchers.serialFetcher,\r\n fetchers.commandFetcher!,\r\n );\r\n\r\n const context: IPortalAppContext = {\r\n fetcher: fetchers.serialFetcher,\r\n commandFetcher: fetchers.commandFetcher!,\r\n serialOperationApiClient: fetchers.serialOperationApiClient,\r\n standardApiClient: fetchers.standardApiClient,\r\n openDialog,\r\n confirm,\r\n flashMessage,\r\n registerBeforeUnload,\r\n setWindowLocationHref,\r\n\r\n homeUrl: layout.homeUrl,\r\n homeLinkText: layout.homeLinkText,\r\n myOrganizationsUrl: layout.myOrganizationsUrl,\r\n signOutUrl: layout.signOutUrl,\r\n logoImageUrl: layout.logoImageUrl,\r\n loggedInUser: layout.loggedInUser,\r\n accountsApiClient: accountsApiClient,\r\n getCsrfInfo: () => this.state.csrfInfo,\r\n startSerialOperation: startSerialOperation,\r\n logoColor: layout.logoColor,\r\n logoLabel: layout.logoLabel,\r\n };\r\n return this.props.renderChildren(context);\r\n }}\r\n />\r\n \r\n );\r\n }\r\n}\r\n","import { OpenDialogCallback } from \"spry-react/App/app\";\r\nimport { RenderNetworkErrorDialog } from \"spry-react/Errors/networkErrorDialog\";\r\nimport { Render500ErrorDialog } from \"spry-react/Errors/500ErrorDialog\";\r\nimport { Render404ErrorDialog } from \"spry-react/Errors/404ErrorDialog\";\r\nimport { Render403ErrorDialog } from \"spry-react/Errors/403ErrorDialog\";\r\nimport { CrossSiteRequestForgeryTokenInfo, ErrorHandlers } from \"spry-react/utils/fetchExtensions\";\r\nimport { FetchWithStandardErrorHandling } from \"spry-react/utils/fetchWithStandardErrorHandling\";\r\nimport { CommandFetcher } from \"../Utils/commandFetcher\";\r\nimport { FetchWithSerialOperationHandling } from \"spry-react/utils/fetchWithSerialOperationHandling\";\r\nimport { registerCommandApiUrls } from \"shared/Components/Utils/getCommandApiUrls\";\r\nimport * as ApiClient from \"spry-react/utils/apiClient\";\r\nimport { Render401ErrorDialog } from \"./401ErrorDialog\";\r\nimport { StartSerialOperationCallback } from \"spry-react/SerialOperation/serialOperation\";\r\nimport { RpcCommandApiUrls } from \"../Api/CustomDTOs/RpcCommandApiUrls\";\r\nimport { buildCommandRequest } from \"../Utils/buildCommandRequest\";\r\nimport { registerBuildCommandRequest as dataExplorerRegisterBuildCommandRequest } from \"pbs-dataexplorer/dataExplorerCommandConfig\";\r\nimport {\r\n NetworkErrorMessage,\r\n NotFoundRoutingErrorMessage,\r\n Routing401ErrorMessage,\r\n Routing403ErrorMessage,\r\n Routing500ErrorMessage,\r\n} from \"./routerErrorStrings\";\r\n\r\n/** Shares the configuration of the fetchers so all the top level pages can use the same setup. */\r\nexport function configureFetchers(\r\n openDialog: OpenDialogCallback,\r\n startSerialOperation: StartSerialOperationCallback,\r\n getCsrfInfo: () => CrossSiteRequestForgeryTokenInfo,\r\n rpcCommandApiUrls?: RpcCommandApiUrls,\r\n) {\r\n const openNetworkErrorDialog = () => {\r\n openDialog(RenderNetworkErrorDialog);\r\n };\r\n const open500ErrorDialog = () => {\r\n openDialog(Render500ErrorDialog);\r\n };\r\n const open404ErrorDialog = () => {\r\n openDialog(Render404ErrorDialog);\r\n };\r\n const open401ErrorDialog = () => {\r\n openDialog(Render401ErrorDialog);\r\n };\r\n const open403ErrorDialog = () => {\r\n openDialog(Render403ErrorDialog);\r\n };\r\n const dialogErrorHandlers: ErrorHandlers = {\r\n handle401Error: open401ErrorDialog,\r\n handle403Error: open403ErrorDialog,\r\n handle404Error: open404ErrorDialog,\r\n handle500Error: open500ErrorDialog,\r\n handleNetworkError: openNetworkErrorDialog,\r\n };\r\n const errorFetcher = new FetchWithStandardErrorHandling({\r\n ...dialogErrorHandlers,\r\n getCsrfInfo,\r\n });\r\n const serialFetcher = new FetchWithSerialOperationHandling(startSerialOperation, errorFetcher);\r\n\r\n let commandFetcher: CommandFetcher | undefined;\r\n if (rpcCommandApiUrls) {\r\n commandFetcher = new CommandFetcher(serialFetcher, rpcCommandApiUrls);\r\n registerCommandApiUrls(rpcCommandApiUrls);\r\n dataExplorerRegisterBuildCommandRequest(buildCommandRequest);\r\n }\r\n\r\n const standardApiClient = new ApiClient.ApiClient([\r\n new ApiClient.CsrfInfoStep(getCsrfInfo),\r\n new ApiClient.StandardErrorHandlingStep(dialogErrorHandlers),\r\n ]);\r\n const serialOperationApiClient = new ApiClient.SerialOperationApiClient(startSerialOperation, standardApiClient);\r\n\r\n const throwNetworkError = () => {\r\n throw new Error(NetworkErrorMessage);\r\n };\r\n const throw500Error = () => {\r\n throw new Error(Routing500ErrorMessage);\r\n };\r\n const throw404Error = () => {\r\n throw new Error(NotFoundRoutingErrorMessage);\r\n };\r\n const throw401Error = () => {\r\n throw new Error(Routing401ErrorMessage);\r\n };\r\n const throw403Error = () => {\r\n throw new Error(Routing403ErrorMessage);\r\n };\r\n const throwErrorHandlers: ErrorHandlers = {\r\n handle401Error: throw401Error,\r\n handle403Error: throw403Error,\r\n handle404Error: throw404Error,\r\n handle500Error: throw500Error,\r\n handleNetworkError: throwNetworkError,\r\n };\r\n const loaderApiClient = new ApiClient.ApiClient([\r\n new ApiClient.CsrfInfoStep(getCsrfInfo),\r\n new ApiClient.StandardErrorHandlingStep(throwErrorHandlers),\r\n ]);\r\n\r\n const csrfOnlyApiClient = new ApiClient.ApiClient([new ApiClient.CsrfInfoStep(getCsrfInfo)]);\r\n\r\n return {\r\n serialFetcher,\r\n commandFetcher,\r\n standardApiClient,\r\n serialOperationApiClient,\r\n loaderApiClient,\r\n csrfOnlyApiClient,\r\n };\r\n}\r\n","/** Loaders can throw an error with this message to cause the standard 404 page to be displayed. */\r\nexport const NotFoundRoutingErrorMessage = \"404NotFoundRoutingError\";\r\nexport const NetworkErrorMessage = \"NetworkError\";\r\nexport const Routing500ErrorMessage = \"500Error\";\r\nexport const Routing401ErrorMessage = \"401Error\";\r\nexport const Routing403ErrorMessage = \"403Error\";\r\n","import * as React from \"react\";\r\nimport { Dialog } from \"spry-react/Dialog/dialog\";\r\nimport { ErrorList } from \"spry-react/Errors/errorList\";\r\nimport { TabList } from \"spry-react/Tabs/tabList\";\r\nimport { LabeledTextField } from \"spry-react/Text/textField\";\r\nimport { AccountsApiClient } from \"./accountsApiClient\";\r\nimport { ErrorDisplayList } from \"spry-react/Errors/errorDisplayList\";\r\nimport { FlashMessageCallback } from \"spry-react/App/app\";\r\nimport { LabeledCheckboxField } from \"spry-react/Checkbox/labeledCheckboxField\";\r\nimport { SubmitForm, SubmitButton } from \"shared/Components/Shared/actionButtons\";\r\n\r\ninterface Props {\r\n passwordPolicyRules: string[];\r\n closeDialog: () => void;\r\n accountsApiClient: AccountsApiClient;\r\n flashMessageCallback: FlashMessageCallback;\r\n}\r\n\r\ninterface State {\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmNewPassword: string;\r\n showPassword: boolean;\r\n errors: ErrorList;\r\n}\r\n\r\nexport class ChangePasswordDialog extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n currentPassword: \"\",\r\n newPassword: \"\",\r\n confirmNewPassword: \"\",\r\n showPassword: false,\r\n errors: new ErrorList([]),\r\n };\r\n }\r\n\r\n render() {\r\n const state = this.state;\r\n const props = this.props;\r\n const errors = state.errors;\r\n\r\n const tabKey = \"changePassword\";\r\n const tabs = [\r\n {\r\n key: tabKey,\r\n text: \"Change Password\",\r\n },\r\n ];\r\n\r\n const passwordPolicyContent = (\r\n
    \r\n {props.passwordPolicyRules.map((r, i) => (\r\n
  • {r}
  • \r\n ))}\r\n
\r\n );\r\n\r\n return (\r\n \r\n {}} />\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Your password must meet these rules:

\r\n
    \r\n {props.passwordPolicyRules.map((r, i) => (\r\n
  • {r}
  • \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Change Password\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private onCurrentPasswordChanged = (currentPassword: string) => {\r\n this.setState({ currentPassword });\r\n };\r\n\r\n private onNewPasswordChanged = (newPassword: string) => {\r\n this.setState({ newPassword });\r\n };\r\n\r\n private onConfirmNewPasswordChanged = (confirmNewPassword: string) => {\r\n this.setState({ confirmNewPassword });\r\n };\r\n\r\n private onShowPasswordChanged = () => {\r\n this.setState((state) => {\r\n return { showPassword: !state.showPassword };\r\n });\r\n };\r\n\r\n private onChangePasswordClicked = () => {\r\n this.props.accountsApiClient\r\n .changePassword({\r\n currentPassword: this.state.currentPassword,\r\n newPassword: this.state.newPassword,\r\n confirmNewPassword: this.state.confirmNewPassword,\r\n })\r\n .then((response) => {\r\n if (response.success) {\r\n this.props.closeDialog();\r\n this.props.flashMessageCallback(\"Password changed.\");\r\n } else {\r\n this.setState({\r\n errors: new ErrorList(response.errors),\r\n });\r\n }\r\n });\r\n };\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport { AccountsApiClient } from \"./accountsApiClient\";\r\nimport { IPortalAppContext } from \"Components/Shared/appContext\";\r\nimport { PersonName } from \"Components/Api/CustomDTOs/PersonName\";\r\nimport { PhoneNumber, LabeledPhoneField } from \"spry-react/Phone/phoneField\";\r\nimport { EditorState, New as NewEditorState, Update as UpdateEditorState } from \"shared/Components/Shared/editorState\";\r\nimport { Dialog } from \"spry-react/Dialog/dialog\";\r\nimport { ActionButtons, ActionButton } from \"shared/Components/Shared/actionButtons\";\r\nimport { ErrorDisplayList } from \"spry-react/Errors/errorDisplayList\";\r\nimport { ErrorList } from \"spry-react/Errors/errorList\";\r\nimport { LabeledNameField, Name } from \"spry-react/Name/nameField\";\r\nimport { toSelectFieldOptions } from \"spry-react/utils/listUtils\";\r\nimport { PureG, Field } from \"shared/Components/Shared/pureG\";\r\nimport { LabeledTextField } from \"spry-react/Text/textField\";\r\nimport { LabeledCheckboxField } from \"spry-react/Checkbox/labeledCheckboxField\";\r\nimport { Link } from \"spry-react/Link/link\";\r\nimport { ChangePasswordDialog } from \"./changePasswordDialog\";\r\nimport { EditUserAccountInfoRequest } from \"Components/Api/GeneratedDTOs/Api/Accounts/EditUserAccountInfoRequest\";\r\nimport { NamedCode } from \"shared/Components/Api/GeneratedDTOs/NamedCode\";\r\n\r\ninterface Props {\r\n context: IPortalAppContext;\r\n accountsApiClient: AccountsApiClient;\r\n closeDialog: () => void;\r\n initialData: Data;\r\n namePrefixes: NamedCode[];\r\n nameSuffixes: NamedCode[];\r\n}\r\n\r\ninterface State {\r\n data: EditorState;\r\n}\r\n\r\ninterface Data {\r\n name: PersonName;\r\n username: string;\r\n email: string;\r\n secondEmail: string | null;\r\n phone: PhoneNumber;\r\n sendNewsletter: boolean;\r\n}\r\n\r\nexport class EditUserAccountDialog extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: NewEditorState(props.initialData),\r\n };\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const data = this.state.data.currentState;\r\n const errors = new ErrorList(state.data.errors);\r\n\r\n const namePrefixes = toSelectFieldOptions(props.namePrefixes);\r\n const nameSuffixes = toSelectFieldOptions(props.nameSuffixes);\r\n const name = { ...data.name, isUnknown: false };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {data.secondEmail !== null && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Cancel\r\n \r\n \r\n Save Account\r\n \r\n \r\n
\r\n You can also change your password.\r\n
\r\n
\r\n );\r\n }\r\n\r\n private updateData = (producer: (data: Data) => Data) => {\r\n return this.setState((state) => {\r\n return { data: UpdateEditorState(state.data, { next: producer(state.data.currentState) }) };\r\n });\r\n };\r\n\r\n private onNameChanged = (name: Name) =>\r\n this.updateData((data) => {\r\n return { ...data, name: name };\r\n });\r\n private onUsernameChanged = (value: string) =>\r\n this.updateData((data) => {\r\n return { ...data, username: value };\r\n });\r\n private onEmailChanged = (value: string) =>\r\n this.updateData((data) => {\r\n return { ...data, email: value };\r\n });\r\n private onSecondEmailChanged = (value: string) =>\r\n this.updateData((data) => {\r\n return { ...data, secondEmail: value };\r\n });\r\n private onPhoneChanged = (phone: PhoneNumber) =>\r\n this.updateData((data) => {\r\n return { ...data, phone: phone };\r\n });\r\n private onNewsletterToggled = () =>\r\n this.updateData((data) => {\r\n return { ...data, sendNewsletter: !data.sendNewsletter };\r\n });\r\n\r\n private onSaveAccountClicked = () => {\r\n const data = this.state.data.currentState;\r\n const request: EditUserAccountInfoRequest = {\r\n name: data.name,\r\n username: data.username,\r\n email: data.email,\r\n secondEmail: data.secondEmail,\r\n phone: data.phone,\r\n sendNewsletter: data.sendNewsletter,\r\n };\r\n this.props.accountsApiClient.editUserAccountInfo(request).then((response) => {\r\n if (!response.success) {\r\n this.setState((state) => {\r\n return { data: UpdateEditorState(state.data, { errors: response.errors }) };\r\n });\r\n } else {\r\n this.props.context.flashMessage(\"User Account updated\");\r\n this.props.closeDialog();\r\n }\r\n });\r\n };\r\n\r\n private onChangePasswordClicked = () => {\r\n this.props.accountsApiClient.getChangePasswordInfo().then((response) => {\r\n this.props.context.openDialog((closeDialog) => {\r\n return (\r\n \r\n );\r\n });\r\n });\r\n };\r\n}\r\n","import * as React from \"react\";\r\n\r\ninterface Props {\r\n helpText: HelpTextHtml;\r\n}\r\n\r\ninterface HelpTextHtml {\r\n __html: string;\r\n}\r\n\r\nexport function HelpText(props: Props) {\r\n return
;\r\n}\r\n","import * as React from \"react\";\r\nimport { HiddenHeader, StackedTextHeader, IconCell, StackedTextCell, StackedLinkCell } from \"spry-react/Grid/gridCells\";\r\nimport { RowDefinition, Grid } from \"spry-react/Grid/grid\";\r\nimport { GridFooter } from \"spry-react/Grid/gridFooter\";\r\nimport { H1SectionHeader } from \"spry-react/Section/section\";\r\nimport { HelpFileDTO } from \"shared/Components/Api/GeneratedDTOs/DTOs/PortalHelpPage/HelpFileDTO\";\r\n\r\ninterface Props {\r\n files: HelpFileDTO[];\r\n}\r\n\r\nexport function HelpFiles(props: Props) {\r\n const headers = [\r\n ,\r\n ,\r\n ,\r\n ];\r\n\r\n const rows: RowDefinition[] = props.files\r\n .sort((first, second) => first.order - second.order)\r\n .map((file) => {\r\n return {\r\n keyValue: file.id,\r\n cells: [\r\n ,\r\n ,\r\n ,\r\n ],\r\n };\r\n });\r\n\r\n return (\r\n
\r\n

Helpful Files

\r\n No files found.} />\r\n \r\n
\r\n );\r\n}\r\n","import * as React from \"react\";\r\nimport { Dialog } from \"spry-react/Dialog/dialog\";\r\nimport { ActionButtons, ActionButton } from \"shared/Components/Shared/actionButtons\";\r\nimport { TabList, TabDefinition } from \"spry-react/Tabs/tabList\";\r\nimport { HelpText } from \"./helpText\";\r\nimport { HelpFiles } from \"./helpFile\";\r\nimport { IPortalAppContext } from \"Components/Shared/appContext\";\r\nimport { HelpDialogResponse } from \"Components/Api/GeneratedDTOs/Api/Commands/PortalHelpPage/HelpDialogResponse\";\r\nimport { VerticalSelectList, VerticalSelectListItem } from \"spry-react/VerticalSelectList/verticalSelectList\";\r\nimport { HelpDialogApiClient } from \"./helpDialogApiClient\";\r\nimport { SimpleCode } from \"shared/Components/Api/GeneratedDTOs/SimpleCode\";\r\nimport { HelpFileDTO } from \"shared/Components/Api/GeneratedDTOs/DTOs/PortalHelpPage/HelpFileDTO\";\r\n\r\ninterface Props {\r\n helpInfo: HelpDialogResponse;\r\n closeDialog: () => void;\r\n context: IPortalAppContext;\r\n apiClient: HelpDialogApiClient;\r\n}\r\n\r\ninterface State {\r\n selectedPortalHelpPage: SimpleCode;\r\n helpText: string;\r\n helpfulFiles: HelpFileDTO[];\r\n selectedTabKey: string;\r\n}\r\n\r\nexport function PortalHelpDialog(props: Props) {\r\n const [helpTextKey, helpFilesKey] = [\"HelpText\", \"HelpFiles\"];\r\n const [selectedTabKey, setTab] = React.useState(helpTextKey);\r\n const [state, setState] = React.useState({\r\n selectedPortalHelpPage: props.helpInfo.selectedHelpPage,\r\n helpText: props.helpInfo.portalHelpPageData.helpText,\r\n helpfulFiles: props.helpInfo.portalHelpPageData.helpFiles,\r\n selectedTabKey: helpTextKey,\r\n } as State);\r\n\r\n const tabs: TabDefinition[] = [\r\n { key: helpTextKey, text: \"Help\" },\r\n { key: helpFilesKey, text: \"Helpful Files\" },\r\n ];\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n {props.helpInfo.helpPages.map((helpPage) => (\r\n \r\n
handlePortalHelpPageClicked(helpPage)} style={{ display: \"flex\", justifyContent: \"space-between\" }}>\r\n

{helpPage.name}

\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
{selectedTabKey === helpTextKey ? : }
\r\n
\r\n \r\n \r\n Close\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n async function handlePortalHelpPageClicked(helpPage: SimpleCode) {\r\n const response = await props.apiClient.loadPortalHelpPage({ portalHelpPageId: helpPage.id });\r\n\r\n setState({\r\n ...state,\r\n helpText: response.portalHelpPageData.helpText,\r\n helpfulFiles: response.portalHelpPageData.helpFiles,\r\n selectedPortalHelpPage: helpPage,\r\n });\r\n }\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport \"./fullPageLoadingBanner.less\";\r\n\r\nexport function FullPageLoadingBanner(props: {}) {\r\n return
;\r\n}\r\n","import { CommandFetcher } from \"shared/Components/Utils/commandFetcher\";\r\nimport { HelpDialogResponse } from \"Components/Api/GeneratedDTOs/Api/Commands/PortalHelpPage/HelpDialogResponse\";\r\nimport { HelpDialogPortalHelpPageLoadRequest } from \"Components/Api/GeneratedDTOs/Api/Commands/PortalHelpPage/HelpDialogPortalHelpPageLoadRequest\";\r\nimport { HelpDialogPortalHelpPageLoadResponse } from \"Components/Api/GeneratedDTOs/Api/Commands/PortalHelpPage/HelpDialogPortalHelpPageLoadResponse\";\r\n\r\nexport class HelpDialogApiClient {\r\n private readonly commandFetcher: CommandFetcher;\r\n\r\n constructor(commandFetcher: CommandFetcher) {\r\n this.commandFetcher = commandFetcher;\r\n }\r\n\r\n public loadHelpDialog(): Promise {\r\n return this.commandFetcher.commandLoad(\"HelpDialogLoad\");\r\n }\r\n\r\n public loadPortalHelpPage(request: HelpDialogPortalHelpPageLoadRequest): Promise {\r\n return this.commandFetcher.commandLoad(\"HelpDialogPortalHelpPageLoad\", request);\r\n }\r\n}\r\n","import \"./portalFullHeader.less\";\r\n\r\nimport * as React from \"react\";\r\nimport { SiteHeader } from \"spry-react/Page/siteHeader\";\r\nimport { ChangePasswordDialog } from \"Components/Accounts/changePasswordDialog\";\r\nimport { ContextMenu, ContextMenuContainer, ContextMenuItem, ContextMenuOpenerRef } from \"spry-react/ContextMenu/contextMenu\";\r\nimport { EditUserAccountDialog } from \"Components/Accounts/editUserAccountDialog\";\r\nimport { IPortalAppContext } from \"./appContext\";\r\nimport { Link } from \"spry-react/Link/link\";\r\nimport { PortalHelpDialog } from \"Components/HelpDialog/helpDialog\";\r\nimport { FullPageLoadingBanner } from \"shared/Components/shared/fullPageLoadingBanner\";\r\nimport { HelpDialogApiClient } from \"Components/HelpDialog/helpDialogApiClient\";\r\nimport { UseContextMenuOpenerRefClassWrapper } from \"spry-react/ContextMenu/useContextMenuOpenerRefClassWrapper\";\r\n\r\ninterface Props {\r\n homeUrl: string;\r\n homeLinkText: string;\r\n logoImageUrl: string;\r\n myOrganizationsUrl: string;\r\n signOutUrl: string;\r\n bordered?: boolean;\r\n context: IPortalAppContext;\r\n children?: React.ReactNode;\r\n logoColor?: string;\r\n logoLabel?: string;\r\n}\r\n\r\ninterface State {\r\n isUserMenuOpen: boolean;\r\n}\r\n\r\nexport class PortalFullHeader extends React.Component {\r\n private userMenuOpener: ContextMenuOpenerRef;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n isUserMenuOpen: false,\r\n };\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n\r\n return (\r\n
\r\n \r\n {(mo) => {\r\n this.userMenuOpener = mo;\r\n return {this.renderUserContextMenu()};\r\n }}\r\n \r\n \r\n
\r\n \r\n
{this.renderLoggedInButtons()}
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private renderLoggedInButtons = () => {\r\n const props = this.props;\r\n const user = props.context.loggedInUser;\r\n if (!user) return null;\r\n\r\n const handleHelpClicked = async () => {\r\n const apiClient = new HelpDialogApiClient(props.context.commandFetcher);\r\n const response = await apiClient.loadHelpDialog();\r\n props.context.openDialog((close) => {\r\n return ;\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n Help\r\n \r\n \r\n My Organizations\r\n \r\n this.userMenuOpener?.current?.toggleOpen({ relativeElement: e.currentTarget })}\r\n >\r\n {user.informalDisplayName}\r\n \r\n {user.timeTravelDate && {\"SIMULATING \" + user.timeTravelDate}}\r\n
\r\n );\r\n };\r\n\r\n private renderUserContextMenu = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n private onChangePasswordClicked = () => {\r\n this.props.context.accountsApiClient.getChangePasswordInfo().then((response) => {\r\n this.props.context.openDialog((closeDialog) => {\r\n return (\r\n \r\n );\r\n });\r\n });\r\n };\r\n\r\n private onEditUserAccountClicked = () => {\r\n this.props.context.accountsApiClient.getEditUserAccountInfo().then((response) => {\r\n this.props.context.openDialog((closeDialog) => {\r\n return (\r\n \r\n );\r\n });\r\n });\r\n };\r\n}\r\n","import * as React from \"react\";\r\nimport { FullPage } from \"spry-react/Page/fullPage\";\r\nimport { Page } from \"spry-react/Page/page\";\r\nimport { IPortalAppContext } from \"./appContext\";\r\nimport { PortalFullHeader } from \"./portalFullHeader\";\r\n\r\nexport interface Props {\r\n title: string;\r\n headerContent: React.ReactNode;\r\n children?: React.ReactNode;\r\n borderedHeader?: boolean;\r\n context: IPortalAppContext;\r\n}\r\n\r\nexport class PortalFullPage extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const header = renderHeader(props);\r\n return ;\r\n }\r\n}\r\n\r\nexport class PortalPage extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const header = renderHeader(props);\r\n return ;\r\n }\r\n}\r\n\r\nfunction renderHeader(props: Readonly<{ children?: React.ReactNode }> & Readonly) {\r\n return (\r\n \r\n {props.headerContent}\r\n \r\n );\r\n}\r\n"],"names":["ActionButtons","renderActionButtons","className","this","props","children","render","renderLeft","style","display","alignItems","flexGrow","getClasses","transparent","white","primary","subtext","hasSubtext","getBaseButtonProps","disabled","title","ActionButton","onClick","SubmitForm","handleFormKeyPress","event","key","preventDefault","stopPropagation","onSubmit","handleOnSubmit","onKeyPress","SubmitButton","type","New","originalState","warnings","errors","currentState","Update","prev","params","next","PureG","PureU","PureUSizeClass","size","Field","inline","noPadding","inlineClass","noPaddingClass","classes","styles","paddingBottom","PureGU1Field","buildCommandRequest","commandName","exeOrLoad","request","urls","options","serialOperationOptions","feedbackType","FullPageSpinner","LoadingBanner","method","url","apiExecuteUrl","apiLoadUrl","body","name","buildUploadFilesCommandRequest","token","filesForm","apiUploadFilesUrl","CommandFetcher","constructor","fetcher","apiUrls","buildUrl","baseurl","commandname","commandExecute","command","data","concurrencyContext","postJson","commandLoad","registerCommandApiUrls","window","commandApiUrls","getCommandApiUrls","AccountsApiClient","accountsApiClientUrls","commandFetcher","signInUrl","createNewUserUrl","confirmCreateCodeUrl","resendCreateCodeUrl","accountSetupUrl","orgMembershipRequestUrl","resendMembershipRequestUrl","cancelMembershipRequestUrl","getChangePasswordInfoUrl","changePasswordUrl","getPersonUrl","forgotPasswordEmailUrl","confirmPasswordResetCodeUrl","resendPasswordResetCodeUrl","resetPasswordUrl","forgotUsernameEmailUrl","getEditUserAccountInfoUrl","editUserAccountInfoUrl","getAccessRequestsUrl","signIn","createNewUser","confirmCreateCode","resendCreateCode","email","accountSetup","orgMembershipRequest","resendMembershipRequest","cancelMembershipRequest","createOrganization","getChangePasswordInfo","getJson","undefined","changePassword","getPerson","organizationId","personId","getJsonWithData","forgotPasswordEmail","confirmPasswordResetCode","resendPasswordResetCode","resetPassword","forgotUsernameEmail","getEditUserAccountInfo","editUserAccountInfo","getAccessRequests","ErrorLoggerListener","errLogger","baseConsoleError","initialized","consoleError","message","apply","console","arguments","substitutedMessage","length","otherArgs","Array","prototype","slice","call","count","replace","log","pageUrl","location","href","loggedFrom","stack","componentStack","scriptUrl","userAgent","line","logErrorEvent","e","error","filename","navigator","lineno","start","errorLogger","addEventListener","stop","removeEventListener","ErrorBoundary","super","state","errorInfo","componentDidCatch","setState","ErrorLogger","errorLoggingUrl","getCsrfInfo","catch","Render401ErrorDialog","close","Error401Dialog","refresh","reload","singleTabText","width","fontSize","PortalApp","csrfInfo","layout","componentDidMount","componentWillUnmount","renderChildren","openDialog","registerBeforeUnload","flashMessage","confirm","startSerialOperation","setWindowLocationHref","fetchers","rpcCommandApiUrls","dialogErrorHandlers","handle401Error","handle403Error","handle404Error","handle500Error","handleNetworkError","errorFetcher","serialFetcher","standardApiClient","throwErrorHandlers","Error","serialOperationApiClient","loaderApiClient","csrfOnlyApiClient","configureFetchers","jsonCommandApiUrls","accountsApiClient","context","homeUrl","homeLinkText","myOrganizationsUrl","signOutUrl","logoImageUrl","loggedInUser","logoColor","logoLabel","ChangePasswordDialog","onCurrentPasswordChanged","currentPassword","onNewPasswordChanged","newPassword","onConfirmNewPasswordChanged","confirmNewPassword","onShowPasswordChanged","showPassword","onChangePasswordClicked","then","response","success","closeDialog","flashMessageCallback","tabKey","tabs","text","maxWidth","passwordPolicyRules","map","r","i","selectedTabKey","onTabSelect","getList","label","required","autoFocus","value","onChange","errorMessage","getErrorMessage","margin","onToggle","EditUserAccountDialog","updateData","producer","onNameChanged","onUsernameChanged","username","onEmailChanged","onSecondEmailChanged","secondEmail","onPhoneChanged","phone","onNewsletterToggled","sendNewsletter","onSaveAccountClicked","initialData","namePrefixes","nameSuffixes","isUnknown","onNameChange","prefixes","suffixes","errorMessages","getErrorMessages","isAreaCodeRequired","onPhoneChange","HelpText","dangerouslySetInnerHTML","helpText","HelpFiles","headers","basis","growFactor","label1","label2","rows","files","sort","first","second","order","file","keyValue","id","cells","iconClass","extensionClassName","extensionTitle","centerContent","textValueTop","textValueBottom","extensionTypeName","linkPropsTop","downloadLink","value1","description","noDataMessage","resultsMessage","PortalHelpDialog","helpTextKey","helpFilesKey","setTab","selectedPortalHelpPage","helpInfo","selectedHelpPage","portalHelpPageData","helpfulFiles","helpFiles","flexDirection","flex","paddingRight","helpPages","helpPage","selected","async","apiClient","loadPortalHelpPage","portalHelpPageId","handlePortalHelpPageClicked","justifyContent","paddingLeft","__html","FullPageLoadingBanner","position","height","zIndex","HelpDialogApiClient","loadHelpDialog","PortalFullHeader","renderLoggedInButtons","user","informalDisplayName","userMenuOpener","current","toggleOpen","relativeElement","currentTarget","timeTravelDate","renderUserContextMenu","icon","onEditUserAccountClicked","isUserMenuOpen","mo","contextMenuOpenerRef","bordered","PortalFullPage","header","renderHeader","PortalPage","borderedHeader","headerContent"],"sourceRoot":""}