{"version":3,"sources":["images/signin.svg","images/calendar.svg","images/genericError.svg","translations lazy /^/.//.*//strings/.json$/ groupOptions: {} namespace object","translations lazy /^/.//.*//en/-US//strings/.json$/ groupOptions: {} namespace object","SigninPage.tsx","auth/actions.ts","auth/msalApp.ts","MeetingPage.tsx","meeting-creator/validators.ts","meeting-creator/actions.ts","meeting-creator/models.ts","meeting-creator/reducers.ts","components/header.tsx","CopyMeetingPage.tsx","CreateLandingPage.tsx","ErrorPage.tsx","App.tsx","RootReducer.ts","auth/middleware.ts","meeting-creator/middleware.ts","meeting-creator/service.ts","index.tsx","localization/translate.ts"],"names":["module","exports","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","boldStyle","root","fontWeight","FontWeights","semibold","connect","state","dispatch","onSignIn","type","props","className","xmlns","width","height","d","fill","Stack","horizontalAlign","verticalAlign","verticalFill","tokens","childrenGap","src","signInImage","alt","translate","Text","variant","styles","PrimaryButton","onClick","ariaLabel","msalApp","UserAgentApplication","auth","clientId","authority","validateAuthority","postLogoutRedirectUri","navigateToLoginRequestUrl","cache","cacheLocation","storeAuthStateInCookie","ua","window","navigator","userAgent","msie","indexOf","msie11","isIE","system","navigateFrameWait","formatDuration","duration","str","Math","floor","asDays","days","hours","minutes","meetingIconClass","mergeStyles","fontSize","margin","position","top","backgroundColor","padding","color","borderRadius","inputIconClass","DateTimePicker","timeSuggestions","_","range","projectedEndTime","moment","dateTime","startOf","add","isDisabled","minDate","isAfter","timeTag","format","projectedDuration","diff","projectedDurationString","trim","key","text","includeDuration","length","disabled","horizontal","DatePicker","borderless","firstDayOfWeek","localeData","strings","months","shortMonths","monthsShort","weekdays","shortDays","weekdaysMin","goToToday","prevMonthAriaLabel","nextMonthAriaLabel","prevYearAriaLabel","nextYearAriaLabel","closeButtonAriaLabel","getDatePickerStrings","value","toDate","formatDate","dateToFormat","parseDateFromString","onSelectDate","date","currentDateTime","offsetFromStartOfDay","newDateTime","onTimeUpdated","ComboBox","maxHeight","useComboBoxAsMenuWidth","scrollSelectedToTop","allowFreeform","autoComplete","options","onChange","event","option","index","currentDateTimeStartOfDay","enteredTime","isValid","iconName","FontIcon","meeting","inputMeeting","creationInProgress","validationFailures","invalidTitle","subject","undefined","setMeeting","createMeeting","cancel","goBack","useState","validationEnabled","setValidationEnabled","onCreate","Spinner","size","SpinnerSize","large","StackItem","grow","align","DefaultButton","TextField","placeholder","underlined","evt","newValue","nextMeeting","cloneDeep","errorMessage","startDateTime","isSameOrAfter","endDateTime","existingDelta","newEndDateTime","createDefaultMeetingInput","meetingReducer","action","createdMeeting","LOCATION_CHANGE","payload","location","pathname","bold","Header","onSignOut","viewBox","cx","cy","r","opacity","gradientUnits","x1","y1","x2","y2","gradientTransform","offset","style","stopColor","IconButton","iconProps","title","onCopyToClipboard","document","getElementById","innerHTML","listener","clipboardData","setData","joinWebUrl","preventDefault","addEventListener","execCommand","removeEventListener","Item","block","dangerouslySetInnerHTML","__html","preview","checkForSignedInUser","onNewMeeting","push","React","useEffect","calendar","retryCreateMeeting","replace","errorImage","locale","getUserLocale","initializeIcons","history","hist","createHashHistory","store","createStore","combineReducers","router","connectRouter","compose","applyMiddleware","routerMiddleware","next","getAccount","loginPopup","scopes","response","console","log","idToken","catch","error","logout","service","acquireTokenSilent","token","acquireTokenPopup","requestBody","toISOString","axios","post","headers","Authorization","accessToken","decodeURIComponent","data","joinInformation","content","split","creationDateTime","joinUrl","conferenceId","audioConferencing","tollNumber","tollFreeNumber","dialinUrl","videoTeleconferenceId","createMeetingMiddleware","App","exact","path","component","SigninPage","MeetingPage","CopyMeetingPage","ErrorPage","CreateLandingPage","userLocale","hash","some","param","isMsalRedirect","getMessages","messages","ReactDOM","render","supportedLocalesAndFallbackMap","languages","toLowerCase","language","getTranslationLocale","hasOwnProperty","languageCode","substring","loadTranslations","sku","a","translationLocale","stringsModule","default","intl","createIntlCache","process","REACT_APP_SKU","createIntl","values","formatMessage"],"mappings":"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","file":"static/js/main.729ed64b.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/signin.17dc7748.svg\";","module.exports = __webpack_public_path__ + \"static/media/calendar.e1f946d5.svg\";","module.exports = __webpack_public_path__ + \"static/media/genericError.b4d08b25.svg\";","var map = {\n\t\"./edu/ar-SA/strings.json\": [\n\t\t174,\n\t\t5\n\t],\n\t\"./edu/az-Latn-AZ/strings.json\": [\n\t\t175,\n\t\t6\n\t],\n\t\"./edu/bg-BG/strings.json\": [\n\t\t176,\n\t\t7\n\t],\n\t\"./edu/cs-CZ/strings.json\": [\n\t\t177,\n\t\t8\n\t],\n\t\"./edu/cy-GB/strings.json\": [\n\t\t178,\n\t\t9\n\t],\n\t\"./edu/da-DK/strings.json\": [\n\t\t179,\n\t\t10\n\t],\n\t\"./edu/de-DE/strings.json\": [\n\t\t180,\n\t\t11\n\t],\n\t\"./edu/en-GB/strings.json\": [\n\t\t181,\n\t\t12\n\t],\n\t\"./edu/en-US/strings.json\": [\n\t\t125,\n\t\t0\n\t],\n\t\"./edu/es-ES/strings.json\": [\n\t\t182,\n\t\t13\n\t],\n\t\"./edu/es-MX/strings.json\": [\n\t\t183,\n\t\t14\n\t],\n\t\"./edu/eu-ES/strings.json\": [\n\t\t184,\n\t\t15\n\t],\n\t\"./edu/fi-FI/strings.json\": [\n\t\t185,\n\t\t16\n\t],\n\t\"./edu/fr-CA/strings.json\": [\n\t\t186,\n\t\t17\n\t],\n\t\"./edu/fr-FR/strings.json\": [\n\t\t187,\n\t\t18\n\t],\n\t\"./edu/gl-ES/strings.json\": [\n\t\t188,\n\t\t19\n\t],\n\t\"./edu/he-IL/strings.json\": [\n\t\t189,\n\t\t20\n\t],\n\t\"./edu/is-IS/strings.json\": [\n\t\t190,\n\t\t21\n\t],\n\t\"./edu/it-IT/strings.json\": [\n\t\t191,\n\t\t22\n\t],\n\t\"./edu/ja-JP/strings.json\": [\n\t\t192,\n\t\t23\n\t],\n\t\"./edu/kk-KZ/strings.json\": [\n\t\t193,\n\t\t24\n\t],\n\t\"./edu/ko-KR/strings.json\": [\n\t\t194,\n\t\t25\n\t],\n\t\"./edu/nb-NO/strings.json\": [\n\t\t195,\n\t\t26\n\t],\n\t\"./edu/nl-NL/strings.json\": [\n\t\t196,\n\t\t27\n\t],\n\t\"./edu/nn-NO/strings.json\": [\n\t\t197,\n\t\t28\n\t],\n\t\"./edu/pl-PL/strings.json\": [\n\t\t198,\n\t\t29\n\t],\n\t\"./edu/pt-BR/strings.json\": [\n\t\t199,\n\t\t30\n\t],\n\t\"./edu/pt-PT/strings.json\": [\n\t\t200,\n\t\t31\n\t],\n\t\"./edu/ru-RU/strings.json\": [\n\t\t201,\n\t\t32\n\t],\n\t\"./edu/sk-SK/strings.json\": [\n\t\t202,\n\t\t33\n\t],\n\t\"./edu/sq-AL/strings.json\": [\n\t\t203,\n\t\t34\n\t],\n\t\"./edu/sr-Latn-RS/strings.json\": [\n\t\t204,\n\t\t35\n\t],\n\t\"./edu/sv-SE/strings.json\": [\n\t\t205,\n\t\t36\n\t],\n\t\"./edu/th-TH/strings.json\": [\n\t\t206,\n\t\t37\n\t],\n\t\"./edu/tr-TR/strings.json\": [\n\t\t207,\n\t\t38\n\t],\n\t\"./edu/vi-VN/strings.json\": [\n\t\t208,\n\t\t39\n\t],\n\t\"./edu/zh-CN/strings.json\": [\n\t\t209,\n\t\t40\n\t],\n\t\"./edu/zh-TW/strings.json\": [\n\t\t210,\n\t\t41\n\t],\n\t\"./health/ar-SA/strings.json\": [\n\t\t211,\n\t\t42\n\t],\n\t\"./health/az-Latn-AZ/strings.json\": [\n\t\t212,\n\t\t43\n\t],\n\t\"./health/bg-BG/strings.json\": [\n\t\t213,\n\t\t44\n\t],\n\t\"./health/cs-CZ/strings.json\": [\n\t\t214,\n\t\t45\n\t],\n\t\"./health/cy-GB/strings.json\": [\n\t\t215,\n\t\t46\n\t],\n\t\"./health/da-DK/strings.json\": [\n\t\t216,\n\t\t47\n\t],\n\t\"./health/de-DE/strings.json\": [\n\t\t217,\n\t\t48\n\t],\n\t\"./health/en-GB/strings.json\": [\n\t\t218,\n\t\t49\n\t],\n\t\"./health/en-US/strings.json\": [\n\t\t126,\n\t\t1\n\t],\n\t\"./health/es-ES/strings.json\": [\n\t\t219,\n\t\t50\n\t],\n\t\"./health/es-MX/strings.json\": [\n\t\t220,\n\t\t51\n\t],\n\t\"./health/eu-ES/strings.json\": [\n\t\t221,\n\t\t52\n\t],\n\t\"./health/fi-FI/strings.json\": [\n\t\t222,\n\t\t53\n\t],\n\t\"./health/fr-CA/strings.json\": [\n\t\t223,\n\t\t54\n\t],\n\t\"./health/fr-FR/strings.json\": [\n\t\t224,\n\t\t55\n\t],\n\t\"./health/gl-ES/strings.json\": [\n\t\t225,\n\t\t56\n\t],\n\t\"./health/he-IL/strings.json\": [\n\t\t226,\n\t\t57\n\t],\n\t\"./health/is-IS/strings.json\": [\n\t\t227,\n\t\t58\n\t],\n\t\"./health/it-IT/strings.json\": [\n\t\t228,\n\t\t59\n\t],\n\t\"./health/ja-JP/strings.json\": [\n\t\t229,\n\t\t60\n\t],\n\t\"./health/kk-KZ/strings.json\": [\n\t\t230,\n\t\t61\n\t],\n\t\"./health/ko-KR/strings.json\": [\n\t\t231,\n\t\t62\n\t],\n\t\"./health/nb-NO/strings.json\": [\n\t\t232,\n\t\t63\n\t],\n\t\"./health/nl-NL/strings.json\": [\n\t\t233,\n\t\t64\n\t],\n\t\"./health/nn-NO/strings.json\": [\n\t\t234,\n\t\t65\n\t],\n\t\"./health/pl-PL/strings.json\": [\n\t\t235,\n\t\t66\n\t],\n\t\"./health/pt-BR/strings.json\": [\n\t\t236,\n\t\t67\n\t],\n\t\"./health/pt-PT/strings.json\": [\n\t\t237,\n\t\t68\n\t],\n\t\"./health/ru-RU/strings.json\": [\n\t\t238,\n\t\t69\n\t],\n\t\"./health/sk-SK/strings.json\": [\n\t\t239,\n\t\t70\n\t],\n\t\"./health/sq-AL/strings.json\": [\n\t\t240,\n\t\t71\n\t],\n\t\"./health/sr-Latn-RS/strings.json\": [\n\t\t241,\n\t\t72\n\t],\n\t\"./health/sv-SE/strings.json\": [\n\t\t242,\n\t\t73\n\t],\n\t\"./health/th-TH/strings.json\": [\n\t\t243,\n\t\t74\n\t],\n\t\"./health/tr-TR/strings.json\": [\n\t\t244,\n\t\t75\n\t],\n\t\"./health/vi-VN/strings.json\": [\n\t\t245,\n\t\t76\n\t],\n\t\"./health/zh-CN/strings.json\": [\n\t\t246,\n\t\t77\n\t],\n\t\"./health/zh-TW/strings.json\": [\n\t\t247,\n\t\t78\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 147;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./edu/en-US/strings.json\": [\n\t\t125,\n\t\t0\n\t],\n\t\"./health/en-US/strings.json\": [\n\t\t126,\n\t\t1\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 148;\nmodule.exports = webpackAsyncContext;","import React from 'react';\nimport {\n Stack,\n Text,\n FontWeights,\n PrimaryButton\n} from 'office-ui-fabric-react';\nimport { AppState } from './RootReducer';\nimport { Dispatch } from 'redux';\nimport { OPEN_SIGNIN_DIALOG_COMMAND } from './auth/actions';\nimport { connect } from 'react-redux';\nimport signInImage from './images/signin.svg';\nimport { FormattedMessage } from 'react-intl';\nimport { translate } from './localization/translate';\n\nimport './index.css';\n\nconst boldStyle = { root: { fontWeight: FontWeights.semibold } };\n\ninterface SigninPageProps {\n onSignIn: () => void;\n}\n\nconst mapStateToProps = (state: AppState) => ({} as Partial);\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n ({\n onSignIn: () =>\n dispatch({\n type: OPEN_SIGNIN_DIALOG_COMMAND\n })\n } as Partial);\n\nfunction SigninPageComponent(props: Partial) {\n const onSignIn = props.onSignIn ?? (() => {});\n\n return (\n <>\n
\n \n \n \n \n \n \n \n
\n\n \n \n \n \n \n\n \n \n \n \n \n \n\n onSignIn()}\n ariaLabel={translate('signin.button.ariaLabel')}\n >\n \n \n \n \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SigninPageComponent);\n","import { IdToken } from 'msal/lib-commonjs/IdToken';\n\nexport const CHECK_FOR_SIGNEDIN_USER_COMMAND = 'CheckForSignedInUserCommand';\nexport interface CheckForSignedInUserCommand {\n type: typeof CHECK_FOR_SIGNEDIN_USER_COMMAND;\n}\n\nexport const OPEN_SIGNIN_DIALOG_COMMAND = 'OpenSigninDialogCommand';\nexport interface OpenSigninDialogCommand {\n type: typeof OPEN_SIGNIN_DIALOG_COMMAND;\n}\n\nexport const SIGNIN_COMPLETE_EVENT = 'SigninCompleteEvent';\nexport interface SigninCompleteEvent {\n type: typeof SIGNIN_COMPLETE_EVENT;\n idToken: IdToken;\n}\n\nexport const SIGNOUT_COMMAND = 'SignoutCommand';\nexport interface SignoutCommand {\n type: typeof SIGNOUT_COMMAND;\n}\n\nexport const SIGNOUT_COMPLETE_EVENT = 'SignoutCompleteEvent';\nexport interface SignoutCompleteEvent {\n type: typeof SIGNOUT_COMPLETE_EVENT;\n}\n\nexport type AuthAction =\n | CheckForSignedInUserCommand\n | OpenSigninDialogCommand\n | SigninCompleteEvent\n | SignoutCommand\n | SignoutCompleteEvent;\n","//shamelessly stolen from: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/samples/react-sample-app/src/auth-utils.js\nimport { UserAgentApplication } from 'msal';\n\nfunction isIE() {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ') > -1;\n const msie11 = ua.indexOf('Trident/') > -1;\n\n // If you as a developer are testing using Edge InPrivate mode, please add \"isEdge\" to the if check\n // const isEdge = ua.indexOf(\"Edge/\") > -1;\n return msie || msie11;\n}\n\nexport const msalApp = new UserAgentApplication({\n auth: {\n clientId: '927d91f2-e094-434e-a295-481755001644', // TODO: move this into a cfg value from composition root\n authority: 'https://login.microsoftonline.com/common',\n validateAuthority: true,\n postLogoutRedirectUri: 'https://msteam.donga.edu.vn',\n navigateToLoginRequestUrl: false\n },\n cache: {\n cacheLocation: 'sessionStorage',\n storeAuthStateInCookie: isIE()\n },\n system: {\n navigateFrameWait: 0\n }\n});\n","import React, { useState } from 'react';\nimport {\n Stack,\n Text,\n FontWeights,\n PrimaryButton,\n DefaultButton,\n StackItem,\n TextField,\n DatePicker,\n IDatePickerStrings,\n DayOfWeek,\n ComboBox,\n IComboBoxOption,\n IComboBox,\n Spinner,\n SpinnerSize\n} from 'office-ui-fabric-react';\nimport { FontIcon } from 'office-ui-fabric-react/lib/Icon';\nimport { AppState } from './RootReducer';\nimport { Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { mergeStyles } from 'office-ui-fabric-react/lib/Styling';\nimport _ from 'lodash';\nimport moment, { Moment, Duration } from 'moment';\nimport { OnlineMeetingInput } from './meeting-creator/models';\nimport {\n SET_MEETING_COMMAND,\n CREATE_MEETING_COMMAND,\n CreateMeetingCommand\n} from './meeting-creator/actions';\nimport { goBack } from 'connected-react-router';\nimport { hasValidSubject } from './meeting-creator/validators';\nimport { FormattedMessage } from 'react-intl';\nimport { translate } from './localization/translate';\n\nconst boldStyle = { root: { fontWeight: FontWeights.semibold } };\n\nfunction formatDuration(duration: Duration) {\n let str = '';\n if (Math.floor(duration.asDays()) > 0) {\n str += translate('meetingPage.duration.days', { days: Math.floor(duration.asDays()) });\n }\n if (duration.hours() > 0) {\n str += translate('meetingPage.duration.hours', { hours: duration.hours() });\n }\n if (duration.minutes() > 0) {\n str += translate('meetingPage.duration.minutes', { minutes: duration.minutes() });\n }\n return str;\n}\n\nconst datePickerFormat = 'll';\nconst timePickerFormat = 'LT';\n\nconst meetingIconClass = mergeStyles({\n fontSize: 16,\n height: 16,\n width: 16,\n margin: '0 7px',\n position: 'relative',\n top: 1,\n backgroundColor: '#6264a7',\n padding: '10px',\n color: '#fff',\n borderRadius: '3px'\n});\n\nconst inputIconClass = mergeStyles({\n position: 'relative',\n top: 7\n});\n\n//\n// Date and time picker component\n//\n\ninterface DateTimePickerProps {\n dateTime?: Moment;\n minDate?: Moment;\n iconName?: string;\n onTimeUpdated: (date?: Moment) => void;\n includeDuration: boolean;\n}\n\nfunction DateTimePicker(props: DateTimePickerProps) {\n function getDatePickerStrings(): IDatePickerStrings {\n const localeData = moment.localeData();\n return {\n months: localeData.months(),\n shortMonths: localeData.monthsShort(),\n days: localeData.weekdays(),\n shortDays: localeData.weekdaysMin(),\n goToToday: translate('datePicker.goToToday'),\n prevMonthAriaLabel: translate('datePicker.previousMonth.ariaLabel'),\n nextMonthAriaLabel: translate('datePicker.nextMonth.ariaLabel'),\n prevYearAriaLabel: translate('datePicker.previousYear.ariaLabel'),\n nextYearAriaLabel: translate('datePicker.nextYear.ariaLabel'),\n closeButtonAriaLabel: translate('datePicker.close.ariaLabel'),\n };\n }\n\n function onDayPicked(date: Date | null | undefined) {\n const currentDateTime = moment(props.dateTime);\n\n const offsetFromStartOfDay = currentDateTime.diff(\n moment(currentDateTime).startOf('day')\n );\n const newDateTime = moment(date ?? currentDateTime)\n .startOf('day')\n .add(offsetFromStartOfDay);\n\n props.onTimeUpdated(newDateTime);\n }\n\n function onTimePicked(\n event: React.FormEvent,\n option?: IComboBoxOption,\n index?: number,\n value?: string\n ) {\n const currentDateTimeStartOfDay = moment(props.dateTime).startOf('day');\n\n let newDateTime: moment.Moment;\n if (option) {\n const offsetFromStartOfDay = moment.duration(option.key, 'minutes');\n newDateTime = currentDateTimeStartOfDay.add(offsetFromStartOfDay);\n } else {\n // User entered a free-form string, try to parse it as a time\n const enteredTime = moment(value, timePickerFormat);\n if (enteredTime.isValid()) {\n const offsetFromStartOfDay = enteredTime.diff(\n moment(enteredTime).startOf('day')\n );\n newDateTime = currentDateTimeStartOfDay.add(offsetFromStartOfDay);\n } else {\n newDateTime = moment(props.dateTime);\n }\n }\n\n props.onTimeUpdated(newDateTime);\n }\n\n function onFormatDate(dateToFormat?: Date): string {\n return moment(dateToFormat).format(datePickerFormat);\n }\n\n function onParseDateFromString(value: string): Date {\n return moment(value, datePickerFormat).toDate();\n }\n\n const timeSuggestions = _.range(0, 1440, 30).map(minutes => {\n // if the selection is before the min value\n const projectedEndTime = moment(props.dateTime)\n .startOf('day')\n .add(moment.duration(minutes, 'minutes'));\n const isDisabled = moment(props.minDate).isAfter(projectedEndTime);\n const timeTag = moment()\n .startOf('day')\n .minutes(minutes)\n .format(timePickerFormat);\n const projectedDuration = moment.duration(\n moment(projectedEndTime).diff(props.minDate)\n );\n const projectedDurationString = _.trim(formatDuration(projectedDuration));\n\n return {\n key: minutes,\n text:\n props.includeDuration &&\n !isDisabled &&\n projectedDurationString.length > 0\n ? `${timeTag} (${projectedDurationString})`\n : timeTag,\n disabled: isDisabled\n };\n });\n\n return (\n \n \n \n {props.iconName === 'ReplyAlt' ? (\n \n ) : (\n \n {formatDuration(\n moment.duration(moment(props.dateTime).diff(moment(props.minDate)))\n )}\n \n )}\n \n );\n}\n\n//\n// Meeting page component\n//\n\ninterface MeetingValidationFailures {\n invalidTitle?: string;\n}\n\ninterface MeetingPageProps {\n meeting: OnlineMeetingInput;\n validationFailures: MeetingValidationFailures;\n creationInProgress: boolean;\n setMeeting: (meeting: OnlineMeetingInput) => void;\n createMeeting: (meeting: OnlineMeetingInput) => void;\n cancel: () => void;\n}\n\nconst mapStateToProps = (state: AppState) => ({\n meeting: state.meeting.inputMeeting,\n creationInProgress: state.meeting.creationInProgress,\n validationFailures: {\n invalidTitle: hasValidSubject(state.meeting.inputMeeting)\n ? undefined\n : translate('meetingPage.invalidSubject.error')\n }\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n setMeeting: (meeting: OnlineMeetingInput) => {\n dispatch({\n type: SET_MEETING_COMMAND,\n meeting\n });\n },\n createMeeting: (meeting: OnlineMeetingInput) => {\n dispatch({\n type: CREATE_MEETING_COMMAND,\n meeting\n } as CreateMeetingCommand);\n },\n cancel: () => dispatch(goBack())\n});\n\nfunction MeetingPageComponent(props: MeetingPageProps) {\n const [validationEnabled, setValidationEnabled] = useState(false);\n\n function onSubjectChanged(\n evt: React.FormEvent,\n newValue: string | undefined\n ) {\n // The meeting objects are small, cloning is cheap enough\n // Normally would use immutable records or similar to avoid overhead.\n const nextMeeting = _.cloneDeep(props.meeting);\n nextMeeting.subject = newValue ?? '';\n props.setMeeting(nextMeeting);\n }\n\n function onStartDateSelected(date?: Moment) {\n const nextMeeting = _.cloneDeep(props.meeting);\n nextMeeting.startDateTime = date ?? nextMeeting.startDateTime;\n\n // If start >= end, adjust to be the same delta as before from the start time\n if (nextMeeting.startDateTime.isSameOrAfter(nextMeeting.endDateTime)) {\n const existingDelta = moment(props.meeting.endDateTime).diff(\n moment(props.meeting.startDateTime)\n );\n const newEndDateTime = moment(nextMeeting.startDateTime).add(\n existingDelta\n );\n if (nextMeeting.startDateTime.isSameOrAfter(newEndDateTime)) {\n newEndDateTime.add(existingDelta);\n }\n nextMeeting.endDateTime = newEndDateTime;\n }\n\n props.setMeeting(nextMeeting);\n }\n\n function onEndDateSelected(date?: Moment) {\n const nextMeeting = _.cloneDeep(props.meeting);\n const newEndDateTime = date ?? nextMeeting.endDateTime;\n\n // Allow the change only if it maintains start < end\n if (!nextMeeting.startDateTime.isAfter(newEndDateTime)) {\n nextMeeting.endDateTime = newEndDateTime;\n }\n\n props.setMeeting(nextMeeting);\n }\n\n function onCreate() {\n if (!!props.validationFailures.invalidTitle) {\n setValidationEnabled(true);\n return;\n }\n\n props.createMeeting(props.meeting);\n }\n\n if (props.creationInProgress) {\n return (\n
\n \n
\n );\n }\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n onCreate()}\n ariaLabel={translate('meetingPage.create.ariaLabel')}\n >\n \n \n props.cancel()}\n ariaLabel={translate('meetingPage.cancel.ariaLabel')}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n \n
\n \n \n
\n
\n\n {/* MOBILE BUTTON GROUP */}\n \n \n \n onCreate()}\n ariaLabel={translate('meetingPage.create.ariaLabel')}\n >\n \n \n props.cancel()}\n ariaLabel={translate('meetingPage.cancel.ariaLabel')}\n >\n \n \n \n \n
\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(MeetingPageComponent);\n","import { OnlineMeetingInput } from './models';\n\nexport function hasValidSubject(meeting: OnlineMeetingInput) {\n return !!meeting.subject && meeting.subject.length >= 0;\n}\n","import { OnlineMeetingInput, OnlineMeeting } from './models';\n\nexport const SET_MEETING_COMMAND = 'SetMeetingCommand';\nexport interface SetMeetingCommand {\n type: typeof SET_MEETING_COMMAND;\n meeting: OnlineMeetingInput;\n}\n\nexport const CREATE_MEETING_COMMAND = 'CreateMeetingCommand';\nexport interface CreateMeetingCommand {\n type: typeof CREATE_MEETING_COMMAND;\n meeting: OnlineMeetingInput;\n}\n\nexport const MEETING_CREATED_EVENT = 'MeetingCreatedEvent';\nexport interface MeetingCreatedEvent {\n type: typeof MEETING_CREATED_EVENT;\n meeting: OnlineMeeting;\n}\n\nexport type MeetingAction =\n | SetMeetingCommand\n | CreateMeetingCommand\n | MeetingCreatedEvent;\n","import moment from 'moment';\r\nimport { Moment } from 'moment';\r\n\r\nexport interface OnlineMeetingInput {\r\n subject?: string;\r\n startDateTime: Moment;\r\n endDateTime: Moment;\r\n}\r\n\r\nexport interface OnlineMeeting {\r\n id: string;\r\n joinWebUrl: string;\r\n subject: string;\r\n videoTeleconferenceId: string;\r\n creationDateTime: Moment;\r\n startDateTime: Moment;\r\n endDateTime: Moment;\r\n dialinUrl: string;\r\n conferenceId: string;\r\n tollNumber: string;\r\n tollFreeNumber: string;\r\n preview: string;\r\n}\r\n\r\nexport function createDefaultMeetingInput(): OnlineMeetingInput {\r\n return {\r\n subject: '',\r\n startDateTime: moment()\r\n .startOf('hour')\r\n .add(1, 'hour'),\r\n endDateTime: moment()\r\n .startOf('hour')\r\n .add(2, 'hour')\r\n };\r\n}\r\n","import { MeetingState } from './state';\r\nimport {\r\n SET_MEETING_COMMAND,\r\n MeetingAction,\r\n MEETING_CREATED_EVENT,\r\n CREATE_MEETING_COMMAND\r\n} from './actions';\r\nimport _ from 'lodash';\r\nimport { createDefaultMeetingInput } from './models';\r\nimport {\r\n LOCATION_CHANGE,\r\n LocationChangeAction,\r\n LocationChangePayload\r\n} from 'connected-react-router';\r\n\r\nconst loadInitialState = () => {\r\n return {\r\n inputMeeting: createDefaultMeetingInput(),\r\n creationInProgress: false\r\n } as MeetingState;\r\n};\r\n\r\nexport const meetingReducer = (\r\n state: MeetingState,\r\n action: MeetingAction | LocationChangeAction\r\n) => {\r\n if (!state) return loadInitialState();\r\n switch (action.type) {\r\n case SET_MEETING_COMMAND:\r\n return {\r\n ...state,\r\n inputMeeting: _.cloneDeep(action.meeting)\r\n };\r\n case CREATE_MEETING_COMMAND:\r\n return {\r\n ...state,\r\n creationInProgress: true\r\n };\r\n case MEETING_CREATED_EVENT:\r\n return {\r\n ...state,\r\n createdMeeting: action.meeting\r\n };\r\n case LOCATION_CHANGE:\r\n if (action.payload.location.pathname === '/createMeeting') {\r\n return {\r\n ...state,\r\n creationInProgress: false\r\n };\r\n }\r\n // falls through\r\n default:\r\n return state;\r\n }\r\n};\r\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { Text, FontWeights, IconButton } from 'office-ui-fabric-react';\nimport { AppState } from '../RootReducer';\nimport { Dispatch } from 'redux';\nimport { SIGNOUT_COMMAND } from '../auth/actions';\nimport { translate } from '../localization/translate';\n\ninterface HeaderProps {\n onSignOut: () => void;\n}\n\nconst mapStateToProps = (state: AppState) => ({} as Partial);\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n ({\n onSignOut: () => {\n dispatch({\n type: SIGNOUT_COMMAND\n });\n }\n } as Partial);\n\nconst boldStyle = { root: { fontWeight: FontWeights.bold } };\n\nfunction HeaderComponent(props: Partial) {\n const onSignOut = props.onSignOut ?? (() => {});\n\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n
\n \n Microsoft Teams\n \n
\n\n
\n onSignOut()}\n iconProps={{ iconName: 'Leave' }}\n title={translate('header.signout.title')}\n ariaLabel={translate('header.signout.ariaLabel')}\n />\n
\n
\n );\n}\n\nexport const Header = connect(\n mapStateToProps,\n mapDispatchToProps\n)(HeaderComponent);\n","import React from 'react';\nimport { Stack, Text, PrimaryButton } from 'office-ui-fabric-react';\nimport { AppState } from './RootReducer';\nimport { Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { OnlineMeeting } from './meeting-creator/models';\nimport { Header } from './components/header';\nimport { FormattedMessage } from 'react-intl';\nimport { translate } from './localization/translate';\n\ninterface CopyMeetingPageProps {\n meeting?: OnlineMeeting;\n onCopyToClipboard: (meeting?: OnlineMeeting) => void;\n}\n\nconst mapStateToProps = (state: AppState) => ({\n meeting: state.meeting.createdMeeting\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n onCopyToClipboard: (meeting?: OnlineMeeting) => {\n const str =\n document.getElementById('copy')?.innerHTML ||\n translate('copyMeetingPage.failed.copy');\n\n function listener(e: ClipboardEvent) {\n if (!e || !e.clipboardData) {\n return;\n }\n\n e.clipboardData.setData('text/html', str);\n e.clipboardData.setData(\n 'text/plain',\n meeting?.joinWebUrl ?? translate('copyMeetingPage.failed.copy')\n );\n e.preventDefault();\n }\n document.addEventListener('copy', listener);\n document.execCommand('copy');\n document.removeEventListener('copy', listener);\n }\n});\n\nfunction CopyMeetingPageComponent(props: CopyMeetingPageProps) {\n return (\n <>\n
\n \n \n \n \n \n\n \n \n \n \n props.onCopyToClipboard(props.meeting)}\n ariaLabel={translate('copyMeetingPage.copy.ariaLabel')}\n >\n \n \n \n \n \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CopyMeetingPageComponent);\n","import React from 'react';\nimport {\n Stack,\n Text,\n PrimaryButton,\n FontWeights\n} from 'office-ui-fabric-react';\nimport { AppState } from './RootReducer';\nimport { Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { push } from 'connected-react-router';\nimport { CHECK_FOR_SIGNEDIN_USER_COMMAND } from './auth/actions';\nimport {\n SET_MEETING_COMMAND,\n SetMeetingCommand\n} from './meeting-creator/actions';\nimport { Header } from './components/header';\nimport { createDefaultMeetingInput } from './meeting-creator/models';\nimport { FormattedMessage } from 'react-intl';\nimport { translate } from './localization/translate';\n\nimport calendar from './images/calendar.svg';\n\nconst boldStyle = { root: { fontWeight: FontWeights.semibold } };\n\ninterface CreateLandingPageProps {\n checkForSignedInUser: () => void;\n onNewMeeting: () => void;\n}\n\nconst mapStateToProps = (state: AppState) => ({});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n checkForSignedInUser: () =>\n dispatch({\n type: CHECK_FOR_SIGNEDIN_USER_COMMAND\n }),\n onNewMeeting: () => {\n dispatch({\n type: SET_MEETING_COMMAND,\n meeting: createDefaultMeetingInput()\n } as SetMeetingCommand);\n dispatch(push('/createMeeting'));\n }\n});\n\nfunction CreateLandingPageComponent(props: CreateLandingPageProps) {\n // Check for a signed-in user and go to the signin page if there isn't one\n const checkForSignedInUser = props.checkForSignedInUser;\n React.useEffect(() => {\n checkForSignedInUser();\n });\n\n return (\n <>\n
\n \n \n \n \n \n \n \n \n props.onNewMeeting()}\n ariaLabel={translate('createLandingPage.create.meeting.ariaLabel')}\n >\n \n \n \n \n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CreateLandingPageComponent);\n","import React from 'react';\nimport {\n Stack,\n Text,\n FontWeights,\n PrimaryButton,\n DefaultButton\n} from 'office-ui-fabric-react';\nimport { AppState } from './RootReducer';\nimport { Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { goBack, replace } from 'connected-react-router';\nimport { OnlineMeetingInput } from './meeting-creator/models';\nimport {\n CREATE_MEETING_COMMAND,\n CreateMeetingCommand\n} from './meeting-creator/actions';\nimport { Header } from './components/header';\nimport errorImage from './images/genericError.svg';\nimport { FormattedMessage } from 'react-intl';\nimport { translate } from './localization/translate';\n\nconst boldStyle = { root: { fontWeight: FontWeights.semibold } };\n\ninterface ErrorPageProps {\n meeting: OnlineMeetingInput;\n goBack: () => void;\n retryCreateMeeting: (meeting: OnlineMeetingInput) => void;\n}\n\nconst mapStateToProps = (state: AppState) => ({\n meeting: state.meeting.inputMeeting\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n goBack: () => dispatch(goBack()),\n retryCreateMeeting: (meeting: OnlineMeetingInput) => {\n dispatch(replace('/createMeeting'));\n dispatch({\n type: CREATE_MEETING_COMMAND,\n meeting\n } as CreateMeetingCommand);\n }\n});\n\nfunction ErrorPageComponent(props: ErrorPageProps) {\n return (\n <>\n
\n \n \n \n \n \n \n \n \n \n props.goBack()}\n ariaLabel={translate('errorPage.back.ariaLabel')}\n >\n \n \n props.retryCreateMeeting(props.meeting)}\n ariaLabel={translate('errorPage.try.again')}\n >\n \n \n \n \n \n );\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ErrorPageComponent);\n","import React from 'react';\nimport { createHashHistory } from 'history';\nimport { applyMiddleware, createStore, compose } from 'redux';\nimport { Provider } from 'react-redux';\nimport { Route, Switch } from 'react-router';\nimport { ConnectedRouter, routerMiddleware } from 'connected-react-router';\nimport SigninPage from './SigninPage';\nimport { createAuthMiddleware } from './auth/middleware';\nimport MeetingPage from './MeetingPage';\nimport { createRootReducer } from './RootReducer';\nimport { createMeetingMiddleware } from './meeting-creator/middleware';\nimport CopyMeetingPage from './CopyMeetingPage';\nimport CreateLandingPage from './CreateLandingPage';\nimport ErrorPage from './ErrorPage';\nimport moment from 'moment';\nimport 'moment/min/locales.min';\nimport { initializeIcons } from 'office-ui-fabric-react';\nimport { getUserLocale } from './localization/translate';\n\nmoment.locale(getUserLocale());\n\ninitializeIcons();\n\nconst hist = createHashHistory();\n\nconst store = createStore(\n createRootReducer(hist),\n compose(\n applyMiddleware(\n routerMiddleware(hist),\n createAuthMiddleware(),\n createMeetingMiddleware()\n )\n )\n);\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { combineReducers } from 'redux';\nimport { connectRouter } from 'connected-react-router';\nimport { History } from 'history';\nimport { MeetingState } from './meeting-creator/state';\nimport { meetingReducer } from './meeting-creator/reducers';\n\nexport interface AppState {\n meeting: MeetingState;\n router: History;\n}\n\nexport function createRootReducer(history: History) {\n return combineReducers({\n router: connectRouter(history),\n meeting: meetingReducer\n });\n}\n","import { Middleware } from 'redux';\nimport { msalApp } from './msalApp';\nimport {\n CHECK_FOR_SIGNEDIN_USER_COMMAND,\n OPEN_SIGNIN_DIALOG_COMMAND,\n SIGNIN_COMPLETE_EVENT,\n SigninCompleteEvent,\n SIGNOUT_COMMAND,\n SIGNOUT_COMPLETE_EVENT\n} from './actions';\nimport { replace } from 'connected-react-router';\n\nexport function createAuthMiddleware(): Middleware {\n return store => next => action => {\n if (action.type === CHECK_FOR_SIGNEDIN_USER_COMMAND) {\n if (!msalApp.getAccount()) {\n store.dispatch(replace('/signin'));\n }\n }\n\n if (action.type === OPEN_SIGNIN_DIALOG_COMMAND) {\n msalApp\n .loginPopup({\n scopes: ['OnlineMeetings.ReadWrite']\n })\n .then(response => {\n console.log('Login succeeded');\n store.dispatch({\n type: SIGNIN_COMPLETE_EVENT,\n idToken: response.idToken\n } as SigninCompleteEvent);\n })\n .catch(error => {\n console.log('Login failed:', error);\n });\n }\n\n if (action.type === SIGNIN_COMPLETE_EVENT) {\n store.dispatch(replace('/'));\n }\n\n if (action.type === SIGNOUT_COMMAND) {\n msalApp.logout();\n store.dispatch({\n type: SIGNOUT_COMPLETE_EVENT\n });\n console.log('logged out?');\n }\n\n next(action);\n };\n}\n","import { Middleware } from 'redux';\nimport { CREATE_MEETING_COMMAND, MEETING_CREATED_EVENT } from './actions';\nimport { createMeetingService } from './service';\nimport { push } from 'connected-react-router';\n\nexport function createMeetingMiddleware(): Middleware {\n const service = createMeetingService();\n\n return store => next => action => {\n if (action.type === CREATE_MEETING_COMMAND) {\n service\n .createMeeting(action.meeting)\n .then(meeting => {\n store.dispatch({\n type: MEETING_CREATED_EVENT,\n meeting\n });\n })\n .catch(error => {\n console.error('Create meeting failed: ', error);\n store.dispatch(push('/error'));\n });\n }\n\n if (action.type === MEETING_CREATED_EVENT) {\n store.dispatch(push('/copyMeeting'));\n }\n next(action);\n };\n}\n","import { OnlineMeetingInput, OnlineMeeting } from './models';\r\nimport { msalApp } from '../auth/msalApp';\r\nimport axios from 'axios';\r\nimport moment from 'moment';\r\n\r\nexport function createMeetingService() {\r\n return {\r\n async createMeeting(meeting: OnlineMeetingInput) {\r\n let token;\r\n try {\r\n token = await msalApp.acquireTokenSilent({\r\n scopes: ['OnlineMeetings.ReadWrite']\r\n });\r\n } catch (ex) {\r\n token = await msalApp.acquireTokenPopup({\r\n scopes: ['OnlineMeetings.ReadWrite']\r\n });\r\n }\r\n\r\n const requestBody = {\r\n startDateTime: meeting.startDateTime?.toISOString(),\r\n endDateTime: meeting.endDateTime?.toISOString(),\r\n subject: meeting.subject\r\n };\r\n\r\n const response = await axios.post(\r\n 'https://graph.microsoft.com/beta/me/onlineMeetings',\r\n requestBody,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token.accessToken}`,\r\n 'Content-type': 'application/json'\r\n }\r\n }\r\n );\r\n\r\n const preview = decodeURIComponent(\r\n (response.data.joinInformation.content?.split(',')?.[1] ?? '').replace(\r\n /\\+/g,\r\n '%20'\r\n )\r\n );\r\n\r\n const createdMeeting = {\r\n id: response.data.id,\r\n creationDateTime: moment(response.data.creationDateTime),\r\n subject: response.data.subject,\r\n joinUrl: response.data.joinUrl,\r\n joinWebUrl: response.data.joinWebUrl,\r\n startDateTime: moment(response.data.startDateTime),\r\n endDateTime: moment(response.data.endDateTime),\r\n conferenceId: response.data.audioConferencing?.conferenceId || '',\r\n tollNumber: response.data.audioConferencing?.tollNumber || '',\r\n tollFreeNumber: response.data.audioConferencing?.tollFreeNumber || '',\r\n dialinUrl: response.data.audioConferencing?.dialinUrl || '',\r\n videoTeleconferenceId: response.data.videoTeleconferenceId,\r\n preview\r\n } as OnlineMeeting;\r\n\r\n return createdMeeting;\r\n }\r\n };\r\n}\r\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { IntlProvider } from 'react-intl';\nimport App from './App';\nimport { getUserLocale, getMessages } from './localization/translate';\n\nconst userLocale = getUserLocale();\n\nfunction isMsalRedirect() {\n const msalParameters = [\n 'access_token',\n 'id_token',\n 'code',\n 'error',\n 'error_description'\n ];\n const hash = window.location.hash;\n return msalParameters.some(param => hash.indexOf(`${param}=`) >= 0);\n}\n\n// hack to fix MSAL fighting with hash routing\nif (!isMsalRedirect()) {\n getMessages().then(messages => {\n ReactDOM.render(\n \n \n ,\n document.getElementById('root')\n );\n });\n}\n","import { createIntl, createIntlCache } from 'react-intl';\n\nconst defaultLocale = 'en-US';\nconst supportedLocalesAndFallbackMap: Record = {\n 'ar': 'ar-SA',\n 'ar-sa': 'ar-SA',\n 'bg': 'bg-BG',\n 'bg-bg': 'bg-BG',\n 'cs': 'cs-CZ',\n 'cs-cz': 'cs-CZ',\n 'cy': 'cy-GB',\n 'cy-gb': 'cy-GB',\n 'da': 'da-DK',\n 'da-dk': 'da-DK',\n 'de': 'de-DE',\n 'de-de': 'de-DE',\n 'en': 'en-US',\n 'en-gb': 'en-GB',\n 'en-us': 'en-US',\n 'es': 'es-ES',\n 'es-es': 'es-ES',\n 'es-mx': 'es-MX',\n 'fi': 'fi-FI',\n 'fi-fi': 'fi-FI',\n 'fr': 'fr-FR',\n 'fr-fr': 'fr-FR',\n 'fr-ca': 'fr-CA',\n 'he': 'he-IL',\n 'he-il': 'he-IL',\n 'is': 'is-IS',\n 'is-is': 'is-IS',\n 'it': 'it-IT',\n 'it-it': 'it-IT',\n 'ja': 'ja-JP',\n 'ja-jp': 'ja-JP',\n 'ko': 'ko-KR',\n 'ko-kr': 'ko-KR',\n 'nb': 'nb-NO',\n 'nb-no': 'nb-NO',\n 'nl': 'nl-NL',\n 'nl-nl': 'nl-NL',\n 'nn': 'nn-NO',\n 'nn-no': 'nn-NO',\n 'no': 'nb-NO',\n 'pl': 'pl-PL',\n 'pl-pl': 'pl-PL',\n 'pt': 'pt-BR',\n 'pt-br': 'pt-BR',\n 'pt-pt': 'pt-PT',\n 'ru': 'ru-RU',\n 'ru-ru': 'ru-RU',\n 'sk': 'sk-SK',\n 'sk-sk': 'sk-SK',\n 'sr': 'sr-Latn-RS',\n 'sr-latn-rs': 'sr-Latn-RS',\n 'sv': 'sv-SE',\n 'vi': 'vi-VN',\n 'sv-se': 'sv-SE',\n 'th': 'th-TH',\n 'th-th': 'th-TH',\n 'tr': 'tr-TR',\n 'tr-tr': 'tr-TR',\n 'zh': 'en-US',\n 'zh-cn': 'zh-CN',\n 'zh-tw': 'zh-TW',\n};\n\nexport function getUserLocale() {\n if (navigator.languages) {\n return navigator.languages[0].toLowerCase();\n } else if (navigator.language) {\n return navigator.language.toLowerCase();\n } else {\n return defaultLocale;\n }\n}\n\nfunction getTranslationLocale(locale: string) {\n if (supportedLocalesAndFallbackMap.hasOwnProperty(locale)) {\n return supportedLocalesAndFallbackMap[locale];\n } else if (locale.indexOf('-') > -1) {\n const index = locale.indexOf('-');\n const languageCode = locale.substring(0, index);\n return supportedLocalesAndFallbackMap.hasOwnProperty(languageCode) ? supportedLocalesAndFallbackMap[languageCode] : defaultLocale;\n } else {\n return defaultLocale;\n }\n}\n\nasync function loadTranslations(sku: string, userLocale: string) {\n const translationLocale = getTranslationLocale(userLocale);\n console.log(`Using ${translationLocale} strings for ${userLocale} in ${sku}`);\n\n let stringsModule: any;\n try {\n stringsModule = await import(`../translations/${sku}/${translationLocale}/strings.json`);\n } catch (e) {\n console.error(`Failed to load ${translationLocale} in ${sku}, falling back to en-US`);\n stringsModule = await import(`../translations/${sku}/en-US/strings.json`);\n }\n\n return stringsModule.default;\n}\n\nconst cache = createIntlCache();\nlet intl: any;\n\nexport async function getMessages(): Promise\n{\n const sku = process?.env?.REACT_APP_SKU ?? 'edu';\n const userLocale = getUserLocale();\n\n if (intl && (intl.locale === getUserLocale())) {\n return intl.messages;\n }\n\n console.log(`Loading ${userLocale} strings in ${sku}`);\n const messages = await loadTranslations(sku, userLocale);\n if (!messages)\n {\n console.error(`Unable to load ${userLocale} strings in ${sku}`);\n return {};\n }\n\n intl = createIntl(\n {\n locale: userLocale,\n messages: messages\n },\n cache\n ); \n return messages;\n}\n\nexport const translate = (id: string, values?: {}) => {\n return intl.formatMessage({ id }, values);\n};\n"],"sourceRoot":""}