@clickview/reports 0.90.0-rc.1 → 0.90.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/.vite/manifest.json +200 -200
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{D_FEtk4z.chunk.js → 4ViYfbV7.chunk.js} +2 -2
  5. package/dist/scripts/{D_FEtk4z.chunk.js.map → 4ViYfbV7.chunk.js.map} +1 -1
  6. package/dist/scripts/{CkUPoXTo.chunk.js → 4gz8eG_F.chunk.js} +2 -2
  7. package/dist/scripts/{CkUPoXTo.chunk.js.map → 4gz8eG_F.chunk.js.map} +1 -1
  8. package/dist/scripts/{DNagXaPV2.chunk.js → 4mtEyuqT2.chunk.js} +2 -2
  9. package/dist/scripts/{DNagXaPV2.chunk.js.map → 4mtEyuqT2.chunk.js.map} +1 -1
  10. package/dist/scripts/{CPrWMnN-.chunk.js → 7M6FzdyD.chunk.js} +2 -2
  11. package/dist/scripts/{CPrWMnN-.chunk.js.map → 7M6FzdyD.chunk.js.map} +1 -1
  12. package/dist/scripts/{D3Pl0-fQ.chunk.js → BJOOjdj2.chunk.js} +2 -2
  13. package/dist/scripts/{D3Pl0-fQ.chunk.js.map → BJOOjdj2.chunk.js.map} +1 -1
  14. package/dist/scripts/{B9ojUSnp2.chunk.js → BL1X9vs52.chunk.js} +2 -2
  15. package/dist/scripts/{B9ojUSnp2.chunk.js.map → BL1X9vs52.chunk.js.map} +1 -1
  16. package/dist/scripts/{BN2Jc0_B.chunk.js → BLzRzOyq.chunk.js} +2 -2
  17. package/dist/scripts/{BN2Jc0_B.chunk.js.map → BLzRzOyq.chunk.js.map} +1 -1
  18. package/dist/scripts/{CNihWz772.chunk.js → BU8DxGLM2.chunk.js} +2 -2
  19. package/dist/scripts/{CNihWz772.chunk.js.map → BU8DxGLM2.chunk.js.map} +1 -1
  20. package/dist/scripts/{B-CXShcb2.chunk.js → BXWs2cI72.chunk.js} +2 -2
  21. package/dist/scripts/{B-CXShcb2.chunk.js.map → BXWs2cI72.chunk.js.map} +1 -1
  22. package/dist/scripts/{Re7SHmEB2.chunk.js → Bl13dT192.chunk.js} +2 -2
  23. package/dist/scripts/{Re7SHmEB2.chunk.js.map → Bl13dT192.chunk.js.map} +1 -1
  24. package/dist/scripts/{CBswLW82.chunk.js → Bzx4bLV8.chunk.js} +2 -2
  25. package/dist/scripts/{CBswLW82.chunk.js.map → Bzx4bLV8.chunk.js.map} +1 -1
  26. package/dist/scripts/{4QdmE5x_2.chunk.js → CKKR2-wU2.chunk.js} +2 -2
  27. package/dist/scripts/{4QdmE5x_2.chunk.js.map → CKKR2-wU2.chunk.js.map} +1 -1
  28. package/dist/scripts/{s20CYII_2.chunk.js → CcjJpEaF2.chunk.js} +2 -2
  29. package/dist/scripts/{s20CYII_2.chunk.js.map → CcjJpEaF2.chunk.js.map} +1 -1
  30. package/dist/scripts/{B-DINEq3.chunk.js → Ch4Y5yk4.chunk.js} +2 -2
  31. package/dist/scripts/{B-DINEq3.chunk.js.map → Ch4Y5yk4.chunk.js.map} +1 -1
  32. package/dist/scripts/{DqAzhF3o.chunk.js → CitsW6ql.chunk.js} +2 -2
  33. package/dist/scripts/{DqAzhF3o.chunk.js.map → CitsW6ql.chunk.js.map} +1 -1
  34. package/dist/scripts/{iTyahUCH2.chunk.js → CowQEpZQ2.chunk.js} +2 -2
  35. package/dist/scripts/{iTyahUCH2.chunk.js.map → CowQEpZQ2.chunk.js.map} +1 -1
  36. package/dist/scripts/{DxrgOF1-.chunk.js → D2gRMPGY.chunk.js} +2 -2
  37. package/dist/scripts/{DxrgOF1-.chunk.js.map → D2gRMPGY.chunk.js.map} +1 -1
  38. package/dist/scripts/{BabEuLsF2.chunk.js → DDS7ndOq2.chunk.js} +2 -2
  39. package/dist/scripts/{BabEuLsF2.chunk.js.map → DDS7ndOq2.chunk.js.map} +1 -1
  40. package/dist/scripts/{_gzWinH7.chunk.js → DE24b7R6.chunk.js} +2 -2
  41. package/dist/scripts/{_gzWinH7.chunk.js.map → DE24b7R6.chunk.js.map} +1 -1
  42. package/dist/scripts/{CYgv1ISo2.chunk.js → DNY9inGn2.chunk.js} +2 -2
  43. package/dist/scripts/{CYgv1ISo2.chunk.js.map → DNY9inGn2.chunk.js.map} +1 -1
  44. package/dist/scripts/{DQY7SaMp2.chunk.js → DPJbiCR02.chunk.js} +3 -3
  45. package/dist/scripts/{DQY7SaMp2.chunk.js.map → DPJbiCR02.chunk.js.map} +1 -1
  46. package/dist/scripts/{BuFRt1UM.chunk.js → DWQdiwUw.chunk.js} +2 -2
  47. package/dist/scripts/{BuFRt1UM.chunk.js.map → DWQdiwUw.chunk.js.map} +1 -1
  48. package/dist/scripts/{DzTraroE2.chunk.js → DbSzdDBS2.chunk.js} +2 -2
  49. package/dist/scripts/{DzTraroE2.chunk.js.map → DbSzdDBS2.chunk.js.map} +1 -1
  50. package/dist/scripts/{NiiRK9j-2.chunk.js → Dj87pb142.chunk.js} +2 -2
  51. package/dist/scripts/{NiiRK9j-2.chunk.js.map → Dj87pb142.chunk.js.map} +1 -1
  52. package/dist/scripts/{DSNTuwQi2.chunk.js → EvtCZWZL2.chunk.js} +2 -2
  53. package/dist/scripts/{DSNTuwQi2.chunk.js.map → EvtCZWZL2.chunk.js.map} +1 -1
  54. package/dist/scripts/{Cdbg16A92.chunk.js → PSwC3iEf2.chunk.js} +2 -2
  55. package/dist/scripts/{Cdbg16A92.chunk.js.map → PSwC3iEf2.chunk.js.map} +1 -1
  56. package/dist/scripts/{B3UVC04b.chunk.js → TzLygaBE.chunk.js} +2 -2
  57. package/dist/scripts/{B3UVC04b.chunk.js.map → TzLygaBE.chunk.js.map} +1 -1
  58. package/dist/scripts/{app-jxJcaenU.js → app-B1NVV4PT.js} +3 -3
  59. package/dist/scripts/{app-jxJcaenU.js.map → app-B1NVV4PT.js.map} +1 -1
  60. package/dist/scripts/{CsoT7dzm.chunk.js → fh6sbun-.chunk.js} +2 -2
  61. package/dist/scripts/{CsoT7dzm.chunk.js.map → fh6sbun-.chunk.js.map} +1 -1
  62. package/dist/scripts/{s1EOR8_G2.chunk.js → kAYY_iVY2.chunk.js} +2 -2
  63. package/dist/scripts/{s1EOR8_G2.chunk.js.map → kAYY_iVY2.chunk.js.map} +1 -1
  64. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BuFRt1UM.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/FeedbackType.ts","../../../../libs/shared/src/enums/PresentationType.ts","../../../../libs/shared/src/flight-requests/AudienceRequests.ts","../../../../libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","../../../../libs/shared/src/enums/ClassificationType.ts","../../../../libs/shared/src/utils/ThemeAssetHelper.ts","../../../../libs/shared/src/flight-requests/ClassificationRequests.ts","../../../../libs/shared/src/flight-requests/FeedbackRequests.ts","../../../../libs/shared/src/hooks/UseGetCollectionItems.ts","../../../../libs/shared/src/errors/general/student-restricted/StudentRestrictedDialogError.ts","../../../../libs/shared/src/hooks/useStudentRestrictedDialogError.ts","../../../../libs/shared/src/enums/CountryCode.ts","../../../../libs/shared/src/utils/FeedbackFormHelper.ts","../../../../libs/shared/src/views/feedback/enums/FeedbackOption.ts","../../../../libs/shared/src/views/feedback/constants/FeedbackFormTitles.ts","../../../../libs/shared/src/views/feedback/constants/FeedbackImageUrls.ts","../../../../libs/shared/src/views/feedback/components/feedback-selector/feedback-selector.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-selector/FeedbackSelector.tsx","../../../../libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","../../../../libs/shared/src/views/feedback/components/feedback-buttons/FeedbackButtons.tsx","../../../../libs/shared/src/views/feedback/components/feedback-form-state/feedback-form-state.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-form-state/FeedbackFormState.tsx","../../../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../../node_modules/lodash/_baseHas.js","../../../../../node_modules/lodash/_hasPath.js","../../../../../node_modules/lodash/has.js","../../../../../node_modules/lodash/cloneDeepWith.js","../../../../../node_modules/lodash/isString.js","../../../../../node_modules/lodash/_iteratorToArray.js","../../../../../node_modules/lodash/_mapToArray.js","../../../../../node_modules/lodash/_setToArray.js","../../../../../node_modules/lodash/_asciiToArray.js","../../../../../node_modules/lodash/_hasUnicode.js","../../../../../node_modules/lodash/_unicodeToArray.js","../../../../../node_modules/lodash/_stringToArray.js","../../../../../node_modules/lodash/_baseValues.js","../../../../../node_modules/lodash/values.js","../../../../../node_modules/lodash/toArray.js","../../../../../node_modules/yup/lib/util/printValue.js","../../../../../node_modules/yup/lib/locale.js","../../../../../node_modules/yup/lib/util/isSchema.js","../../../../../node_modules/yup/lib/Condition.js","../../../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../../../node_modules/synchronous-promise/index.js","../../../../../node_modules/yup/lib/ValidationError.js","../../../../../node_modules/yup/lib/util/runValidations.js","../../../../../node_modules/yup/lib/util/prependDeep.js","../../../../../node_modules/lodash/_createBaseFor.js","../../../../../node_modules/lodash/_baseFor.js","../../../../../node_modules/lodash/_baseForOwn.js","../../../../../node_modules/lodash/_setCacheAdd.js","../../../../../node_modules/lodash/_setCacheHas.js","../../../../../node_modules/lodash/_SetCache.js","../../../../../node_modules/lodash/_arraySome.js","../../../../../node_modules/lodash/_cacheHas.js","../../../../../node_modules/lodash/_equalArrays.js","../../../../../node_modules/lodash/_equalByTag.js","../../../../../node_modules/lodash/_equalObjects.js","../../../../../node_modules/lodash/_baseIsEqualDeep.js","../../../../../node_modules/lodash/_baseIsEqual.js","../../../../../node_modules/lodash/_baseIsMatch.js","../../../../../node_modules/lodash/_isStrictComparable.js","../../../../../node_modules/lodash/_getMatchData.js","../../../../../node_modules/lodash/_matchesStrictComparable.js","../../../../../node_modules/lodash/_baseMatches.js","../../../../../node_modules/lodash/_baseHasIn.js","../../../../../node_modules/lodash/hasIn.js","../../../../../node_modules/lodash/_baseMatchesProperty.js","../../../../../node_modules/lodash/identity.js","../../../../../node_modules/lodash/_baseProperty.js","../../../../../node_modules/lodash/_basePropertyDeep.js","../../../../../node_modules/lodash/property.js","../../../../../node_modules/lodash/_baseIteratee.js","../../../../../node_modules/lodash/mapValues.js","../../../../../node_modules/property-expr/index.js","../../../../../node_modules/yup/lib/Reference.js","../../../../../node_modules/yup/lib/util/createValidation.js","../../../../../node_modules/yup/lib/util/reach.js","../../../../../node_modules/yup/lib/mixed.js","../../../../../node_modules/yup/lib/util/inherits.js","../../../../../node_modules/yup/lib/boolean.js","../../../../../node_modules/yup/lib/util/isAbsent.js","../../../../../node_modules/yup/lib/string.js","../../../../../node_modules/yup/lib/number.js","../../../../../node_modules/yup/lib/util/isodate.js","../../../../../node_modules/yup/lib/date.js","../../../../../node_modules/@babel/runtime/helpers/typeof.js","../../../../../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../../../../../node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js","../../../../../node_modules/lodash/_arrayReduce.js","../../../../../node_modules/lodash/_basePropertyOf.js","../../../../../node_modules/lodash/_deburrLetter.js","../../../../../node_modules/lodash/deburr.js","../../../../../node_modules/lodash/_asciiWords.js","../../../../../node_modules/lodash/_hasUnicodeWord.js","../../../../../node_modules/lodash/_unicodeWords.js","../../../../../node_modules/lodash/words.js","../../../../../node_modules/lodash/_createCompounder.js","../../../../../node_modules/lodash/snakeCase.js","../../../../../node_modules/lodash/_baseSlice.js","../../../../../node_modules/lodash/_castSlice.js","../../../../../node_modules/lodash/_createCaseFirst.js","../../../../../node_modules/lodash/upperFirst.js","../../../../../node_modules/lodash/capitalize.js","../../../../../node_modules/lodash/camelCase.js","../../../../../node_modules/lodash/mapKeys.js","../../../../../node_modules/toposort/index.js","../../../../../node_modules/yup/lib/util/sortFields.js","../../../../../node_modules/yup/lib/util/sortByKeyOrder.js","../../../../../node_modules/yup/lib/util/makePath.js","../../../../../node_modules/yup/lib/object.js","../../../../../node_modules/yup/lib/array.js","../../../../../node_modules/yup/lib/Lazy.js","../../../../../node_modules/yup/lib/setLocale.js","../../../../../node_modules/yup/lib/index.js","../../../../libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","../../../../libs/shared/src/images/svg/actions/VisibleOffSvg.tsx","../../../../libs/shared/src/images/svg/actions/VisibleOnSvg.tsx","../../../../libs/shared/src/utils/FormHelper.ts","../../../../libs/shared/src/components/forms/form-field/CharacterCounter.tsx","../../../../libs/shared/src/components/forms/form-field/form-field.module.scss","../../../../libs/shared/src/components/forms/form-field/FormField.tsx","../../../../libs/shared/src/views/feedback/constants/FeedbackFormValidation.ts","../../../../libs/shared/src/views/feedback/components/forms/give-praise/GivePraise.tsx","../../../../libs/shared/src/views/feedback/components/forms/other/Other.tsx","../../../../libs/shared/src/views/feedback/components/forms/raise-issue/RaiseIssue.tsx","../../../../libs/shared/src/constants/ContactDetails.ts","../../../../libs/shared/src/images/svg/objects/EmailSvg.tsx","../../../../libs/shared/src/images/svg/objects/PhoneSvg.tsx","../../../../../node_modules/tslib/tslib.es6.mjs","../../../../../node_modules/file-selector/dist/es5/file.js","../../../../../node_modules/file-selector/dist/es5/file-selector.js","../../../../../node_modules/attr-accept/dist/es/index.js","../../../../../node_modules/react-dropzone/dist/es/utils/index.js","../../../../../node_modules/react-dropzone/dist/es/index.js","../../../../libs/shared/src/components/forms/form-feedback/FormFeedback.tsx","../../../../libs/shared/src/enums/UploadInteractionType.ts","../../../../libs/shared/src/views/feedback/components/feedback-file-upload/file-select.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-file-upload/FeedbackFileUpload.tsx","../../../../libs/shared/src/views/feedback/components/feedback-upload-list/feedback-upload-list.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-upload-list/FeedbackUploadList.tsx","../../../../libs/shared/src/images/svg/actions/DeleteSvg.tsx","../../../../libs/shared/src/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList.tsx","../../../../libs/shared/src/views/feedback/components/forms/report-bug/ReportBug.tsx","../../../../libs/shared/src/utils/MasterTypeHelper.ts","../../../../libs/shared/src/apps/share/components/white-avatar/white-avatar.module.scss","../../../../libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.module.scss","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/recipient-item.module.scss","../../../../libs/shared/src/apps/share/components/recipient-item/classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/classroom-recipient-item-metadata/ClassroomRecipientItemMetadata.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/RecipientItem.tsx","../../../../libs/shared/src/components/typeahead-error-state/typeahead-error-state.module.scss","../../../../libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/tokenized-typeahead.module.scss","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/TokenizedTypeahead.tsx","../../../../libs/shared/src/views/feedback/components/forms/request-livestream/RequestLivestream.tsx","../../../../libs/shared/src/views/feedback/components/forms/request-video/before-requesting/before-requesting.module.scss","../../../../libs/shared/src/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting.tsx","../../../../libs/shared/src/views/feedback/components/forms/request-video/RequestVideo.tsx","../../../../libs/shared/src/views/feedback/components/forms/suggest-improvement/SuggestImprovement.tsx","../../../../libs/shared/src/views/feedback/components/forms/FeedbackForm.tsx","../../../../libs/shared/src/views/feedback/views/give-feedback/GiveFeedbackView.tsx"],"sourcesContent":["export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}\n","export enum PresentationType {\n Subject = 'Subject',\n Curriculum = 'Curriculum',\n StreamableLearning = 'StreamableLearning'\n}\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\n\nexport const AudienceRequests = {\n presentationAudiences(presentationType: PresentationType, presentationId?: string): Flight.PublicRequest {\n const requestOpts = {\n type: presentationType\n };\n\n return {\n bootstrapName: 'presentationAudiences',\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/audiences', requestOpts),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentation/${presentationId}/audiences`, requestOpts),\n regionScoped: true,\n key: `presentation:audiences:${presentationId}:${presentationType}`,\n normalize: false\n };\n },\n\n audiencesByPresentationId(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}/audiences`,\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentation/${presentationId}/audiences`, {\n type: PresentationType.Subject.toLowerCase(),\n presentationId\n }),\n key: `presentation:${presentationId}:audiences`,\n normalize: false\n };\n }\n};\n","export enum ClassificationMemberType {\n Playlists = 'playlists',\n Series = 'series',\n Videos = 'videos',\n PinnedVideos = 'pinnedVideos'\n}\n","// Maps to enum in SubjectApi but uses the\n// key rather than the value\nexport enum ClassificationType {\n Subject = 'Subject',\n Hub = 'Hub',\n CurriculumAudience = 'CurriculumAudience',\n CurriculumSubject = 'CurriculumSubject',\n CurriculumArea = 'CurriculumArea',\n CurriculumLeaf = 'CurriculumLeaf',\n CurriculumMetadata = 'CurriculumMetadata'\n}\n","import { HashObject } from 'libs/common/react/interfaces';\n\nexport const THEME_ASSET_KEYS = [ 'banner', 'cover', 'thumbnail', 'tallPoster', 'icon' ] as const;\n\nexport const ThemeAssetHelper = {\n applyThemeAssets<T extends HashObject>(data: T): T {\n if (Array.isArray(data)) {\n return data.map(ThemeAssetHelper.applyThemeToClassification) as unknown as T;\n }\n\n if (Array.isArray(data?.data)) {\n return { ...data, data: data.data.map(ThemeAssetHelper.applyThemeToClassification) };\n }\n\n return ThemeAssetHelper.applyThemeToClassification(data) as T;\n },\n\n applyThemeToClassification(classification: HashObject): HashObject {\n const themeValue = classification._theme?.value;\n if (!themeValue) return classification;\n\n const overrides: HashObject = {};\n for (const key of THEME_ASSET_KEYS) {\n if (themeValue[key]) {\n overrides[key] = themeValue[key];\n }\n }\n\n return { ...classification, ...overrides };\n }\n};\n","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { PlaylistCollection, RegionAlternative, SeriesCollection } from 'libs/shared/interfaces';\nimport { ThemeAssetHelper } from 'libs/shared/utils/ThemeAssetHelper';\n\nconst getClassificationMemberFilter = (ids: string[]) => `subjectpresentationaudiences.id:[${ids.join(',')}]`;\n\nexport const ClassificationRequests = {\n topicsFromAllAvailablePresentations(ids: string[]): Flight.PublicRequest {\n const params = { filterType: 'topics', presentationId: ids };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/search/filters', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/filters', params),\n key: 'classification:availableTopics',\n normalize: false\n };\n },\n\n availablePresentations(type?: PresentationType): Flight.PublicRequest {\n const queryStringOpts = { type: type?.toLowerCase() };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations/available', queryStringOpts),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/presentations/available', queryStringOpts),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n hubTopics(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}/types/hub/classifications`,\n publicUrl: `/api/subjects/presentations/${presentationId}/types/hub/classifications`,\n key: `presentation:${presentationId}:hub:classifications`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n topLevelTopics(presentationId: string): Flight.PublicRequest {\n const params = {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n sort: 'alphabetical',\n type: ClassificationType.Subject.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/presentations/${presentationId}/classifications`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/classifications`, params),\n key: `presentation:${presentationId}:classifications`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n presentationById(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}`,\n publicUrl: `/api/subjects/presentations/${presentationId}`,\n regionScoped: true,\n key: `presentation:${presentationId}`\n };\n },\n\n presentationBySlug(presentationSlug: string, contentRegion: string, type: PresentationType): Flight.PublicRequest {\n const params = {\n type: type.toLowerCase(),\n contentRegion: contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n key: `current:presentation:${type.toLowerCase()}:${contentRegion}:${presentationSlug ?? ''}`,\n bootstrapName: 'presentation',\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n presentation(type: PresentationType, presentationId?: string): Flight.PublicRequest {\n const params = {\n type: type?.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations', params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}`, params),\n regionScoped: true,\n key: `current:presentation${type ? `:${type.toLowerCase()}` : ''}${presentationId ? `:${presentationId}` : ''}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n classifications(): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications', {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/classifications', {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n key: `classifications`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n classification(id: string, userId?: string, error?: (xhr: Xhr) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}`, {\n query: SharedWithStatements.CLASSIFICATION(userId)\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}`, {\n query: PublicWithStatement.CLASSIFICATION\n }),\n key: `classification:${id}`,\n formatData: ThemeAssetHelper.applyThemeAssets,\n error\n };\n },\n\n classificationPreview(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/preview`,\n key: `classification:preview:${id}`\n };\n },\n\n path(id: string, presentationType?: PresentationType): Flight.PublicRequest {\n const params = { type: presentationType };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/path`, params),\n publicUrl: `/api/subjects/classifications/${id}/path`,\n key: `classification:${id}:path`\n };\n },\n\n paths(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/paths`,\n key: `classification:${id}:paths`\n };\n },\n\n children(id: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/children`, {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/children`, {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION\n }),\n key: `classification:${id}:children`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n videos(\n id: string,\n presentationId: string,\n activeAudiences: string[]\n ): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderbydesc:timestamp';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}(videoCollection),subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.PinnedVideos}:${activeAudiences.join(':')}`\n };\n },\n\n /**\n * This request should only be used when displaying the playlist widget within a classification/topic page.\n * The current behaviour is to filter out any playlist that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderby:name';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`,\n formatData: (playlist: PlaylistCollection): PlaylistCollection => {\n if (!playlist)\n return;\n\n return {\n ...playlist,\n data: playlist.data?.filter(p => p.cover?.url)\n };\n }\n };\n },\n\n /**\n * This request should only be used when displaying the series widget within a classification/topic page.\n * The current behaviour is to filter out any series that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.SERIES}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`,\n formatData: (series: SeriesCollection): SeriesCollection => {\n if (!series)\n return;\n\n return {\n ...series,\n data: series.data?.filter(s => s.tallPoster?.url)\n };\n }\n };\n },\n\n curriculumLinks(id: string, curriculumId: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n regionScoped: true,\n key: `curriculum:links:${id}:${curriculumId}`,\n normalize: false\n };\n },\n\n subjectLinks(id: string, presentationId: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Subject.toLowerCase()\n });\n\n return {\n url,\n publicUrl: url,\n key: `subject:links:${id}:${presentationId}`,\n normalize: false\n };\n },\n\n getMappedCurriculums(\n id: string,\n pids: string[]\n ): Flight.PublicRequest {\n const params: HashObject = {\n type: PresentationType.Curriculum.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/presentations`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/${id}/presentations`, { ...params, pid: pids }),\n regionScoped: true,\n key: `mapped:curriculums:${id}:${pids.join(',')}`,\n normalize: false\n };\n },\n\n regionAlternatives(\n classificationId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n publicUrl: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n key: `classification:regionAlternatives:${classificationId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\n/**\n * Hook used to listen to updates on a Backbone Collection\n * and trigger a re-render.\n */\nexport function useGetCollectionItems<T>(\n getCollection: () => Core.Collection,\n onRemove?: () => void,\n dependencies: React.DependencyList = []\n): T[] {\n const [ , setUpdate ] = React.useState(false);\n\n React.useEffect(() => {\n const collection = getCollection();\n\n if (!collection)\n return;\n\n collection.off('add remove change');\n collection.on('add remove change', () => {\n setUpdate(s => !s);\n });\n if (onRemove)\n collection.on('remove', onRemove);\n return () => { collection.off('add remove change'); };\n }, dependencies);\n\n return getCollection()?.toJSON();\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.studentRestrictedDialogError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport class StudentRestrictedDialogError extends DialogError {\n constructor() {\n super('Learner accessing feature that is for staff only');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'StudentRestrictedDialogError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: getPhrase('heading'),\n text: getPhrase('description'),\n buttons: [{\n text: getPhrase('close'),\n className: 'btn btn-link',\n close: true\n }]\n };\n }\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { StudentRestrictedDialogError } from 'libs/shared/errors/general/student-restricted/StudentRestrictedDialogError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Logger } from 'libs/shared/utils/Logger';\n\nexport function useStudentRestrictedDialogError(): void {\n const { hasPermissions, isLoaded } = usePermissions();\n React.useEffect(() => {\n if (!isLoaded)\n return;\n\n if (!hasPermissions(PermissionName.StudentExperience))\n return;\n\n const error = new StudentRestrictedDialogError();\n Logger.logError(error);\n Core.ErrorHelper.throw(error);\n }, [isLoaded]);\n}\n","export enum CountryCode {\n AU = 'au',\n NZ = 'nz',\n UK = 'uk',\n US = 'us',\n CA = 'ca'\n}\n","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nconst COUNTRY_CODE_TAGS: {[key in CountryCode]: string } = {\n [CountryCode.AU]: 'au',\n [CountryCode.NZ]: 'nz',\n [CountryCode.UK]: 'uk',\n [CountryCode.US]: 'us',\n [CountryCode.CA]: 'ca'\n};\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion,\n firstName: currentUser.givenName,\n lastName: currentUser.familyName\n };\n },\n\n mapCountryCodeToTag: (countryCode: CountryCode): string => {\n return COUNTRY_CODE_TAGS[countryCode.toLowerCase() as CountryCode];\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const countryCodeTag = FeedbackFormHelper.mapCountryCodeToTag(currentUser.countryCode);\n \n if (countryCodeTag)\n tags.push(countryCodeTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};\n","export enum FeedbackOption {\n SUGGEST_IMPROVEMENT = 'suggestImprovement',\n REPORT_BUG = 'reportBug',\n REQUEST_VIDEO = 'requestVideo',\n REQUEST_LIVESTREAM = 'requestLivestream',\n GIVE_PRAISE = 'givePraise',\n RAISE_ISSUE = 'raiseIssue',\n OTHER = 'other'\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nconst namespace = 'shared.feedbackFormTitles';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getFeedbackFormTitles = (feedbackOption: FeedbackOption) => {\n switch (feedbackOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return getPhrase(feedbackOption);\n case FeedbackOption.REPORT_BUG: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_VIDEO: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_LIVESTREAM: return getPhrase(feedbackOption);\n case FeedbackOption.GIVE_PRAISE: return getPhrase(feedbackOption);\n case FeedbackOption.RAISE_ISSUE: return getPhrase(feedbackOption);\n case FeedbackOption.OTHER: return getPhrase(feedbackOption);\n }\n};\n","import { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nexport const FEEDBACK_IMAGE_URLS = {\n mailSent: 'https://img.clickviewapp.com/v2/images/2mZ7L9',\n mediaPreview: 'https://img.clickviewapp.com/v2/images/ageRM0',\n lightBulb: 'https://img.clickviewapp.com/v2/images/Oqg3JN',\n heartHands: 'https://img.clickviewapp.com/v2/images/1ML8Oj',\n videoAlert: 'https://img.clickviewapp.com/v2/images/dq2oMq',\n\n [FeedbackOption.REQUEST_VIDEO]: {\n default: 'https://img.clickviewapp.com/v2/images/G1YGdn',\n hover: 'https://img.clickviewapp.com/v2/images/K6yPxz'\n },\n [FeedbackOption.REQUEST_LIVESTREAM]: {\n default: 'https://img.clickviewapp.com/v2/images/G1YGdn',\n hover: 'https://img.clickviewapp.com/v2/images/K6yPxz'\n },\n [FeedbackOption.SUGGEST_IMPROVEMENT]: {\n default: 'https://img.clickviewapp.com/v2/images/g7aR1l',\n hover: 'https://img.clickviewapp.com/v2/images/zMR0Dk'\n },\n [FeedbackOption.RAISE_ISSUE]: {\n default: 'https://img.clickviewapp.com/v2/images/5boW78',\n hover: 'https://img.clickviewapp.com/v2/images/m6yRKr'\n },\n [FeedbackOption.GIVE_PRAISE]: {\n default: 'https://img.clickviewapp.com/v2/images/nE1mdz',\n hover: 'https://img.clickviewapp.com/v2/images/JjEnmR'\n },\n [FeedbackOption.REPORT_BUG]: {\n default: 'https://img.clickviewapp.com/v2/images/AOdYpo',\n hover: 'https://img.clickviewapp.com/v2/images/yro9NM'\n },\n [FeedbackOption.OTHER]: {\n default: 'https://img.clickviewapp.com/v2/images/Eoaykj',\n hover: 'https://img.clickviewapp.com/v2/images/wN59Zg'\n }\n};\n",":local {\n .image {\n height: 6.25rem;\n }\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './feedback-selector.module.scss';\n\ninterface FeedbackSelectorOptionProps {\n option: FeedbackOption;\n onSelectOption?: (option: FeedbackOption) => void;\n}\n\nfunction FeedbackSelectorOption(props: FeedbackSelectorOptionProps) {\n const [ ref, isHovering ] = useHover<HTMLImageElement>();\n\n const feedbackImage = FEEDBACK_IMAGE_URLS[props.option];\n\n return (\n <DivButton ref={ref} className='col-lg-4 col-sm-6 col-12' onClick={() => props.onSelectOption(props.option)}>\n <div className='d-flex flex-column align-items-center h-100 rounded border py-3 gap-2'>\n <img\n className={styles.image}\n src={(isHovering ? feedbackImage.hover : feedbackImage.default)}\n alt={getFeedbackFormTitles(props.option)}\n />\n \n <p className='fw-semibold text-center mb-0'>{getFeedbackFormTitles(props.option)}</p>\n </div>\n </DivButton>\n );\n}\n\ninterface FeedbackSelectorProps {\n options: FeedbackOption[];\n onSelectOption: (option: FeedbackOption) => void;\n}\n\nexport function FeedbackSelector(props: FeedbackSelectorProps) {\n return (\n <div className='row g-2'>\n {props.options.map(option =>\n <FeedbackSelectorOption key={option} option={option} onSelectOption={props.onSelectOption} />)}\n </div>\n );\n}\n","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean,\n errors?: FormikErrors<FormValues>\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema ?\n props.validationSchema.cast(omitNullInitialValues(initialValues)) :\n initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema ?\n props.validationSchema.cast(values) :\n values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children) ?\n (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f) :\n React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackButtonsProps {\n submitText?: string;\n formStage: FeedbackFormStage;\n setSelectedOption: (option: FeedbackOption) => void;\n closePopup?: () => void;\n hideCancelButton?: boolean;\n}\n\nexport function FeedbackButtons(props: FeedbackButtonsProps) {\n const formikProps = useFormikContextWrapper();\n\n return (\n <PopupButtons>\n {props.formStage === 'form' && (\n <>\n {!props.hideCancelButton &&\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('cancel')} />\n }\n <PopupButtons.Submit variant='dark' text={props.submitText || getPhrase('submit')} disabled={!formikProps.isValid} />\n </>\n )}\n \n {props.formStage === 'success' && (\n <PopupButtons.Cancel variant='dark' text={getPhrase('close')} onClick={props.closePopup} />\n )}\n </PopupButtons>\n );\n}\n",":local {\n .successImage {\n height: 9.5rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nimport styles from './feedback-form-state.module.scss';\n\nconst namespace = 'shared.feedbackFormState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackFormStateProps {\n formStage: FeedbackFormStage;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n}\n\nexport function FeedbackFormState(props: FeedbackFormStateProps) {\n if (props.formStage === 'form') return <></>;\n\n if (props.formStage === 'error') return <></>;\n\n return (\n <div className='text-center'>\n <div className='mb-3'>\n <img className={styles.successImage} src={props.successImageUrl || FEEDBACK_IMAGE_URLS.mailSent} />\n </div>\n <h4 className='mb-3'>{props.successHeading || getPhrase('successHeading')}</h4>\n <p className='mb-3'>{props.successDescription || getPhrase('successDescription')}</p>\n </div>\n );\n}\n","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nmodule.exports = cloneDeepWith;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = printValue;\nvar toString = Object.prototype.toString;\nvar errorToString = Error.prototype.toString;\nvar regExpToString = RegExp.prototype.toString;\nvar symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : function () {\n return '';\n};\nvar SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n var isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings) {\n if (quoteStrings === void 0) {\n quoteStrings = false;\n }\n\n if (val == null || val === true || val === false) return '' + val;\n var typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? \"\\\"\" + val + \"\\\"\" : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n var tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nfunction printValue(value, quoteStrings) {\n var result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n var result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.array = exports.object = exports.boolean = exports.date = exports.number = exports.string = exports.mixed = void 0;\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: function notType(_ref) {\n var path = _ref.path,\n type = _ref.type,\n value = _ref.value,\n originalValue = _ref.originalValue;\n var isCast = originalValue != null && originalValue !== value;\n var msg = path + \" must be a `\" + type + \"` type, \" + (\"but the final value was: `\" + (0, _printValue.default)(value, true) + \"`\") + (isCast ? \" (cast from the value `\" + (0, _printValue.default)(originalValue, true) + \"`).\" : '.');\n\n if (value === null) {\n msg += \"\\n If \\\"null\\\" is intended as an empty value be sure to mark the schema as `.nullable()`\";\n }\n\n return msg;\n }\n};\nexports.mixed = mixed;\nvar string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexports.string = string;\nvar number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n notEqual: '${path} must be not equal to ${notEqual}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexports.number = number;\nvar date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexports.date = date;\nvar boolean = {};\nexports.boolean = boolean;\nvar object = {\n noUnknown: '${path} field cannot have keys not specified in the object shape'\n};\nexports.object = object;\nvar array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items'\n};\nexports.array = array;\nvar _default = {\n mixed: mixed,\n string: string,\n number: number,\n date: date,\n object: object,\n array: array,\n boolean: boolean\n};\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = function _default(obj) {\n return obj && obj.__isYupSchema__;\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar Condition =\n/*#__PURE__*/\nfunction () {\n function Condition(refs, options) {\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!(0, _has.default)(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n var is = options.is,\n then = options.then,\n otherwise = options.otherwise;\n var check = typeof is === 'function' ? is : function () {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.every(function (value) {\n return value === is;\n });\n };\n\n this.fn = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var options = args.pop();\n var schema = args.pop();\n var branch = check.apply(void 0, args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n var _proto = Condition.prototype;\n\n _proto.resolve = function resolve(base, options) {\n var values = this.refs.map(function (ref) {\n return ref.getValue(options);\n });\n var schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!(0, _isSchema.default)(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n };\n\n return Condition;\n}();\n\nvar _default = Condition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* jshint node: true */\n\"use strict\";\n\nfunction makeArrayFrom(obj) {\n return Array.prototype.slice.apply(obj);\n}\n\nvar\n PENDING = \"pending\",\n RESOLVED = \"resolved\",\n REJECTED = \"rejected\";\n\nfunction SynchronousPromise(handler) {\n this.status = PENDING;\n this._continuations = [];\n this._parent = null;\n this._paused = false;\n if (handler) {\n handler.call(\n this,\n this._continueWith.bind(this),\n this._failWith.bind(this)\n );\n }\n}\n\nfunction looksLikeAPromise(obj) {\n return obj && typeof (obj.then) === \"function\";\n}\n\nfunction passThrough(value) {\n return value;\n}\n\nSynchronousPromise.prototype = {\n then: function (nextFn, catchFn) {\n var next = SynchronousPromise.unresolved()._setParent(this);\n if (this._isRejected()) {\n if (this._paused) {\n this._continuations.push({\n promise: next,\n nextFn: nextFn,\n catchFn: catchFn\n });\n return next;\n }\n if (catchFn) {\n try {\n var catchResult = catchFn(this._error);\n if (looksLikeAPromise(catchResult)) {\n this._chainPromiseData(catchResult, next);\n return next;\n } else {\n return SynchronousPromise.resolve(catchResult)._setParent(this);\n }\n } catch (e) {\n return SynchronousPromise.reject(e)._setParent(this);\n }\n }\n return SynchronousPromise.reject(this._error)._setParent(this);\n }\n this._continuations.push({\n promise: next,\n nextFn: nextFn,\n catchFn: catchFn\n });\n this._runResolutions();\n return next;\n },\n catch: function (handler) {\n if (this._isResolved()) {\n return SynchronousPromise.resolve(this._data)._setParent(this);\n }\n var next = SynchronousPromise.unresolved()._setParent(this);\n this._continuations.push({\n promise: next,\n catchFn: handler\n });\n this._runRejections();\n return next;\n },\n finally: function (callback) {\n var ran = false;\n\n function runFinally(result, err) {\n if (!ran) {\n ran = true;\n if (!callback) {\n callback = passThrough;\n }\n var callbackResult = callback(result);\n if (looksLikeAPromise(callbackResult)) {\n return callbackResult.then(function () {\n if (err) {\n throw err;\n }\n return result;\n });\n } else {\n if (err) {\n throw err;\n }\n return result;\n }\n }\n }\n\n return this\n .then(function (result) {\n return runFinally(result);\n })\n .catch(function (err) {\n return runFinally(null, err);\n });\n },\n pause: function () {\n this._paused = true;\n return this;\n },\n resume: function () {\n var firstPaused = this._findFirstPaused();\n if (firstPaused) {\n firstPaused._paused = false;\n firstPaused._runResolutions();\n firstPaused._runRejections();\n }\n return this;\n },\n _findAncestry: function () {\n return this._continuations.reduce(function (acc, cur) {\n if (cur.promise) {\n var node = {\n promise: cur.promise,\n children: cur.promise._findAncestry()\n };\n acc.push(node);\n }\n return acc;\n }, []);\n },\n _setParent: function (parent) {\n if (this._parent) {\n throw new Error(\"parent already set\");\n }\n this._parent = parent;\n return this;\n },\n _continueWith: function (data) {\n var firstPending = this._findFirstPending();\n if (firstPending) {\n firstPending._data = data;\n firstPending._setResolved();\n }\n },\n _findFirstPending: function () {\n return this._findFirstAncestor(function (test) {\n return test._isPending && test._isPending();\n });\n },\n _findFirstPaused: function () {\n return this._findFirstAncestor(function (test) {\n return test._paused;\n });\n },\n _findFirstAncestor: function (matching) {\n var test = this;\n var result;\n while (test) {\n if (matching(test)) {\n result = test;\n }\n test = test._parent;\n }\n return result;\n },\n _failWith: function (error) {\n var firstRejected = this._findFirstPending();\n if (firstRejected) {\n firstRejected._error = error;\n firstRejected._setRejected();\n }\n },\n _takeContinuations: function () {\n return this._continuations.splice(0, this._continuations.length);\n },\n _runRejections: function () {\n if (this._paused || !this._isRejected()) {\n return;\n }\n var\n error = this._error,\n continuations = this._takeContinuations(),\n self = this;\n continuations.forEach(function (cont) {\n if (cont.catchFn) {\n try {\n var catchResult = cont.catchFn(error);\n self._handleUserFunctionResult(catchResult, cont.promise);\n } catch (e) {\n cont.promise.reject(e);\n }\n } else {\n cont.promise.reject(error);\n }\n });\n },\n _runResolutions: function () {\n if (this._paused || !this._isResolved() || this._isPending()) {\n return;\n }\n var continuations = this._takeContinuations();\n var data = this._data;\n var self = this;\n continuations.forEach(function (cont) {\n if (cont.nextFn) {\n try {\n var result = cont.nextFn(data);\n self._handleUserFunctionResult(result, cont.promise);\n } catch (e) {\n self._handleResolutionError(e, cont);\n }\n } else if (cont.promise) {\n cont.promise.resolve(data);\n }\n });\n if (looksLikeAPromise(this._data)) {\n return this._handleWhenResolvedDataIsPromise(this._data);\n }\n },\n _handleResolutionError: function (e, continuation) {\n this._setRejected();\n if (continuation.catchFn) {\n try {\n continuation.catchFn(e);\n return;\n } catch (e2) {\n e = e2;\n }\n }\n if (continuation.promise) {\n continuation.promise.reject(e);\n }\n },\n _handleWhenResolvedDataIsPromise: function (data) {\n var self = this;\n return data.then(function (result) {\n self._data = result;\n self._runResolutions();\n }).catch(function (error) {\n self._error = error;\n self._setRejected();\n self._runRejections();\n });\n },\n _handleUserFunctionResult: function (data, nextSynchronousPromise) {\n if (looksLikeAPromise(data)) {\n this._chainPromiseData(data, nextSynchronousPromise);\n } else {\n nextSynchronousPromise.resolve(data);\n }\n },\n _chainPromiseData: function (promiseData, nextSynchronousPromise) {\n promiseData.then(function (newData) {\n nextSynchronousPromise.resolve(newData);\n }).catch(function (newError) {\n nextSynchronousPromise.reject(newError);\n });\n },\n _setResolved: function () {\n this.status = RESOLVED;\n if (!this._paused) {\n this._runResolutions();\n }\n },\n _setRejected: function () {\n this.status = REJECTED;\n if (!this._paused) {\n this._runRejections();\n }\n },\n _isPending: function () {\n return this.status === PENDING;\n },\n _isResolved: function () {\n return this.status === RESOLVED;\n },\n _isRejected: function () {\n return this.status === REJECTED;\n }\n};\n\nSynchronousPromise.resolve = function (result) {\n return new SynchronousPromise(function (resolve, reject) {\n if (looksLikeAPromise(result)) {\n result.then(function (newResult) {\n resolve(newResult);\n }).catch(function (error) {\n reject(error);\n });\n } else {\n resolve(result);\n }\n });\n};\n\nSynchronousPromise.reject = function (result) {\n return new SynchronousPromise(function (resolve, reject) {\n reject(result);\n });\n};\n\nSynchronousPromise.unresolved = function () {\n return new SynchronousPromise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n};\n\nSynchronousPromise.all = function () {\n var args = makeArrayFrom(arguments);\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n if (!args.length) {\n return SynchronousPromise.resolve([]);\n }\n return new SynchronousPromise(function (resolve, reject) {\n var\n allData = [],\n numResolved = 0,\n doResolve = function () {\n if (numResolved === args.length) {\n resolve(allData);\n }\n },\n rejected = false,\n doReject = function (err) {\n if (rejected) {\n return;\n }\n rejected = true;\n reject(err);\n };\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n allData[idx] = thisResult;\n numResolved += 1;\n doResolve();\n }).catch(function (err) {\n doReject(err);\n });\n });\n });\n};\n\nfunction createAggregateErrorFrom(errors) {\n /* jshint ignore:start */\n if (typeof window !== \"undefined\" && \"AggregateError\" in window) {\n return new window.AggregateError(errors);\n }\n /* jshint ignore:end */\n\n return { errors: errors };\n}\n\nSynchronousPromise.any = function () {\n var args = makeArrayFrom(arguments);\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n if (!args.length) {\n return SynchronousPromise.reject(createAggregateErrorFrom([]));\n }\n return new SynchronousPromise(function (resolve, reject) {\n var\n allErrors = [],\n numRejected = 0,\n doReject = function () {\n if (numRejected === args.length) {\n reject(createAggregateErrorFrom(allErrors));\n }\n },\n resolved = false,\n doResolve = function (result) {\n if (resolved) {\n return;\n }\n resolved = true;\n resolve(result);\n };\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n doResolve(thisResult);\n }).catch(function (err) {\n allErrors[idx] = err;\n numRejected += 1;\n doReject();\n });\n });\n });\n};\n\nSynchronousPromise.allSettled = function () {\n var args = makeArrayFrom(arguments);\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n if (!args.length) {\n return SynchronousPromise.resolve([]);\n }\n return new SynchronousPromise(function (resolve) {\n var\n allData = [],\n numSettled = 0,\n doSettled = function () {\n numSettled += 1;\n if (numSettled === args.length) {\n resolve(allData);\n }\n };\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n allData[idx] = {\n status: \"fulfilled\",\n value: thisResult\n };\n doSettled();\n }).catch(function (err) {\n allData[idx] = {\n status: \"rejected\",\n reason: err\n };\n doSettled();\n });\n });\n });\n};\n\n/* jshint ignore:start */\nif (Promise === SynchronousPromise) {\n throw new Error(\"Please use SynchronousPromise.installGlobally() to install globally\");\n}\nvar RealPromise = Promise;\nSynchronousPromise.installGlobally = function (__awaiter) {\n if (Promise === SynchronousPromise) {\n return __awaiter;\n }\n var result = patchAwaiterIfRequired(__awaiter);\n Promise = SynchronousPromise;\n return result;\n};\n\nSynchronousPromise.uninstallGlobally = function () {\n if (Promise === SynchronousPromise) {\n Promise = RealPromise;\n }\n};\n\nfunction patchAwaiterIfRequired(__awaiter) {\n if (typeof (__awaiter) === \"undefined\" || __awaiter.__patched) {\n return __awaiter;\n }\n var originalAwaiter = __awaiter;\n __awaiter = function () {\n var Promise = RealPromise;\n originalAwaiter.apply(this, makeArrayFrom(arguments));\n };\n __awaiter.__patched = true;\n return __awaiter;\n}\n\n/* jshint ignore:end */\n\nmodule.exports = {\n SynchronousPromise: SynchronousPromise\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = ValidationError;\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\n\nvar replace = function replace(str) {\n return function (params) {\n return str.replace(strReg, function (_, key) {\n return (0, _printValue.default)(params[key]);\n });\n };\n};\n\nfunction ValidationError(errors, value, field, type) {\n var _this = this;\n\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n if (errors) [].concat(errors).forEach(function (err) {\n _this.errors = _this.errors.concat(err.errors || err);\n if (err.inner) _this.inner = _this.inner.concat(err.inner.length ? err.inner : err);\n });\n this.message = this.errors.length > 1 ? this.errors.length + \" errors occurred\" : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n}\n\nValidationError.prototype = Object.create(Error.prototype);\nValidationError.prototype.constructor = ValidationError;\n\nValidationError.isError = function (err) {\n return err && err.name === 'ValidationError';\n};\n\nValidationError.formatError = function (message, params) {\n if (typeof message === 'string') message = replace(message);\n\n var fn = function fn(params) {\n params.path = params.label || params.path || 'this';\n return typeof message === 'function' ? message(params) : message;\n };\n\n return arguments.length === 1 ? fn : fn(params);\n};\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.propagateErrors = propagateErrors;\nexports.settled = settled;\nexports.collectErrors = collectErrors;\nexports.default = runValidations;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _synchronousPromise = require(\"synchronous-promise\");\n\nvar _ValidationError = _interopRequireDefault(require(\"../ValidationError\"));\n\nvar promise = function promise(sync) {\n return sync ? _synchronousPromise.SynchronousPromise : Promise;\n};\n\nvar unwrapError = function unwrapError(errors) {\n if (errors === void 0) {\n errors = [];\n }\n\n return errors.inner && errors.inner.length ? errors.inner : [].concat(errors);\n};\n\nfunction scopeToValue(promises, value, sync) {\n //console.log('scopeToValue', promises, value)\n var p = promise(sync).all(promises); //console.log('scopeToValue B', p)\n\n var b = p.catch(function (err) {\n if (err.name === 'ValidationError') err.value = value;\n throw err;\n }); //console.log('scopeToValue c', b)\n\n var c = b.then(function () {\n return value;\n }); //console.log('scopeToValue d', c)\n\n return c;\n}\n/**\n * If not failing on the first error, catch the errors\n * and collect them in an array\n */\n\n\nfunction propagateErrors(endEarly, errors) {\n return endEarly ? null : function (err) {\n errors.push(err);\n return err.value;\n };\n}\n\nfunction settled(promises, sync) {\n var Promise = promise(sync);\n return Promise.all(promises.map(function (p) {\n return Promise.resolve(p).then(function (value) {\n return {\n fulfilled: true,\n value: value\n };\n }, function (value) {\n return {\n fulfilled: false,\n value: value\n };\n });\n }));\n}\n\nfunction collectErrors(_ref) {\n var validations = _ref.validations,\n value = _ref.value,\n path = _ref.path,\n sync = _ref.sync,\n errors = _ref.errors,\n sort = _ref.sort;\n errors = unwrapError(errors);\n return settled(validations, sync).then(function (results) {\n var nestedErrors = results.filter(function (r) {\n return !r.fulfilled;\n }).reduce(function (arr, _ref2) {\n var error = _ref2.value;\n\n // we are only collecting validation errors\n if (!_ValidationError.default.isError(error)) {\n throw error;\n }\n\n return arr.concat(error);\n }, []);\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n errors = nestedErrors.concat(errors);\n if (errors.length) throw new _ValidationError.default(errors, value, path);\n return value;\n });\n}\n\nfunction runValidations(_ref3) {\n var endEarly = _ref3.endEarly,\n options = (0, _objectWithoutPropertiesLoose2.default)(_ref3, [\"endEarly\"]);\n if (endEarly) return scopeToValue(options.validations, options.value, options.sync);\n return collectErrors(options);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = prependDeep;\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./isSchema\"));\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nfunction prependDeep(target, source) {\n for (var key in source) {\n if ((0, _has.default)(source, key)) {\n var sourceVal = source[key],\n targetVal = target[key];\n\n if (targetVal === undefined) {\n target[key] = sourceVal;\n } else if (targetVal === sourceVal) {\n continue;\n } else if ((0, _isSchema.default)(targetVal)) {\n if ((0, _isSchema.default)(sourceVal)) target[key] = sourceVal.concat(targetVal);\n } else if (isObject(targetVal)) {\n if (isObject(sourceVal)) target[key] = prependDeep(targetVal, sourceVal);\n } else if (Array.isArray(targetVal)) {\n if (Array.isArray(sourceVal)) target[key] = sourceVal.concat(targetVal);\n }\n }\n }\n\n return target;\n}\n\nmodule.exports = exports[\"default\"];","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function() {\n this._size = 0\n this._values = {}\n}\nCache.prototype.get = function(key) {\n return this._values[key]\n}\nCache.prototype.set = function(key, value) {\n this._size >= this._maxSize && this.clear()\n if (!this._values.hasOwnProperty(key)) {\n this._size++\n }\n return this._values[key] = value\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar contentSecurityPolicy = false,\n pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\ntry {\n new Function('')\n} catch (error) {\n contentSecurityPolicy = true\n}\n\nmodule.exports = {\n Cache: Cache,\n\n expr: expr,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: contentSecurityPolicy\n ? function(path) {\n var parts = normalizePath(path)\n return function(data, value) {\n return setterFallback(parts, data, value)\n }\n }\n : function(path) {\n return setCache.get(path) || setCache.set(\n path,\n new Function(\n 'data, value',\n expr(path, 'data') + ' = value'\n )\n )\n },\n\n getter: contentSecurityPolicy\n ? function(path, safe) {\n var parts = normalizePath(path)\n return function(data) {\n return getterFallback(parts, safe, data)\n }\n }\n : function(path, safe) {\n var key = path + '_' + safe\n return getCache.get(key) || getCache.set(\n key,\n new Function('data', 'return ' + expr(path, safe, 'data'))\n )\n },\n\n join: function(segments) {\n return segments.reduce(function(path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function(path, cb, thisArg) {\n forEach(split(path), cb, thisArg)\n }\n}\n\nfunction setterFallback(parts, data, value) {\n var index = 0,\n len = parts.length\n while (index < len - 1) {\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n}\n\nfunction getterFallback(parts, safe, data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) {\n data = data[parts[index++]]\n } else {\n return\n }\n }\n return data\n}\n\nfunction normalizePath(path) {\n return pathCache.get(path) || pathCache.set(\n path,\n split(path).map(function(part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX)\n}\n\nfunction expr(expression, safe, param) {\n expression = expression || ''\n\n if (typeof safe === 'string') {\n param = safe\n safe = false\n }\n\n param = param || 'data'\n\n if (expression && expression.charAt(0) !== '[') expression = '.' + expression\n\n return safe ? makeSafe(expression, param) : param + expression\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction makeSafe(path, param) {\n var result = param,\n parts = split(path),\n isLast\n\n forEach(parts, function(part, isBracket, isArray, idx, parts) {\n isLast = idx === parts.length - 1\n\n part = isBracket || isArray ? '[' + part + ']' : '.' + part\n\n result += part + (!isLast ? ' || {})' : ')')\n })\n\n return new Array(parts.length + 1).join('(') + result\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar prefixes = {\n context: '$',\n value: '.'\n};\n\nvar Reference =\n/*#__PURE__*/\nfunction () {\n function Reference(key, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n var prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && (0, _propertyExpr.getter)(this.path, true);\n this.map = options.map;\n }\n\n var _proto = Reference.prototype;\n\n _proto.getValue = function getValue(options) {\n var result = this.isContext ? options.context : this.isValue ? options.value : options.parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n };\n\n _proto.cast = function cast(value, options) {\n return this.getValue((0, _extends2.default)({}, options, {\n value: value\n }));\n };\n\n _proto.resolve = function resolve() {\n return this;\n };\n\n _proto.describe = function describe() {\n return {\n type: 'ref',\n key: this.key\n };\n };\n\n _proto.toString = function toString() {\n return \"Ref(\" + this.key + \")\";\n };\n\n Reference.isRef = function isRef(value) {\n return value && value.__isYupRef;\n };\n\n return Reference;\n}();\n\nexports.default = Reference;\nReference.prototype.__isYupRef = true;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.createErrorFactory = createErrorFactory;\nexports.default = createValidation;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _ValidationError = _interopRequireDefault(require(\"../ValidationError\"));\n\nvar _Reference = _interopRequireDefault(require(\"../Reference\"));\n\nvar _synchronousPromise = require(\"synchronous-promise\");\n\nvar formatError = _ValidationError.default.formatError;\n\nvar thenable = function thenable(p) {\n return p && typeof p.then === 'function' && typeof p.catch === 'function';\n};\n\nfunction runTest(testFn, ctx, value, sync) {\n var result = testFn.call(ctx, value);\n if (!sync) return Promise.resolve(result);\n\n if (thenable(result)) {\n throw new Error(\"Validation test of type: \\\"\" + ctx.type + \"\\\" returned a Promise during a synchronous validate. \" + \"This test will finish after the validate call has returned\");\n }\n\n return _synchronousPromise.SynchronousPromise.resolve(result);\n}\n\nfunction resolveParams(oldParams, newParams, resolve) {\n return (0, _mapValues.default)((0, _extends2.default)({}, oldParams, newParams), resolve);\n}\n\nfunction createErrorFactory(_ref) {\n var value = _ref.value,\n label = _ref.label,\n resolve = _ref.resolve,\n originalValue = _ref.originalValue,\n opts = (0, _objectWithoutPropertiesLoose2.default)(_ref, [\"value\", \"label\", \"resolve\", \"originalValue\"]);\n return function createError(_temp) {\n var _ref2 = _temp === void 0 ? {} : _temp,\n _ref2$path = _ref2.path,\n path = _ref2$path === void 0 ? opts.path : _ref2$path,\n _ref2$message = _ref2.message,\n message = _ref2$message === void 0 ? opts.message : _ref2$message,\n _ref2$type = _ref2.type,\n type = _ref2$type === void 0 ? opts.name : _ref2$type,\n params = _ref2.params;\n\n params = (0, _extends2.default)({\n path: path,\n value: value,\n originalValue: originalValue,\n label: label\n }, resolveParams(opts.params, params, resolve));\n return (0, _extends2.default)(new _ValidationError.default(formatError(message, params), value, path, type), {\n params: params\n });\n };\n}\n\nfunction createValidation(options) {\n var name = options.name,\n message = options.message,\n test = options.test,\n params = options.params;\n\n function validate(_ref3) {\n var value = _ref3.value,\n path = _ref3.path,\n label = _ref3.label,\n options = _ref3.options,\n originalValue = _ref3.originalValue,\n sync = _ref3.sync,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_ref3, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n var parent = options.parent;\n\n var resolve = function resolve(item) {\n return _Reference.default.isRef(item) ? item.getValue({\n value: value,\n parent: parent,\n context: options.context\n }) : item;\n };\n\n var createError = createErrorFactory({\n message: message,\n path: path,\n value: value,\n originalValue: originalValue,\n params: params,\n label: label,\n resolve: resolve,\n name: name\n });\n var ctx = (0, _extends2.default)({\n path: path,\n parent: parent,\n type: name,\n createError: createError,\n resolve: resolve,\n options: options\n }, rest);\n return runTest(test, ctx, value, sync).then(function (validOrError) {\n if (_ValidationError.default.isError(validOrError)) throw validOrError;else if (!validOrError) throw createError();\n });\n }\n\n validate.OPTIONS = options;\n return validate;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.getIn = getIn;\nexports.default = void 0;\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar trim = function trim(part) {\n return part.substr(0, part.length - 1).substr(1);\n};\n\nfunction getIn(schema, path, value, context) {\n var parent, lastPart, lastPartDebug; // if only one \"value\" arg then use it for both\n\n context = context || value;\n if (!path) return {\n parent: parent,\n parentPath: path,\n schema: schema\n };\n (0, _propertyExpr.forEach)(path, function (_part, isBracket, isArray) {\n var part = isBracket ? trim(_part) : _part;\n\n if (isArray || (0, _has.default)(schema, '_subType')) {\n // we skipped an array: foo[].bar\n var idx = isArray ? parseInt(part, 10) : 0;\n schema = schema.resolve({\n context: context,\n parent: parent,\n value: value\n })._subType;\n\n if (value) {\n if (isArray && idx >= value.length) {\n throw new Error(\"Yup.reach cannot resolve an array item at index: \" + _part + \", in the path: \" + path + \". \" + \"because there is no value at that index. \");\n }\n\n value = value[idx];\n }\n }\n\n if (!isArray) {\n schema = schema.resolve({\n context: context,\n parent: parent,\n value: value\n });\n if (!(0, _has.default)(schema, 'fields') || !(0, _has.default)(schema.fields, part)) throw new Error(\"The schema does not contain the path: \" + path + \". \" + (\"(failed at: \" + lastPartDebug + \" which is a type: \\\"\" + schema._type + \"\\\") \"));\n schema = schema.fields[part];\n parent = value;\n value = value && value[part];\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n }\n });\n return {\n schema: schema,\n parent: parent,\n parentPath: lastPart\n };\n}\n\nvar reach = function reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n};\n\nvar _default = reach;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = SchemaType;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _cloneDeepWith = _interopRequireDefault(require(\"lodash/cloneDeepWith\"));\n\nvar _toArray2 = _interopRequireDefault(require(\"lodash/toArray\"));\n\nvar _locale = require(\"./locale\");\n\nvar _Condition = _interopRequireDefault(require(\"./Condition\"));\n\nvar _runValidations = _interopRequireDefault(require(\"./util/runValidations\"));\n\nvar _prependDeep = _interopRequireDefault(require(\"./util/prependDeep\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar _createValidation = _interopRequireDefault(require(\"./util/createValidation\"));\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar _Reference = _interopRequireDefault(require(\"./Reference\"));\n\nvar _reach = require(\"./util/reach\");\n\nvar RefSet =\n/*#__PURE__*/\nfunction () {\n function RefSet() {\n this.list = new Set();\n this.refs = new Map();\n }\n\n var _proto = RefSet.prototype;\n\n _proto.toArray = function toArray() {\n return (0, _toArray2.default)(this.list).concat((0, _toArray2.default)(this.refs.values()));\n };\n\n _proto.add = function add(value) {\n _Reference.default.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n };\n\n _proto.delete = function _delete(value) {\n _Reference.default.isRef(value) ? this.refs.delete(value.key, value) : this.list.delete(value);\n };\n\n _proto.has = function has(value, resolve) {\n if (this.list.has(value)) return true;\n var item,\n values = this.refs.values();\n\n while (item = values.next(), !item.done) {\n if (resolve(item.value) === value) return true;\n }\n\n return false;\n };\n\n return RefSet;\n}();\n\nfunction SchemaType(options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!(this instanceof SchemaType)) return new SchemaType();\n this._deps = [];\n this._conditions = [];\n this._options = {\n abortEarly: true,\n recursive: true\n };\n this._exclusive = Object.create(null);\n this._whitelist = new RefSet();\n this._blacklist = new RefSet();\n this.tests = [];\n this.transforms = [];\n this.withMutation(function () {\n _this.typeError(_locale.mixed.notType);\n });\n if ((0, _has.default)(options, 'default')) this._defaultDefault = options.default;\n this._type = options.type || 'mixed';\n}\n\nvar proto = SchemaType.prototype = {\n __isYupSchema__: true,\n constructor: SchemaType,\n clone: function clone() {\n var _this2 = this;\n\n if (this._mutate) return this; // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n return (0, _cloneDeepWith.default)(this, function (value) {\n if ((0, _isSchema.default)(value) && value !== _this2) return value;\n });\n },\n label: function label(_label) {\n var next = this.clone();\n next._label = _label;\n return next;\n },\n meta: function meta(obj) {\n if (arguments.length === 0) return this._meta;\n var next = this.clone();\n next._meta = (0, _extends2.default)(next._meta || {}, obj);\n return next;\n },\n withMutation: function withMutation(fn) {\n var before = this._mutate;\n this._mutate = true;\n var result = fn(this);\n this._mutate = before;\n return result;\n },\n concat: function concat(schema) {\n if (!schema || schema === this) return this;\n if (schema._type !== this._type && this._type !== 'mixed') throw new TypeError(\"You cannot `concat()` schema's of different types: \" + this._type + \" and \" + schema._type);\n var next = (0, _prependDeep.default)(schema.clone(), this); // new undefined default is overriden by old non-undefined one, revert\n\n if ((0, _has.default)(schema, '_default')) next._default = schema._default;\n next.tests = this.tests;\n next._exclusive = this._exclusive; // manually add the new tests to ensure\n // the deduping logic is consistent\n\n next.withMutation(function (next) {\n schema.tests.forEach(function (fn) {\n next.test(fn.OPTIONS);\n });\n });\n return next;\n },\n isType: function isType(v) {\n if (this._nullable && v === null) return true;\n return !this._typeCheck || this._typeCheck(v);\n },\n resolve: function resolve(options) {\n var schema = this;\n\n if (schema._conditions.length) {\n var conditions = schema._conditions;\n schema = schema.clone();\n schema._conditions = [];\n schema = conditions.reduce(function (schema, condition) {\n return condition.resolve(schema, options);\n }, schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n },\n cast: function cast(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var resolvedSchema = this.resolve((0, _extends2.default)({}, options, {\n value: value\n }));\n\n var result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n var formattedValue = (0, _printValue.default)(value);\n var formattedResult = (0, _printValue.default)(result);\n throw new TypeError(\"The value of \" + (options.path || 'field') + \" could not be cast to a value \" + (\"that satisfies the schema type: \\\"\" + resolvedSchema._type + \"\\\". \\n\\n\") + (\"attempted value: \" + formattedValue + \" \\n\") + (formattedResult !== formattedValue ? \"result of cast: \" + formattedResult : ''));\n }\n\n return result;\n },\n _cast: function _cast(rawValue) {\n var _this3 = this;\n\n var value = rawValue === undefined ? rawValue : this.transforms.reduce(function (value, fn) {\n return fn.call(_this3, value, rawValue);\n }, rawValue);\n\n if (value === undefined && (0, _has.default)(this, '_default')) {\n value = this.default();\n }\n\n return value;\n },\n _validate: function _validate(_value, options) {\n var _this4 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = _value;\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n\n var isStrict = this._option('strict', options);\n\n var endEarly = this._option('abortEarly', options);\n\n var sync = options.sync;\n var path = options.path;\n var label = this._label;\n\n if (!isStrict) {\n value = this._cast(value, (0, _extends2.default)({\n assert: false\n }, options));\n } // value is cast, we can check if it meets type requirements\n\n\n var validationParams = {\n value: value,\n path: path,\n schema: this,\n options: options,\n label: label,\n originalValue: originalValue,\n sync: sync\n };\n var initialTests = [];\n if (this._typeError) initialTests.push(this._typeError(validationParams));\n if (this._whitelistError) initialTests.push(this._whitelistError(validationParams));\n if (this._blacklistError) initialTests.push(this._blacklistError(validationParams));\n return (0, _runValidations.default)({\n validations: initialTests,\n endEarly: endEarly,\n value: value,\n path: path,\n sync: sync\n }).then(function (value) {\n return (0, _runValidations.default)({\n path: path,\n sync: sync,\n value: value,\n endEarly: endEarly,\n validations: _this4.tests.map(function (fn) {\n return fn(validationParams);\n })\n });\n });\n },\n validate: function validate(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve((0, _extends2.default)({}, options, {\n value: value\n }));\n return schema._validate(value, options);\n },\n validateSync: function validateSync(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve((0, _extends2.default)({}, options, {\n value: value\n }));\n var result, err;\n\n schema._validate(value, (0, _extends2.default)({}, options, {\n sync: true\n })).then(function (r) {\n return result = r;\n }).catch(function (e) {\n return err = e;\n });\n\n if (err) throw err;\n return result;\n },\n isValid: function isValid(value, options) {\n return this.validate(value, options).then(function () {\n return true;\n }).catch(function (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n });\n },\n isValidSync: function isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n }\n },\n getDefault: function getDefault(options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(options);\n return schema.default();\n },\n default: function _default(def) {\n if (arguments.length === 0) {\n var defaultValue = (0, _has.default)(this, '_default') ? this._default : this._defaultDefault;\n return typeof defaultValue === 'function' ? defaultValue.call(this) : (0, _cloneDeepWith.default)(defaultValue);\n }\n\n var next = this.clone();\n next._default = def;\n return next;\n },\n strict: function strict(isStrict) {\n if (isStrict === void 0) {\n isStrict = true;\n }\n\n var next = this.clone();\n next._options.strict = isStrict;\n return next;\n },\n _isPresent: function _isPresent(value) {\n return value != null;\n },\n required: function required(message) {\n if (message === void 0) {\n message = _locale.mixed.required;\n }\n\n return this.test({\n message: message,\n name: 'required',\n exclusive: true,\n test: function test(value) {\n return this.schema._isPresent(value);\n }\n });\n },\n notRequired: function notRequired() {\n var next = this.clone();\n next.tests = next.tests.filter(function (test) {\n return test.OPTIONS.name !== 'required';\n });\n return next;\n },\n nullable: function nullable(isNullable) {\n if (isNullable === void 0) {\n isNullable = true;\n }\n\n var next = this.clone();\n next._nullable = isNullable;\n return next;\n },\n transform: function transform(fn) {\n var next = this.clone();\n next.transforms.push(fn);\n return next;\n },\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n test: function test() {\n var opts;\n\n if (arguments.length === 1) {\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'function') {\n opts = {\n test: arguments.length <= 0 ? undefined : arguments[0]\n };\n } else {\n opts = arguments.length <= 0 ? undefined : arguments[0];\n }\n } else if (arguments.length === 2) {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n test: arguments.length <= 1 ? undefined : arguments[1]\n };\n } else {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n message: arguments.length <= 1 ? undefined : arguments[1],\n test: arguments.length <= 2 ? undefined : arguments[2]\n };\n }\n\n if (opts.message === undefined) opts.message = _locale.mixed.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n var next = this.clone();\n var validate = (0, _createValidation.default)(opts);\n var isExclusive = opts.exclusive || opts.name && next._exclusive[opts.name] === true;\n\n if (opts.exclusive && !opts.name) {\n throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n next._exclusive[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(function (fn) {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n },\n when: function when(keys, options) {\n if (arguments.length === 1) {\n options = keys;\n keys = '.';\n }\n\n var next = this.clone(),\n deps = [].concat(keys).map(function (key) {\n return new _Reference.default(key);\n });\n deps.forEach(function (dep) {\n if (dep.isSibling) next._deps.push(dep.key);\n });\n\n next._conditions.push(new _Condition.default(deps, options));\n\n return next;\n },\n typeError: function typeError(message) {\n var next = this.clone();\n next._typeError = (0, _createValidation.default)({\n message: message,\n name: 'typeError',\n test: function test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n });\n return next;\n },\n oneOf: function oneOf(enums, message) {\n if (message === void 0) {\n message = _locale.mixed.oneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = (0, _createValidation.default)({\n message: message,\n name: 'oneOf',\n test: function test(value) {\n if (value === undefined) return true;\n var valids = this.schema._whitelist;\n return valids.has(value, this.resolve) ? true : this.createError({\n params: {\n values: valids.toArray().join(', ')\n }\n });\n }\n });\n return next;\n },\n notOneOf: function notOneOf(enums, message) {\n if (message === void 0) {\n message = _locale.mixed.notOneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = (0, _createValidation.default)({\n message: message,\n name: 'notOneOf',\n test: function test(value) {\n var invalids = this.schema._blacklist;\n if (invalids.has(value, this.resolve)) return this.createError({\n params: {\n values: invalids.toArray().join(', ')\n }\n });\n return true;\n }\n });\n return next;\n },\n strip: function strip(_strip) {\n if (_strip === void 0) {\n _strip = true;\n }\n\n var next = this.clone();\n next._strip = _strip;\n return next;\n },\n _option: function _option(key, overrides) {\n return (0, _has.default)(overrides, key) ? overrides[key] : this._options[key];\n },\n describe: function describe() {\n var next = this.clone();\n return {\n type: next._type,\n meta: next._meta,\n label: next._label,\n tests: next.tests.map(function (fn) {\n return {\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n };\n }).filter(function (n, idx, list) {\n return list.findIndex(function (c) {\n return c.name === n.name;\n }) === idx;\n })\n };\n }\n};\nvar _arr = ['validate', 'validateSync'];\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n proto[method + \"At\"] = function (path, value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _getIn = (0, _reach.getIn)(this, path, value, options.context),\n parent = _getIn.parent,\n parentPath = _getIn.parentPath,\n schema = _getIn.schema;\n\n return schema[method](parent && parent[parentPath], (0, _extends2.default)({}, options, {\n parent: parent,\n path: path\n }));\n };\n};\n\nfor (var _i = 0; _i < _arr.length; _i++) {\n _loop();\n}\n\nvar _arr2 = ['equals', 'is'];\n\nfor (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var alias = _arr2[_i2];\n proto[alias] = proto.oneOf;\n}\n\nvar _arr3 = ['not', 'nope'];\n\nfor (var _i3 = 0; _i3 < _arr3.length; _i3++) {\n var _alias = _arr3[_i3];\n proto[_alias] = proto.notOneOf;\n}\n\nproto.optional = proto.notRequired;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = inherits;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nfunction inherits(ctor, superCtor, spec) {\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n (0, _extends2.default)(ctor.prototype, spec);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _default = BooleanSchema;\nexports.default = _default;\n\nfunction BooleanSchema() {\n var _this = this;\n\n if (!(this instanceof BooleanSchema)) return new BooleanSchema();\n\n _mixed.default.call(this, {\n type: 'boolean'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(value)) return true;\n if (/^(false|0)$/i.test(value)) return false;\n }\n\n return value;\n });\n });\n}\n\n(0, _inherits.default)(BooleanSchema, _mixed.default, {\n _typeCheck: function _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = function _default(value) {\n return value == null;\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = StringSchema;\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale\");\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\n// eslint-disable-next-line\nvar rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nvar rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\nvar isTrimmed = function isTrimmed(value) {\n return (0, _isAbsent.default)(value) || value === value.trim();\n};\n\nfunction StringSchema() {\n var _this = this;\n\n if (!(this instanceof StringSchema)) return new StringSchema();\n\n _mixed.default.call(this, {\n type: 'string'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n return value != null && value.toString ? value.toString() : value;\n });\n });\n}\n\n(0, _inherits.default)(StringSchema, _mixed.default, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n },\n _isPresent: function _isPresent(value) {\n return _mixed.default.prototype._cast.call(this, value) && value.length > 0;\n },\n length: function length(_length, message) {\n if (message === void 0) {\n message = _locale.string.length;\n }\n\n return this.test({\n message: message,\n name: 'length',\n exclusive: true,\n params: {\n length: _length\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length === this.resolve(_length);\n }\n });\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = _locale.string.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = _locale.string.max;\n }\n\n return this.test({\n name: 'max',\n exclusive: true,\n message: message,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length <= this.resolve(_max);\n }\n });\n },\n matches: function matches(regex, options) {\n var excludeEmptyString = false;\n var message;\n\n if (options) {\n if (options.message || options.hasOwnProperty('excludeEmptyString')) {\n excludeEmptyString = options.excludeEmptyString;\n message = options.message;\n } else message = options;\n }\n\n return this.test({\n message: message || _locale.string.matches,\n params: {\n regex: regex\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value === '' && excludeEmptyString || regex.test(value);\n }\n });\n },\n email: function email(message) {\n if (message === void 0) {\n message = _locale.string.email;\n }\n\n return this.matches(rEmail, {\n message: message,\n excludeEmptyString: true\n });\n },\n url: function url(message) {\n if (message === void 0) {\n message = _locale.string.url;\n }\n\n return this.matches(rUrl, {\n message: message,\n excludeEmptyString: true\n });\n },\n //-- transforms --\n ensure: function ensure() {\n return this.default('').transform(function (val) {\n return val === null ? '' : val;\n });\n },\n trim: function trim(message) {\n if (message === void 0) {\n message = _locale.string.trim;\n }\n\n return this.transform(function (val) {\n return val != null ? val.trim() : val;\n }).test({\n message: message,\n name: 'trim',\n test: isTrimmed\n });\n },\n lowercase: function lowercase(message) {\n if (message === void 0) {\n message = _locale.string.lowercase;\n }\n\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? value.toLowerCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value === value.toLowerCase();\n }\n });\n },\n uppercase: function uppercase(message) {\n if (message === void 0) {\n message = _locale.string.uppercase;\n }\n\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? value.toUpperCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value === value.toUpperCase();\n }\n });\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = NumberSchema;\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale\");\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\nvar isNaN = function isNaN(value) {\n return value != +value;\n};\n\nvar isInteger = function isInteger(val) {\n return (0, _isAbsent.default)(val) || val === (val | 0);\n};\n\nfunction NumberSchema() {\n var _this = this;\n\n if (!(this instanceof NumberSchema)) return new NumberSchema();\n\n _mixed.default.call(this, {\n type: 'number'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n var parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n}\n\n(0, _inherits.default)(NumberSchema, _mixed.default, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = _locale.number.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = _locale.number.max;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value <= this.resolve(_max);\n }\n });\n },\n lessThan: function lessThan(less, message) {\n if (message === void 0) {\n message = _locale.number.lessThan;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n less: less\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value < this.resolve(less);\n }\n });\n },\n moreThan: function moreThan(more, message) {\n if (message === void 0) {\n message = _locale.number.moreThan;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n more: more\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value > this.resolve(more);\n }\n });\n },\n positive: function positive(msg) {\n if (msg === void 0) {\n msg = _locale.number.positive;\n }\n\n return this.moreThan(0, msg);\n },\n negative: function negative(msg) {\n if (msg === void 0) {\n msg = _locale.number.negative;\n }\n\n return this.lessThan(0, msg);\n },\n integer: function integer(message) {\n if (message === void 0) {\n message = _locale.number.integer;\n }\n\n return this.test({\n name: 'integer',\n message: message,\n test: isInteger\n });\n },\n truncate: function truncate() {\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? value | 0 : value;\n });\n },\n round: function round(method) {\n var avail = ['ceil', 'floor', 'round', 'trunc'];\n method = method && method.toLowerCase() || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? Math[method](value) : value;\n });\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = parseIsoDate;\n\n/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\nfunction parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) {\n struct[k] = +struct[k] || 0;\n } // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _isodate = _interopRequireDefault(require(\"./util/isodate\"));\n\nvar _locale = require(\"./locale\");\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\nvar _Reference = _interopRequireDefault(require(\"./Reference\"));\n\nvar invalidDate = new Date('');\n\nvar isDate = function isDate(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nvar _default = DateSchema;\nexports.default = _default;\n\nfunction DateSchema() {\n var _this = this;\n\n if (!(this instanceof DateSchema)) return new DateSchema();\n\n _mixed.default.call(this, {\n type: 'date'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n value = (0, _isodate.default)(value);\n return value ? new Date(value) : invalidDate;\n });\n });\n}\n\n(0, _inherits.default)(DateSchema, _mixed.default, {\n _typeCheck: function _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = _locale.date.min;\n }\n\n var limit = _min;\n\n if (!_Reference.default.isRef(limit)) {\n limit = this.cast(_min);\n if (!this._typeCheck(limit)) throw new TypeError('`min` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value >= this.resolve(limit);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = _locale.date.max;\n }\n\n var limit = _max;\n\n if (!_Reference.default.isRef(limit)) {\n limit = this.cast(_max);\n if (!this._typeCheck(limit)) throw new TypeError('`max` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value <= this.resolve(limit);\n }\n });\n }\n});\nmodule.exports = exports[\"default\"];","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _interopRequireWildcard(e, t) {\n if (\"function\" == typeof WeakMap) var r = new WeakMap(),\n n = new WeakMap();\n return (module.exports = _interopRequireWildcard = function _interopRequireWildcard(e, t) {\n if (!t && e && e.__esModule) return e;\n var o,\n i,\n f = {\n __proto__: null,\n \"default\": e\n };\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f;\n if (o = t ? n : r) {\n if (o.has(e)) return o.get(e);\n o.set(e, f);\n }\n for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]);\n return f;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)(e, t);\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _taggedTemplateLiteralLoose(e, t) {\n return t || (t = e.slice(0)), e.raw = t, e;\n}\nmodule.exports = _taggedTemplateLiteralLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = sortFields;\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _toposort = _interopRequireDefault(require(\"toposort\"));\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar _Reference = _interopRequireDefault(require(\"../Reference\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./isSchema\"));\n\nfunction sortFields(fields, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var edges = [],\n nodes = [];\n\n function addNode(depPath, key) {\n var node = (0, _propertyExpr.split)(depPath)[0];\n if (!~nodes.indexOf(node)) nodes.push(node);\n if (!~excludes.indexOf(key + \"-\" + node)) edges.push([key, node]);\n }\n\n for (var key in fields) {\n if ((0, _has.default)(fields, key)) {\n var value = fields[key];\n if (!~nodes.indexOf(key)) nodes.push(key);\n if (_Reference.default.isRef(value) && value.isSibling) addNode(value.path, key);else if ((0, _isSchema.default)(value) && value._deps) value._deps.forEach(function (path) {\n return addNode(path, key);\n });\n }\n }\n\n return _toposort.default.array(nodes, edges).reverse();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = sortByKeyOrder;\n\nfunction findIndex(arr, err) {\n var idx = Infinity;\n arr.some(function (key, ii) {\n if (err.path.indexOf(key) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nfunction sortByKeyOrder(fields) {\n var keys = Object.keys(fields);\n return function (a, b) {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = makePath;\n\nfunction makePath(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n var path = strings.reduce(function (str, next) {\n var value = values.shift();\n return str + (value == null ? '' : value) + next;\n });\n return path.replace(/^\\./, '');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = ObjectSchema;\n\nvar _taggedTemplateLiteralLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/taggedTemplateLiteralLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _snakeCase2 = _interopRequireDefault(require(\"lodash/snakeCase\"));\n\nvar _camelCase2 = _interopRequireDefault(require(\"lodash/camelCase\"));\n\nvar _mapKeys = _interopRequireDefault(require(\"lodash/mapKeys\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale.js\");\n\nvar _sortFields = _interopRequireDefault(require(\"./util/sortFields\"));\n\nvar _sortByKeyOrder = _interopRequireDefault(require(\"./util/sortByKeyOrder\"));\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _makePath = _interopRequireDefault(require(\"./util/makePath\"));\n\nvar _runValidations = _interopRequireWildcard(require(\"./util/runValidations\"));\n\nfunction _templateObject2() {\n var data = (0, _taggedTemplateLiteralLoose2.default)([\"\", \".\", \"\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = (0, _taggedTemplateLiteralLoose2.default)([\"\", \".\", \"\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nfunction unknown(ctx, value) {\n var known = Object.keys(ctx.fields);\n return Object.keys(value).filter(function (key) {\n return known.indexOf(key) === -1;\n });\n}\n\nfunction ObjectSchema(spec) {\n var _this2 = this;\n\n if (!(this instanceof ObjectSchema)) return new ObjectSchema(spec);\n\n _mixed.default.call(this, {\n type: 'object',\n default: function _default() {\n var _this = this;\n\n if (!this._nodes.length) return undefined;\n var dft = {};\n\n this._nodes.forEach(function (key) {\n dft[key] = _this.fields[key].default ? _this.fields[key].default() : undefined;\n });\n\n return dft;\n }\n });\n\n this.fields = Object.create(null);\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(function () {\n _this2.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n _this2.shape(spec);\n }\n });\n}\n\n(0, _inherits.default)(ObjectSchema, _mixed.default, {\n _typeCheck: function _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n },\n _cast: function _cast(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = _mixed.default.prototype._cast.call(this, _value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.default();\n if (!this._typeCheck(value)) return value;\n var fields = this.fields;\n var strip = this._option('stripUnknown', options) === true;\n\n var props = this._nodes.concat(Object.keys(value).filter(function (v) {\n return _this3._nodes.indexOf(v) === -1;\n }));\n\n var intermediateValue = {}; // is filled during the transform below\n\n var innerOptions = (0, _extends2.default)({}, options, {\n parent: intermediateValue,\n __validating: false\n });\n var isChanged = false;\n props.forEach(function (prop) {\n var field = fields[prop];\n var exists = (0, _has.default)(value, prop);\n\n if (field) {\n var fieldValue;\n var strict = field._options && field._options.strict; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (0, _makePath.default)(_templateObject(), options.path, prop);\n innerOptions.value = value[prop];\n field = field.resolve(innerOptions);\n\n if (field._strip === true) {\n isChanged = isChanged || prop in value;\n return;\n }\n\n fieldValue = !options.__validating || !strict ? field.cast(value[prop], innerOptions) : value[prop];\n if (fieldValue !== undefined) intermediateValue[prop] = fieldValue;\n } else if (exists && !strip) intermediateValue[prop] = value[prop];\n\n if (intermediateValue[prop] !== value[prop]) isChanged = true;\n });\n return isChanged ? intermediateValue : value;\n },\n _validate: function _validate(_value, opts) {\n var _this4 = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n var endEarly, recursive;\n var sync = opts.sync;\n var errors = [];\n var originalValue = opts.originalValue != null ? opts.originalValue : _value;\n endEarly = this._option('abortEarly', opts);\n recursive = this._option('recursive', opts);\n opts = (0, _extends2.default)({}, opts, {\n __validating: true,\n originalValue: originalValue\n });\n return _mixed.default.prototype._validate.call(this, _value, opts).catch((0, _runValidations.propagateErrors)(endEarly, errors)).then(function (value) {\n if (!recursive || !isObject(value)) {\n // only iterate though actual objects\n if (errors.length) throw errors[0];\n return value;\n }\n\n originalValue = originalValue || value;\n\n var validations = _this4._nodes.map(function (key) {\n var path = (0, _makePath.default)(_templateObject2(), opts.path, key);\n var field = _this4.fields[key];\n var innerOptions = (0, _extends2.default)({}, opts, {\n path: path,\n parent: value,\n originalValue: originalValue[key]\n });\n\n if (field && field.validate) {\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n innerOptions.strict = true;\n return field.validate(value[key], innerOptions);\n }\n\n return Promise.resolve(true);\n });\n\n return (0, _runValidations.default)({\n sync: sync,\n validations: validations,\n value: value,\n errors: errors,\n endEarly: endEarly,\n path: opts.path,\n sort: (0, _sortByKeyOrder.default)(_this4.fields)\n });\n });\n },\n concat: function concat(schema) {\n var next = _mixed.default.prototype.concat.call(this, schema);\n\n next._nodes = (0, _sortFields.default)(next.fields, next._excludedEdges);\n return next;\n },\n shape: function shape(schema, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var next = this.clone();\n var fields = (0, _extends2.default)(next.fields, schema);\n next.fields = fields;\n\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n var keys = excludes.map(function (_ref) {\n var first = _ref[0],\n second = _ref[1];\n return first + \"-\" + second;\n });\n next._excludedEdges = next._excludedEdges.concat(keys);\n }\n\n next._nodes = (0, _sortFields.default)(fields, next._excludedEdges);\n return next;\n },\n from: function from(_from, to, alias) {\n var fromGetter = (0, _propertyExpr.getter)(_from, true);\n return this.transform(function (obj) {\n if (obj == null) return obj;\n var newObj = obj;\n\n if ((0, _has.default)(obj, _from)) {\n newObj = (0, _extends2.default)({}, obj);\n if (!alias) delete newObj[_from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n },\n noUnknown: function noUnknown(noAllow, message) {\n if (noAllow === void 0) {\n noAllow = true;\n }\n\n if (message === void 0) {\n message = _locale.object.noUnknown;\n }\n\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n var next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test: function test(value) {\n return value == null || !noAllow || unknown(this.schema, value).length === 0;\n }\n });\n next._options.stripUnknown = noAllow;\n return next;\n },\n unknown: function unknown(allow, message) {\n if (allow === void 0) {\n allow = true;\n }\n\n if (message === void 0) {\n message = _locale.object.noUnknown;\n }\n\n return this.noUnknown(!allow, message);\n },\n transformKeys: function transformKeys(fn) {\n return this.transform(function (obj) {\n return obj && (0, _mapKeys.default)(obj, function (_, key) {\n return fn(key);\n });\n });\n },\n camelCase: function camelCase() {\n return this.transformKeys(_camelCase2.default);\n },\n snakeCase: function snakeCase() {\n return this.transformKeys(_snakeCase2.default);\n },\n constantCase: function constantCase() {\n return this.transformKeys(function (key) {\n return (0, _snakeCase2.default)(key).toUpperCase();\n });\n },\n describe: function describe() {\n var base = _mixed.default.prototype.describe.call(this);\n\n base.fields = (0, _mapValues.default)(this.fields, function (value) {\n return value.describe();\n });\n return base;\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _taggedTemplateLiteralLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/taggedTemplateLiteralLoose\"));\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar _makePath = _interopRequireDefault(require(\"./util/makePath\"));\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale\");\n\nvar _runValidations = _interopRequireWildcard(require(\"./util/runValidations\"));\n\nfunction _templateObject() {\n var data = (0, _taggedTemplateLiteralLoose2.default)([\"\", \"[\", \"]\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar _default = ArraySchema;\nexports.default = _default;\n\nfunction ArraySchema(type) {\n var _this = this;\n\n if (!(this instanceof ArraySchema)) return new ArraySchema(type);\n\n _mixed.default.call(this, {\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n\n this._subType = undefined;\n this.withMutation(function () {\n _this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n\n if (type) _this.of(type);\n });\n}\n\n(0, _inherits.default)(ArraySchema, _mixed.default, {\n _typeCheck: function _typeCheck(v) {\n return Array.isArray(v);\n },\n _cast: function _cast(_value, _opts) {\n var _this2 = this;\n\n var value = _mixed.default.prototype._cast.call(this, _value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this._subType) return value;\n var isChanged = false;\n var castArray = value.map(function (v) {\n var castElement = _this2._subType.cast(v, _opts);\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n },\n _validate: function _validate(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var errors = [];\n var sync = options.sync;\n var path = options.path;\n var subType = this._subType;\n\n var endEarly = this._option('abortEarly', options);\n\n var recursive = this._option('recursive', options);\n\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n return _mixed.default.prototype._validate.call(this, _value, options).catch((0, _runValidations.propagateErrors)(endEarly, errors)).then(function (value) {\n if (!recursive || !subType || !_this3._typeCheck(value)) {\n if (errors.length) throw errors[0];\n return value;\n }\n\n originalValue = originalValue || value;\n var validations = value.map(function (item, idx) {\n var path = (0, _makePath.default)(_templateObject(), options.path, idx); // object._validate note for isStrict explanation\n\n var innerOptions = (0, _extends2.default)({}, options, {\n path: path,\n strict: true,\n parent: value,\n originalValue: originalValue[idx]\n });\n if (subType.validate) return subType.validate(item, innerOptions);\n return true;\n });\n return (0, _runValidations.default)({\n sync: sync,\n path: path,\n value: value,\n errors: errors,\n endEarly: endEarly,\n validations: validations\n });\n });\n },\n _isPresent: function _isPresent(value) {\n return _mixed.default.prototype._cast.call(this, value) && value.length > 0;\n },\n of: function of(schema) {\n var next = this.clone();\n if (schema !== false && !(0, _isSchema.default)(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema, or `false` to negate a current sub-schema. ' + 'not: ' + (0, _printValue.default)(schema));\n next._subType = schema;\n return next;\n },\n min: function min(_min, message) {\n message = message || _locale.array.min;\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n message = message || _locale.array.max;\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length <= this.resolve(_max);\n }\n });\n },\n ensure: function ensure() {\n var _this4 = this;\n\n return this.default(function () {\n return [];\n }).transform(function (val) {\n if (_this4.isType(val)) return val;\n return val === null ? [] : [].concat(val);\n });\n },\n compact: function compact(rejector) {\n var reject = !rejector ? function (v) {\n return !!v;\n } : function (v, i, a) {\n return !rejector(v, i, a);\n };\n return this.transform(function (values) {\n return values != null ? values.filter(reject) : values;\n });\n },\n describe: function describe() {\n var base = _mixed.default.prototype.describe.call(this);\n\n if (this._subType) base.innerType = this._subType.describe();\n return base;\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar Lazy =\n/*#__PURE__*/\nfunction () {\n function Lazy(mapFn) {\n this._resolve = function (value, options) {\n var schema = mapFn(value, options);\n if (!(0, _isSchema.default)(schema)) throw new TypeError('lazy() functions must return a valid schema');\n return schema.resolve(options);\n };\n }\n\n var _proto = Lazy.prototype;\n\n _proto.resolve = function resolve(options) {\n return this._resolve(options.value, options);\n };\n\n _proto.cast = function cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n };\n\n _proto.validate = function validate(value, options) {\n return this._resolve(value, options).validate(value, options);\n };\n\n _proto.validateSync = function validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n };\n\n _proto.validateAt = function validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n };\n\n _proto.validateSyncAt = function validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n };\n\n return Lazy;\n}();\n\nLazy.prototype.__isYupSchema__ = true;\nvar _default = Lazy;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = setLocale;\n\nvar _locale = _interopRequireDefault(require(\"./locale\"));\n\nfunction setLocale(custom) {\n Object.keys(custom).forEach(function (type) {\n Object.keys(custom[type]).forEach(function (method) {\n _locale.default[type][method] = custom[type][method];\n });\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.addMethod = addMethod;\nexports.lazy = exports.ref = exports.boolean = void 0;\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nexports.mixed = _mixed.default;\n\nvar _boolean = _interopRequireDefault(require(\"./boolean\"));\n\nexports.bool = _boolean.default;\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nexports.string = _string.default;\n\nvar _number = _interopRequireDefault(require(\"./number\"));\n\nexports.number = _number.default;\n\nvar _date = _interopRequireDefault(require(\"./date\"));\n\nexports.date = _date.default;\n\nvar _object = _interopRequireDefault(require(\"./object\"));\n\nexports.object = _object.default;\n\nvar _array = _interopRequireDefault(require(\"./array\"));\n\nexports.array = _array.default;\n\nvar _Reference = _interopRequireDefault(require(\"./Reference\"));\n\nvar _Lazy = _interopRequireDefault(require(\"./Lazy\"));\n\nvar _ValidationError = _interopRequireDefault(require(\"./ValidationError\"));\n\nexports.ValidationError = _ValidationError.default;\n\nvar _reach = _interopRequireDefault(require(\"./util/reach\"));\n\nexports.reach = _reach.default;\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nexports.isSchema = _isSchema.default;\n\nvar _setLocale = _interopRequireDefault(require(\"./setLocale\"));\n\nexports.setLocale = _setLocale.default;\nvar boolean = _boolean.default;\nexports.boolean = boolean;\n\nvar ref = function ref(key, options) {\n return new _Reference.default(key, options);\n};\n\nexports.ref = ref;\n\nvar lazy = function lazy(fn) {\n return new _Lazy.default(fn);\n};\n\nexports.lazy = lazy;\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !(0, _isSchema.default)(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const {\n label,\n checkboxLabelClassName,\n checkboxLabelFontWeight,\n className,\n infoText,\n infoTooltip,\n infoTooltipPlacement,\n ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <div className='d-inline-flex align-items-center'>\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {infoTooltip && (\n <SvgContainer\n className='svg-container text-secondary ms-1'\n svg={InfoSvg}\n title={infoTooltip}\n tooltipSpanHackClassName='d-inline-flex align-items-center'\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n </div>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n {infoText && <Form.Text className='text-secondary'>{infoText}</Form.Text>}\n </Form.Group>\n );\n}\n\n","import React from 'react';\n\nexport function VisibleOffSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='visible-off'\n d='m15.293 6.609-.793.79A8.8 8.8 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609m2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.7 8.7 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235zm-7.65 7.635.787-.785A3.005 3.005 0 0 0 15 12q-.001-.397-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708z'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#visible-off' fill='#333' />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function VisibleOnSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='visible-on'\n d='M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#visible-on' fill='#333' />\n </svg>\n );\n}\n","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}\n",":local {\n .revealPassword {\n position: absolute;\n right: map-get($spacers, 2);\n top: 50%;\n margin-top: -($cv-svg-size*0.5)\n }\n\n .passwordInput {\n padding-right: map-get($spacers, 3) + $cv-svg-size;\n\n &::placeholder {\n color: $input-placeholder-color;\n opacity: 1;\n }\n }\n\n .passwordContainer {\n &:focus-within {\n // Mimics @mixin form-control-focus() in `_.form.scss` in bootstrap\n background-color: $input-focus-bg;\n border-color: $blue;\n outline: 0;\n\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n\n &:global(.is-invalid) {\n // Mimics @mixin form-validation-state() in `_.form.scss` in bootstrap\n color: $form-feedback-invalid-color;\n border-color: $form-feedback-invalid-color;\n outline: 0;\n box-shadow: 0 0 0 $input-focus-width rgba($form-feedback-invalid-color, .25);\n }\n }\n }\n\n .passwordContainerDisabled {\n background-color: $input-disabled-bg;\n }\n\n .infoTooltip {\n margin-left: 0.1rem;\n }\n\n .spinner {\n position: absolute;\n top: 50%;\n right: map-get($spacers, 2);\n transform: translateY(-50%);\n }\n}","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VisibleOffSvg } from 'libs/shared/images/svg/actions/VisibleOffSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.module.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold';\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n description?: string;\n children?: any;\n showCharacterCounter?: boolean;\n characterCounterPlacement?: 'top' | 'bottom';\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight;\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n labelClassName?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children) ?\n (f: FieldProps) => children(f) :\n React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n const containerClassName = classNames(\n 'position-relative',\n styles.passwordContainer,\n fieldProps.className,\n fieldProps.disabled && styles.passwordContainerDisabled\n );\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={classNames(styles.passwordInput, 'border-0 w-100 h-100 outline-none rounded')}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svg={type === 'password' ? VisibleOnSvg : VisibleOffSvg}\n className={classNames('svg-container cursor-pointer', styles.revealPassword)}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n characterCounterPlacement = 'top',\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n labelClassName: labelGlassName,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n const displayCharacterCounter = !!showCharacterCounter &&\n !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength;\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={classNames('form-group', formGroupClassname)}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className={classNames('d-flex align-items-center', labelGlassName, {\n 'mb-2': props.as === 'textarea'\n })}>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={classNames('svg-container text-secondary', styles.infoTooltip)}\n svg={InfoSvg}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {displayCharacterCounter && characterCounterPlacement === 'top' &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n {props.description &&\n <p>\n {props.description}\n </p>\n }\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {displayCharacterCounter && characterCounterPlacement === 'bottom' &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}\n","import * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.feedbackForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const FEEDBACK_FORM_MIN_CHARACTERS = 10;\nexport const FEEDBACK_FORM_MAX_CHARACTERS = 5000;\n\ntype FeedbackFormErrorPhrases = 'requiredError' | 'minCharactersError' | 'maxCharactersError';\n\nexport const getFeedbackFormErrorMessage = (phrase: FeedbackFormErrorPhrases) => {\n switch (phrase) {\n case 'requiredError': return getPhrase(phrase);\n case 'minCharactersError': return getPhrase(phrase, { limit: FEEDBACK_FORM_MIN_CHARACTERS });\n case 'maxCharactersError': return getPhrase('maxCharactersError', { limit: FEEDBACK_FORM_MAX_CHARACTERS });\n }\n};\n\nexport const FeedbackFormYupString = () => Yup.string()\n .min(FEEDBACK_FORM_MIN_CHARACTERS, getFeedbackFormErrorMessage('minCharactersError'))\n .max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackGivePraise';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GivePraiseFormValues {\n praise: string;\n}\n\nconst INITIAL_VALUES: GivePraiseFormValues = {\n praise: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<GivePraiseFormValues>({\n praise: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction GivePraiseFields() {\n const formikProps = useFormikContextWrapper<GivePraiseFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('givePraisePlaceholder')}\n label={getPhrase('givePraiseLabel')}\n name='praise'\n rows={5}\n value={formikProps.values.praise}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function GivePraise(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.heartHands}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <GivePraiseFields />\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackOther';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface OtherFormValues {\n feedback: string;\n}\n\nconst INITIAL_VALUES: OtherFormValues = {\n feedback: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<OtherFormValues>({\n feedback: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction OtherFields() {\n const formikProps = useFormikContextWrapper<OtherFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='feedback'\n rows={5}\n value={formikProps.values.feedback}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function Other(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <OtherFields />\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRaiseIssue';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RaiseIssueFormValues {\n issue: string;\n}\n\nconst INITIAL_VALUES: RaiseIssueFormValues = {\n issue: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<RaiseIssueFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction RaiseIssueFields() {\n const formikProps = useFormikContextWrapper<RaiseIssueFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('raiseIssuePlaceholder')}\n label={getPhrase('raiseIssueLabel')}\n name='issue'\n rows={5}\n value={formikProps.values.issue}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function RaiseIssue(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RaiseIssueFields />\n </FeedbackFormWrapper>\n );\n}\n","import { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\ntype ContactSupportDetails = {\n [key in InstanceRegion]: {\n phone: string,\n email: string,\n website: string\n };\n};\n\nexport const CONTACT_SUPPORT_DETAILS: ContactSupportDetails = {\n [InstanceRegion.AU]: {\n phone: '02 9509 2600',\n email: 'support@clickview.com.au',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.UK]: {\n phone: '+44 (0)333 207 6595',\n email: 'info@clickview.co.uk',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.NZ]: {\n phone: '09 916 1156',\n email: 'support@clickview.co.nz',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.US]: {\n // PENDING\n phone: '+1 312-292-9322',\n email: 'info@clickvieweducation.com',\n website: 'https://www.clickviewsupport.com/hc'\n }\n};\n","import React from 'react';\n\nexport function EmailSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M4 6.462C4 6.207 4.21 6 4.47 6h15.06c.26 0 .47.207.47.462v10.892a.653.653 0 0 1-.659.646H4.66A.653.653 0 0 1 4 17.354zm1.723.461 5.967 5.12a.48.48 0 0 0 .62 0l5.967-5.12zm13.336.556-6.13 5.26a1.43 1.43 0 0 1-1.859 0l-6.129-5.26v9.598H19.06z'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function PhoneSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M15.928 20c1.348 0 2.33-.38 3.185-1.297.051-.057.097-.114.139-.161.505-.547.742-1.102.742-1.62 0-.545-.3-1.057-.941-1.492l-2.444-1.687c-.695-.477-1.51-.553-2.247.163l-.61.605c-.189.189-.387.218-.615.09-.417-.249-1.35-1.014-2.067-1.727-.785-.78-1.34-1.42-1.678-2.01-.127-.23-.098-.427.09-.616l.612-.616c.716-.726.64-1.552.157-2.243L8.575 4.952c-.446-.646-.953-.94-1.503-.952-.512-.01-1.071.242-1.614.742-.057.052-.104.098-.157.145C4.39 5.727 4 6.714 4 8.047c0 2.358 1.53 5.21 4.143 7.815C10.736 18.45 13.569 20 15.928 20m.006-1.018c-2.146.023-4.837-1.6-7.046-3.81-2.226-2.214-3.9-4.976-3.87-7.127.013-.942.335-1.764 1.014-2.39l.13-.112c.306-.282.63-.432.897-.432.266 0 .495.124.674.394l1.635 2.44c.209.307.247.66-.107 1.002l-.693.689c-.5.5-.484 1.153-.135 1.66.403.593 1.182 1.497 1.95 2.262.765.775 1.733 1.605 2.321 2.009.512.348 1.16.364 1.659-.141l.684-.694c.348-.342.7-.309 1.014-.1l2.433 1.635c.276.18.389.402.389.668 0 .283-.14.597-.437.908a1 1 0 0 1-.102.12c-.63.689-1.462 1.006-2.41 1.018'\n />\n </svg>\n );\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(\"\".concat(item, \" is not a File\"));\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n\n if (acceptedFilesArray.length === 0) {\n return true;\n }\n\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}\n","export enum InteractionType {\n FileSelect = 'file-select',\n DragDrop = 'drag-drop'\n}\n",":local {\n .fileDrop {\n border: 0.125rem dashed $gray-200;\n }\n\n .resourcePreview {\n height: 4.5rem;\n width: auto;\n }\n}","import * as React from 'react';\nimport { useDropzone } from 'react-dropzone';\n\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\n\nimport styles from './file-select.module.scss';\n\nconst namespace = 'shared.feedbackFileUpload';\n\ninterface FeedbackFileUploadProps {\n onFilesAdded: (files: File[], type?: InteractionType) => void;\n mimeType: string;\n acceptMultiple?: boolean;\n imageUrl?: string;\n uploadError?: string;\n}\n\nexport function FeedbackFileUpload(props: FeedbackFileUploadProps): JSX.Element {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: (acceptedFiles: File[]) => props.onFilesAdded(acceptedFiles, InteractionType.DragDrop),\n noClick: true,\n noKeyboard: true,\n multiple: !!props.acceptMultiple,\n noDragEventsBubbling: true\n });\n\n const ref = React.useRef<HTMLInputElement>(null);\n const useRef = React.useCallback((node: HTMLInputElement) => {\n if (!node)\n return;\n\n ref.current = node;\n }, []);\n\n const onClick = () => {\n ref.current.value = null;\n ref.current.click();\n };\n\n let className = `${styles.fileDrop} text-center p-2 rounded-1`;\n\n if (props.uploadError)\n className += ' border-red';\n\n if (isDragActive)\n className += ` border-blue bg-light-blue`;\n\n return (\n <>\n <div {...getRootProps({ className })}>\n <img\n className={styles.resourcePreview}\n src={props.imageUrl}\n draggable={false}\n />\n\n <div className='position-relative'>\n {isDragActive &&\n <p className='position-absolute font-size-md translate-middle top-50 start-50 mb-0'>\n <Text namespace={namespace} phrase='dropUpload' />\n </p>}\n\n <div className={isDragActive ? 'opacity-0' : ''}>\n <p className='mb-0'><Text namespace={namespace} phrase='dragDrop' /></p>\n <button\n type='button'\n className='btn btn-link text-underline p-0'\n onClick={onClick}\n >\n <Text namespace={namespace} phrase='upload' />\n </button>\n </div>\n </div>\n\n <input\n type='file'\n name='fileUpload'\n className='file-select d-none'\n multiple={!!props.acceptMultiple}\n accept={props.mimeType}\n ref={useRef}\n onChange={e => props.onFilesAdded([...e.target.files], InteractionType.FileSelect)}\n aria-errormessage='fileUploadError'\n />\n\n <input {...getInputProps()} />\n </div>\n\n {props.uploadError && <FormFeedback name='fileUpload'>{props.uploadError}</FormFeedback>}\n </>\n );\n}\n",":local {\n .progress {\n height: 0.1875rem; //3px\n }\n}","import * as React from 'react';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { FolderSvg } from 'libs/shared/images/svg/objects/FolderSvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\n\nimport styles from './feedback-upload-list.module.scss';\n\ninterface FeedbackFileUploadItemProps {\n upload: UploadItem;\n cancelUpload: (id: string) => void;\n}\n\nfunction FeedbackFileUploadItem(props: FeedbackFileUploadItemProps): JSX.Element {\n const finished = props.upload.progress === 100;\n\n return (\n <>\n <div>\n <SvgContainer svg={FolderSvg} className='svg-container me-2' />\n <span className='align-middle'>{props.upload.name}</span>\n {finished && (\n <SvgContainer svg={CheckSvg} className='svg-container float-end text-success' />\n )}\n {!finished &&\n <div\n role='button'\n aria-label='close'\n onClick={() => props.cancelUpload(props.upload.id)}\n className='float-end description'\n >\n <SvgContainer svg={CloseSvg} />\n </div>\n }\n </div>\n\n <div className={`${styles.progress} progress my-2`}>\n <div\n className='progress-bar bg-blue'\n role='progressbar'\n style={{ width: `${props.upload.progress}%` }}\n aria-valuenow={props.upload.progress}\n aria-valuemin={0} aria-valuemax={100}\n />\n </div>\n </>\n );\n}\n\ninterface FeedbackFileUploadList {\n uploads: UploadItem[];\n cancelUpload: (id: string) => void;\n}\n\nexport function FeedbackFileUploadList(props: FeedbackFileUploadList): JSX.Element {\n if (!props.uploads?.length)\n return <></>;\n\n return (\n <>\n {props.uploads.map((u, idx) => (\n <FeedbackFileUploadItem\n key={idx}\n upload={u}\n cancelUpload={props.cancelUpload}\n />\n ))}\n </>\n );\n}\n","import React from 'react';\n\nexport function DeleteSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M9.5 7A1.5 1.5 0 0 1 11 5.5h2A1.5 1.5 0 0 1 14.5 7h4a.5.5 0 0 1 0 1h-1.14q0 .045-.005.09l-.909 10a1 1 0 0 1-.996.91h-6.9a1 1 0 0 1-.996-.91l-.91-10A1 1 0 0 1 6.64 8H5.5a.5.5 0 0 1 0-1h4m4 0a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5zm2.971 1H7.53l.853 9.545A.5.5 0 0 0 8.88 18h6.24a.5.5 0 0 0 .498-.456zm-7.43 2.537a.499.499 0 1 1 .994-.077l.424 5.503a.498.498 0 1 1-.994.077zM11.5 10.5a.5.5 0 0 1 1 0V16a.5.5 0 0 1-1 0zm2.962-.5c-.26 0-.477.2-.497.46l-.424 5.503a.499.499 0 1 0 .994.077l.424-5.503a.5.5 0 0 0-.497-.537'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { FileImgSvg } from 'libs/shared/images/svg/objects/FileImgSvg';\n\ninterface FeedbackUploadedItemProps {\n file: Core.Model;\n deleteFile: (id: string) => void;\n}\n\nexport function FeedbackUploadedItem(props: FeedbackUploadedItemProps) {\n return (\n <div className='bg-gray-100 rounded p-2'>\n <SvgContainer className='d-inline-block align-middle svg-container icon-purple me-2' svg={FileImgSvg}/>\n \n <span className='align-middle'>{props.file.get('name')}</span>\n\n <button className='btn p-0 border-0 float-end' onClick={() => props.deleteFile(props.file.get('id'))}>\n <SvgContainer svg={DeleteSvg} />\n </button>\n </div>\n );\n}\n\ninterface FeedbackUploadedListProps {\n uploadedFiles: UploadItem[];\n deleteFile: (id: string) => void;\n}\n\nexport function FeedbackUploadedList(props: FeedbackUploadedListProps) {\n return (\n <div className='d-flex flex-column gap-2'>\n {props.uploadedFiles.map(file => (\n <FeedbackUploadedItem key={file.id} file={file} deleteFile={props.deleteFile} />\n ))}\n </div>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CONTACT_SUPPORT_DETAILS } from 'libs/shared/constants/ContactDetails';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { EmailSvg } from 'libs/shared/images/svg/objects/EmailSvg';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { PhoneSvg } from 'libs/shared/images/svg/objects/PhoneSvg';\nimport { FeedbackFileUpload } from 'libs/shared/views/feedback/components/feedback-file-upload/FeedbackFileUpload';\nimport { FeedbackFileUploadList } from 'libs/shared/views/feedback/components/feedback-upload-list/FeedbackUploadList';\nimport { FeedbackUploadedList } from 'libs/shared/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackReportBug';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ReportBugFormValues {\n issue: string;\n stepsToReproduce: string;\n}\n\nexport const INITIAL_VALUES: ReportBugFormValues = {\n issue: '',\n stepsToReproduce: ''\n};\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<ReportBugFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n stepsToReproduce: FeedbackFormYupString()\n}).noUnknown();\n\ninterface ReportBugFieldsProps {\n previewImageUrl?: string;\n uploadingFiles: UploadItem[];\n uploadedFiles: UploadItem[];\n uploadError: string;\n instanceRegion: InstanceRegion;\n onFilesAdded?: (files: File[], type?: InteractionType) => void;\n deleteFile: (id: string) => void;\n cancelUpload: (id: string) => void;\n}\n\nexport function ReportBugFields(props: ReportBugFieldsProps) {\n const formikProps = useFormikContextWrapper<ReportBugFormValues>();\n\n return (\n <>\n <div className='form-group'>\n <label className='form-label mb-1'><Text namespace={namespace} phrase='mixedMediaLabel' /></label>\n <p className='text-secondary font-size-sm'><Text namespace={namespace} phrase='mixedMediaDescription' /></p>\n <div className='mb-3'>\n <FeedbackFileUpload\n mimeType={FileExtensions.MIXED_MEDIA}\n onFilesAdded={props.onFilesAdded}\n imageUrl={props.previewImageUrl}\n uploadError={props.uploadError}\n acceptMultiple\n />\n </div>\n\n <FeedbackFileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n\n <FeedbackUploadedList uploadedFiles={props.uploadedFiles} deleteFile={props.deleteFile} />\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('issuePlaceholder')}\n label={getPhrase('issueLabel')}\n name='issue'\n value={formikProps.values.issue}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('stepsPlaceholder')}\n label={getPhrase('stepsLabel')}\n name='stepsToReproduce'\n value={formikProps.values.stepsToReproduce}\n />\n\n <div className='rounded bg-light-yellow p-2 mb-3'>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='help'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svg={LinkSvg} />\n <a href={CONTACT_SUPPORT_DETAILS[props.instanceRegion].website} target='_blank' className='text-underline' >\n <Text namespace={namespace} phrase='visitHelpCentre' />\n </a>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase='supportTeam'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svg={PhoneSvg} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].phone}</span>\n </div>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svg={EmailSvg} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].email}</span>\n </div>\n </div>\n </>\n );\n}\n\nexport type ReportBugProps = ReportBugFieldsProps & FeedbackFormSharedProps;\n\nexport function ReportBug(props: ReportBugProps) {\n const { onFilesAdded, cancelUpload, uploadingFiles, uploadedFiles, deleteFile, ...sharedProps } = props;\n\n return (\n <FeedbackFormWrapper\n {...sharedProps}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n submitText={getPhrase('submit')}\n >\n <ReportBugFields\n onFilesAdded={onFilesAdded}\n previewImageUrl={FEEDBACK_IMAGE_URLS.mediaPreview}\n cancelUpload={cancelUpload}\n uploadingFiles={uploadingFiles}\n uploadedFiles={uploadedFiles}\n deleteFile={deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n </FeedbackFormWrapper>\n );\n}\n","import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classification, Resource } from 'libs/shared/interfaces';\n\nexport const MasterTypeHelper = {\n isType<T extends BaseObject>(obj: any, typeId: MasterType): obj is T {\n if (obj?.typeId)\n return obj.typeId === typeId;\n\n // Fallback to comparing actual string types\n return obj?.type?.toLowerCase() === MasterType[typeId].toLowerCase();\n },\n\n isResource(obj: any): obj is Resource {\n return MasterTypeHelper.isType<Resource>(obj, MasterType.Resource);\n },\n\n isClassification(obj: any): obj is Classification {\n return obj.type === 'Subject';\n }\n};\n",":local {\n .avatar {\n border-radius: 50%;\n background-color: $white;\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 1rem;\n background-size: cover;\n background-position: top center;\n font-size: 0.6rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n}","import React from 'react';\n\nimport styles from './white-avatar.module.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <>&nbsp;</> : initials}\n </div>\n );\n}\n","$vertical-padding: 0.1rem;\n$horizontal-padding: 0.2rem;\n\n:local {\n .svgContainer {\n width: 1.2rem;\n height: 1.2rem;\n }\n\n .selection {\n padding: map-get($spacers, 1);\n\n .expander {\n display: none;\n\n &:hover {\n background-color: $white;\n }\n }\n\n .iconContainer {\n display: flex;\n border-radius: 50%;\n\n .icon {\n border-radius: 50%;\n background-color: $white;\n height: 100%;\n font-size: 0.6rem;\n }\n }\n\n // When hovering on this parent element, the visibility of the 2 child elements with these classes switches.\n &:hover {\n .expander {\n display: flex;\n }\n\n .expander + .iconContainer {\n display: none;\n }\n }\n }\n\n .bubble {\n border: 1px dashed;\n border-radius: map-get($spacers, 3);\n position: relative;\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0; \n left: 0;\n width: 100%; \n height: 100%;\n opacity: .05;\n background-color: currentColor;\n border-radius: map-get($spacers, 3);\n }\n }\n \n .spinnerContainer {\n border: 1px solid transparent;\n border-radius: 50%;\n box-sizing: content-box;\n }\n\n .remove {\n margin-top: -#{map-get($spacers, 1)};\n margin-bottom: -#{map-get($spacers, 1)};\n margin-right: -#{map-get($spacers, 1)};\n padding-right: #{map-get($spacers, 1)};\n\n &:hover {\n background-color: rgba(255,255,255,0.5);\n }\n }\n\n .removeBubble {\n top: 0.75rem;\n right: map-get($spacers, 2);\n }\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { ClassroomsSvg } from 'libs/shared/images/svg/objects/ClassroomsSvg';\nimport { GroupSvg } from 'libs/shared/images/svg/objects/GroupSvg';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.module.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svg={isClassroom ? ClassroomsSvg : GroupSvg}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svg={PlusSvg} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svg={isClassroom ? ClassroomsSvg : GroupSvg}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}\n","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.module.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'ultramarine';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'ultramarine' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'ultramarine';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(\n (props.selection as ClassroomGroup).users ||\n (props.selection as Classroom).enrolments\n )?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svg={CloseSvg} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience ?\n UserHelper.getDisplayName(props.selection as User) :\n UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svg={CloseSvg} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}\n","$avatar-width: 2.25rem;\n$remove-button-width: 2.25rem;\n\n:local {\n .removeRecipient {\n opacity: 0;\n width: $remove-button-width;\n }\n\n .recipientItem {\n word-break: break-word;\n\n &:hover,\n &.showSpinner {\n .removeRecipient {\n opacity: 1;\n }\n }\n }\n\n .avatarContainer {\n width: $avatar-width;\n height: $avatar-width;\n }\n\n .recipientDetails {\n width: calc(100% - #{$avatar-width});\n }\n\n .recipientDetailsWithRemoveButton {\n width: calc(100% - #{$avatar-width} - #{$remove-button-width});\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { GroupSvg } from 'libs/shared/images/svg/objects/GroupSvg';\nimport { ClassroomGroup } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\n\nimport styles from '../recipient-item.module.scss';\n\nconst namespace = 'shared.classroomGroupRecipientItemMetadata';\n\nfunction getSubheading(classroomGroup: ClassroomGroup): string {\n const userCount = classroomGroup.users?.count ?? 0;\n const classroomName = classroomGroup.classroom?.name;\n\n if (classroomName)\n return LanguageService.getPhrase(namespace, 'subheading', { classroomName, smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomGroupRecipientItemMetadataProps {\n classroomGroup: ClassroomGroup;\n detailsClassName: string;\n}\n\nexport function ClassroomGroupRecipientItemMetadata(props: ClassroomGroupRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle\n svg={GroupSvg}\n variant={mapColourToBsVariant(props.classroomGroup.metadata?.colour)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroomGroup.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroomGroup)}</p>\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ClassroomsSvg } from 'libs/shared/images/svg/objects/ClassroomsSvg';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport styles from '../recipient-item.module.scss';\n\nconst namespace = 'shared.classroomRecipientItemMetadata';\n\nfunction getSubheading(classroom: Classroom): string {\n // Getting count from users is a temporary fix until enrolments count is working in Search api\n const userCount = classroom.users?.count ?? classroom.enrolments?.count;\n\n if (Number.isInteger(userCount))\n return LanguageService.getPhrase(namespace, 'subheading', { smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomRecipientItemMetadataProps {\n classroom: Classroom;\n detailsClassName: string;\n}\n\nexport function ClassroomRecipientItemMetadata(props: ClassroomRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle svg={ClassroomsSvg} variant='teal' />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroom.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroom)}</p>\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { EngagementAvatar } from 'libs/shared/components/engagement-avatar/EngagementAvatar';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.module.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n \n /**\n * Tertiary puts all students into a single group called 'Learners'.\n * When a student is in the 'Learners' group, we don't want to display the group name,\n * but instead we want to just show \"Student\". - Sha\n */\n if (yearGroup?.name && yearGroup.name !== 'Learners')\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\nfunction getUserProps({\n user, anonymiseUsers, showDisplayName\n}: {\n user: AnonUser,\n showDisplayName: boolean,\n anonymiseUsers?: boolean\n}) {\n if (user.sessionId || user.deleted) {\n const anonName = anonymiseUserName(user, anonymiseUsers);\n const nameParts = anonName.split(' ').filter(n => !!n);\n\n return {\n name: anonName,\n surname: nameParts.slice(1).join(' '),\n avatarUrl: null\n };\n }\n\n return {\n name: anonymiseUsers ?\n anonymiseUserName(user, true) :\n showDisplayName ?\n UserHelper.getDisplayName(user) :\n UserHelper.getFullName(user),\n surname: user.surname,\n avatarUrl: user.avatar?.url\n };\n}\n\nUserRecipientItemMetadata.defaults = {\n showSubText: true\n};\n\ninterface UserRecipientItemMetadataProps {\n user: AnonUser;\n imageCdnUrl: string;\n detailsClassName?: string;\n avatarClassName?: string;\n showDisplayName: boolean;\n nameClassName?: string;\n showSubText?: boolean;\n anonymiseUsers?: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n const { name, surname, avatarUrl } = getUserProps(props);\n\n return (\n <>\n <div className={`${styles.avatarContainer} ${props.avatarClassName} d-inline-block flex-shrink-0`}>\n <EngagementAvatar\n imageUrl={avatarUrl}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(name, surname)}\n type={!props.anonymiseUsers && (props.user.sessionId || props.user.deleted) ? 'anon' : undefined}\n anonymiseUsers={props.anonymiseUsers}\n anonymousSvgSize={SvgContainerSize.Small}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className={classNames('font-size-normal fw-normal m-0', props.nameClassName)}>\n {name}\n </h4>\n {props.showSubText && `id` in props.user && <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>}\n </div>\n </>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { ClassroomGroupRecipientItemMetadata } from './classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata';\nimport { ClassroomRecipientItemMetadata } from './classroom-recipient-item-metadata/ClassroomRecipientItemMetadata';\nimport { UserRecipientItemMetadata } from './user-recipient-item-metadata/UserRecipientItemMetadata';\n\nimport styles from './recipient-item.module.scss';\n\nconst namespace = 'share.recipientItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRemovePhrase(type: MasterType): string {\n switch (type) {\n case (MasterType.User):\n return getPhrase('removeUser');\n case (MasterType.Classroom):\n return getPhrase('removeClassroom');\n case (MasterType.ClassroomGroup):\n return getPhrase('removeGroup');\n }\n return null;\n}\n\ninterface RecipientItemProps<T extends BaseObject = BaseObject> {\n entity: T;\n imageCdnUrl: string;\n showDisplayName: boolean;\n removeRecipient?: (id: string, onError?: () => void) => void;\n getSubText?: (entity: T) => string;\n}\n\nexport function RecipientItem<T extends BaseObject = BaseObject>(props: RecipientItemProps<T>): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n let className = `${styles.recipientItem} d-flex`;\n\n if (showSpinner)\n className += ` ${styles.showSpinner}`;\n\n const detailsClassName = `${props.removeRecipient ?\n styles.recipientDetailsWithRemoveButton :\n styles.recipientDetails} d-inline-block ms-2`;\n\n function removeRecipient(): void {\n setShowSpinner(true);\n props.removeRecipient(props.entity.id, () => setShowSpinner(false));\n }\n\n return (\n <div className={className}>\n {(() => {\n if (MasterTypeHelper.isType<User>(props.entity, MasterType.User)) {\n return (\n <UserRecipientItemMetadata\n user={props.entity}\n imageCdnUrl={props.imageCdnUrl}\n detailsClassName={detailsClassName}\n showDisplayName={props.showDisplayName}\n getSubText={props.getSubText}\n showSubText\n />\n );\n }\n\n if (MasterTypeHelper.isType<Classroom>(props.entity, MasterType.Classroom)) {\n return (\n <ClassroomRecipientItemMetadata\n classroom={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n\n if (MasterTypeHelper.isType<ClassroomGroup>(props.entity, MasterType.ClassroomGroup)) {\n return (\n <ClassroomGroupRecipientItemMetadata\n classroomGroup={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n })()}\n\n {FunctionHelper.isFunction(props.removeRecipient) && (\n <div className={`${styles.removeRecipient} d-inline-flex justify-content-center align-items-center`}>\n {showSpinner ?\n <Spinner as='div' size='sm' animation='border' role='status' /> :\n (\n <Tooltip title={getRemovePhrase(props.entity.typeId)} spanHack>\n <div\n className='btn-close cursor-pointer'\n role='button'\n aria-label='Close'\n onClick={removeRecipient}\n >\n </div>\n </Tooltip>\n )\n }\n </div>\n )}\n </div>\n );\n}\n",":local {\n .emptyState {\n width: 6rem;\n }\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.module.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6' role='alert'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\n );\n}\n",":local {\n .container {\n height: 100%;\n flex: 1;\n\n input {\n height: 100%;\n border: none;\n outline: none;\n padding: 0;\n }\n }\n\n .suggestionsContainerOpen {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 100;\n }\n\n .selectionContainer {\n width: calc(100% - 34px);\n\n &:last-child {\n border-bottom: none !important;\n }\n\n & > :last-child {\n flex: 1;\n margin-top: map-get($spacers, 1);\n }\n }\n\n .sectionContainer:last-child {\n border-bottom: none !important;\n max-height: 20rem;\n overflow-y: scroll;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { SearchBar, SearchBarProps } from 'libs/shared/components/search-bar/SearchBar';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TypeaheadEmptyState } from 'libs/shared/components/typeahead-empty-state/TypeaheadEmptyState';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { SearchSvg } from 'libs/shared/images/svg/actions/SearchSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { InputSelection } from './InputSelection';\n\nimport styles from './tokenized-typeahead.module.scss';\n\nconst namespace = 'shared.tokenizedTypeahead';\n\nexport const TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT = 10;\n\ninterface TokenizedTypeaheadProps<T extends BaseObject = BaseObject> extends SearchBarProps<T> {\n selections: T[];\n removeSelection: (selection: T) => void;\n emptyStateImageUrl?: string;\n getEmptyStateComponent?: (query: string) => JSX.Element;\n errorStateImageUrl: string;\n hasStudentExperience?: boolean;\n getInputTokenComponent?: (selection: T) => JSX.Element;\n imageCdnUrl?: string;\n className?: string;\n hideIcon?: boolean;\n\n /**\n * If this is passed in groups and classrooms will have the option to expand\n * otherwise they will appear as normal without the + icon\n */\n fetchSelectionMembers?: (id: string) => void;\n sharePermissionsDescription?: string;\n}\n\nTokenizedTypeahead.defaultProps = {\n renderSuggestionsOnInputFocus: true\n};\n\n/**\n * This component extends the functionality of the `SearchBar` component by\n * displaying a list of selections as tokens inside the search bar.\n * \n * Any component using this component is responsible for managing the state of\n * these tokens (selections). See `MainShare.tsx` for an example.\n */\nexport function TokenizedTypeahead<T extends BaseObject = BaseObject>(props: TokenizedTypeaheadProps<T>): JSX.Element {\n return (\n <div className={`form-control h-auto d-flex align-items-top position-relative ${props.hideIcon ? '' : 'py-1 px-0'} ${props.className}`}>\n {!props.hideIcon && <SvgContainer className='svg-container m-1' svg={SearchSvg} />}\n\n <div className={`${styles.selectionContainer} d-flex flex-wrap align-items-center mt-n1`}>\n {props.selections.map(s => {\n if (props.getInputTokenComponent)\n return props.getInputTokenComponent(s);\n\n return (\n <InputSelection\n key={s.id}\n selection={s}\n onClickRemove={props.removeSelection}\n onClickExpand={props.fetchSelectionMembers}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n })}\n\n <SearchBar\n {...props}\n onBackspace={() => {\n if (!props.selections.length)\n return;\n\n props.removeSelection(ArrayHelper.last(props.selections));\n }}\n recentSearchHeading={props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading')}\n placeholder={!props.selections?.length ? props.placeholder : ' '}\n searchIconPlacement={false}\n clearQueryOnSelect\n getSuggestionComponent={suggestion => {\n if (props.getSuggestionComponent)\n return props.getSuggestionComponent(suggestion);\n\n return (\n <RecipientItem\n entity={suggestion}\n imageCdnUrl={props.imageCdnUrl}\n showDisplayName={props.hasStudentExperience}\n />\n );\n }}\n getEmptyStateComponent={query => {\n if (props.getEmptyStateComponent)\n return props.getEmptyStateComponent(query);\n\n if (props.emptyStateImageUrl)\n <TypeaheadEmptyState query={query} imageUrl={props.emptyStateImageUrl} />;\n }}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={props.errorStateImageUrl} onClickTryAgain={onClickTryAgain} />\n }\n theme={{\n container: styles.container,\n suggestionsContainerOpen: `bg-white py-1 rounded border mt-1 ${styles.suggestionsContainerOpen}`,\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\n }}\n sectionTitleClassName='ps-2'\n renderSuggestionsOnInputFocus={props.renderSuggestionsOnInputFocus}\n onSuggestionDependencies={[props.selections]}\n />\n </div>\n\n {!!props.sharePermissionsDescription &&\n <span className='px-2 text-secondary text-nowrap'>{props.sharePermissionsDescription}</span>\n }\n </div>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestLivestream';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RequestLivestreamFormValues {\n topic: string;\n studentLevel: string[];\n producerCompany: string;\n additionalInfo: string;\n}\n\nexport const INITIAL_VALUES: RequestLivestreamFormValues = {\n topic: '',\n studentLevel: [],\n producerCompany: '',\n additionalInfo: ''\n};\n\nconst REQUEST_LIVESTREAM_YUP_STRING =\n Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestLivestreamFormValues>({\n producerCompany: REQUEST_LIVESTREAM_YUP_STRING.required(() => getPhrase('companyError')),\n topic: REQUEST_LIVESTREAM_YUP_STRING,\n studentLevel: Yup.array(Yup.string()),\n additionalInfo: FeedbackFormYupString()\n}).noUnknown();\n\ninterface RequestLivestreamFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestLivestreamFields(props: RequestLivestreamFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestLivestreamFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(\n selected => props.audiences.find(a => a.name === selected)\n ) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.name));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.name === suggestion.name))\n return false;\n\n if (suggestion.name === selectedSuggestion?.name)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n showRequiredStar\n />\n\n <FormField\n placeholder={getPhrase('topicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n id='audiences'\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='name'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.name}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel &&\n <FormFeedback name='audiences'>{formikProps.errors.studentLevel}</FormFeedback>\n }\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n );\n}\n\nexport type RequestLivestreamProps =\n RequestLivestreamFieldsProps &\n FeedbackFormSharedProps;\n\nexport function RequestLivestream(props: RequestLivestreamProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RequestLivestreamFields audiences={props.audiences} />\n </FeedbackFormWrapper>\n );\n}\n",":local {\n .image {\n height: 6.375rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './before-requesting.module.scss';\n\nconst namespace = 'shared.feedbackBeforeRequesting';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BeforeRequestingProps {\n exchangeTvUrl?: string;\n instanceRegion: string;\n setConfirmed: (checked: boolean) => void;\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nexport function BeforeRequesting(props: BeforeRequestingProps) {\n const [ checked, setChecked ] = React.useState(false);\n return (\n <>\n <div className='d-flex flex-column align-items-center my-4'>\n <img className={`${styles.image} mb-3`} src={FEEDBACK_IMAGE_URLS.videoAlert} />\n <h4 className='mb-3'>\n <Text namespace={namespace} phrase='beforeRequesting' />\n </h4>\n <p><Text namespace={namespace} phrase='haveYouSearched' options={{ exchangeUrl: `${props.exchangeTvUrl}/exchange` }} /></p>\n {props.instanceRegion === InstanceRegion.UK ?\n <p><Text namespace={namespace} phrase='bbcArchiveRequestsNote' options={{ exchangeTvUrl: `${props.exchangeTvUrl}/tv?requestVideo=true` }} /></p> :\n <p><Text namespace={namespace} phrase='foxtelRequestsNote' options={{ exchangeTvUrl: `${props.exchangeTvUrl}/tv?requestVideo=true` }} /></p>}\n </div>\n\n <PopupButtons>\n <PopupButtons.Checkbox\n id='confirmExchange'\n checked={checked}\n onToggle={() => setChecked(!checked)}\n label={getPhrase('exchangeCheck')}\n />\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('back')} />\n <PopupButtons.Submit\n variant='dark'\n text={getPhrase('continue')}\n disabled={!checked}\n onClick={() => props.setConfirmed(true)}\n />\n </PopupButtons>\n </>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { BeforeRequesting } from 'libs/shared/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum VideoRequestType {\n VideosTopic = 'videosTopic',\n VideoOrSeries = 'videoOrSeries',\n YouTubeVideo = 'youtubeVideo'\n}\n\nexport interface RequestVideoFormValues {\n videoRequestType: string;\n topic: string;\n studentLevel: string[];\n videoTitle: string;\n seriesName: string;\n producerCompany: string;\n websiteOrTrailer: string;\n additionalInfo: string;\n youtubeChannelLink: string;\n youtubeVideoLink: string;\n}\n\nexport const INITIAL_VALUES: RequestVideoFormValues = {\n videoRequestType: '',\n topic: '',\n studentLevel: [],\n videoTitle: '',\n seriesName: '',\n producerCompany: '',\n websiteOrTrailer: '',\n additionalInfo: '',\n youtubeChannelLink: '',\n youtubeVideoLink: ''\n};\n\nconst RequestVideoYupString = () => Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestVideoFormValues>({\n videoRequestType: Yup.string().required(getPhrase('videoRequestTypeRequiredError')),\n topic: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.VideosTopic,\n then: RequestVideoYupString().required(getPhrase('topicRequiredError')),\n otherwise: RequestVideoYupString().notRequired()\n }),\n studentLevel: Yup.array(Yup.string()),\n\n videoTitle: RequestVideoYupString().when([ 'videoRequestType', 'seriesName' ], {\n is: (videoRequestType, seriesName) => videoRequestType === VideoRequestType.VideoOrSeries && !seriesName,\n then: RequestVideoYupString().required((getPhrase('videoRequiredError'))),\n otherwise: RequestVideoYupString().notRequired()\n }),\n seriesName: RequestVideoYupString(),\n producerCompany: RequestVideoYupString(),\n websiteOrTrailer: RequestVideoYupString(),\n additionalInfo: FeedbackFormYupString(),\n youtubeChannelLink: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.YouTubeVideo,\n then: RequestVideoYupString().required(getPhrase('youtubeChannelLinkRequiredError')).url(getPhrase('invalidUrlError')),\n otherwise: RequestVideoYupString().notRequired()\n }),\n youtubeVideoLink: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.YouTubeVideo,\n then: RequestVideoYupString().required(getPhrase('youtubeVideoLinkRequiredError')).url(getPhrase('invalidUrlError')),\n otherwise: RequestVideoYupString().notRequired()\n })\n}).noUnknown();\n\ninterface RequestVideoFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestVideoFields(props: RequestVideoFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestVideoFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(selected => props.audiences?.find(a => a.name === selected)) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.name));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.name === suggestion.name))\n return false;\n\n if (suggestion.name === selectedSuggestion?.name)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n as='select'\n label={getPhrase('videoRequestTypeLabel')}\n name='videoRequestType'\n value={formikProps.values.videoRequestType}\n >\n <option value='' disabled hidden>{getPhrase('videoRequestTypePlaceholder')}</option>\n <option value={VideoRequestType.VideosTopic}>{getPhrase('videosTopicType')}</option>\n <option value={VideoRequestType.VideoOrSeries}>{getPhrase('videoOrSeriesType')}</option>\n <option value={VideoRequestType.YouTubeVideo}>{getPhrase('youtubeVideoType')}</option>\n </FormField>\n\n {formikProps.values.videoRequestType === VideoRequestType.YouTubeVideo && (\n <>\n <FormField\n placeholder={getPhrase('youtubeChannelLinkPlaceholder')}\n label={getPhrase('youtubeChannelLinkLabel')}\n name='youtubeChannelLink'\n value={formikProps.values.youtubeChannelLink}\n showRequiredStar\n />\n\n <FormField\n placeholder={getPhrase('youtubeVideoLinkPlaceholder')}\n label={getPhrase('youtubeVideoLinkLabel')}\n name='youtubeVideoLink'\n value={formikProps.values.youtubeVideoLink}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n\n {formikProps.values.videoRequestType === VideoRequestType.VideosTopic && (\n <>\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('videoTopicLabel')}\n name='topic'\n value={formikProps.values.topic}\n showRequiredStar\n />\n \n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n id='audiences'\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='name'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.name}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel\n && <FormFeedback name='audiences'>{formikProps.errors.studentLevel}</FormFeedback>\n }\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n\n {formikProps.values.videoRequestType === VideoRequestType.VideoOrSeries && (\n <>\n <FormField\n placeholder={getPhrase('videoTitlePlaceholder')}\n label={getPhrase('videoTitleLabel')}\n name='videoTitle'\n value={formikProps.values.videoTitle}\n />\n\n <FormField\n placeholder={getPhrase('seriesPlaceholder')}\n label={getPhrase('seriesLabel')}\n name='seriesName'\n value={formikProps.values.seriesName}\n />\n\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n />\n\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <FormField\n placeholder={getPhrase('websiteOrTrailerPlaceholder')}\n label={getPhrase('websiteOrTrailerLabel')}\n name='websiteOrTrailer'\n value={formikProps.values.websiteOrTrailer}\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n </>\n );\n}\n\nexport type RequestVideoProps =\n RequestVideoFieldsProps &\n FeedbackFormSharedProps & {\n hasExchangeTvProduct: boolean,\n exchangeTvUrl: string,\n instanceRegion: string,\n skipBeforeRequesting: boolean\n };\n\nexport function RequestVideo(props: RequestVideoProps) {\n const [ confirmed, setConfirmed ] = React.useState(!!props.skipBeforeRequesting);\n\n const showBeforeRequesting = props.hasExchangeTvProduct && !confirmed;\n\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n hideButtons={props.hasExchangeTvProduct && !confirmed}\n hideCancelButton={props.skipBeforeRequesting}\n >\n {showBeforeRequesting && (\n <BeforeRequesting\n setConfirmed={setConfirmed}\n setSelectedOption={props.setSelectedOption}\n exchangeTvUrl={props.exchangeTvUrl}\n instanceRegion={props.instanceRegion}\n />\n )}\n\n {!showBeforeRequesting && <RequestVideoFields audiences={props.audiences} />}\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackSuggestImprovement';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SuggestImprovementFormValues {\n suggestion: string;\n importance: string;\n}\n\nconst INITIAL_VALUES: SuggestImprovementFormValues = {\n suggestion: '',\n importance: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<SuggestImprovementFormValues>({\n suggestion: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n importance: FeedbackFormYupString()\n}).noUnknown();\n\ninterface SuggestImprovementFieldsProps {\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nfunction SuggestImprovementFields(props: SuggestImprovementFieldsProps) {\n const formikProps = useFormikContextWrapper<SuggestImprovementFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('suggestionPlaceholder')}\n label={getPhrase('suggestionLabel')}\n name='suggestion'\n value={formikProps.values.suggestion}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('whySuggestionPlaceholder')}\n label={getPhrase('whySuggestionLabel')}\n name='importance'\n rows={5}\n value={formikProps.values.importance}\n />\n\n <p>\n <Text namespace={namespace} phrase='contactSupport' />\n &nbsp;\n <button\n className='btn btn-link text-underline p-0'\n onClick={() => props.setSelectedOption(FeedbackOption.RAISE_ISSUE)}>\n <Text namespace={namespace} phrase='raiseIssue' />\n </button>\n </p>\n </>\n );\n}\n\nexport function SuggestImprovement(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.lightBulb}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <SuggestImprovementFields setSelectedOption={props.setSelectedOption} />\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport { Form } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackButtons } from 'libs/shared/views/feedback/components/feedback-buttons/FeedbackButtons';\nimport { FeedbackFormState } from 'libs/shared/views/feedback/components/feedback-form-state/FeedbackFormState';\nimport { GivePraise } from 'libs/shared/views/feedback/components/forms/give-praise/GivePraise';\nimport { Other } from 'libs/shared/views/feedback/components/forms/other/Other';\nimport { RaiseIssue } from 'libs/shared/views/feedback/components/forms/raise-issue/RaiseIssue';\nimport { ReportBug } from 'libs/shared/views/feedback/components/forms/report-bug/ReportBug';\nimport { RequestLivestream } from 'libs/shared/views/feedback/components/forms/request-livestream/RequestLivestream';\nimport { RequestVideo } from 'libs/shared/views/feedback/components/forms/request-video/RequestVideo';\nimport { SuggestImprovement } from 'libs/shared/views/feedback/components/forms/suggest-improvement/SuggestImprovement';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormCustomProps, FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\ninterface FeedbackFormWrapperProps extends React.PropsWithChildren, FeedbackFormSharedProps {\n validationSchema: any;\n submitText?: string;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n hideButtons?: boolean;\n}\n\nexport function FeedbackFormWrapper(props: FeedbackFormWrapperProps) {\n const ref = React.useRef(null);\n\n function setSelectedOption(selectedOption: FeedbackOption) {\n props.setFormState((prevState: HashObject) => ({ ...prevState, ...ref.current?.values }));\n props.setSelectedOption(selectedOption);\n }\n\n return (\n <FormWrapper\n onSubmit={props.onSubmit}\n initialValues={props.initialValues}\n validationSchema={props.validationSchema}\n validateOnMount\n innerRef={ref}\n >\n <Form>\n {props.formStage === 'form' && props.children}\n\n <FeedbackFormState\n formStage={props.formStage}\n successImageUrl={props.successImageUrl}\n successHeading={props.successHeading}\n successDescription={props.successDescription}\n />\n\n {!props.hideButtons && (\n <FeedbackButtons\n setSelectedOption={setSelectedOption}\n submitText={props.submitText}\n formStage={props.formStage}\n closePopup={props.closePopup}\n hideCancelButton={props.hideCancelButton}\n />\n )}\n </Form>\n </FormWrapper>\n );\n}\n\ninterface FeedbackFormSelectorProps {\n selectedOption: FeedbackOption;\n}\n\ntype FeedbackFormProps = FeedbackFormSharedProps & FeedbackFormSelectorProps & FeedbackFormCustomProps;\n\nexport function FeedbackForm(props: FeedbackFormProps) {\n const formProps = {\n formStage: props.formStage,\n initialValues: props.initialValues,\n setFormState: props.setFormState,\n onSubmit: props.onSubmit,\n setSelectedOption: props.setSelectedOption,\n closePopup: props.closePopup\n };\n\n switch (props.selectedOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT:\n return <SuggestImprovement {...formProps} />;\n case FeedbackOption.REPORT_BUG:\n return (\n <ReportBug\n {...formProps}\n onFilesAdded={props.onFilesAdded}\n cancelUpload={props.cancelUpload}\n uploadingFiles={props.uploadingFiles}\n uploadedFiles={props.uploadedFiles}\n deleteFile={props.deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n );\n case FeedbackOption.REQUEST_VIDEO:\n return (\n <RequestVideo\n {...formProps}\n audiences={props.audiences}\n hasExchangeTvProduct={props.hasExchangeTvProduct}\n exchangeTvUrl={props.exchangeTvUrl}\n instanceRegion={props.instanceRegion}\n skipBeforeRequesting={props.skipBeforeRequesting}\n hideCancelButton={props.hideCancelButton}\n />\n );\n case FeedbackOption.REQUEST_LIVESTREAM:\n return (\n <RequestLivestream\n {...formProps}\n audiences={props.audiences}\n />\n );\n case FeedbackOption.RAISE_ISSUE:\n return <RaiseIssue {...formProps} />;\n case FeedbackOption.GIVE_PRAISE:\n return <GivePraise {...formProps} />;\n case FeedbackOption.OTHER:\n return <Other {...formProps} />;\n }\n}\n","import React from 'react';\nimport Radio from 'backbone.radio';\nimport Dropzone from 'dropzone';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { MixedMediaUploadService, UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { useStudentRestrictedDialogError } from 'libs/shared/hooks/useStudentRestrictedDialogError';\nimport { CurrentUser, Customer, FileUpload, Presentation, PresentationAudience, Product, User } from 'libs/shared/interfaces';\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { FeedbackSelector } from 'libs/shared/views/feedback/components/feedback-selector/FeedbackSelector';\nimport { FeedbackForm } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\nconst namespace = 'shared.giveFeedback';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MAX_FILES_LIMIT = 5;\nconst MAX_FILE_SIZE_LIMIT = 60; // MB\nconst BYTES_MULTIPLIER = 1000000;\n\ninterface GiveFeedbackViewProps extends PopupProps {\n product: ProductId;\n // Land on a pre selected option form\n selectedOption?: FeedbackOption;\n // Flag to skip step before requesting video form\n skipBeforeRequestingVideoStep?: boolean;\n extraTags?: string[];\n}\n\nexport function GiveFeedbackView(props: GiveFeedbackViewProps) {\n const alerts = useAlerts();\n const fetchAsync = useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId));\n const masterUser = Flight.useBasicFetch<User>(currentUser.data && UserRequests.user(currentUser.data.id));\n\n const [ selectedOption, setSelectedOption ] = React.useState<FeedbackOption>(props.selectedOption);\n const [ formStage, setFormStage ] = React.useState<FeedbackFormStage>('form');\n const [ formState, setFormState ] = React.useState<HashObject>(null);\n\n const mixedMediaUploadService = useService<MixedMediaUploadService>(SharedServices.MixedMediaUpload);\n const mixedMediaUploads = useGetCollectionItems<UploadItem>(() => mixedMediaUploadService.getCollection(), null);\n\n const interactionTypeRef = React.useRef<InteractionType>(null);\n const mixedMediaUploadCountRef = React.useRef(0);\n const mixedMediaUploadsRef = React.useRef<FileUpload[]>([]);\n\n const [ uploadedFiles, setUploadedFiles ] = React.useState<UploadItem[]>([]);\n const [ uploadError, setUploadError ] = React.useState<string>('');\n \n const presentationType = props.product === ProductId.StreamableLearning ?\n PresentationType.StreamableLearning : PresentationType.Subject;\n const presentation = Flight.useBasicFetch<Presentation>(ClassificationRequests.presentation(presentationType));\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n AudienceRequests.presentationAudiences(presentationType)\n );\n\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const exchangeTvProduct = products.data?.find(product => product.id === ProductId.Exchange);\n\n useListenOn(\n Radio.channel(SharedServiceChannels.MIXED_MEDIA_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onMixedMediaUploadComplete\n );\n\n useStudentRestrictedDialogError();\n\n function addMixedMediaFiles(files: File[], type?: InteractionType): void {\n if (files.some(file => file.size > MAX_FILE_SIZE_LIMIT * BYTES_MULTIPLIER)) {\n setUploadError(getPhrase('maxFileSizeUploadError', { limit: MAX_FILE_SIZE_LIMIT }));\n return;\n }\n\n if (files.length > (MAX_FILES_LIMIT - mixedMediaUploads.length)) {\n setUploadError(getPhrase('maxFilesUploadError', { limit: MAX_FILES_LIMIT }));\n return;\n }\n \n if (files.some(file => !Dropzone.isValidFile(file, FileExtensions.MIXED_MEDIA))) {\n setUploadError(getPhrase('invalidTypeUploadError'));\n return;\n }\n\n setUploadError('');\n \n mixedMediaUploadCountRef.current += files.length;\n\n if (type)\n interactionTypeRef.current = type;\n\n mixedMediaUploadService.addFiles(files);\n }\n\n function onMixedMediaUploadComplete(upload: Core.Model): void {\n const uploadData: FileUpload = upload.toJSON();\n\n mixedMediaUploadsRef.current.push(uploadData);\n mixedMediaUploadCountRef.current--;\n\n if (mixedMediaUploadCountRef.current > 0)\n return;\n\n // The below will only run once all media files have been uploaded.\n let mixedMediaToUpload = mixedMediaUploadsRef.current.length;\n\n // const onError = () => console.log('mixedMedia upload error');\n\n mixedMediaUploadsRef.current.forEach(mixedMedia => {\n // setTimeout is required to detect changes correctly when files are removed from the uploading list in the backbone collection\n setTimeout(() => {\n mixedMediaToUpload--;\n \n const uploadedMedia = mixedMediaUploadService.getCollection().filter(r => r.get('fileInfo')?.id === mixedMedia.fileInfo.id);\n\n mixedMediaUploadService.getCollection().remove(uploadedMedia);\n setUploadedFiles(prevState => ([ ...prevState, ...uploadedMedia ]));\n\n if (mixedMediaToUpload > 0)\n return;\n\n AnalyticsHelper.logUserAction(\n { fileInfo: mixedMedia.fileInfo },\n {\n location: LocationContext.GiveFeedbackPopup,\n actionType: UserAction.Upload,\n entity: EntityType.MixedMedia,\n descriptor: AnalyticsHelper.mapInteractionType(interactionTypeRef.current)\n }\n );\n\n alerts.success(getPhrase('mixedMediaUploadSuccess'));\n });\n });\n\n mixedMediaUploadsRef.current = [];\n }\n\n function onDeleteFile(id: string) {\n setUploadedFiles(prevState => prevState.filter(file => file.id !== id));\n }\n\n function onFormSelect(option: FeedbackOption) {\n setSelectedOption(option);\n\n if (option)\n AnalyticsHelper.logUserAction(\n { type: option },\n {\n actionType: UserAction.Click,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Start\n }\n );\n }\n\n function getFeedbackType(option: FeedbackOption) {\n switch (option) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return FeedbackType.SuggestImprovement;\n case FeedbackOption.REPORT_BUG: return FeedbackType.ReportBug;\n case FeedbackOption.REQUEST_VIDEO: return FeedbackType.RequestVideo;\n case FeedbackOption.REQUEST_LIVESTREAM: return FeedbackType.RequestLivestream;\n case FeedbackOption.GIVE_PRAISE: return FeedbackType.GivePraise;\n case FeedbackOption.RAISE_ISSUE: return FeedbackType.RaiseIssue;\n case FeedbackOption.OTHER: return FeedbackType.Other;\n }\n }\n\n async function onSubmit(values: any, onDone: (options?: FormSubmissionOptions) => void) {\n const feedbackFormRequestData: FeedbackFormRequest = {\n type: getFeedbackType(selectedOption),\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n props.product,\n false,\n [\n ...(props.extraTags || []),\n 'give feedback',\n getFeedbackFormTitles(selectedOption).toLowerCase(),\n presentation.data?.description?.toLowerCase().trim(),\n masterUser.data?.userProfile?.metadata?.jobTitle?.toLowerCase()\n ].filter(Boolean)\n )\n };\n\n let feedbackFormValues = {\n ...values,\n currentPageUrl: LocationUtils.GetCurrentUrl()\n };\n\n if (selectedOption === FeedbackOption.REPORT_BUG && uploadedFiles.length) {\n feedbackFormValues = {\n ...feedbackFormValues,\n ...FeedbackFormHelper.categorizeFiles(uploadedFiles)\n };\n }\n\n try {\n await fetchAsync(FeedbackRequests.submitFeedback(feedbackFormRequestData, feedbackFormValues));\n\n AnalyticsHelper.logUserAction(\n {\n ...feedbackFormRequestData,\n ...feedbackFormValues\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n\n setFormStage('success');\n } catch {\n alerts.error(getPhrase('error'));\n } finally {\n onDone();\n }\n }\n\n return (\n <Popup\n size='lg'\n title={selectedOption ? getFeedbackFormTitles(selectedOption) : getPhrase('title')}\n closePopup={props.closePopup}\n backdrop='static'\n >\n {!selectedOption && <p><Text namespace={namespace} phrase='description' /></p>}\n\n {!selectedOption && (\n <FeedbackSelector\n onSelectOption={onFormSelect}\n options={[\n FeedbackOption.SUGGEST_IMPROVEMENT,\n FeedbackOption.REPORT_BUG,\n props.product === ProductId.StreamableLearning ?\n FeedbackOption.REQUEST_LIVESTREAM :\n FeedbackOption.REQUEST_VIDEO,\n FeedbackOption.GIVE_PRAISE,\n FeedbackOption.RAISE_ISSUE,\n FeedbackOption.OTHER\n ]}\n />\n )}\n\n {selectedOption && (\n <FeedbackForm\n selectedOption={selectedOption}\n formStage={formStage}\n onSubmit={onSubmit}\n setSelectedOption={onFormSelect}\n closePopup={props.closePopup}\n onFilesAdded={addMixedMediaFiles}\n uploadingFiles={mixedMediaUploads}\n uploadedFiles={uploadedFiles}\n deleteFile={onDeleteFile}\n cancelUpload={(id: string) => mixedMediaUploadService.cancelUpload(id)}\n audiences={audiences.data}\n uploadError={uploadError}\n initialValues={formState}\n setFormState={setFormState}\n instanceRegion={currentUser.data?.instanceRegion}\n hasExchangeTvProduct={!!exchangeTvProduct}\n exchangeTvUrl={exchangeTvProduct?.url}\n skipBeforeRequesting={!!props.skipBeforeRequestingVideoStep}\n // hide back button if we directly land on a selected option\n hideCancelButton={!!props.selectedOption}\n />\n )}\n </Popup>\n );\n}\n"],"x_google_ignoreList":[22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,129,130,131,132,133,134],"mappings":"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"}
1
+ {"version":3,"file":"DWQdiwUw.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/FeedbackType.ts","../../../../libs/shared/src/enums/PresentationType.ts","../../../../libs/shared/src/flight-requests/AudienceRequests.ts","../../../../libs/shared/src/apps/subjects/enums/ClassificationMemberType.ts","../../../../libs/shared/src/enums/ClassificationType.ts","../../../../libs/shared/src/utils/ThemeAssetHelper.ts","../../../../libs/shared/src/flight-requests/ClassificationRequests.ts","../../../../libs/shared/src/flight-requests/FeedbackRequests.ts","../../../../libs/shared/src/hooks/UseGetCollectionItems.ts","../../../../libs/shared/src/errors/general/student-restricted/StudentRestrictedDialogError.ts","../../../../libs/shared/src/hooks/useStudentRestrictedDialogError.ts","../../../../libs/shared/src/enums/CountryCode.ts","../../../../libs/shared/src/utils/FeedbackFormHelper.ts","../../../../libs/shared/src/views/feedback/enums/FeedbackOption.ts","../../../../libs/shared/src/views/feedback/constants/FeedbackFormTitles.ts","../../../../libs/shared/src/views/feedback/constants/FeedbackImageUrls.ts","../../../../libs/shared/src/views/feedback/components/feedback-selector/feedback-selector.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-selector/FeedbackSelector.tsx","../../../../libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","../../../../libs/shared/src/views/feedback/components/feedback-buttons/FeedbackButtons.tsx","../../../../libs/shared/src/views/feedback/components/feedback-form-state/feedback-form-state.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-form-state/FeedbackFormState.tsx","../../../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../../../node_modules/lodash/_baseHas.js","../../../../../node_modules/lodash/_hasPath.js","../../../../../node_modules/lodash/has.js","../../../../../node_modules/lodash/cloneDeepWith.js","../../../../../node_modules/lodash/isString.js","../../../../../node_modules/lodash/_iteratorToArray.js","../../../../../node_modules/lodash/_mapToArray.js","../../../../../node_modules/lodash/_setToArray.js","../../../../../node_modules/lodash/_asciiToArray.js","../../../../../node_modules/lodash/_hasUnicode.js","../../../../../node_modules/lodash/_unicodeToArray.js","../../../../../node_modules/lodash/_stringToArray.js","../../../../../node_modules/lodash/_baseValues.js","../../../../../node_modules/lodash/values.js","../../../../../node_modules/lodash/toArray.js","../../../../../node_modules/yup/lib/util/printValue.js","../../../../../node_modules/yup/lib/locale.js","../../../../../node_modules/yup/lib/util/isSchema.js","../../../../../node_modules/yup/lib/Condition.js","../../../../../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../../../node_modules/synchronous-promise/index.js","../../../../../node_modules/yup/lib/ValidationError.js","../../../../../node_modules/yup/lib/util/runValidations.js","../../../../../node_modules/yup/lib/util/prependDeep.js","../../../../../node_modules/lodash/_createBaseFor.js","../../../../../node_modules/lodash/_baseFor.js","../../../../../node_modules/lodash/_baseForOwn.js","../../../../../node_modules/lodash/_setCacheAdd.js","../../../../../node_modules/lodash/_setCacheHas.js","../../../../../node_modules/lodash/_SetCache.js","../../../../../node_modules/lodash/_arraySome.js","../../../../../node_modules/lodash/_cacheHas.js","../../../../../node_modules/lodash/_equalArrays.js","../../../../../node_modules/lodash/_equalByTag.js","../../../../../node_modules/lodash/_equalObjects.js","../../../../../node_modules/lodash/_baseIsEqualDeep.js","../../../../../node_modules/lodash/_baseIsEqual.js","../../../../../node_modules/lodash/_baseIsMatch.js","../../../../../node_modules/lodash/_isStrictComparable.js","../../../../../node_modules/lodash/_getMatchData.js","../../../../../node_modules/lodash/_matchesStrictComparable.js","../../../../../node_modules/lodash/_baseMatches.js","../../../../../node_modules/lodash/_baseHasIn.js","../../../../../node_modules/lodash/hasIn.js","../../../../../node_modules/lodash/_baseMatchesProperty.js","../../../../../node_modules/lodash/identity.js","../../../../../node_modules/lodash/_baseProperty.js","../../../../../node_modules/lodash/_basePropertyDeep.js","../../../../../node_modules/lodash/property.js","../../../../../node_modules/lodash/_baseIteratee.js","../../../../../node_modules/lodash/mapValues.js","../../../../../node_modules/property-expr/index.js","../../../../../node_modules/yup/lib/Reference.js","../../../../../node_modules/yup/lib/util/createValidation.js","../../../../../node_modules/yup/lib/util/reach.js","../../../../../node_modules/yup/lib/mixed.js","../../../../../node_modules/yup/lib/util/inherits.js","../../../../../node_modules/yup/lib/boolean.js","../../../../../node_modules/yup/lib/util/isAbsent.js","../../../../../node_modules/yup/lib/string.js","../../../../../node_modules/yup/lib/number.js","../../../../../node_modules/yup/lib/util/isodate.js","../../../../../node_modules/yup/lib/date.js","../../../../../node_modules/@babel/runtime/helpers/typeof.js","../../../../../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../../../../../node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js","../../../../../node_modules/lodash/_arrayReduce.js","../../../../../node_modules/lodash/_basePropertyOf.js","../../../../../node_modules/lodash/_deburrLetter.js","../../../../../node_modules/lodash/deburr.js","../../../../../node_modules/lodash/_asciiWords.js","../../../../../node_modules/lodash/_hasUnicodeWord.js","../../../../../node_modules/lodash/_unicodeWords.js","../../../../../node_modules/lodash/words.js","../../../../../node_modules/lodash/_createCompounder.js","../../../../../node_modules/lodash/snakeCase.js","../../../../../node_modules/lodash/_baseSlice.js","../../../../../node_modules/lodash/_castSlice.js","../../../../../node_modules/lodash/_createCaseFirst.js","../../../../../node_modules/lodash/upperFirst.js","../../../../../node_modules/lodash/capitalize.js","../../../../../node_modules/lodash/camelCase.js","../../../../../node_modules/lodash/mapKeys.js","../../../../../node_modules/toposort/index.js","../../../../../node_modules/yup/lib/util/sortFields.js","../../../../../node_modules/yup/lib/util/sortByKeyOrder.js","../../../../../node_modules/yup/lib/util/makePath.js","../../../../../node_modules/yup/lib/object.js","../../../../../node_modules/yup/lib/array.js","../../../../../node_modules/yup/lib/Lazy.js","../../../../../node_modules/yup/lib/setLocale.js","../../../../../node_modules/yup/lib/index.js","../../../../libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","../../../../libs/shared/src/images/svg/actions/VisibleOffSvg.tsx","../../../../libs/shared/src/images/svg/actions/VisibleOnSvg.tsx","../../../../libs/shared/src/utils/FormHelper.ts","../../../../libs/shared/src/components/forms/form-field/CharacterCounter.tsx","../../../../libs/shared/src/components/forms/form-field/form-field.module.scss","../../../../libs/shared/src/components/forms/form-field/FormField.tsx","../../../../libs/shared/src/views/feedback/constants/FeedbackFormValidation.ts","../../../../libs/shared/src/views/feedback/components/forms/give-praise/GivePraise.tsx","../../../../libs/shared/src/views/feedback/components/forms/other/Other.tsx","../../../../libs/shared/src/views/feedback/components/forms/raise-issue/RaiseIssue.tsx","../../../../libs/shared/src/constants/ContactDetails.ts","../../../../libs/shared/src/images/svg/objects/EmailSvg.tsx","../../../../libs/shared/src/images/svg/objects/PhoneSvg.tsx","../../../../../node_modules/tslib/tslib.es6.mjs","../../../../../node_modules/file-selector/dist/es5/file.js","../../../../../node_modules/file-selector/dist/es5/file-selector.js","../../../../../node_modules/attr-accept/dist/es/index.js","../../../../../node_modules/react-dropzone/dist/es/utils/index.js","../../../../../node_modules/react-dropzone/dist/es/index.js","../../../../libs/shared/src/components/forms/form-feedback/FormFeedback.tsx","../../../../libs/shared/src/enums/UploadInteractionType.ts","../../../../libs/shared/src/views/feedback/components/feedback-file-upload/file-select.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-file-upload/FeedbackFileUpload.tsx","../../../../libs/shared/src/views/feedback/components/feedback-upload-list/feedback-upload-list.module.scss","../../../../libs/shared/src/views/feedback/components/feedback-upload-list/FeedbackUploadList.tsx","../../../../libs/shared/src/images/svg/actions/DeleteSvg.tsx","../../../../libs/shared/src/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList.tsx","../../../../libs/shared/src/views/feedback/components/forms/report-bug/ReportBug.tsx","../../../../libs/shared/src/utils/MasterTypeHelper.ts","../../../../libs/shared/src/apps/share/components/white-avatar/white-avatar.module.scss","../../../../libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.module.scss","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/recipient-item.module.scss","../../../../libs/shared/src/apps/share/components/recipient-item/classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/classroom-recipient-item-metadata/ClassroomRecipientItemMetadata.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","../../../../libs/shared/src/apps/share/components/recipient-item/RecipientItem.tsx","../../../../libs/shared/src/components/typeahead-error-state/typeahead-error-state.module.scss","../../../../libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/tokenized-typeahead.module.scss","../../../../libs/shared/src/apps/share/components/tokenized-typeahead/TokenizedTypeahead.tsx","../../../../libs/shared/src/views/feedback/components/forms/request-livestream/RequestLivestream.tsx","../../../../libs/shared/src/views/feedback/components/forms/request-video/before-requesting/before-requesting.module.scss","../../../../libs/shared/src/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting.tsx","../../../../libs/shared/src/views/feedback/components/forms/request-video/RequestVideo.tsx","../../../../libs/shared/src/views/feedback/components/forms/suggest-improvement/SuggestImprovement.tsx","../../../../libs/shared/src/views/feedback/components/forms/FeedbackForm.tsx","../../../../libs/shared/src/views/feedback/views/give-feedback/GiveFeedbackView.tsx"],"sourcesContent":["export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}\n","export enum PresentationType {\n Subject = 'Subject',\n Curriculum = 'Curriculum',\n StreamableLearning = 'StreamableLearning'\n}\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\n\nexport const AudienceRequests = {\n presentationAudiences(presentationType: PresentationType, presentationId?: string): Flight.PublicRequest {\n const requestOpts = {\n type: presentationType\n };\n\n return {\n bootstrapName: 'presentationAudiences',\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/audiences', requestOpts),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentation/${presentationId}/audiences`, requestOpts),\n regionScoped: true,\n key: `presentation:audiences:${presentationId}:${presentationType}`,\n normalize: false\n };\n },\n\n audiencesByPresentationId(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}/audiences`,\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentation/${presentationId}/audiences`, {\n type: PresentationType.Subject.toLowerCase(),\n presentationId\n }),\n key: `presentation:${presentationId}:audiences`,\n normalize: false\n };\n }\n};\n","export enum ClassificationMemberType {\n Playlists = 'playlists',\n Series = 'series',\n Videos = 'videos',\n PinnedVideos = 'pinnedVideos'\n}\n","// Maps to enum in SubjectApi but uses the\n// key rather than the value\nexport enum ClassificationType {\n Subject = 'Subject',\n Hub = 'Hub',\n CurriculumAudience = 'CurriculumAudience',\n CurriculumSubject = 'CurriculumSubject',\n CurriculumArea = 'CurriculumArea',\n CurriculumLeaf = 'CurriculumLeaf',\n CurriculumMetadata = 'CurriculumMetadata'\n}\n","import { HashObject } from 'libs/common/react/interfaces';\n\nexport const THEME_ASSET_KEYS = [ 'banner', 'cover', 'thumbnail', 'tallPoster', 'icon' ] as const;\n\nexport const ThemeAssetHelper = {\n applyThemeAssets<T extends HashObject>(data: T): T {\n if (Array.isArray(data)) {\n return data.map(ThemeAssetHelper.applyThemeToClassification) as unknown as T;\n }\n\n if (Array.isArray(data?.data)) {\n return { ...data, data: data.data.map(ThemeAssetHelper.applyThemeToClassification) };\n }\n\n return ThemeAssetHelper.applyThemeToClassification(data) as T;\n },\n\n applyThemeToClassification(classification: HashObject): HashObject {\n const themeValue = classification._theme?.value;\n if (!themeValue) return classification;\n\n const overrides: HashObject = {};\n for (const key of THEME_ASSET_KEYS) {\n if (themeValue[key]) {\n overrides[key] = themeValue[key];\n }\n }\n\n return { ...classification, ...overrides };\n }\n};\n","import { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { ClassificationMemberType } from 'libs/shared/apps/subjects/enums/ClassificationMemberType';\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { ClassificationType } from 'libs/shared/enums/ClassificationType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { PlaylistCollection, RegionAlternative, SeriesCollection } from 'libs/shared/interfaces';\nimport { ThemeAssetHelper } from 'libs/shared/utils/ThemeAssetHelper';\n\nconst getClassificationMemberFilter = (ids: string[]) => `subjectpresentationaudiences.id:[${ids.join(',')}]`;\n\nexport const ClassificationRequests = {\n topicsFromAllAvailablePresentations(ids: string[]): Flight.PublicRequest {\n const params = { filterType: 'topics', presentationId: ids };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/search/filters', params),\n publicUrl: UrlHelper.urlBuilder('/api/search/filters', params),\n key: 'classification:availableTopics',\n normalize: false\n };\n },\n\n availablePresentations(type?: PresentationType): Flight.PublicRequest {\n const queryStringOpts = { type: type?.toLowerCase() };\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations/available', queryStringOpts),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/presentations/available', queryStringOpts),\n key: `available:presentations:${type}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n hubTopics(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}/types/hub/classifications`,\n publicUrl: `/api/subjects/presentations/${presentationId}/types/hub/classifications`,\n key: `presentation:${presentationId}:hub:classifications`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n topLevelTopics(presentationId: string): Flight.PublicRequest {\n const params = {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n sort: 'alphabetical',\n type: ClassificationType.Subject.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/presentations/${presentationId}/classifications`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/classifications`, params),\n key: `presentation:${presentationId}:classifications`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n presentationById(presentationId: string): Flight.PublicRequest {\n return {\n url: `{gateway}/v1/subjects/presentations/${presentationId}`,\n publicUrl: `/api/subjects/presentations/${presentationId}`,\n regionScoped: true,\n key: `presentation:${presentationId}`\n };\n },\n\n presentationBySlug(presentationSlug: string, contentRegion: string, type: PresentationType): Flight.PublicRequest {\n const params = {\n type: type.toLowerCase(),\n contentRegion: contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationSlug}`, params),\n key: `current:presentation:${type.toLowerCase()}:${contentRegion}:${presentationSlug ?? ''}`,\n bootstrapName: 'presentation',\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n presentation(type: PresentationType, presentationId?: string): Flight.PublicRequest {\n const params = {\n type: type?.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/presentations', params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}`, params),\n regionScoped: true,\n key: `current:presentation${type ? `:${type.toLowerCase()}` : ''}${presentationId ? `:${presentationId}` : ''}`,\n normalizeOptions: {\n namespace: 'presentation'\n }\n };\n },\n\n classifications(): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/classifications', {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder('/api/subjects/classifications', {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION,\n type: PresentationType.Subject.toLowerCase()\n }),\n key: `classifications`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n classification(id: string, userId?: string, error?: (xhr: Xhr) => void): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}`, {\n query: SharedWithStatements.CLASSIFICATION(userId)\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}`, {\n query: PublicWithStatement.CLASSIFICATION\n }),\n key: `classification:${id}`,\n formatData: ThemeAssetHelper.applyThemeAssets,\n error\n };\n },\n\n classificationPreview(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/preview`,\n key: `classification:preview:${id}`\n };\n },\n\n path(id: string, presentationType?: PresentationType): Flight.PublicRequest {\n const params = { type: presentationType };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/path`, params),\n publicUrl: `/api/subjects/classifications/${id}/path`,\n key: `classification:${id}:path`\n };\n },\n\n paths(id: string): Flight.Request {\n return {\n url: `/api/subjects/classifications/${id}/paths`,\n key: `classification:${id}:paths`\n };\n },\n\n children(id: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/children`, {\n query: SharedWithStatements.CLASSIFICATION_COLLECTION\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/children`, {\n query: PublicWithStatement.CLASSIFICATION_COLLECTION\n }),\n key: `classification:${id}:children`,\n formatData: ThemeAssetHelper.applyThemeAssets\n };\n },\n\n videos(\n id: string,\n presentationId: string,\n activeAudiences: string[]\n ): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderbydesc:timestamp';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}(videoCollection),subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.PinnedVideos}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.PinnedVideos}:${activeAudiences.join(':')}`\n };\n },\n\n /**\n * This request should only be used when displaying the playlist widget within a classification/topic page.\n * The current behaviour is to filter out any playlist that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n playlists(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100,orderby:name';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.PLAYLIST_COLLECTION}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Playlists}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Playlists}:${activeAudiences.join(':')}`,\n formatData: (playlist: PlaylistCollection): PlaylistCollection => {\n if (!playlist)\n return;\n\n return {\n ...playlist,\n data: playlist.data?.filter(p => p.cover?.url)\n };\n }\n };\n },\n\n /**\n * This request should only be used when displaying the series widget within a classification/topic page.\n * The current behaviour is to filter out any series that don't yet have a poster, this will ensure that\n * all topic pages are only showed in a complete state.\n */\n series(id: string, presentationId: string, activeAudiences: string[]): Flight.PublicRequest {\n if (!presentationId)\n return;\n\n let filter = 'limit:100';\n\n if (activeAudiences.length)\n filter += `,${getClassificationMemberFilter(activeAudiences)}`;\n\n const query = `{${filter}}${SharedWithStatements.SERIES}` +\n `,subjectpresentationaudiences{presentationId:${presentationId}}`;\n\n // TODO (public): Remove this permissionFilterOpts\n const queryStringObj = {\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/${ClassificationMemberType.Series}`, queryStringObj),\n key: `classification:${id}:${ClassificationMemberType.Series}:${activeAudiences.join(':')}`,\n formatData: (series: SeriesCollection): SeriesCollection => {\n if (!series)\n return;\n\n return {\n ...series,\n data: series.data?.filter(s => s.tallPoster?.url)\n };\n }\n };\n },\n\n curriculumLinks(id: string, curriculumId: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/presentations/${curriculumId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Curriculum.toLowerCase()\n }),\n regionScoped: true,\n key: `curriculum:links:${id}:${curriculumId}`,\n normalize: false\n };\n },\n\n subjectLinks(id: string, presentationId: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/objects/${id}/classifications/paths`, {\n type: PresentationType.Subject.toLowerCase()\n });\n\n return {\n url,\n publicUrl: url,\n key: `subject:links:${id}:${presentationId}`,\n normalize: false\n };\n },\n\n getMappedCurriculums(\n id: string,\n pids: string[]\n ): Flight.PublicRequest {\n const params: HashObject = {\n type: PresentationType.Curriculum.toLowerCase()\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/presentations`, params),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/${id}/presentations`, { ...params, pid: pids }),\n regionScoped: true,\n key: `mapped:curriculums:${id}:${pids.join(',')}`,\n normalize: false\n };\n },\n\n regionAlternatives(\n classificationId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n publicUrl: `/api/subjects/classifications/${classificationId}/region-alternatives`,\n key: `classification:regionAlternatives:${classificationId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};\n","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\n/**\n * Hook used to listen to updates on a Backbone Collection\n * and trigger a re-render.\n */\nexport function useGetCollectionItems<T>(\n getCollection: () => Core.Collection,\n onRemove?: () => void,\n dependencies: React.DependencyList = []\n): T[] {\n const [ , setUpdate ] = React.useState(false);\n\n React.useEffect(() => {\n const collection = getCollection();\n\n if (!collection)\n return;\n\n collection.off('add remove change');\n collection.on('add remove change', () => {\n setUpdate(s => !s);\n });\n if (onRemove)\n collection.on('remove', onRemove);\n return () => { collection.off('add remove change'); };\n }, dependencies);\n\n return getCollection()?.toJSON();\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.studentRestrictedDialogError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport class StudentRestrictedDialogError extends DialogError {\n constructor() {\n super('Learner accessing feature that is for staff only');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'StudentRestrictedDialogError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: getPhrase('heading'),\n text: getPhrase('description'),\n buttons: [{\n text: getPhrase('close'),\n className: 'btn btn-link',\n close: true\n }]\n };\n }\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { StudentRestrictedDialogError } from 'libs/shared/errors/general/student-restricted/StudentRestrictedDialogError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Logger } from 'libs/shared/utils/Logger';\n\nexport function useStudentRestrictedDialogError(): void {\n const { hasPermissions, isLoaded } = usePermissions();\n React.useEffect(() => {\n if (!isLoaded)\n return;\n\n if (!hasPermissions(PermissionName.StudentExperience))\n return;\n\n const error = new StudentRestrictedDialogError();\n Logger.logError(error);\n Core.ErrorHelper.throw(error);\n }, [isLoaded]);\n}\n","export enum CountryCode {\n AU = 'au',\n NZ = 'nz',\n UK = 'uk',\n US = 'us',\n CA = 'ca'\n}\n","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nconst COUNTRY_CODE_TAGS: {[key in CountryCode]: string } = {\n [CountryCode.AU]: 'au',\n [CountryCode.NZ]: 'nz',\n [CountryCode.UK]: 'uk',\n [CountryCode.US]: 'us',\n [CountryCode.CA]: 'ca'\n};\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion,\n firstName: currentUser.givenName,\n lastName: currentUser.familyName\n };\n },\n\n mapCountryCodeToTag: (countryCode: CountryCode): string => {\n return COUNTRY_CODE_TAGS[countryCode.toLowerCase() as CountryCode];\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const countryCodeTag = FeedbackFormHelper.mapCountryCodeToTag(currentUser.countryCode);\n \n if (countryCodeTag)\n tags.push(countryCodeTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};\n","export enum FeedbackOption {\n SUGGEST_IMPROVEMENT = 'suggestImprovement',\n REPORT_BUG = 'reportBug',\n REQUEST_VIDEO = 'requestVideo',\n REQUEST_LIVESTREAM = 'requestLivestream',\n GIVE_PRAISE = 'givePraise',\n RAISE_ISSUE = 'raiseIssue',\n OTHER = 'other'\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nconst namespace = 'shared.feedbackFormTitles';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getFeedbackFormTitles = (feedbackOption: FeedbackOption) => {\n switch (feedbackOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return getPhrase(feedbackOption);\n case FeedbackOption.REPORT_BUG: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_VIDEO: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_LIVESTREAM: return getPhrase(feedbackOption);\n case FeedbackOption.GIVE_PRAISE: return getPhrase(feedbackOption);\n case FeedbackOption.RAISE_ISSUE: return getPhrase(feedbackOption);\n case FeedbackOption.OTHER: return getPhrase(feedbackOption);\n }\n};\n","import { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nexport const FEEDBACK_IMAGE_URLS = {\n mailSent: 'https://img.clickviewapp.com/v2/images/2mZ7L9',\n mediaPreview: 'https://img.clickviewapp.com/v2/images/ageRM0',\n lightBulb: 'https://img.clickviewapp.com/v2/images/Oqg3JN',\n heartHands: 'https://img.clickviewapp.com/v2/images/1ML8Oj',\n videoAlert: 'https://img.clickviewapp.com/v2/images/dq2oMq',\n\n [FeedbackOption.REQUEST_VIDEO]: {\n default: 'https://img.clickviewapp.com/v2/images/G1YGdn',\n hover: 'https://img.clickviewapp.com/v2/images/K6yPxz'\n },\n [FeedbackOption.REQUEST_LIVESTREAM]: {\n default: 'https://img.clickviewapp.com/v2/images/G1YGdn',\n hover: 'https://img.clickviewapp.com/v2/images/K6yPxz'\n },\n [FeedbackOption.SUGGEST_IMPROVEMENT]: {\n default: 'https://img.clickviewapp.com/v2/images/g7aR1l',\n hover: 'https://img.clickviewapp.com/v2/images/zMR0Dk'\n },\n [FeedbackOption.RAISE_ISSUE]: {\n default: 'https://img.clickviewapp.com/v2/images/5boW78',\n hover: 'https://img.clickviewapp.com/v2/images/m6yRKr'\n },\n [FeedbackOption.GIVE_PRAISE]: {\n default: 'https://img.clickviewapp.com/v2/images/nE1mdz',\n hover: 'https://img.clickviewapp.com/v2/images/JjEnmR'\n },\n [FeedbackOption.REPORT_BUG]: {\n default: 'https://img.clickviewapp.com/v2/images/AOdYpo',\n hover: 'https://img.clickviewapp.com/v2/images/yro9NM'\n },\n [FeedbackOption.OTHER]: {\n default: 'https://img.clickviewapp.com/v2/images/Eoaykj',\n hover: 'https://img.clickviewapp.com/v2/images/wN59Zg'\n }\n};\n",":local {\n .image {\n height: 6.25rem;\n }\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './feedback-selector.module.scss';\n\ninterface FeedbackSelectorOptionProps {\n option: FeedbackOption;\n onSelectOption?: (option: FeedbackOption) => void;\n}\n\nfunction FeedbackSelectorOption(props: FeedbackSelectorOptionProps) {\n const [ ref, isHovering ] = useHover<HTMLImageElement>();\n\n const feedbackImage = FEEDBACK_IMAGE_URLS[props.option];\n\n return (\n <DivButton ref={ref} className='col-lg-4 col-sm-6 col-12' onClick={() => props.onSelectOption(props.option)}>\n <div className='d-flex flex-column align-items-center h-100 rounded border py-3 gap-2'>\n <img\n className={styles.image}\n src={(isHovering ? feedbackImage.hover : feedbackImage.default)}\n alt={getFeedbackFormTitles(props.option)}\n />\n \n <p className='fw-semibold text-center mb-0'>{getFeedbackFormTitles(props.option)}</p>\n </div>\n </DivButton>\n );\n}\n\ninterface FeedbackSelectorProps {\n options: FeedbackOption[];\n onSelectOption: (option: FeedbackOption) => void;\n}\n\nexport function FeedbackSelector(props: FeedbackSelectorProps) {\n return (\n <div className='row g-2'>\n {props.options.map(option =>\n <FeedbackSelectorOption key={option} option={option} onSelectOption={props.onSelectOption} />)}\n </div>\n );\n}\n","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean,\n errors?: FormikErrors<FormValues>\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema ?\n props.validationSchema.cast(omitNullInitialValues(initialValues)) :\n initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema ?\n props.validationSchema.cast(values) :\n values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children) ?\n (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f) :\n React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackButtonsProps {\n submitText?: string;\n formStage: FeedbackFormStage;\n setSelectedOption: (option: FeedbackOption) => void;\n closePopup?: () => void;\n hideCancelButton?: boolean;\n}\n\nexport function FeedbackButtons(props: FeedbackButtonsProps) {\n const formikProps = useFormikContextWrapper();\n\n return (\n <PopupButtons>\n {props.formStage === 'form' && (\n <>\n {!props.hideCancelButton &&\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('cancel')} />\n }\n <PopupButtons.Submit variant='dark' text={props.submitText || getPhrase('submit')} disabled={!formikProps.isValid} />\n </>\n )}\n \n {props.formStage === 'success' && (\n <PopupButtons.Cancel variant='dark' text={getPhrase('close')} onClick={props.closePopup} />\n )}\n </PopupButtons>\n );\n}\n",":local {\n .successImage {\n height: 9.5rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nimport styles from './feedback-form-state.module.scss';\n\nconst namespace = 'shared.feedbackFormState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackFormStateProps {\n formStage: FeedbackFormStage;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n}\n\nexport function FeedbackFormState(props: FeedbackFormStateProps) {\n if (props.formStage === 'form') return <></>;\n\n if (props.formStage === 'error') return <></>;\n\n return (\n <div className='text-center'>\n <div className='mb-3'>\n <img className={styles.successImage} src={props.successImageUrl || FEEDBACK_IMAGE_URLS.mailSent} />\n </div>\n <h4 className='mb-3'>{props.successHeading || getPhrase('successHeading')}</h4>\n <p className='mb-3'>{props.successDescription || getPhrase('successDescription')}</p>\n </div>\n );\n}\n","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nmodule.exports = cloneDeepWith;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = printValue;\nvar toString = Object.prototype.toString;\nvar errorToString = Error.prototype.toString;\nvar regExpToString = RegExp.prototype.toString;\nvar symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : function () {\n return '';\n};\nvar SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n var isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings) {\n if (quoteStrings === void 0) {\n quoteStrings = false;\n }\n\n if (val == null || val === true || val === false) return '' + val;\n var typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? \"\\\"\" + val + \"\\\"\" : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n var tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nfunction printValue(value, quoteStrings) {\n var result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n var result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.array = exports.object = exports.boolean = exports.date = exports.number = exports.string = exports.mixed = void 0;\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: function notType(_ref) {\n var path = _ref.path,\n type = _ref.type,\n value = _ref.value,\n originalValue = _ref.originalValue;\n var isCast = originalValue != null && originalValue !== value;\n var msg = path + \" must be a `\" + type + \"` type, \" + (\"but the final value was: `\" + (0, _printValue.default)(value, true) + \"`\") + (isCast ? \" (cast from the value `\" + (0, _printValue.default)(originalValue, true) + \"`).\" : '.');\n\n if (value === null) {\n msg += \"\\n If \\\"null\\\" is intended as an empty value be sure to mark the schema as `.nullable()`\";\n }\n\n return msg;\n }\n};\nexports.mixed = mixed;\nvar string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexports.string = string;\nvar number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n notEqual: '${path} must be not equal to ${notEqual}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexports.number = number;\nvar date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexports.date = date;\nvar boolean = {};\nexports.boolean = boolean;\nvar object = {\n noUnknown: '${path} field cannot have keys not specified in the object shape'\n};\nexports.object = object;\nvar array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items'\n};\nexports.array = array;\nvar _default = {\n mixed: mixed,\n string: string,\n number: number,\n date: date,\n object: object,\n array: array,\n boolean: boolean\n};\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = function _default(obj) {\n return obj && obj.__isYupSchema__;\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar Condition =\n/*#__PURE__*/\nfunction () {\n function Condition(refs, options) {\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!(0, _has.default)(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n var is = options.is,\n then = options.then,\n otherwise = options.otherwise;\n var check = typeof is === 'function' ? is : function () {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.every(function (value) {\n return value === is;\n });\n };\n\n this.fn = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var options = args.pop();\n var schema = args.pop();\n var branch = check.apply(void 0, args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n var _proto = Condition.prototype;\n\n _proto.resolve = function resolve(base, options) {\n var values = this.refs.map(function (ref) {\n return ref.getValue(options);\n });\n var schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!(0, _isSchema.default)(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n };\n\n return Condition;\n}();\n\nvar _default = Condition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* jshint node: true */\n\"use strict\";\n\nfunction makeArrayFrom(obj) {\n return Array.prototype.slice.apply(obj);\n}\n\nvar\n PENDING = \"pending\",\n RESOLVED = \"resolved\",\n REJECTED = \"rejected\";\n\nfunction SynchronousPromise(handler) {\n this.status = PENDING;\n this._continuations = [];\n this._parent = null;\n this._paused = false;\n if (handler) {\n handler.call(\n this,\n this._continueWith.bind(this),\n this._failWith.bind(this)\n );\n }\n}\n\nfunction looksLikeAPromise(obj) {\n return obj && typeof (obj.then) === \"function\";\n}\n\nfunction passThrough(value) {\n return value;\n}\n\nSynchronousPromise.prototype = {\n then: function (nextFn, catchFn) {\n var next = SynchronousPromise.unresolved()._setParent(this);\n if (this._isRejected()) {\n if (this._paused) {\n this._continuations.push({\n promise: next,\n nextFn: nextFn,\n catchFn: catchFn\n });\n return next;\n }\n if (catchFn) {\n try {\n var catchResult = catchFn(this._error);\n if (looksLikeAPromise(catchResult)) {\n this._chainPromiseData(catchResult, next);\n return next;\n } else {\n return SynchronousPromise.resolve(catchResult)._setParent(this);\n }\n } catch (e) {\n return SynchronousPromise.reject(e)._setParent(this);\n }\n }\n return SynchronousPromise.reject(this._error)._setParent(this);\n }\n this._continuations.push({\n promise: next,\n nextFn: nextFn,\n catchFn: catchFn\n });\n this._runResolutions();\n return next;\n },\n catch: function (handler) {\n if (this._isResolved()) {\n return SynchronousPromise.resolve(this._data)._setParent(this);\n }\n var next = SynchronousPromise.unresolved()._setParent(this);\n this._continuations.push({\n promise: next,\n catchFn: handler\n });\n this._runRejections();\n return next;\n },\n finally: function (callback) {\n var ran = false;\n\n function runFinally(result, err) {\n if (!ran) {\n ran = true;\n if (!callback) {\n callback = passThrough;\n }\n var callbackResult = callback(result);\n if (looksLikeAPromise(callbackResult)) {\n return callbackResult.then(function () {\n if (err) {\n throw err;\n }\n return result;\n });\n } else {\n if (err) {\n throw err;\n }\n return result;\n }\n }\n }\n\n return this\n .then(function (result) {\n return runFinally(result);\n })\n .catch(function (err) {\n return runFinally(null, err);\n });\n },\n pause: function () {\n this._paused = true;\n return this;\n },\n resume: function () {\n var firstPaused = this._findFirstPaused();\n if (firstPaused) {\n firstPaused._paused = false;\n firstPaused._runResolutions();\n firstPaused._runRejections();\n }\n return this;\n },\n _findAncestry: function () {\n return this._continuations.reduce(function (acc, cur) {\n if (cur.promise) {\n var node = {\n promise: cur.promise,\n children: cur.promise._findAncestry()\n };\n acc.push(node);\n }\n return acc;\n }, []);\n },\n _setParent: function (parent) {\n if (this._parent) {\n throw new Error(\"parent already set\");\n }\n this._parent = parent;\n return this;\n },\n _continueWith: function (data) {\n var firstPending = this._findFirstPending();\n if (firstPending) {\n firstPending._data = data;\n firstPending._setResolved();\n }\n },\n _findFirstPending: function () {\n return this._findFirstAncestor(function (test) {\n return test._isPending && test._isPending();\n });\n },\n _findFirstPaused: function () {\n return this._findFirstAncestor(function (test) {\n return test._paused;\n });\n },\n _findFirstAncestor: function (matching) {\n var test = this;\n var result;\n while (test) {\n if (matching(test)) {\n result = test;\n }\n test = test._parent;\n }\n return result;\n },\n _failWith: function (error) {\n var firstRejected = this._findFirstPending();\n if (firstRejected) {\n firstRejected._error = error;\n firstRejected._setRejected();\n }\n },\n _takeContinuations: function () {\n return this._continuations.splice(0, this._continuations.length);\n },\n _runRejections: function () {\n if (this._paused || !this._isRejected()) {\n return;\n }\n var\n error = this._error,\n continuations = this._takeContinuations(),\n self = this;\n continuations.forEach(function (cont) {\n if (cont.catchFn) {\n try {\n var catchResult = cont.catchFn(error);\n self._handleUserFunctionResult(catchResult, cont.promise);\n } catch (e) {\n cont.promise.reject(e);\n }\n } else {\n cont.promise.reject(error);\n }\n });\n },\n _runResolutions: function () {\n if (this._paused || !this._isResolved() || this._isPending()) {\n return;\n }\n var continuations = this._takeContinuations();\n var data = this._data;\n var self = this;\n continuations.forEach(function (cont) {\n if (cont.nextFn) {\n try {\n var result = cont.nextFn(data);\n self._handleUserFunctionResult(result, cont.promise);\n } catch (e) {\n self._handleResolutionError(e, cont);\n }\n } else if (cont.promise) {\n cont.promise.resolve(data);\n }\n });\n if (looksLikeAPromise(this._data)) {\n return this._handleWhenResolvedDataIsPromise(this._data);\n }\n },\n _handleResolutionError: function (e, continuation) {\n this._setRejected();\n if (continuation.catchFn) {\n try {\n continuation.catchFn(e);\n return;\n } catch (e2) {\n e = e2;\n }\n }\n if (continuation.promise) {\n continuation.promise.reject(e);\n }\n },\n _handleWhenResolvedDataIsPromise: function (data) {\n var self = this;\n return data.then(function (result) {\n self._data = result;\n self._runResolutions();\n }).catch(function (error) {\n self._error = error;\n self._setRejected();\n self._runRejections();\n });\n },\n _handleUserFunctionResult: function (data, nextSynchronousPromise) {\n if (looksLikeAPromise(data)) {\n this._chainPromiseData(data, nextSynchronousPromise);\n } else {\n nextSynchronousPromise.resolve(data);\n }\n },\n _chainPromiseData: function (promiseData, nextSynchronousPromise) {\n promiseData.then(function (newData) {\n nextSynchronousPromise.resolve(newData);\n }).catch(function (newError) {\n nextSynchronousPromise.reject(newError);\n });\n },\n _setResolved: function () {\n this.status = RESOLVED;\n if (!this._paused) {\n this._runResolutions();\n }\n },\n _setRejected: function () {\n this.status = REJECTED;\n if (!this._paused) {\n this._runRejections();\n }\n },\n _isPending: function () {\n return this.status === PENDING;\n },\n _isResolved: function () {\n return this.status === RESOLVED;\n },\n _isRejected: function () {\n return this.status === REJECTED;\n }\n};\n\nSynchronousPromise.resolve = function (result) {\n return new SynchronousPromise(function (resolve, reject) {\n if (looksLikeAPromise(result)) {\n result.then(function (newResult) {\n resolve(newResult);\n }).catch(function (error) {\n reject(error);\n });\n } else {\n resolve(result);\n }\n });\n};\n\nSynchronousPromise.reject = function (result) {\n return new SynchronousPromise(function (resolve, reject) {\n reject(result);\n });\n};\n\nSynchronousPromise.unresolved = function () {\n return new SynchronousPromise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n};\n\nSynchronousPromise.all = function () {\n var args = makeArrayFrom(arguments);\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n if (!args.length) {\n return SynchronousPromise.resolve([]);\n }\n return new SynchronousPromise(function (resolve, reject) {\n var\n allData = [],\n numResolved = 0,\n doResolve = function () {\n if (numResolved === args.length) {\n resolve(allData);\n }\n },\n rejected = false,\n doReject = function (err) {\n if (rejected) {\n return;\n }\n rejected = true;\n reject(err);\n };\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n allData[idx] = thisResult;\n numResolved += 1;\n doResolve();\n }).catch(function (err) {\n doReject(err);\n });\n });\n });\n};\n\nfunction createAggregateErrorFrom(errors) {\n /* jshint ignore:start */\n if (typeof window !== \"undefined\" && \"AggregateError\" in window) {\n return new window.AggregateError(errors);\n }\n /* jshint ignore:end */\n\n return { errors: errors };\n}\n\nSynchronousPromise.any = function () {\n var args = makeArrayFrom(arguments);\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n if (!args.length) {\n return SynchronousPromise.reject(createAggregateErrorFrom([]));\n }\n return new SynchronousPromise(function (resolve, reject) {\n var\n allErrors = [],\n numRejected = 0,\n doReject = function () {\n if (numRejected === args.length) {\n reject(createAggregateErrorFrom(allErrors));\n }\n },\n resolved = false,\n doResolve = function (result) {\n if (resolved) {\n return;\n }\n resolved = true;\n resolve(result);\n };\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n doResolve(thisResult);\n }).catch(function (err) {\n allErrors[idx] = err;\n numRejected += 1;\n doReject();\n });\n });\n });\n};\n\nSynchronousPromise.allSettled = function () {\n var args = makeArrayFrom(arguments);\n if (Array.isArray(args[0])) {\n args = args[0];\n }\n if (!args.length) {\n return SynchronousPromise.resolve([]);\n }\n return new SynchronousPromise(function (resolve) {\n var\n allData = [],\n numSettled = 0,\n doSettled = function () {\n numSettled += 1;\n if (numSettled === args.length) {\n resolve(allData);\n }\n };\n args.forEach(function (arg, idx) {\n SynchronousPromise.resolve(arg).then(function (thisResult) {\n allData[idx] = {\n status: \"fulfilled\",\n value: thisResult\n };\n doSettled();\n }).catch(function (err) {\n allData[idx] = {\n status: \"rejected\",\n reason: err\n };\n doSettled();\n });\n });\n });\n};\n\n/* jshint ignore:start */\nif (Promise === SynchronousPromise) {\n throw new Error(\"Please use SynchronousPromise.installGlobally() to install globally\");\n}\nvar RealPromise = Promise;\nSynchronousPromise.installGlobally = function (__awaiter) {\n if (Promise === SynchronousPromise) {\n return __awaiter;\n }\n var result = patchAwaiterIfRequired(__awaiter);\n Promise = SynchronousPromise;\n return result;\n};\n\nSynchronousPromise.uninstallGlobally = function () {\n if (Promise === SynchronousPromise) {\n Promise = RealPromise;\n }\n};\n\nfunction patchAwaiterIfRequired(__awaiter) {\n if (typeof (__awaiter) === \"undefined\" || __awaiter.__patched) {\n return __awaiter;\n }\n var originalAwaiter = __awaiter;\n __awaiter = function () {\n var Promise = RealPromise;\n originalAwaiter.apply(this, makeArrayFrom(arguments));\n };\n __awaiter.__patched = true;\n return __awaiter;\n}\n\n/* jshint ignore:end */\n\nmodule.exports = {\n SynchronousPromise: SynchronousPromise\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = ValidationError;\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\n\nvar replace = function replace(str) {\n return function (params) {\n return str.replace(strReg, function (_, key) {\n return (0, _printValue.default)(params[key]);\n });\n };\n};\n\nfunction ValidationError(errors, value, field, type) {\n var _this = this;\n\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n if (errors) [].concat(errors).forEach(function (err) {\n _this.errors = _this.errors.concat(err.errors || err);\n if (err.inner) _this.inner = _this.inner.concat(err.inner.length ? err.inner : err);\n });\n this.message = this.errors.length > 1 ? this.errors.length + \" errors occurred\" : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n}\n\nValidationError.prototype = Object.create(Error.prototype);\nValidationError.prototype.constructor = ValidationError;\n\nValidationError.isError = function (err) {\n return err && err.name === 'ValidationError';\n};\n\nValidationError.formatError = function (message, params) {\n if (typeof message === 'string') message = replace(message);\n\n var fn = function fn(params) {\n params.path = params.label || params.path || 'this';\n return typeof message === 'function' ? message(params) : message;\n };\n\n return arguments.length === 1 ? fn : fn(params);\n};\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.propagateErrors = propagateErrors;\nexports.settled = settled;\nexports.collectErrors = collectErrors;\nexports.default = runValidations;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _synchronousPromise = require(\"synchronous-promise\");\n\nvar _ValidationError = _interopRequireDefault(require(\"../ValidationError\"));\n\nvar promise = function promise(sync) {\n return sync ? _synchronousPromise.SynchronousPromise : Promise;\n};\n\nvar unwrapError = function unwrapError(errors) {\n if (errors === void 0) {\n errors = [];\n }\n\n return errors.inner && errors.inner.length ? errors.inner : [].concat(errors);\n};\n\nfunction scopeToValue(promises, value, sync) {\n //console.log('scopeToValue', promises, value)\n var p = promise(sync).all(promises); //console.log('scopeToValue B', p)\n\n var b = p.catch(function (err) {\n if (err.name === 'ValidationError') err.value = value;\n throw err;\n }); //console.log('scopeToValue c', b)\n\n var c = b.then(function () {\n return value;\n }); //console.log('scopeToValue d', c)\n\n return c;\n}\n/**\n * If not failing on the first error, catch the errors\n * and collect them in an array\n */\n\n\nfunction propagateErrors(endEarly, errors) {\n return endEarly ? null : function (err) {\n errors.push(err);\n return err.value;\n };\n}\n\nfunction settled(promises, sync) {\n var Promise = promise(sync);\n return Promise.all(promises.map(function (p) {\n return Promise.resolve(p).then(function (value) {\n return {\n fulfilled: true,\n value: value\n };\n }, function (value) {\n return {\n fulfilled: false,\n value: value\n };\n });\n }));\n}\n\nfunction collectErrors(_ref) {\n var validations = _ref.validations,\n value = _ref.value,\n path = _ref.path,\n sync = _ref.sync,\n errors = _ref.errors,\n sort = _ref.sort;\n errors = unwrapError(errors);\n return settled(validations, sync).then(function (results) {\n var nestedErrors = results.filter(function (r) {\n return !r.fulfilled;\n }).reduce(function (arr, _ref2) {\n var error = _ref2.value;\n\n // we are only collecting validation errors\n if (!_ValidationError.default.isError(error)) {\n throw error;\n }\n\n return arr.concat(error);\n }, []);\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n errors = nestedErrors.concat(errors);\n if (errors.length) throw new _ValidationError.default(errors, value, path);\n return value;\n });\n}\n\nfunction runValidations(_ref3) {\n var endEarly = _ref3.endEarly,\n options = (0, _objectWithoutPropertiesLoose2.default)(_ref3, [\"endEarly\"]);\n if (endEarly) return scopeToValue(options.validations, options.value, options.sync);\n return collectErrors(options);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = prependDeep;\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./isSchema\"));\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nfunction prependDeep(target, source) {\n for (var key in source) {\n if ((0, _has.default)(source, key)) {\n var sourceVal = source[key],\n targetVal = target[key];\n\n if (targetVal === undefined) {\n target[key] = sourceVal;\n } else if (targetVal === sourceVal) {\n continue;\n } else if ((0, _isSchema.default)(targetVal)) {\n if ((0, _isSchema.default)(sourceVal)) target[key] = sourceVal.concat(targetVal);\n } else if (isObject(targetVal)) {\n if (isObject(sourceVal)) target[key] = prependDeep(targetVal, sourceVal);\n } else if (Array.isArray(targetVal)) {\n if (Array.isArray(sourceVal)) target[key] = sourceVal.concat(targetVal);\n }\n }\n }\n\n return target;\n}\n\nmodule.exports = exports[\"default\"];","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","/**\n * Based on Kendo UI Core expression code <https://github.com/telerik/kendo-ui-core#license-information>\n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function() {\n this._size = 0\n this._values = {}\n}\nCache.prototype.get = function(key) {\n return this._values[key]\n}\nCache.prototype.set = function(key, value) {\n this._size >= this._maxSize && this.clear()\n if (!this._values.hasOwnProperty(key)) {\n this._size++\n }\n return this._values[key] = value\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar contentSecurityPolicy = false,\n pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\ntry {\n new Function('')\n} catch (error) {\n contentSecurityPolicy = true\n}\n\nmodule.exports = {\n Cache: Cache,\n\n expr: expr,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: contentSecurityPolicy\n ? function(path) {\n var parts = normalizePath(path)\n return function(data, value) {\n return setterFallback(parts, data, value)\n }\n }\n : function(path) {\n return setCache.get(path) || setCache.set(\n path,\n new Function(\n 'data, value',\n expr(path, 'data') + ' = value'\n )\n )\n },\n\n getter: contentSecurityPolicy\n ? function(path, safe) {\n var parts = normalizePath(path)\n return function(data) {\n return getterFallback(parts, safe, data)\n }\n }\n : function(path, safe) {\n var key = path + '_' + safe\n return getCache.get(key) || getCache.set(\n key,\n new Function('data', 'return ' + expr(path, safe, 'data'))\n )\n },\n\n join: function(segments) {\n return segments.reduce(function(path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function(path, cb, thisArg) {\n forEach(split(path), cb, thisArg)\n }\n}\n\nfunction setterFallback(parts, data, value) {\n var index = 0,\n len = parts.length\n while (index < len - 1) {\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n}\n\nfunction getterFallback(parts, safe, data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) {\n data = data[parts[index++]]\n } else {\n return\n }\n }\n return data\n}\n\nfunction normalizePath(path) {\n return pathCache.get(path) || pathCache.set(\n path,\n split(path).map(function(part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX)\n}\n\nfunction expr(expression, safe, param) {\n expression = expression || ''\n\n if (typeof safe === 'string') {\n param = safe\n safe = false\n }\n\n param = param || 'data'\n\n if (expression && expression.charAt(0) !== '[') expression = '.' + expression\n\n return safe ? makeSafe(expression, param) : param + expression\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction makeSafe(path, param) {\n var result = param,\n parts = split(path),\n isLast\n\n forEach(parts, function(part, isBracket, isArray, idx, parts) {\n isLast = idx === parts.length - 1\n\n part = isBracket || isArray ? '[' + part + ']' : '.' + part\n\n result += part + (!isLast ? ' || {})' : ')')\n })\n\n return new Array(parts.length + 1).join('(') + result\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar prefixes = {\n context: '$',\n value: '.'\n};\n\nvar Reference =\n/*#__PURE__*/\nfunction () {\n function Reference(key, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n var prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && (0, _propertyExpr.getter)(this.path, true);\n this.map = options.map;\n }\n\n var _proto = Reference.prototype;\n\n _proto.getValue = function getValue(options) {\n var result = this.isContext ? options.context : this.isValue ? options.value : options.parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n };\n\n _proto.cast = function cast(value, options) {\n return this.getValue((0, _extends2.default)({}, options, {\n value: value\n }));\n };\n\n _proto.resolve = function resolve() {\n return this;\n };\n\n _proto.describe = function describe() {\n return {\n type: 'ref',\n key: this.key\n };\n };\n\n _proto.toString = function toString() {\n return \"Ref(\" + this.key + \")\";\n };\n\n Reference.isRef = function isRef(value) {\n return value && value.__isYupRef;\n };\n\n return Reference;\n}();\n\nexports.default = Reference;\nReference.prototype.__isYupRef = true;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.createErrorFactory = createErrorFactory;\nexports.default = createValidation;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _ValidationError = _interopRequireDefault(require(\"../ValidationError\"));\n\nvar _Reference = _interopRequireDefault(require(\"../Reference\"));\n\nvar _synchronousPromise = require(\"synchronous-promise\");\n\nvar formatError = _ValidationError.default.formatError;\n\nvar thenable = function thenable(p) {\n return p && typeof p.then === 'function' && typeof p.catch === 'function';\n};\n\nfunction runTest(testFn, ctx, value, sync) {\n var result = testFn.call(ctx, value);\n if (!sync) return Promise.resolve(result);\n\n if (thenable(result)) {\n throw new Error(\"Validation test of type: \\\"\" + ctx.type + \"\\\" returned a Promise during a synchronous validate. \" + \"This test will finish after the validate call has returned\");\n }\n\n return _synchronousPromise.SynchronousPromise.resolve(result);\n}\n\nfunction resolveParams(oldParams, newParams, resolve) {\n return (0, _mapValues.default)((0, _extends2.default)({}, oldParams, newParams), resolve);\n}\n\nfunction createErrorFactory(_ref) {\n var value = _ref.value,\n label = _ref.label,\n resolve = _ref.resolve,\n originalValue = _ref.originalValue,\n opts = (0, _objectWithoutPropertiesLoose2.default)(_ref, [\"value\", \"label\", \"resolve\", \"originalValue\"]);\n return function createError(_temp) {\n var _ref2 = _temp === void 0 ? {} : _temp,\n _ref2$path = _ref2.path,\n path = _ref2$path === void 0 ? opts.path : _ref2$path,\n _ref2$message = _ref2.message,\n message = _ref2$message === void 0 ? opts.message : _ref2$message,\n _ref2$type = _ref2.type,\n type = _ref2$type === void 0 ? opts.name : _ref2$type,\n params = _ref2.params;\n\n params = (0, _extends2.default)({\n path: path,\n value: value,\n originalValue: originalValue,\n label: label\n }, resolveParams(opts.params, params, resolve));\n return (0, _extends2.default)(new _ValidationError.default(formatError(message, params), value, path, type), {\n params: params\n });\n };\n}\n\nfunction createValidation(options) {\n var name = options.name,\n message = options.message,\n test = options.test,\n params = options.params;\n\n function validate(_ref3) {\n var value = _ref3.value,\n path = _ref3.path,\n label = _ref3.label,\n options = _ref3.options,\n originalValue = _ref3.originalValue,\n sync = _ref3.sync,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_ref3, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n var parent = options.parent;\n\n var resolve = function resolve(item) {\n return _Reference.default.isRef(item) ? item.getValue({\n value: value,\n parent: parent,\n context: options.context\n }) : item;\n };\n\n var createError = createErrorFactory({\n message: message,\n path: path,\n value: value,\n originalValue: originalValue,\n params: params,\n label: label,\n resolve: resolve,\n name: name\n });\n var ctx = (0, _extends2.default)({\n path: path,\n parent: parent,\n type: name,\n createError: createError,\n resolve: resolve,\n options: options\n }, rest);\n return runTest(test, ctx, value, sync).then(function (validOrError) {\n if (_ValidationError.default.isError(validOrError)) throw validOrError;else if (!validOrError) throw createError();\n });\n }\n\n validate.OPTIONS = options;\n return validate;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.getIn = getIn;\nexports.default = void 0;\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar trim = function trim(part) {\n return part.substr(0, part.length - 1).substr(1);\n};\n\nfunction getIn(schema, path, value, context) {\n var parent, lastPart, lastPartDebug; // if only one \"value\" arg then use it for both\n\n context = context || value;\n if (!path) return {\n parent: parent,\n parentPath: path,\n schema: schema\n };\n (0, _propertyExpr.forEach)(path, function (_part, isBracket, isArray) {\n var part = isBracket ? trim(_part) : _part;\n\n if (isArray || (0, _has.default)(schema, '_subType')) {\n // we skipped an array: foo[].bar\n var idx = isArray ? parseInt(part, 10) : 0;\n schema = schema.resolve({\n context: context,\n parent: parent,\n value: value\n })._subType;\n\n if (value) {\n if (isArray && idx >= value.length) {\n throw new Error(\"Yup.reach cannot resolve an array item at index: \" + _part + \", in the path: \" + path + \". \" + \"because there is no value at that index. \");\n }\n\n value = value[idx];\n }\n }\n\n if (!isArray) {\n schema = schema.resolve({\n context: context,\n parent: parent,\n value: value\n });\n if (!(0, _has.default)(schema, 'fields') || !(0, _has.default)(schema.fields, part)) throw new Error(\"The schema does not contain the path: \" + path + \". \" + (\"(failed at: \" + lastPartDebug + \" which is a type: \\\"\" + schema._type + \"\\\") \"));\n schema = schema.fields[part];\n parent = value;\n value = value && value[part];\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n }\n });\n return {\n schema: schema,\n parent: parent,\n parentPath: lastPart\n };\n}\n\nvar reach = function reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n};\n\nvar _default = reach;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = SchemaType;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _cloneDeepWith = _interopRequireDefault(require(\"lodash/cloneDeepWith\"));\n\nvar _toArray2 = _interopRequireDefault(require(\"lodash/toArray\"));\n\nvar _locale = require(\"./locale\");\n\nvar _Condition = _interopRequireDefault(require(\"./Condition\"));\n\nvar _runValidations = _interopRequireDefault(require(\"./util/runValidations\"));\n\nvar _prependDeep = _interopRequireDefault(require(\"./util/prependDeep\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar _createValidation = _interopRequireDefault(require(\"./util/createValidation\"));\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar _Reference = _interopRequireDefault(require(\"./Reference\"));\n\nvar _reach = require(\"./util/reach\");\n\nvar RefSet =\n/*#__PURE__*/\nfunction () {\n function RefSet() {\n this.list = new Set();\n this.refs = new Map();\n }\n\n var _proto = RefSet.prototype;\n\n _proto.toArray = function toArray() {\n return (0, _toArray2.default)(this.list).concat((0, _toArray2.default)(this.refs.values()));\n };\n\n _proto.add = function add(value) {\n _Reference.default.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n };\n\n _proto.delete = function _delete(value) {\n _Reference.default.isRef(value) ? this.refs.delete(value.key, value) : this.list.delete(value);\n };\n\n _proto.has = function has(value, resolve) {\n if (this.list.has(value)) return true;\n var item,\n values = this.refs.values();\n\n while (item = values.next(), !item.done) {\n if (resolve(item.value) === value) return true;\n }\n\n return false;\n };\n\n return RefSet;\n}();\n\nfunction SchemaType(options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!(this instanceof SchemaType)) return new SchemaType();\n this._deps = [];\n this._conditions = [];\n this._options = {\n abortEarly: true,\n recursive: true\n };\n this._exclusive = Object.create(null);\n this._whitelist = new RefSet();\n this._blacklist = new RefSet();\n this.tests = [];\n this.transforms = [];\n this.withMutation(function () {\n _this.typeError(_locale.mixed.notType);\n });\n if ((0, _has.default)(options, 'default')) this._defaultDefault = options.default;\n this._type = options.type || 'mixed';\n}\n\nvar proto = SchemaType.prototype = {\n __isYupSchema__: true,\n constructor: SchemaType,\n clone: function clone() {\n var _this2 = this;\n\n if (this._mutate) return this; // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n return (0, _cloneDeepWith.default)(this, function (value) {\n if ((0, _isSchema.default)(value) && value !== _this2) return value;\n });\n },\n label: function label(_label) {\n var next = this.clone();\n next._label = _label;\n return next;\n },\n meta: function meta(obj) {\n if (arguments.length === 0) return this._meta;\n var next = this.clone();\n next._meta = (0, _extends2.default)(next._meta || {}, obj);\n return next;\n },\n withMutation: function withMutation(fn) {\n var before = this._mutate;\n this._mutate = true;\n var result = fn(this);\n this._mutate = before;\n return result;\n },\n concat: function concat(schema) {\n if (!schema || schema === this) return this;\n if (schema._type !== this._type && this._type !== 'mixed') throw new TypeError(\"You cannot `concat()` schema's of different types: \" + this._type + \" and \" + schema._type);\n var next = (0, _prependDeep.default)(schema.clone(), this); // new undefined default is overriden by old non-undefined one, revert\n\n if ((0, _has.default)(schema, '_default')) next._default = schema._default;\n next.tests = this.tests;\n next._exclusive = this._exclusive; // manually add the new tests to ensure\n // the deduping logic is consistent\n\n next.withMutation(function (next) {\n schema.tests.forEach(function (fn) {\n next.test(fn.OPTIONS);\n });\n });\n return next;\n },\n isType: function isType(v) {\n if (this._nullable && v === null) return true;\n return !this._typeCheck || this._typeCheck(v);\n },\n resolve: function resolve(options) {\n var schema = this;\n\n if (schema._conditions.length) {\n var conditions = schema._conditions;\n schema = schema.clone();\n schema._conditions = [];\n schema = conditions.reduce(function (schema, condition) {\n return condition.resolve(schema, options);\n }, schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n },\n cast: function cast(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var resolvedSchema = this.resolve((0, _extends2.default)({}, options, {\n value: value\n }));\n\n var result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n var formattedValue = (0, _printValue.default)(value);\n var formattedResult = (0, _printValue.default)(result);\n throw new TypeError(\"The value of \" + (options.path || 'field') + \" could not be cast to a value \" + (\"that satisfies the schema type: \\\"\" + resolvedSchema._type + \"\\\". \\n\\n\") + (\"attempted value: \" + formattedValue + \" \\n\") + (formattedResult !== formattedValue ? \"result of cast: \" + formattedResult : ''));\n }\n\n return result;\n },\n _cast: function _cast(rawValue) {\n var _this3 = this;\n\n var value = rawValue === undefined ? rawValue : this.transforms.reduce(function (value, fn) {\n return fn.call(_this3, value, rawValue);\n }, rawValue);\n\n if (value === undefined && (0, _has.default)(this, '_default')) {\n value = this.default();\n }\n\n return value;\n },\n _validate: function _validate(_value, options) {\n var _this4 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = _value;\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n\n var isStrict = this._option('strict', options);\n\n var endEarly = this._option('abortEarly', options);\n\n var sync = options.sync;\n var path = options.path;\n var label = this._label;\n\n if (!isStrict) {\n value = this._cast(value, (0, _extends2.default)({\n assert: false\n }, options));\n } // value is cast, we can check if it meets type requirements\n\n\n var validationParams = {\n value: value,\n path: path,\n schema: this,\n options: options,\n label: label,\n originalValue: originalValue,\n sync: sync\n };\n var initialTests = [];\n if (this._typeError) initialTests.push(this._typeError(validationParams));\n if (this._whitelistError) initialTests.push(this._whitelistError(validationParams));\n if (this._blacklistError) initialTests.push(this._blacklistError(validationParams));\n return (0, _runValidations.default)({\n validations: initialTests,\n endEarly: endEarly,\n value: value,\n path: path,\n sync: sync\n }).then(function (value) {\n return (0, _runValidations.default)({\n path: path,\n sync: sync,\n value: value,\n endEarly: endEarly,\n validations: _this4.tests.map(function (fn) {\n return fn(validationParams);\n })\n });\n });\n },\n validate: function validate(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve((0, _extends2.default)({}, options, {\n value: value\n }));\n return schema._validate(value, options);\n },\n validateSync: function validateSync(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve((0, _extends2.default)({}, options, {\n value: value\n }));\n var result, err;\n\n schema._validate(value, (0, _extends2.default)({}, options, {\n sync: true\n })).then(function (r) {\n return result = r;\n }).catch(function (e) {\n return err = e;\n });\n\n if (err) throw err;\n return result;\n },\n isValid: function isValid(value, options) {\n return this.validate(value, options).then(function () {\n return true;\n }).catch(function (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n });\n },\n isValidSync: function isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (err.name === 'ValidationError') return false;\n throw err;\n }\n },\n getDefault: function getDefault(options) {\n if (options === void 0) {\n options = {};\n }\n\n var schema = this.resolve(options);\n return schema.default();\n },\n default: function _default(def) {\n if (arguments.length === 0) {\n var defaultValue = (0, _has.default)(this, '_default') ? this._default : this._defaultDefault;\n return typeof defaultValue === 'function' ? defaultValue.call(this) : (0, _cloneDeepWith.default)(defaultValue);\n }\n\n var next = this.clone();\n next._default = def;\n return next;\n },\n strict: function strict(isStrict) {\n if (isStrict === void 0) {\n isStrict = true;\n }\n\n var next = this.clone();\n next._options.strict = isStrict;\n return next;\n },\n _isPresent: function _isPresent(value) {\n return value != null;\n },\n required: function required(message) {\n if (message === void 0) {\n message = _locale.mixed.required;\n }\n\n return this.test({\n message: message,\n name: 'required',\n exclusive: true,\n test: function test(value) {\n return this.schema._isPresent(value);\n }\n });\n },\n notRequired: function notRequired() {\n var next = this.clone();\n next.tests = next.tests.filter(function (test) {\n return test.OPTIONS.name !== 'required';\n });\n return next;\n },\n nullable: function nullable(isNullable) {\n if (isNullable === void 0) {\n isNullable = true;\n }\n\n var next = this.clone();\n next._nullable = isNullable;\n return next;\n },\n transform: function transform(fn) {\n var next = this.clone();\n next.transforms.push(fn);\n return next;\n },\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n test: function test() {\n var opts;\n\n if (arguments.length === 1) {\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'function') {\n opts = {\n test: arguments.length <= 0 ? undefined : arguments[0]\n };\n } else {\n opts = arguments.length <= 0 ? undefined : arguments[0];\n }\n } else if (arguments.length === 2) {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n test: arguments.length <= 1 ? undefined : arguments[1]\n };\n } else {\n opts = {\n name: arguments.length <= 0 ? undefined : arguments[0],\n message: arguments.length <= 1 ? undefined : arguments[1],\n test: arguments.length <= 2 ? undefined : arguments[2]\n };\n }\n\n if (opts.message === undefined) opts.message = _locale.mixed.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n var next = this.clone();\n var validate = (0, _createValidation.default)(opts);\n var isExclusive = opts.exclusive || opts.name && next._exclusive[opts.name] === true;\n\n if (opts.exclusive && !opts.name) {\n throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n next._exclusive[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(function (fn) {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n },\n when: function when(keys, options) {\n if (arguments.length === 1) {\n options = keys;\n keys = '.';\n }\n\n var next = this.clone(),\n deps = [].concat(keys).map(function (key) {\n return new _Reference.default(key);\n });\n deps.forEach(function (dep) {\n if (dep.isSibling) next._deps.push(dep.key);\n });\n\n next._conditions.push(new _Condition.default(deps, options));\n\n return next;\n },\n typeError: function typeError(message) {\n var next = this.clone();\n next._typeError = (0, _createValidation.default)({\n message: message,\n name: 'typeError',\n test: function test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n });\n return next;\n },\n oneOf: function oneOf(enums, message) {\n if (message === void 0) {\n message = _locale.mixed.oneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = (0, _createValidation.default)({\n message: message,\n name: 'oneOf',\n test: function test(value) {\n if (value === undefined) return true;\n var valids = this.schema._whitelist;\n return valids.has(value, this.resolve) ? true : this.createError({\n params: {\n values: valids.toArray().join(', ')\n }\n });\n }\n });\n return next;\n },\n notOneOf: function notOneOf(enums, message) {\n if (message === void 0) {\n message = _locale.mixed.notOneOf;\n }\n\n var next = this.clone();\n enums.forEach(function (val) {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = (0, _createValidation.default)({\n message: message,\n name: 'notOneOf',\n test: function test(value) {\n var invalids = this.schema._blacklist;\n if (invalids.has(value, this.resolve)) return this.createError({\n params: {\n values: invalids.toArray().join(', ')\n }\n });\n return true;\n }\n });\n return next;\n },\n strip: function strip(_strip) {\n if (_strip === void 0) {\n _strip = true;\n }\n\n var next = this.clone();\n next._strip = _strip;\n return next;\n },\n _option: function _option(key, overrides) {\n return (0, _has.default)(overrides, key) ? overrides[key] : this._options[key];\n },\n describe: function describe() {\n var next = this.clone();\n return {\n type: next._type,\n meta: next._meta,\n label: next._label,\n tests: next.tests.map(function (fn) {\n return {\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n };\n }).filter(function (n, idx, list) {\n return list.findIndex(function (c) {\n return c.name === n.name;\n }) === idx;\n })\n };\n }\n};\nvar _arr = ['validate', 'validateSync'];\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n proto[method + \"At\"] = function (path, value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _getIn = (0, _reach.getIn)(this, path, value, options.context),\n parent = _getIn.parent,\n parentPath = _getIn.parentPath,\n schema = _getIn.schema;\n\n return schema[method](parent && parent[parentPath], (0, _extends2.default)({}, options, {\n parent: parent,\n path: path\n }));\n };\n};\n\nfor (var _i = 0; _i < _arr.length; _i++) {\n _loop();\n}\n\nvar _arr2 = ['equals', 'is'];\n\nfor (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var alias = _arr2[_i2];\n proto[alias] = proto.oneOf;\n}\n\nvar _arr3 = ['not', 'nope'];\n\nfor (var _i3 = 0; _i3 < _arr3.length; _i3++) {\n var _alias = _arr3[_i3];\n proto[_alias] = proto.notOneOf;\n}\n\nproto.optional = proto.notRequired;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = inherits;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nfunction inherits(ctor, superCtor, spec) {\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n (0, _extends2.default)(ctor.prototype, spec);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _default = BooleanSchema;\nexports.default = _default;\n\nfunction BooleanSchema() {\n var _this = this;\n\n if (!(this instanceof BooleanSchema)) return new BooleanSchema();\n\n _mixed.default.call(this, {\n type: 'boolean'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(value)) return true;\n if (/^(false|0)$/i.test(value)) return false;\n }\n\n return value;\n });\n });\n}\n\n(0, _inherits.default)(BooleanSchema, _mixed.default, {\n _typeCheck: function _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = function _default(value) {\n return value == null;\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = StringSchema;\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale\");\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\n// eslint-disable-next-line\nvar rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nvar rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\nvar isTrimmed = function isTrimmed(value) {\n return (0, _isAbsent.default)(value) || value === value.trim();\n};\n\nfunction StringSchema() {\n var _this = this;\n\n if (!(this instanceof StringSchema)) return new StringSchema();\n\n _mixed.default.call(this, {\n type: 'string'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n return value != null && value.toString ? value.toString() : value;\n });\n });\n}\n\n(0, _inherits.default)(StringSchema, _mixed.default, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n },\n _isPresent: function _isPresent(value) {\n return _mixed.default.prototype._cast.call(this, value) && value.length > 0;\n },\n length: function length(_length, message) {\n if (message === void 0) {\n message = _locale.string.length;\n }\n\n return this.test({\n message: message,\n name: 'length',\n exclusive: true,\n params: {\n length: _length\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length === this.resolve(_length);\n }\n });\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = _locale.string.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = _locale.string.max;\n }\n\n return this.test({\n name: 'max',\n exclusive: true,\n message: message,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length <= this.resolve(_max);\n }\n });\n },\n matches: function matches(regex, options) {\n var excludeEmptyString = false;\n var message;\n\n if (options) {\n if (options.message || options.hasOwnProperty('excludeEmptyString')) {\n excludeEmptyString = options.excludeEmptyString;\n message = options.message;\n } else message = options;\n }\n\n return this.test({\n message: message || _locale.string.matches,\n params: {\n regex: regex\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value === '' && excludeEmptyString || regex.test(value);\n }\n });\n },\n email: function email(message) {\n if (message === void 0) {\n message = _locale.string.email;\n }\n\n return this.matches(rEmail, {\n message: message,\n excludeEmptyString: true\n });\n },\n url: function url(message) {\n if (message === void 0) {\n message = _locale.string.url;\n }\n\n return this.matches(rUrl, {\n message: message,\n excludeEmptyString: true\n });\n },\n //-- transforms --\n ensure: function ensure() {\n return this.default('').transform(function (val) {\n return val === null ? '' : val;\n });\n },\n trim: function trim(message) {\n if (message === void 0) {\n message = _locale.string.trim;\n }\n\n return this.transform(function (val) {\n return val != null ? val.trim() : val;\n }).test({\n message: message,\n name: 'trim',\n test: isTrimmed\n });\n },\n lowercase: function lowercase(message) {\n if (message === void 0) {\n message = _locale.string.lowercase;\n }\n\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? value.toLowerCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value === value.toLowerCase();\n }\n });\n },\n uppercase: function uppercase(message) {\n if (message === void 0) {\n message = _locale.string.uppercase;\n }\n\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? value.toUpperCase() : value;\n }).test({\n message: message,\n name: 'string_case',\n exclusive: true,\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value === value.toUpperCase();\n }\n });\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = NumberSchema;\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale\");\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\nvar isNaN = function isNaN(value) {\n return value != +value;\n};\n\nvar isInteger = function isInteger(val) {\n return (0, _isAbsent.default)(val) || val === (val | 0);\n};\n\nfunction NumberSchema() {\n var _this = this;\n\n if (!(this instanceof NumberSchema)) return new NumberSchema();\n\n _mixed.default.call(this, {\n type: 'number'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n var parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n}\n\n(0, _inherits.default)(NumberSchema, _mixed.default, {\n _typeCheck: function _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = _locale.number.min;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = _locale.number.max;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value <= this.resolve(_max);\n }\n });\n },\n lessThan: function lessThan(less, message) {\n if (message === void 0) {\n message = _locale.number.lessThan;\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n less: less\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value < this.resolve(less);\n }\n });\n },\n moreThan: function moreThan(more, message) {\n if (message === void 0) {\n message = _locale.number.moreThan;\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n more: more\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value > this.resolve(more);\n }\n });\n },\n positive: function positive(msg) {\n if (msg === void 0) {\n msg = _locale.number.positive;\n }\n\n return this.moreThan(0, msg);\n },\n negative: function negative(msg) {\n if (msg === void 0) {\n msg = _locale.number.negative;\n }\n\n return this.lessThan(0, msg);\n },\n integer: function integer(message) {\n if (message === void 0) {\n message = _locale.number.integer;\n }\n\n return this.test({\n name: 'integer',\n message: message,\n test: isInteger\n });\n },\n truncate: function truncate() {\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? value | 0 : value;\n });\n },\n round: function round(method) {\n var avail = ['ceil', 'floor', 'round', 'trunc'];\n method = method && method.toLowerCase() || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(function (value) {\n return !(0, _isAbsent.default)(value) ? Math[method](value) : value;\n });\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = parseIsoDate;\n\n/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>\n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover <http://zetafleet.com>\n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\nfunction parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) {\n struct[k] = +struct[k] || 0;\n } // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _isodate = _interopRequireDefault(require(\"./util/isodate\"));\n\nvar _locale = require(\"./locale\");\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\nvar _Reference = _interopRequireDefault(require(\"./Reference\"));\n\nvar invalidDate = new Date('');\n\nvar isDate = function isDate(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nvar _default = DateSchema;\nexports.default = _default;\n\nfunction DateSchema() {\n var _this = this;\n\n if (!(this instanceof DateSchema)) return new DateSchema();\n\n _mixed.default.call(this, {\n type: 'date'\n });\n\n this.withMutation(function () {\n _this.transform(function (value) {\n if (this.isType(value)) return value;\n value = (0, _isodate.default)(value);\n return value ? new Date(value) : invalidDate;\n });\n });\n}\n\n(0, _inherits.default)(DateSchema, _mixed.default, {\n _typeCheck: function _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n },\n min: function min(_min, message) {\n if (message === void 0) {\n message = _locale.date.min;\n }\n\n var limit = _min;\n\n if (!_Reference.default.isRef(limit)) {\n limit = this.cast(_min);\n if (!this._typeCheck(limit)) throw new TypeError('`min` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value >= this.resolve(limit);\n }\n });\n },\n max: function max(_max, message) {\n if (message === void 0) {\n message = _locale.date.max;\n }\n\n var limit = _max;\n\n if (!_Reference.default.isRef(limit)) {\n limit = this.cast(_max);\n if (!this._typeCheck(limit)) throw new TypeError('`max` must be a Date or a value that can be `cast()` to a Date');\n }\n\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value <= this.resolve(limit);\n }\n });\n }\n});\nmodule.exports = exports[\"default\"];","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _interopRequireWildcard(e, t) {\n if (\"function\" == typeof WeakMap) var r = new WeakMap(),\n n = new WeakMap();\n return (module.exports = _interopRequireWildcard = function _interopRequireWildcard(e, t) {\n if (!t && e && e.__esModule) return e;\n var o,\n i,\n f = {\n __proto__: null,\n \"default\": e\n };\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f;\n if (o = t ? n : r) {\n if (o.has(e)) return o.get(e);\n o.set(e, f);\n }\n for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]);\n return f;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)(e, t);\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _taggedTemplateLiteralLoose(e, t) {\n return t || (t = e.slice(0)), e.raw = t, e;\n}\nmodule.exports = _taggedTemplateLiteralLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = sortFields;\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _toposort = _interopRequireDefault(require(\"toposort\"));\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar _Reference = _interopRequireDefault(require(\"../Reference\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./isSchema\"));\n\nfunction sortFields(fields, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var edges = [],\n nodes = [];\n\n function addNode(depPath, key) {\n var node = (0, _propertyExpr.split)(depPath)[0];\n if (!~nodes.indexOf(node)) nodes.push(node);\n if (!~excludes.indexOf(key + \"-\" + node)) edges.push([key, node]);\n }\n\n for (var key in fields) {\n if ((0, _has.default)(fields, key)) {\n var value = fields[key];\n if (!~nodes.indexOf(key)) nodes.push(key);\n if (_Reference.default.isRef(value) && value.isSibling) addNode(value.path, key);else if ((0, _isSchema.default)(value) && value._deps) value._deps.forEach(function (path) {\n return addNode(path, key);\n });\n }\n }\n\n return _toposort.default.array(nodes, edges).reverse();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = sortByKeyOrder;\n\nfunction findIndex(arr, err) {\n var idx = Infinity;\n arr.some(function (key, ii) {\n if (err.path.indexOf(key) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nfunction sortByKeyOrder(fields) {\n var keys = Object.keys(fields);\n return function (a, b) {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = makePath;\n\nfunction makePath(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n var path = strings.reduce(function (str, next) {\n var value = values.shift();\n return str + (value == null ? '' : value) + next;\n });\n return path.replace(/^\\./, '');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = ObjectSchema;\n\nvar _taggedTemplateLiteralLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/taggedTemplateLiteralLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _has = _interopRequireDefault(require(\"lodash/has\"));\n\nvar _snakeCase2 = _interopRequireDefault(require(\"lodash/snakeCase\"));\n\nvar _camelCase2 = _interopRequireDefault(require(\"lodash/camelCase\"));\n\nvar _mapKeys = _interopRequireDefault(require(\"lodash/mapKeys\"));\n\nvar _mapValues = _interopRequireDefault(require(\"lodash/mapValues\"));\n\nvar _propertyExpr = require(\"property-expr\");\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale.js\");\n\nvar _sortFields = _interopRequireDefault(require(\"./util/sortFields\"));\n\nvar _sortByKeyOrder = _interopRequireDefault(require(\"./util/sortByKeyOrder\"));\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _makePath = _interopRequireDefault(require(\"./util/makePath\"));\n\nvar _runValidations = _interopRequireWildcard(require(\"./util/runValidations\"));\n\nfunction _templateObject2() {\n var data = (0, _taggedTemplateLiteralLoose2.default)([\"\", \".\", \"\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = (0, _taggedTemplateLiteralLoose2.default)([\"\", \".\", \"\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar isObject = function isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n};\n\nfunction unknown(ctx, value) {\n var known = Object.keys(ctx.fields);\n return Object.keys(value).filter(function (key) {\n return known.indexOf(key) === -1;\n });\n}\n\nfunction ObjectSchema(spec) {\n var _this2 = this;\n\n if (!(this instanceof ObjectSchema)) return new ObjectSchema(spec);\n\n _mixed.default.call(this, {\n type: 'object',\n default: function _default() {\n var _this = this;\n\n if (!this._nodes.length) return undefined;\n var dft = {};\n\n this._nodes.forEach(function (key) {\n dft[key] = _this.fields[key].default ? _this.fields[key].default() : undefined;\n });\n\n return dft;\n }\n });\n\n this.fields = Object.create(null);\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(function () {\n _this2.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n _this2.shape(spec);\n }\n });\n}\n\n(0, _inherits.default)(ObjectSchema, _mixed.default, {\n _typeCheck: function _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n },\n _cast: function _cast(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var value = _mixed.default.prototype._cast.call(this, _value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.default();\n if (!this._typeCheck(value)) return value;\n var fields = this.fields;\n var strip = this._option('stripUnknown', options) === true;\n\n var props = this._nodes.concat(Object.keys(value).filter(function (v) {\n return _this3._nodes.indexOf(v) === -1;\n }));\n\n var intermediateValue = {}; // is filled during the transform below\n\n var innerOptions = (0, _extends2.default)({}, options, {\n parent: intermediateValue,\n __validating: false\n });\n var isChanged = false;\n props.forEach(function (prop) {\n var field = fields[prop];\n var exists = (0, _has.default)(value, prop);\n\n if (field) {\n var fieldValue;\n var strict = field._options && field._options.strict; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (0, _makePath.default)(_templateObject(), options.path, prop);\n innerOptions.value = value[prop];\n field = field.resolve(innerOptions);\n\n if (field._strip === true) {\n isChanged = isChanged || prop in value;\n return;\n }\n\n fieldValue = !options.__validating || !strict ? field.cast(value[prop], innerOptions) : value[prop];\n if (fieldValue !== undefined) intermediateValue[prop] = fieldValue;\n } else if (exists && !strip) intermediateValue[prop] = value[prop];\n\n if (intermediateValue[prop] !== value[prop]) isChanged = true;\n });\n return isChanged ? intermediateValue : value;\n },\n _validate: function _validate(_value, opts) {\n var _this4 = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n var endEarly, recursive;\n var sync = opts.sync;\n var errors = [];\n var originalValue = opts.originalValue != null ? opts.originalValue : _value;\n endEarly = this._option('abortEarly', opts);\n recursive = this._option('recursive', opts);\n opts = (0, _extends2.default)({}, opts, {\n __validating: true,\n originalValue: originalValue\n });\n return _mixed.default.prototype._validate.call(this, _value, opts).catch((0, _runValidations.propagateErrors)(endEarly, errors)).then(function (value) {\n if (!recursive || !isObject(value)) {\n // only iterate though actual objects\n if (errors.length) throw errors[0];\n return value;\n }\n\n originalValue = originalValue || value;\n\n var validations = _this4._nodes.map(function (key) {\n var path = (0, _makePath.default)(_templateObject2(), opts.path, key);\n var field = _this4.fields[key];\n var innerOptions = (0, _extends2.default)({}, opts, {\n path: path,\n parent: value,\n originalValue: originalValue[key]\n });\n\n if (field && field.validate) {\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n innerOptions.strict = true;\n return field.validate(value[key], innerOptions);\n }\n\n return Promise.resolve(true);\n });\n\n return (0, _runValidations.default)({\n sync: sync,\n validations: validations,\n value: value,\n errors: errors,\n endEarly: endEarly,\n path: opts.path,\n sort: (0, _sortByKeyOrder.default)(_this4.fields)\n });\n });\n },\n concat: function concat(schema) {\n var next = _mixed.default.prototype.concat.call(this, schema);\n\n next._nodes = (0, _sortFields.default)(next.fields, next._excludedEdges);\n return next;\n },\n shape: function shape(schema, excludes) {\n if (excludes === void 0) {\n excludes = [];\n }\n\n var next = this.clone();\n var fields = (0, _extends2.default)(next.fields, schema);\n next.fields = fields;\n\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n var keys = excludes.map(function (_ref) {\n var first = _ref[0],\n second = _ref[1];\n return first + \"-\" + second;\n });\n next._excludedEdges = next._excludedEdges.concat(keys);\n }\n\n next._nodes = (0, _sortFields.default)(fields, next._excludedEdges);\n return next;\n },\n from: function from(_from, to, alias) {\n var fromGetter = (0, _propertyExpr.getter)(_from, true);\n return this.transform(function (obj) {\n if (obj == null) return obj;\n var newObj = obj;\n\n if ((0, _has.default)(obj, _from)) {\n newObj = (0, _extends2.default)({}, obj);\n if (!alias) delete newObj[_from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n },\n noUnknown: function noUnknown(noAllow, message) {\n if (noAllow === void 0) {\n noAllow = true;\n }\n\n if (message === void 0) {\n message = _locale.object.noUnknown;\n }\n\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n var next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test: function test(value) {\n return value == null || !noAllow || unknown(this.schema, value).length === 0;\n }\n });\n next._options.stripUnknown = noAllow;\n return next;\n },\n unknown: function unknown(allow, message) {\n if (allow === void 0) {\n allow = true;\n }\n\n if (message === void 0) {\n message = _locale.object.noUnknown;\n }\n\n return this.noUnknown(!allow, message);\n },\n transformKeys: function transformKeys(fn) {\n return this.transform(function (obj) {\n return obj && (0, _mapKeys.default)(obj, function (_, key) {\n return fn(key);\n });\n });\n },\n camelCase: function camelCase() {\n return this.transformKeys(_camelCase2.default);\n },\n snakeCase: function snakeCase() {\n return this.transformKeys(_snakeCase2.default);\n },\n constantCase: function constantCase() {\n return this.transformKeys(function (key) {\n return (0, _snakeCase2.default)(key).toUpperCase();\n });\n },\n describe: function describe() {\n var base = _mixed.default.prototype.describe.call(this);\n\n base.fields = (0, _mapValues.default)(this.fields, function (value) {\n return value.describe();\n });\n return base;\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _taggedTemplateLiteralLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/taggedTemplateLiteralLoose\"));\n\nvar _inherits = _interopRequireDefault(require(\"./util/inherits\"));\n\nvar _isAbsent = _interopRequireDefault(require(\"./util/isAbsent\"));\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar _makePath = _interopRequireDefault(require(\"./util/makePath\"));\n\nvar _printValue = _interopRequireDefault(require(\"./util/printValue\"));\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nvar _locale = require(\"./locale\");\n\nvar _runValidations = _interopRequireWildcard(require(\"./util/runValidations\"));\n\nfunction _templateObject() {\n var data = (0, _taggedTemplateLiteralLoose2.default)([\"\", \"[\", \"]\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar _default = ArraySchema;\nexports.default = _default;\n\nfunction ArraySchema(type) {\n var _this = this;\n\n if (!(this instanceof ArraySchema)) return new ArraySchema(type);\n\n _mixed.default.call(this, {\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n\n this._subType = undefined;\n this.withMutation(function () {\n _this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n\n if (type) _this.of(type);\n });\n}\n\n(0, _inherits.default)(ArraySchema, _mixed.default, {\n _typeCheck: function _typeCheck(v) {\n return Array.isArray(v);\n },\n _cast: function _cast(_value, _opts) {\n var _this2 = this;\n\n var value = _mixed.default.prototype._cast.call(this, _value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this._subType) return value;\n var isChanged = false;\n var castArray = value.map(function (v) {\n var castElement = _this2._subType.cast(v, _opts);\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n },\n _validate: function _validate(_value, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var errors = [];\n var sync = options.sync;\n var path = options.path;\n var subType = this._subType;\n\n var endEarly = this._option('abortEarly', options);\n\n var recursive = this._option('recursive', options);\n\n var originalValue = options.originalValue != null ? options.originalValue : _value;\n return _mixed.default.prototype._validate.call(this, _value, options).catch((0, _runValidations.propagateErrors)(endEarly, errors)).then(function (value) {\n if (!recursive || !subType || !_this3._typeCheck(value)) {\n if (errors.length) throw errors[0];\n return value;\n }\n\n originalValue = originalValue || value;\n var validations = value.map(function (item, idx) {\n var path = (0, _makePath.default)(_templateObject(), options.path, idx); // object._validate note for isStrict explanation\n\n var innerOptions = (0, _extends2.default)({}, options, {\n path: path,\n strict: true,\n parent: value,\n originalValue: originalValue[idx]\n });\n if (subType.validate) return subType.validate(item, innerOptions);\n return true;\n });\n return (0, _runValidations.default)({\n sync: sync,\n path: path,\n value: value,\n errors: errors,\n endEarly: endEarly,\n validations: validations\n });\n });\n },\n _isPresent: function _isPresent(value) {\n return _mixed.default.prototype._cast.call(this, value) && value.length > 0;\n },\n of: function of(schema) {\n var next = this.clone();\n if (schema !== false && !(0, _isSchema.default)(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema, or `false` to negate a current sub-schema. ' + 'not: ' + (0, _printValue.default)(schema));\n next._subType = schema;\n return next;\n },\n min: function min(_min, message) {\n message = message || _locale.array.min;\n return this.test({\n message: message,\n name: 'min',\n exclusive: true,\n params: {\n min: _min\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length >= this.resolve(_min);\n }\n });\n },\n max: function max(_max, message) {\n message = message || _locale.array.max;\n return this.test({\n message: message,\n name: 'max',\n exclusive: true,\n params: {\n max: _max\n },\n test: function test(value) {\n return (0, _isAbsent.default)(value) || value.length <= this.resolve(_max);\n }\n });\n },\n ensure: function ensure() {\n var _this4 = this;\n\n return this.default(function () {\n return [];\n }).transform(function (val) {\n if (_this4.isType(val)) return val;\n return val === null ? [] : [].concat(val);\n });\n },\n compact: function compact(rejector) {\n var reject = !rejector ? function (v) {\n return !!v;\n } : function (v, i, a) {\n return !rejector(v, i, a);\n };\n return this.transform(function (values) {\n return values != null ? values.filter(reject) : values;\n });\n },\n describe: function describe() {\n var base = _mixed.default.prototype.describe.call(this);\n\n if (this._subType) base.innerType = this._subType.describe();\n return base;\n }\n});\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nvar Lazy =\n/*#__PURE__*/\nfunction () {\n function Lazy(mapFn) {\n this._resolve = function (value, options) {\n var schema = mapFn(value, options);\n if (!(0, _isSchema.default)(schema)) throw new TypeError('lazy() functions must return a valid schema');\n return schema.resolve(options);\n };\n }\n\n var _proto = Lazy.prototype;\n\n _proto.resolve = function resolve(options) {\n return this._resolve(options.value, options);\n };\n\n _proto.cast = function cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n };\n\n _proto.validate = function validate(value, options) {\n return this._resolve(value, options).validate(value, options);\n };\n\n _proto.validateSync = function validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n };\n\n _proto.validateAt = function validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n };\n\n _proto.validateSyncAt = function validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n };\n\n return Lazy;\n}();\n\nLazy.prototype.__isYupSchema__ = true;\nvar _default = Lazy;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = setLocale;\n\nvar _locale = _interopRequireDefault(require(\"./locale\"));\n\nfunction setLocale(custom) {\n Object.keys(custom).forEach(function (type) {\n Object.keys(custom[type]).forEach(function (method) {\n _locale.default[type][method] = custom[type][method];\n });\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.addMethod = addMethod;\nexports.lazy = exports.ref = exports.boolean = void 0;\n\nvar _mixed = _interopRequireDefault(require(\"./mixed\"));\n\nexports.mixed = _mixed.default;\n\nvar _boolean = _interopRequireDefault(require(\"./boolean\"));\n\nexports.bool = _boolean.default;\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nexports.string = _string.default;\n\nvar _number = _interopRequireDefault(require(\"./number\"));\n\nexports.number = _number.default;\n\nvar _date = _interopRequireDefault(require(\"./date\"));\n\nexports.date = _date.default;\n\nvar _object = _interopRequireDefault(require(\"./object\"));\n\nexports.object = _object.default;\n\nvar _array = _interopRequireDefault(require(\"./array\"));\n\nexports.array = _array.default;\n\nvar _Reference = _interopRequireDefault(require(\"./Reference\"));\n\nvar _Lazy = _interopRequireDefault(require(\"./Lazy\"));\n\nvar _ValidationError = _interopRequireDefault(require(\"./ValidationError\"));\n\nexports.ValidationError = _ValidationError.default;\n\nvar _reach = _interopRequireDefault(require(\"./util/reach\"));\n\nexports.reach = _reach.default;\n\nvar _isSchema = _interopRequireDefault(require(\"./util/isSchema\"));\n\nexports.isSchema = _isSchema.default;\n\nvar _setLocale = _interopRequireDefault(require(\"./setLocale\"));\n\nexports.setLocale = _setLocale.default;\nvar boolean = _boolean.default;\nexports.boolean = boolean;\n\nvar ref = function ref(key, options) {\n return new _Reference.default(key, options);\n};\n\nexports.ref = ref;\n\nvar lazy = function lazy(fn) {\n return new _Lazy.default(fn);\n};\n\nexports.lazy = lazy;\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !(0, _isSchema.default)(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const {\n label,\n checkboxLabelClassName,\n checkboxLabelFontWeight,\n className,\n infoText,\n infoTooltip,\n infoTooltipPlacement,\n ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <div className='d-inline-flex align-items-center'>\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {infoTooltip && (\n <SvgContainer\n className='svg-container text-secondary ms-1'\n svg={InfoSvg}\n title={infoTooltip}\n tooltipSpanHackClassName='d-inline-flex align-items-center'\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n </div>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n {infoText && <Form.Text className='text-secondary'>{infoText}</Form.Text>}\n </Form.Group>\n );\n}\n\n","import React from 'react';\n\nexport function VisibleOffSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='visible-off'\n d='m15.293 6.609-.793.79A8.8 8.8 0 0 0 11.997 7C8.006 6.978 4 10.17 4 12c0 .925 1.062 2.216 2.63 3.254l-.715.714C4.174 14.76 3 13.228 3 12c0-2.44 4.5-6.025 9.003-6 1.119.006 2.239.234 3.29.609m2.802 1.442C19.833 9.26 21 10.786 21 12c0 2.45-4.504 6-9 6-1.112 0-2.23-.223-3.279-.595l.794-.792A8.7 8.7 0 0 0 12 17c3.989 0 8-3.161 8-5 0-.911-1.055-2.196-2.62-3.235zm-7.65 7.635.787-.785A3.005 3.005 0 0 0 15 12q-.001-.397-.098-.763l.787-.785a4 4 0 0 1-5.245 5.235zM8.318 13.57a4 4 0 0 1 5.257-5.246l-.785.782a3.003 3.003 0 0 0-3.687 3.68zm-3.466 6.285a.5.5 0 1 1-.706-.708l15-14.971a.5.5 0 1 1 .706.708z'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#visible-off' fill='#333' />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function VisibleOnSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <defs>\n <path\n id='visible-on'\n d='M3 12c0-2.44 4.5-6.025 9.003-6C16.494 6.025 21 9.614 21 12c0 2.45-4.504 6-9 6-4.466 0-9-3.586-9-6m1 0c0 1.804 4.042 5 8 5 3.989 0 8-3.161 8-5 0-1.778-4.017-4.977-8.003-5C8.006 6.978 4 10.17 4 12m8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8m0-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6'\n fill='currentColor'\n />\n </defs>\n <use xlinkHref='#visible-on' fill='#333' />\n </svg>\n );\n}\n","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}\n",":local {\n .revealPassword {\n position: absolute;\n right: map-get($spacers, 2);\n top: 50%;\n margin-top: -($cv-svg-size*0.5)\n }\n\n .passwordInput {\n padding-right: map-get($spacers, 3) + $cv-svg-size;\n\n &::placeholder {\n color: $input-placeholder-color;\n opacity: 1;\n }\n }\n\n .passwordContainer {\n &:focus-within {\n // Mimics @mixin form-control-focus() in `_.form.scss` in bootstrap\n background-color: $input-focus-bg;\n border-color: $blue;\n outline: 0;\n\n @if $enable-shadows {\n box-shadow: $input-box-shadow, $input-focus-box-shadow;\n } @else {\n box-shadow: $input-focus-box-shadow;\n }\n\n &:global(.is-invalid) {\n // Mimics @mixin form-validation-state() in `_.form.scss` in bootstrap\n color: $form-feedback-invalid-color;\n border-color: $form-feedback-invalid-color;\n outline: 0;\n box-shadow: 0 0 0 $input-focus-width rgba($form-feedback-invalid-color, .25);\n }\n }\n }\n\n .passwordContainerDisabled {\n background-color: $input-disabled-bg;\n }\n\n .infoTooltip {\n margin-left: 0.1rem;\n }\n\n .spinner {\n position: absolute;\n top: 50%;\n right: map-get($spacers, 2);\n transform: translateY(-50%);\n }\n}","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VisibleOffSvg } from 'libs/shared/images/svg/actions/VisibleOffSvg';\nimport { VisibleOnSvg } from 'libs/shared/images/svg/actions/VisibleOnSvg';\nimport { InfoSvg } from 'libs/shared/images/svg/status/InfoSvg';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.module.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold';\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n description?: string;\n children?: any;\n showCharacterCounter?: boolean;\n characterCounterPlacement?: 'top' | 'bottom';\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight;\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n labelClassName?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children) ?\n (f: FieldProps) => children(f) :\n React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n const containerClassName = classNames(\n 'position-relative',\n styles.passwordContainer,\n fieldProps.className,\n fieldProps.disabled && styles.passwordContainerDisabled\n );\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={classNames(styles.passwordInput, 'border-0 w-100 h-100 outline-none rounded')}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svg={type === 'password' ? VisibleOnSvg : VisibleOffSvg}\n className={classNames('svg-container cursor-pointer', styles.revealPassword)}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n characterCounterPlacement = 'top',\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n labelClassName: labelGlassName,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n const displayCharacterCounter = !!showCharacterCounter &&\n !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength;\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={classNames('form-group', formGroupClassname)}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className={classNames('d-flex align-items-center', labelGlassName, {\n 'mb-2': props.as === 'textarea'\n })}>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={classNames('svg-container text-secondary', styles.infoTooltip)}\n svg={InfoSvg}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {displayCharacterCounter && characterCounterPlacement === 'top' &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n {props.description &&\n <p>\n {props.description}\n </p>\n }\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {displayCharacterCounter && characterCounterPlacement === 'bottom' &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}\n","import * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.feedbackForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const FEEDBACK_FORM_MIN_CHARACTERS = 10;\nexport const FEEDBACK_FORM_MAX_CHARACTERS = 5000;\n\ntype FeedbackFormErrorPhrases = 'requiredError' | 'minCharactersError' | 'maxCharactersError';\n\nexport const getFeedbackFormErrorMessage = (phrase: FeedbackFormErrorPhrases) => {\n switch (phrase) {\n case 'requiredError': return getPhrase(phrase);\n case 'minCharactersError': return getPhrase(phrase, { limit: FEEDBACK_FORM_MIN_CHARACTERS });\n case 'maxCharactersError': return getPhrase('maxCharactersError', { limit: FEEDBACK_FORM_MAX_CHARACTERS });\n }\n};\n\nexport const FeedbackFormYupString = () => Yup.string()\n .min(FEEDBACK_FORM_MIN_CHARACTERS, getFeedbackFormErrorMessage('minCharactersError'))\n .max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackGivePraise';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GivePraiseFormValues {\n praise: string;\n}\n\nconst INITIAL_VALUES: GivePraiseFormValues = {\n praise: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<GivePraiseFormValues>({\n praise: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction GivePraiseFields() {\n const formikProps = useFormikContextWrapper<GivePraiseFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('givePraisePlaceholder')}\n label={getPhrase('givePraiseLabel')}\n name='praise'\n rows={5}\n value={formikProps.values.praise}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function GivePraise(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.heartHands}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <GivePraiseFields />\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackOther';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface OtherFormValues {\n feedback: string;\n}\n\nconst INITIAL_VALUES: OtherFormValues = {\n feedback: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<OtherFormValues>({\n feedback: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction OtherFields() {\n const formikProps = useFormikContextWrapper<OtherFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='feedback'\n rows={5}\n value={formikProps.values.feedback}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function Other(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <OtherFields />\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRaiseIssue';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RaiseIssueFormValues {\n issue: string;\n}\n\nconst INITIAL_VALUES: RaiseIssueFormValues = {\n issue: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<RaiseIssueFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction RaiseIssueFields() {\n const formikProps = useFormikContextWrapper<RaiseIssueFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('raiseIssuePlaceholder')}\n label={getPhrase('raiseIssueLabel')}\n name='issue'\n rows={5}\n value={formikProps.values.issue}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function RaiseIssue(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RaiseIssueFields />\n </FeedbackFormWrapper>\n );\n}\n","import { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\ntype ContactSupportDetails = {\n [key in InstanceRegion]: {\n phone: string,\n email: string,\n website: string\n };\n};\n\nexport const CONTACT_SUPPORT_DETAILS: ContactSupportDetails = {\n [InstanceRegion.AU]: {\n phone: '02 9509 2600',\n email: 'support@clickview.com.au',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.UK]: {\n phone: '+44 (0)333 207 6595',\n email: 'info@clickview.co.uk',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.NZ]: {\n phone: '09 916 1156',\n email: 'support@clickview.co.nz',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.US]: {\n // PENDING\n phone: '+1 312-292-9322',\n email: 'info@clickvieweducation.com',\n website: 'https://www.clickviewsupport.com/hc'\n }\n};\n","import React from 'react';\n\nexport function EmailSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M4 6.462C4 6.207 4.21 6 4.47 6h15.06c.26 0 .47.207.47.462v10.892a.653.653 0 0 1-.659.646H4.66A.653.653 0 0 1 4 17.354zm1.723.461 5.967 5.12a.48.48 0 0 0 .62 0l5.967-5.12zm13.336.556-6.13 5.26a1.43 1.43 0 0 1-1.859 0l-6.129-5.26v9.598H19.06z'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function PhoneSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M15.928 20c1.348 0 2.33-.38 3.185-1.297.051-.057.097-.114.139-.161.505-.547.742-1.102.742-1.62 0-.545-.3-1.057-.941-1.492l-2.444-1.687c-.695-.477-1.51-.553-2.247.163l-.61.605c-.189.189-.387.218-.615.09-.417-.249-1.35-1.014-2.067-1.727-.785-.78-1.34-1.42-1.678-2.01-.127-.23-.098-.427.09-.616l.612-.616c.716-.726.64-1.552.157-2.243L8.575 4.952c-.446-.646-.953-.94-1.503-.952-.512-.01-1.071.242-1.614.742-.057.052-.104.098-.157.145C4.39 5.727 4 6.714 4 8.047c0 2.358 1.53 5.21 4.143 7.815C10.736 18.45 13.569 20 15.928 20m.006-1.018c-2.146.023-4.837-1.6-7.046-3.81-2.226-2.214-3.9-4.976-3.87-7.127.013-.942.335-1.764 1.014-2.39l.13-.112c.306-.282.63-.432.897-.432.266 0 .495.124.674.394l1.635 2.44c.209.307.247.66-.107 1.002l-.693.689c-.5.5-.484 1.153-.135 1.66.403.593 1.182 1.497 1.95 2.262.765.775 1.733 1.605 2.321 2.009.512.348 1.16.364 1.659-.141l.684-.694c.348-.342.7-.309 1.014-.1l2.433 1.635c.276.18.389.402.389.668 0 .283-.14.597-.437.908a1 1 0 0 1-.102.12c-.63.689-1.462 1.006-2.41 1.018'\n />\n </svg>\n );\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n }\n else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n }\n else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(\"\".concat(item, \" is not a File\"));\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n\n if (acceptedFilesArray.length === 0) {\n return true;\n }\n\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","import React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}\n","export enum InteractionType {\n FileSelect = 'file-select',\n DragDrop = 'drag-drop'\n}\n",":local {\n .fileDrop {\n border: 0.125rem dashed $gray-200;\n }\n\n .resourcePreview {\n height: 4.5rem;\n width: auto;\n }\n}","import * as React from 'react';\nimport { useDropzone } from 'react-dropzone';\n\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\n\nimport styles from './file-select.module.scss';\n\nconst namespace = 'shared.feedbackFileUpload';\n\ninterface FeedbackFileUploadProps {\n onFilesAdded: (files: File[], type?: InteractionType) => void;\n mimeType: string;\n acceptMultiple?: boolean;\n imageUrl?: string;\n uploadError?: string;\n}\n\nexport function FeedbackFileUpload(props: FeedbackFileUploadProps): JSX.Element {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: (acceptedFiles: File[]) => props.onFilesAdded(acceptedFiles, InteractionType.DragDrop),\n noClick: true,\n noKeyboard: true,\n multiple: !!props.acceptMultiple,\n noDragEventsBubbling: true\n });\n\n const ref = React.useRef<HTMLInputElement>(null);\n const useRef = React.useCallback((node: HTMLInputElement) => {\n if (!node)\n return;\n\n ref.current = node;\n }, []);\n\n const onClick = () => {\n ref.current.value = null;\n ref.current.click();\n };\n\n let className = `${styles.fileDrop} text-center p-2 rounded-1`;\n\n if (props.uploadError)\n className += ' border-red';\n\n if (isDragActive)\n className += ` border-blue bg-light-blue`;\n\n return (\n <>\n <div {...getRootProps({ className })}>\n <img\n className={styles.resourcePreview}\n src={props.imageUrl}\n draggable={false}\n />\n\n <div className='position-relative'>\n {isDragActive &&\n <p className='position-absolute font-size-md translate-middle top-50 start-50 mb-0'>\n <Text namespace={namespace} phrase='dropUpload' />\n </p>}\n\n <div className={isDragActive ? 'opacity-0' : ''}>\n <p className='mb-0'><Text namespace={namespace} phrase='dragDrop' /></p>\n <button\n type='button'\n className='btn btn-link text-underline p-0'\n onClick={onClick}\n >\n <Text namespace={namespace} phrase='upload' />\n </button>\n </div>\n </div>\n\n <input\n type='file'\n name='fileUpload'\n className='file-select d-none'\n multiple={!!props.acceptMultiple}\n accept={props.mimeType}\n ref={useRef}\n onChange={e => props.onFilesAdded([...e.target.files], InteractionType.FileSelect)}\n aria-errormessage='fileUploadError'\n />\n\n <input {...getInputProps()} />\n </div>\n\n {props.uploadError && <FormFeedback name='fileUpload'>{props.uploadError}</FormFeedback>}\n </>\n );\n}\n",":local {\n .progress {\n height: 0.1875rem; //3px\n }\n}","import * as React from 'react';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { FolderSvg } from 'libs/shared/images/svg/objects/FolderSvg';\nimport { CheckSvg } from 'libs/shared/images/svg/status/CheckSvg';\n\nimport styles from './feedback-upload-list.module.scss';\n\ninterface FeedbackFileUploadItemProps {\n upload: UploadItem;\n cancelUpload: (id: string) => void;\n}\n\nfunction FeedbackFileUploadItem(props: FeedbackFileUploadItemProps): JSX.Element {\n const finished = props.upload.progress === 100;\n\n return (\n <>\n <div>\n <SvgContainer svg={FolderSvg} className='svg-container me-2' />\n <span className='align-middle'>{props.upload.name}</span>\n {finished && (\n <SvgContainer svg={CheckSvg} className='svg-container float-end text-success' />\n )}\n {!finished &&\n <div\n role='button'\n aria-label='close'\n onClick={() => props.cancelUpload(props.upload.id)}\n className='float-end description'\n >\n <SvgContainer svg={CloseSvg} />\n </div>\n }\n </div>\n\n <div className={`${styles.progress} progress my-2`}>\n <div\n className='progress-bar bg-blue'\n role='progressbar'\n style={{ width: `${props.upload.progress}%` }}\n aria-valuenow={props.upload.progress}\n aria-valuemin={0} aria-valuemax={100}\n />\n </div>\n </>\n );\n}\n\ninterface FeedbackFileUploadList {\n uploads: UploadItem[];\n cancelUpload: (id: string) => void;\n}\n\nexport function FeedbackFileUploadList(props: FeedbackFileUploadList): JSX.Element {\n if (!props.uploads?.length)\n return <></>;\n\n return (\n <>\n {props.uploads.map((u, idx) => (\n <FeedbackFileUploadItem\n key={idx}\n upload={u}\n cancelUpload={props.cancelUpload}\n />\n ))}\n </>\n );\n}\n","import React from 'react';\n\nexport function DeleteSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M9.5 7A1.5 1.5 0 0 1 11 5.5h2A1.5 1.5 0 0 1 14.5 7h4a.5.5 0 0 1 0 1h-1.14q0 .045-.005.09l-.909 10a1 1 0 0 1-.996.91h-6.9a1 1 0 0 1-.996-.91l-.91-10A1 1 0 0 1 6.64 8H5.5a.5.5 0 0 1 0-1h4m4 0a.5.5 0 0 0-.5-.5h-2a.5.5 0 0 0-.5.5zm2.971 1H7.53l.853 9.545A.5.5 0 0 0 8.88 18h6.24a.5.5 0 0 0 .498-.456zm-7.43 2.537a.499.499 0 1 1 .994-.077l.424 5.503a.498.498 0 1 1-.994.077zM11.5 10.5a.5.5 0 0 1 1 0V16a.5.5 0 0 1-1 0zm2.962-.5c-.26 0-.477.2-.497.46l-.424 5.503a.499.499 0 1 0 .994.077l.424-5.503a.5.5 0 0 0-.497-.537'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DeleteSvg } from 'libs/shared/images/svg/actions/DeleteSvg';\nimport { FileImgSvg } from 'libs/shared/images/svg/objects/FileImgSvg';\n\ninterface FeedbackUploadedItemProps {\n file: Core.Model;\n deleteFile: (id: string) => void;\n}\n\nexport function FeedbackUploadedItem(props: FeedbackUploadedItemProps) {\n return (\n <div className='bg-gray-100 rounded p-2'>\n <SvgContainer className='d-inline-block align-middle svg-container icon-purple me-2' svg={FileImgSvg}/>\n \n <span className='align-middle'>{props.file.get('name')}</span>\n\n <button className='btn p-0 border-0 float-end' onClick={() => props.deleteFile(props.file.get('id'))}>\n <SvgContainer svg={DeleteSvg} />\n </button>\n </div>\n );\n}\n\ninterface FeedbackUploadedListProps {\n uploadedFiles: UploadItem[];\n deleteFile: (id: string) => void;\n}\n\nexport function FeedbackUploadedList(props: FeedbackUploadedListProps) {\n return (\n <div className='d-flex flex-column gap-2'>\n {props.uploadedFiles.map(file => (\n <FeedbackUploadedItem key={file.id} file={file} deleteFile={props.deleteFile} />\n ))}\n </div>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CONTACT_SUPPORT_DETAILS } from 'libs/shared/constants/ContactDetails';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { EmailSvg } from 'libs/shared/images/svg/objects/EmailSvg';\nimport { LinkSvg } from 'libs/shared/images/svg/objects/LinkSvg';\nimport { PhoneSvg } from 'libs/shared/images/svg/objects/PhoneSvg';\nimport { FeedbackFileUpload } from 'libs/shared/views/feedback/components/feedback-file-upload/FeedbackFileUpload';\nimport { FeedbackFileUploadList } from 'libs/shared/views/feedback/components/feedback-upload-list/FeedbackUploadList';\nimport { FeedbackUploadedList } from 'libs/shared/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackReportBug';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ReportBugFormValues {\n issue: string;\n stepsToReproduce: string;\n}\n\nexport const INITIAL_VALUES: ReportBugFormValues = {\n issue: '',\n stepsToReproduce: ''\n};\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<ReportBugFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n stepsToReproduce: FeedbackFormYupString()\n}).noUnknown();\n\ninterface ReportBugFieldsProps {\n previewImageUrl?: string;\n uploadingFiles: UploadItem[];\n uploadedFiles: UploadItem[];\n uploadError: string;\n instanceRegion: InstanceRegion;\n onFilesAdded?: (files: File[], type?: InteractionType) => void;\n deleteFile: (id: string) => void;\n cancelUpload: (id: string) => void;\n}\n\nexport function ReportBugFields(props: ReportBugFieldsProps) {\n const formikProps = useFormikContextWrapper<ReportBugFormValues>();\n\n return (\n <>\n <div className='form-group'>\n <label className='form-label mb-1'><Text namespace={namespace} phrase='mixedMediaLabel' /></label>\n <p className='text-secondary font-size-sm'><Text namespace={namespace} phrase='mixedMediaDescription' /></p>\n <div className='mb-3'>\n <FeedbackFileUpload\n mimeType={FileExtensions.MIXED_MEDIA}\n onFilesAdded={props.onFilesAdded}\n imageUrl={props.previewImageUrl}\n uploadError={props.uploadError}\n acceptMultiple\n />\n </div>\n\n <FeedbackFileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n\n <FeedbackUploadedList uploadedFiles={props.uploadedFiles} deleteFile={props.deleteFile} />\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('issuePlaceholder')}\n label={getPhrase('issueLabel')}\n name='issue'\n value={formikProps.values.issue}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('stepsPlaceholder')}\n label={getPhrase('stepsLabel')}\n name='stepsToReproduce'\n value={formikProps.values.stepsToReproduce}\n />\n\n <div className='rounded bg-light-yellow p-2 mb-3'>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='help'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svg={LinkSvg} />\n <a href={CONTACT_SUPPORT_DETAILS[props.instanceRegion].website} target='_blank' className='text-underline' >\n <Text namespace={namespace} phrase='visitHelpCentre' />\n </a>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase='supportTeam'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svg={PhoneSvg} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].phone}</span>\n </div>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svg={EmailSvg} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].email}</span>\n </div>\n </div>\n </>\n );\n}\n\nexport type ReportBugProps = ReportBugFieldsProps & FeedbackFormSharedProps;\n\nexport function ReportBug(props: ReportBugProps) {\n const { onFilesAdded, cancelUpload, uploadingFiles, uploadedFiles, deleteFile, ...sharedProps } = props;\n\n return (\n <FeedbackFormWrapper\n {...sharedProps}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n submitText={getPhrase('submit')}\n >\n <ReportBugFields\n onFilesAdded={onFilesAdded}\n previewImageUrl={FEEDBACK_IMAGE_URLS.mediaPreview}\n cancelUpload={cancelUpload}\n uploadingFiles={uploadingFiles}\n uploadedFiles={uploadedFiles}\n deleteFile={deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n </FeedbackFormWrapper>\n );\n}\n","import { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classification, Resource } from 'libs/shared/interfaces';\n\nexport const MasterTypeHelper = {\n isType<T extends BaseObject>(obj: any, typeId: MasterType): obj is T {\n if (obj?.typeId)\n return obj.typeId === typeId;\n\n // Fallback to comparing actual string types\n return obj?.type?.toLowerCase() === MasterType[typeId].toLowerCase();\n },\n\n isResource(obj: any): obj is Resource {\n return MasterTypeHelper.isType<Resource>(obj, MasterType.Resource);\n },\n\n isClassification(obj: any): obj is Classification {\n return obj.type === 'Subject';\n }\n};\n",":local {\n .avatar {\n border-radius: 50%;\n background-color: $white;\n width: 100%;\n height: 100%;\n text-align: center;\n line-height: 1rem;\n background-size: cover;\n background-position: top center;\n font-size: 0.6rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n}","import React from 'react';\n\nimport styles from './white-avatar.module.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <>&nbsp;</> : initials}\n </div>\n );\n}\n","$vertical-padding: 0.1rem;\n$horizontal-padding: 0.2rem;\n\n:local {\n .svgContainer {\n width: 1.2rem;\n height: 1.2rem;\n }\n\n .selection {\n padding: map-get($spacers, 1);\n\n .expander {\n display: none;\n\n &:hover {\n background-color: $white;\n }\n }\n\n .iconContainer {\n display: flex;\n border-radius: 50%;\n\n .icon {\n border-radius: 50%;\n background-color: $white;\n height: 100%;\n font-size: 0.6rem;\n }\n }\n\n // When hovering on this parent element, the visibility of the 2 child elements with these classes switches.\n &:hover {\n .expander {\n display: flex;\n }\n\n .expander + .iconContainer {\n display: none;\n }\n }\n }\n\n .bubble {\n border: 1px dashed;\n border-radius: map-get($spacers, 3);\n position: relative;\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0; \n left: 0;\n width: 100%; \n height: 100%;\n opacity: .05;\n background-color: currentColor;\n border-radius: map-get($spacers, 3);\n }\n }\n \n .spinnerContainer {\n border: 1px solid transparent;\n border-radius: 50%;\n box-sizing: content-box;\n }\n\n .remove {\n margin-top: -#{map-get($spacers, 1)};\n margin-bottom: -#{map-get($spacers, 1)};\n margin-right: -#{map-get($spacers, 1)};\n padding-right: #{map-get($spacers, 1)};\n\n &:hover {\n background-color: rgba(255,255,255,0.5);\n }\n }\n\n .removeBubble {\n top: 0.75rem;\n right: map-get($spacers, 2);\n }\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PlusSvg } from 'libs/shared/images/svg/actions/PlusSvg';\nimport { ClassroomsSvg } from 'libs/shared/images/svg/objects/ClassroomsSvg';\nimport { GroupSvg } from 'libs/shared/images/svg/objects/GroupSvg';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.module.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svg={isClassroom ? ClassroomsSvg : GroupSvg}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svg={PlusSvg} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svg={isClassroom ? ClassroomsSvg : GroupSvg}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}\n","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { CloseSvg } from 'libs/shared/images/svg/actions/CloseSvg';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.module.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'ultramarine';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'ultramarine' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'ultramarine';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(\n (props.selection as ClassroomGroup).users ||\n (props.selection as Classroom).enrolments\n )?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svg={CloseSvg} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience ?\n UserHelper.getDisplayName(props.selection as User) :\n UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svg={CloseSvg} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}\n","$avatar-width: 2.25rem;\n$remove-button-width: 2.25rem;\n\n:local {\n .removeRecipient {\n opacity: 0;\n width: $remove-button-width;\n }\n\n .recipientItem {\n word-break: break-word;\n\n &:hover,\n &.showSpinner {\n .removeRecipient {\n opacity: 1;\n }\n }\n }\n\n .avatarContainer {\n width: $avatar-width;\n height: $avatar-width;\n }\n\n .recipientDetails {\n width: calc(100% - #{$avatar-width});\n }\n\n .recipientDetailsWithRemoveButton {\n width: calc(100% - #{$avatar-width} - #{$remove-button-width});\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { GroupSvg } from 'libs/shared/images/svg/objects/GroupSvg';\nimport { ClassroomGroup } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\n\nimport styles from '../recipient-item.module.scss';\n\nconst namespace = 'shared.classroomGroupRecipientItemMetadata';\n\nfunction getSubheading(classroomGroup: ClassroomGroup): string {\n const userCount = classroomGroup.users?.count ?? 0;\n const classroomName = classroomGroup.classroom?.name;\n\n if (classroomName)\n return LanguageService.getPhrase(namespace, 'subheading', { classroomName, smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomGroupRecipientItemMetadataProps {\n classroomGroup: ClassroomGroup;\n detailsClassName: string;\n}\n\nexport function ClassroomGroupRecipientItemMetadata(props: ClassroomGroupRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle\n svg={GroupSvg}\n variant={mapColourToBsVariant(props.classroomGroup.metadata?.colour)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroomGroup.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroomGroup)}</p>\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ClassroomsSvg } from 'libs/shared/images/svg/objects/ClassroomsSvg';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport styles from '../recipient-item.module.scss';\n\nconst namespace = 'shared.classroomRecipientItemMetadata';\n\nfunction getSubheading(classroom: Classroom): string {\n // Getting count from users is a temporary fix until enrolments count is working in Search api\n const userCount = classroom.users?.count ?? classroom.enrolments?.count;\n\n if (Number.isInteger(userCount))\n return LanguageService.getPhrase(namespace, 'subheading', { smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomRecipientItemMetadataProps {\n classroom: Classroom;\n detailsClassName: string;\n}\n\nexport function ClassroomRecipientItemMetadata(props: ClassroomRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle svg={ClassroomsSvg} variant='teal' />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroom.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroom)}</p>\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { anonymiseUserName } from 'libs/shared/apps/analytics/utils/AnonymiseUserUtils';\nimport { EngagementAvatar } from 'libs/shared/components/engagement-avatar/EngagementAvatar';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.module.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n \n /**\n * Tertiary puts all students into a single group called 'Learners'.\n * When a student is in the 'Learners' group, we don't want to display the group name,\n * but instead we want to just show \"Student\". - Sha\n */\n if (yearGroup?.name && yearGroup.name !== 'Learners')\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\nfunction getUserProps({\n user, anonymiseUsers, showDisplayName\n}: {\n user: AnonUser,\n showDisplayName: boolean,\n anonymiseUsers?: boolean\n}) {\n if (user.sessionId || user.deleted) {\n const anonName = anonymiseUserName(user, anonymiseUsers);\n const nameParts = anonName.split(' ').filter(n => !!n);\n\n return {\n name: anonName,\n surname: nameParts.slice(1).join(' '),\n avatarUrl: null\n };\n }\n\n return {\n name: anonymiseUsers ?\n anonymiseUserName(user, true) :\n showDisplayName ?\n UserHelper.getDisplayName(user) :\n UserHelper.getFullName(user),\n surname: user.surname,\n avatarUrl: user.avatar?.url\n };\n}\n\nUserRecipientItemMetadata.defaults = {\n showSubText: true\n};\n\ninterface UserRecipientItemMetadataProps {\n user: AnonUser;\n imageCdnUrl: string;\n detailsClassName?: string;\n avatarClassName?: string;\n showDisplayName: boolean;\n nameClassName?: string;\n showSubText?: boolean;\n anonymiseUsers?: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n const { name, surname, avatarUrl } = getUserProps(props);\n\n return (\n <>\n <div className={`${styles.avatarContainer} ${props.avatarClassName} d-inline-block flex-shrink-0`}>\n <EngagementAvatar\n imageUrl={avatarUrl}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(name, surname)}\n type={!props.anonymiseUsers && (props.user.sessionId || props.user.deleted) ? 'anon' : undefined}\n anonymiseUsers={props.anonymiseUsers}\n anonymousSvgSize={SvgContainerSize.Small}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className={classNames('font-size-normal fw-normal m-0', props.nameClassName)}>\n {name}\n </h4>\n {props.showSubText && `id` in props.user && <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>}\n </div>\n </>\n );\n}\n","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { ClassroomGroupRecipientItemMetadata } from './classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata';\nimport { ClassroomRecipientItemMetadata } from './classroom-recipient-item-metadata/ClassroomRecipientItemMetadata';\nimport { UserRecipientItemMetadata } from './user-recipient-item-metadata/UserRecipientItemMetadata';\n\nimport styles from './recipient-item.module.scss';\n\nconst namespace = 'share.recipientItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRemovePhrase(type: MasterType): string {\n switch (type) {\n case (MasterType.User):\n return getPhrase('removeUser');\n case (MasterType.Classroom):\n return getPhrase('removeClassroom');\n case (MasterType.ClassroomGroup):\n return getPhrase('removeGroup');\n }\n return null;\n}\n\ninterface RecipientItemProps<T extends BaseObject = BaseObject> {\n entity: T;\n imageCdnUrl: string;\n showDisplayName: boolean;\n removeRecipient?: (id: string, onError?: () => void) => void;\n getSubText?: (entity: T) => string;\n}\n\nexport function RecipientItem<T extends BaseObject = BaseObject>(props: RecipientItemProps<T>): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n let className = `${styles.recipientItem} d-flex`;\n\n if (showSpinner)\n className += ` ${styles.showSpinner}`;\n\n const detailsClassName = `${props.removeRecipient ?\n styles.recipientDetailsWithRemoveButton :\n styles.recipientDetails} d-inline-block ms-2`;\n\n function removeRecipient(): void {\n setShowSpinner(true);\n props.removeRecipient(props.entity.id, () => setShowSpinner(false));\n }\n\n return (\n <div className={className}>\n {(() => {\n if (MasterTypeHelper.isType<User>(props.entity, MasterType.User)) {\n return (\n <UserRecipientItemMetadata\n user={props.entity}\n imageCdnUrl={props.imageCdnUrl}\n detailsClassName={detailsClassName}\n showDisplayName={props.showDisplayName}\n getSubText={props.getSubText}\n showSubText\n />\n );\n }\n\n if (MasterTypeHelper.isType<Classroom>(props.entity, MasterType.Classroom)) {\n return (\n <ClassroomRecipientItemMetadata\n classroom={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n\n if (MasterTypeHelper.isType<ClassroomGroup>(props.entity, MasterType.ClassroomGroup)) {\n return (\n <ClassroomGroupRecipientItemMetadata\n classroomGroup={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n })()}\n\n {FunctionHelper.isFunction(props.removeRecipient) && (\n <div className={`${styles.removeRecipient} d-inline-flex justify-content-center align-items-center`}>\n {showSpinner ?\n <Spinner as='div' size='sm' animation='border' role='status' /> :\n (\n <Tooltip title={getRemovePhrase(props.entity.typeId)} spanHack>\n <div\n className='btn-close cursor-pointer'\n role='button'\n aria-label='Close'\n onClick={removeRecipient}\n >\n </div>\n </Tooltip>\n )\n }\n </div>\n )}\n </div>\n );\n}\n",":local {\n .emptyState {\n width: 6rem;\n }\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.module.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6' role='alert'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\n );\n}\n",":local {\n .container {\n height: 100%;\n flex: 1;\n\n input {\n height: 100%;\n border: none;\n outline: none;\n padding: 0;\n }\n }\n\n .suggestionsContainerOpen {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 100;\n }\n\n .selectionContainer {\n width: calc(100% - 34px);\n\n &:last-child {\n border-bottom: none !important;\n }\n\n & > :last-child {\n flex: 1;\n margin-top: map-get($spacers, 1);\n }\n }\n\n .sectionContainer:last-child {\n border-bottom: none !important;\n max-height: 20rem;\n overflow-y: scroll;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { SearchBar, SearchBarProps } from 'libs/shared/components/search-bar/SearchBar';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TypeaheadEmptyState } from 'libs/shared/components/typeahead-empty-state/TypeaheadEmptyState';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { SearchSvg } from 'libs/shared/images/svg/actions/SearchSvg';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { InputSelection } from './InputSelection';\n\nimport styles from './tokenized-typeahead.module.scss';\n\nconst namespace = 'shared.tokenizedTypeahead';\n\nexport const TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT = 10;\n\ninterface TokenizedTypeaheadProps<T extends BaseObject = BaseObject> extends SearchBarProps<T> {\n selections: T[];\n removeSelection: (selection: T) => void;\n emptyStateImageUrl?: string;\n getEmptyStateComponent?: (query: string) => JSX.Element;\n errorStateImageUrl: string;\n hasStudentExperience?: boolean;\n getInputTokenComponent?: (selection: T) => JSX.Element;\n imageCdnUrl?: string;\n className?: string;\n hideIcon?: boolean;\n\n /**\n * If this is passed in groups and classrooms will have the option to expand\n * otherwise they will appear as normal without the + icon\n */\n fetchSelectionMembers?: (id: string) => void;\n sharePermissionsDescription?: string;\n}\n\nTokenizedTypeahead.defaultProps = {\n renderSuggestionsOnInputFocus: true\n};\n\n/**\n * This component extends the functionality of the `SearchBar` component by\n * displaying a list of selections as tokens inside the search bar.\n * \n * Any component using this component is responsible for managing the state of\n * these tokens (selections). See `MainShare.tsx` for an example.\n */\nexport function TokenizedTypeahead<T extends BaseObject = BaseObject>(props: TokenizedTypeaheadProps<T>): JSX.Element {\n return (\n <div className={`form-control h-auto d-flex align-items-top position-relative ${props.hideIcon ? '' : 'py-1 px-0'} ${props.className}`}>\n {!props.hideIcon && <SvgContainer className='svg-container m-1' svg={SearchSvg} />}\n\n <div className={`${styles.selectionContainer} d-flex flex-wrap align-items-center mt-n1`}>\n {props.selections.map(s => {\n if (props.getInputTokenComponent)\n return props.getInputTokenComponent(s);\n\n return (\n <InputSelection\n key={s.id}\n selection={s}\n onClickRemove={props.removeSelection}\n onClickExpand={props.fetchSelectionMembers}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n })}\n\n <SearchBar\n {...props}\n onBackspace={() => {\n if (!props.selections.length)\n return;\n\n props.removeSelection(ArrayHelper.last(props.selections));\n }}\n recentSearchHeading={props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading')}\n placeholder={!props.selections?.length ? props.placeholder : ' '}\n searchIconPlacement={false}\n clearQueryOnSelect\n getSuggestionComponent={suggestion => {\n if (props.getSuggestionComponent)\n return props.getSuggestionComponent(suggestion);\n\n return (\n <RecipientItem\n entity={suggestion}\n imageCdnUrl={props.imageCdnUrl}\n showDisplayName={props.hasStudentExperience}\n />\n );\n }}\n getEmptyStateComponent={query => {\n if (props.getEmptyStateComponent)\n return props.getEmptyStateComponent(query);\n\n if (props.emptyStateImageUrl)\n <TypeaheadEmptyState query={query} imageUrl={props.emptyStateImageUrl} />;\n }}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={props.errorStateImageUrl} onClickTryAgain={onClickTryAgain} />\n }\n theme={{\n container: styles.container,\n suggestionsContainerOpen: `bg-white py-1 rounded border mt-1 ${styles.suggestionsContainerOpen}`,\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\n }}\n sectionTitleClassName='ps-2'\n renderSuggestionsOnInputFocus={props.renderSuggestionsOnInputFocus}\n onSuggestionDependencies={[props.selections]}\n />\n </div>\n\n {!!props.sharePermissionsDescription &&\n <span className='px-2 text-secondary text-nowrap'>{props.sharePermissionsDescription}</span>\n }\n </div>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestLivestream';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RequestLivestreamFormValues {\n topic: string;\n studentLevel: string[];\n producerCompany: string;\n additionalInfo: string;\n}\n\nexport const INITIAL_VALUES: RequestLivestreamFormValues = {\n topic: '',\n studentLevel: [],\n producerCompany: '',\n additionalInfo: ''\n};\n\nconst REQUEST_LIVESTREAM_YUP_STRING =\n Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestLivestreamFormValues>({\n producerCompany: REQUEST_LIVESTREAM_YUP_STRING.required(() => getPhrase('companyError')),\n topic: REQUEST_LIVESTREAM_YUP_STRING,\n studentLevel: Yup.array(Yup.string()),\n additionalInfo: FeedbackFormYupString()\n}).noUnknown();\n\ninterface RequestLivestreamFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestLivestreamFields(props: RequestLivestreamFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestLivestreamFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(\n selected => props.audiences.find(a => a.name === selected)\n ) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.name));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.name === suggestion.name))\n return false;\n\n if (suggestion.name === selectedSuggestion?.name)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n showRequiredStar\n />\n\n <FormField\n placeholder={getPhrase('topicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n id='audiences'\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='name'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.name}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel &&\n <FormFeedback name='audiences'>{formikProps.errors.studentLevel}</FormFeedback>\n }\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n );\n}\n\nexport type RequestLivestreamProps =\n RequestLivestreamFieldsProps &\n FeedbackFormSharedProps;\n\nexport function RequestLivestream(props: RequestLivestreamProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RequestLivestreamFields audiences={props.audiences} />\n </FeedbackFormWrapper>\n );\n}\n",":local {\n .image {\n height: 6.375rem;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './before-requesting.module.scss';\n\nconst namespace = 'shared.feedbackBeforeRequesting';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BeforeRequestingProps {\n exchangeTvUrl?: string;\n instanceRegion: string;\n setConfirmed: (checked: boolean) => void;\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nexport function BeforeRequesting(props: BeforeRequestingProps) {\n const [ checked, setChecked ] = React.useState(false);\n return (\n <>\n <div className='d-flex flex-column align-items-center my-4'>\n <img className={`${styles.image} mb-3`} src={FEEDBACK_IMAGE_URLS.videoAlert} />\n <h4 className='mb-3'>\n <Text namespace={namespace} phrase='beforeRequesting' />\n </h4>\n <p><Text namespace={namespace} phrase='haveYouSearched' options={{ exchangeUrl: `${props.exchangeTvUrl}/exchange` }} /></p>\n {props.instanceRegion === InstanceRegion.UK ?\n <p><Text namespace={namespace} phrase='bbcArchiveRequestsNote' options={{ exchangeTvUrl: `${props.exchangeTvUrl}/tv?requestVideo=true` }} /></p> :\n <p><Text namespace={namespace} phrase='foxtelRequestsNote' options={{ exchangeTvUrl: `${props.exchangeTvUrl}/tv?requestVideo=true` }} /></p>}\n </div>\n\n <PopupButtons>\n <PopupButtons.Checkbox\n id='confirmExchange'\n checked={checked}\n onToggle={() => setChecked(!checked)}\n label={getPhrase('exchangeCheck')}\n />\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('back')} />\n <PopupButtons.Submit\n variant='dark'\n text={getPhrase('continue')}\n disabled={!checked}\n onClick={() => props.setConfirmed(true)}\n />\n </PopupButtons>\n </>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { BeforeRequesting } from 'libs/shared/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum VideoRequestType {\n VideosTopic = 'videosTopic',\n VideoOrSeries = 'videoOrSeries',\n YouTubeVideo = 'youtubeVideo'\n}\n\nexport interface RequestVideoFormValues {\n videoRequestType: string;\n topic: string;\n studentLevel: string[];\n videoTitle: string;\n seriesName: string;\n producerCompany: string;\n websiteOrTrailer: string;\n additionalInfo: string;\n youtubeChannelLink: string;\n youtubeVideoLink: string;\n}\n\nexport const INITIAL_VALUES: RequestVideoFormValues = {\n videoRequestType: '',\n topic: '',\n studentLevel: [],\n videoTitle: '',\n seriesName: '',\n producerCompany: '',\n websiteOrTrailer: '',\n additionalInfo: '',\n youtubeChannelLink: '',\n youtubeVideoLink: ''\n};\n\nconst RequestVideoYupString = () => Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestVideoFormValues>({\n videoRequestType: Yup.string().required(getPhrase('videoRequestTypeRequiredError')),\n topic: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.VideosTopic,\n then: RequestVideoYupString().required(getPhrase('topicRequiredError')),\n otherwise: RequestVideoYupString().notRequired()\n }),\n studentLevel: Yup.array(Yup.string()),\n\n videoTitle: RequestVideoYupString().when([ 'videoRequestType', 'seriesName' ], {\n is: (videoRequestType, seriesName) => videoRequestType === VideoRequestType.VideoOrSeries && !seriesName,\n then: RequestVideoYupString().required((getPhrase('videoRequiredError'))),\n otherwise: RequestVideoYupString().notRequired()\n }),\n seriesName: RequestVideoYupString(),\n producerCompany: RequestVideoYupString(),\n websiteOrTrailer: RequestVideoYupString(),\n additionalInfo: FeedbackFormYupString(),\n youtubeChannelLink: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.YouTubeVideo,\n then: RequestVideoYupString().required(getPhrase('youtubeChannelLinkRequiredError')).url(getPhrase('invalidUrlError')),\n otherwise: RequestVideoYupString().notRequired()\n }),\n youtubeVideoLink: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.YouTubeVideo,\n then: RequestVideoYupString().required(getPhrase('youtubeVideoLinkRequiredError')).url(getPhrase('invalidUrlError')),\n otherwise: RequestVideoYupString().notRequired()\n })\n}).noUnknown();\n\ninterface RequestVideoFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestVideoFields(props: RequestVideoFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestVideoFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(selected => props.audiences?.find(a => a.name === selected)) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.name));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.name === suggestion.name))\n return false;\n\n if (suggestion.name === selectedSuggestion?.name)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n as='select'\n label={getPhrase('videoRequestTypeLabel')}\n name='videoRequestType'\n value={formikProps.values.videoRequestType}\n >\n <option value='' disabled hidden>{getPhrase('videoRequestTypePlaceholder')}</option>\n <option value={VideoRequestType.VideosTopic}>{getPhrase('videosTopicType')}</option>\n <option value={VideoRequestType.VideoOrSeries}>{getPhrase('videoOrSeriesType')}</option>\n <option value={VideoRequestType.YouTubeVideo}>{getPhrase('youtubeVideoType')}</option>\n </FormField>\n\n {formikProps.values.videoRequestType === VideoRequestType.YouTubeVideo && (\n <>\n <FormField\n placeholder={getPhrase('youtubeChannelLinkPlaceholder')}\n label={getPhrase('youtubeChannelLinkLabel')}\n name='youtubeChannelLink'\n value={formikProps.values.youtubeChannelLink}\n showRequiredStar\n />\n\n <FormField\n placeholder={getPhrase('youtubeVideoLinkPlaceholder')}\n label={getPhrase('youtubeVideoLinkLabel')}\n name='youtubeVideoLink'\n value={formikProps.values.youtubeVideoLink}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n\n {formikProps.values.videoRequestType === VideoRequestType.VideosTopic && (\n <>\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('videoTopicLabel')}\n name='topic'\n value={formikProps.values.topic}\n showRequiredStar\n />\n \n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n id='audiences'\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='name'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.name}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel\n && <FormFeedback name='audiences'>{formikProps.errors.studentLevel}</FormFeedback>\n }\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n\n {formikProps.values.videoRequestType === VideoRequestType.VideoOrSeries && (\n <>\n <FormField\n placeholder={getPhrase('videoTitlePlaceholder')}\n label={getPhrase('videoTitleLabel')}\n name='videoTitle'\n value={formikProps.values.videoTitle}\n />\n\n <FormField\n placeholder={getPhrase('seriesPlaceholder')}\n label={getPhrase('seriesLabel')}\n name='seriesName'\n value={formikProps.values.seriesName}\n />\n\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n />\n\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <FormField\n placeholder={getPhrase('websiteOrTrailerPlaceholder')}\n label={getPhrase('websiteOrTrailerLabel')}\n name='websiteOrTrailer'\n value={formikProps.values.websiteOrTrailer}\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n </>\n );\n}\n\nexport type RequestVideoProps =\n RequestVideoFieldsProps &\n FeedbackFormSharedProps & {\n hasExchangeTvProduct: boolean,\n exchangeTvUrl: string,\n instanceRegion: string,\n skipBeforeRequesting: boolean\n };\n\nexport function RequestVideo(props: RequestVideoProps) {\n const [ confirmed, setConfirmed ] = React.useState(!!props.skipBeforeRequesting);\n\n const showBeforeRequesting = props.hasExchangeTvProduct && !confirmed;\n\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n hideButtons={props.hasExchangeTvProduct && !confirmed}\n hideCancelButton={props.skipBeforeRequesting}\n >\n {showBeforeRequesting && (\n <BeforeRequesting\n setConfirmed={setConfirmed}\n setSelectedOption={props.setSelectedOption}\n exchangeTvUrl={props.exchangeTvUrl}\n instanceRegion={props.instanceRegion}\n />\n )}\n\n {!showBeforeRequesting && <RequestVideoFields audiences={props.audiences} />}\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackSuggestImprovement';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SuggestImprovementFormValues {\n suggestion: string;\n importance: string;\n}\n\nconst INITIAL_VALUES: SuggestImprovementFormValues = {\n suggestion: '',\n importance: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<SuggestImprovementFormValues>({\n suggestion: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n importance: FeedbackFormYupString()\n}).noUnknown();\n\ninterface SuggestImprovementFieldsProps {\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nfunction SuggestImprovementFields(props: SuggestImprovementFieldsProps) {\n const formikProps = useFormikContextWrapper<SuggestImprovementFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('suggestionPlaceholder')}\n label={getPhrase('suggestionLabel')}\n name='suggestion'\n value={formikProps.values.suggestion}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('whySuggestionPlaceholder')}\n label={getPhrase('whySuggestionLabel')}\n name='importance'\n rows={5}\n value={formikProps.values.importance}\n />\n\n <p>\n <Text namespace={namespace} phrase='contactSupport' />\n &nbsp;\n <button\n className='btn btn-link text-underline p-0'\n onClick={() => props.setSelectedOption(FeedbackOption.RAISE_ISSUE)}>\n <Text namespace={namespace} phrase='raiseIssue' />\n </button>\n </p>\n </>\n );\n}\n\nexport function SuggestImprovement(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.lightBulb}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <SuggestImprovementFields setSelectedOption={props.setSelectedOption} />\n </FeedbackFormWrapper>\n );\n}\n","import React from 'react';\nimport { Form } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackButtons } from 'libs/shared/views/feedback/components/feedback-buttons/FeedbackButtons';\nimport { FeedbackFormState } from 'libs/shared/views/feedback/components/feedback-form-state/FeedbackFormState';\nimport { GivePraise } from 'libs/shared/views/feedback/components/forms/give-praise/GivePraise';\nimport { Other } from 'libs/shared/views/feedback/components/forms/other/Other';\nimport { RaiseIssue } from 'libs/shared/views/feedback/components/forms/raise-issue/RaiseIssue';\nimport { ReportBug } from 'libs/shared/views/feedback/components/forms/report-bug/ReportBug';\nimport { RequestLivestream } from 'libs/shared/views/feedback/components/forms/request-livestream/RequestLivestream';\nimport { RequestVideo } from 'libs/shared/views/feedback/components/forms/request-video/RequestVideo';\nimport { SuggestImprovement } from 'libs/shared/views/feedback/components/forms/suggest-improvement/SuggestImprovement';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormCustomProps, FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\ninterface FeedbackFormWrapperProps extends React.PropsWithChildren, FeedbackFormSharedProps {\n validationSchema: any;\n submitText?: string;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n hideButtons?: boolean;\n}\n\nexport function FeedbackFormWrapper(props: FeedbackFormWrapperProps) {\n const ref = React.useRef(null);\n\n function setSelectedOption(selectedOption: FeedbackOption) {\n props.setFormState((prevState: HashObject) => ({ ...prevState, ...ref.current?.values }));\n props.setSelectedOption(selectedOption);\n }\n\n return (\n <FormWrapper\n onSubmit={props.onSubmit}\n initialValues={props.initialValues}\n validationSchema={props.validationSchema}\n validateOnMount\n innerRef={ref}\n >\n <Form>\n {props.formStage === 'form' && props.children}\n\n <FeedbackFormState\n formStage={props.formStage}\n successImageUrl={props.successImageUrl}\n successHeading={props.successHeading}\n successDescription={props.successDescription}\n />\n\n {!props.hideButtons && (\n <FeedbackButtons\n setSelectedOption={setSelectedOption}\n submitText={props.submitText}\n formStage={props.formStage}\n closePopup={props.closePopup}\n hideCancelButton={props.hideCancelButton}\n />\n )}\n </Form>\n </FormWrapper>\n );\n}\n\ninterface FeedbackFormSelectorProps {\n selectedOption: FeedbackOption;\n}\n\ntype FeedbackFormProps = FeedbackFormSharedProps & FeedbackFormSelectorProps & FeedbackFormCustomProps;\n\nexport function FeedbackForm(props: FeedbackFormProps) {\n const formProps = {\n formStage: props.formStage,\n initialValues: props.initialValues,\n setFormState: props.setFormState,\n onSubmit: props.onSubmit,\n setSelectedOption: props.setSelectedOption,\n closePopup: props.closePopup\n };\n\n switch (props.selectedOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT:\n return <SuggestImprovement {...formProps} />;\n case FeedbackOption.REPORT_BUG:\n return (\n <ReportBug\n {...formProps}\n onFilesAdded={props.onFilesAdded}\n cancelUpload={props.cancelUpload}\n uploadingFiles={props.uploadingFiles}\n uploadedFiles={props.uploadedFiles}\n deleteFile={props.deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n );\n case FeedbackOption.REQUEST_VIDEO:\n return (\n <RequestVideo\n {...formProps}\n audiences={props.audiences}\n hasExchangeTvProduct={props.hasExchangeTvProduct}\n exchangeTvUrl={props.exchangeTvUrl}\n instanceRegion={props.instanceRegion}\n skipBeforeRequesting={props.skipBeforeRequesting}\n hideCancelButton={props.hideCancelButton}\n />\n );\n case FeedbackOption.REQUEST_LIVESTREAM:\n return (\n <RequestLivestream\n {...formProps}\n audiences={props.audiences}\n />\n );\n case FeedbackOption.RAISE_ISSUE:\n return <RaiseIssue {...formProps} />;\n case FeedbackOption.GIVE_PRAISE:\n return <GivePraise {...formProps} />;\n case FeedbackOption.OTHER:\n return <Other {...formProps} />;\n }\n}\n","import React from 'react';\nimport Radio from 'backbone.radio';\nimport Dropzone from 'dropzone';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { MixedMediaUploadService, UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { useStudentRestrictedDialogError } from 'libs/shared/hooks/useStudentRestrictedDialogError';\nimport { CurrentUser, Customer, FileUpload, Presentation, PresentationAudience, Product, User } from 'libs/shared/interfaces';\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { FeedbackSelector } from 'libs/shared/views/feedback/components/feedback-selector/FeedbackSelector';\nimport { FeedbackForm } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\nconst namespace = 'shared.giveFeedback';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MAX_FILES_LIMIT = 5;\nconst MAX_FILE_SIZE_LIMIT = 60; // MB\nconst BYTES_MULTIPLIER = 1000000;\n\ninterface GiveFeedbackViewProps extends PopupProps {\n product: ProductId;\n // Land on a pre selected option form\n selectedOption?: FeedbackOption;\n // Flag to skip step before requesting video form\n skipBeforeRequestingVideoStep?: boolean;\n extraTags?: string[];\n}\n\nexport function GiveFeedbackView(props: GiveFeedbackViewProps) {\n const alerts = useAlerts();\n const fetchAsync = useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId));\n const masterUser = Flight.useBasicFetch<User>(currentUser.data && UserRequests.user(currentUser.data.id));\n\n const [ selectedOption, setSelectedOption ] = React.useState<FeedbackOption>(props.selectedOption);\n const [ formStage, setFormStage ] = React.useState<FeedbackFormStage>('form');\n const [ formState, setFormState ] = React.useState<HashObject>(null);\n\n const mixedMediaUploadService = useService<MixedMediaUploadService>(SharedServices.MixedMediaUpload);\n const mixedMediaUploads = useGetCollectionItems<UploadItem>(() => mixedMediaUploadService.getCollection(), null);\n\n const interactionTypeRef = React.useRef<InteractionType>(null);\n const mixedMediaUploadCountRef = React.useRef(0);\n const mixedMediaUploadsRef = React.useRef<FileUpload[]>([]);\n\n const [ uploadedFiles, setUploadedFiles ] = React.useState<UploadItem[]>([]);\n const [ uploadError, setUploadError ] = React.useState<string>('');\n \n const presentationType = props.product === ProductId.StreamableLearning ?\n PresentationType.StreamableLearning : PresentationType.Subject;\n const presentation = Flight.useBasicFetch<Presentation>(ClassificationRequests.presentation(presentationType));\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n AudienceRequests.presentationAudiences(presentationType)\n );\n\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const exchangeTvProduct = products.data?.find(product => product.id === ProductId.Exchange);\n\n useListenOn(\n Radio.channel(SharedServiceChannels.MIXED_MEDIA_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onMixedMediaUploadComplete\n );\n\n useStudentRestrictedDialogError();\n\n function addMixedMediaFiles(files: File[], type?: InteractionType): void {\n if (files.some(file => file.size > MAX_FILE_SIZE_LIMIT * BYTES_MULTIPLIER)) {\n setUploadError(getPhrase('maxFileSizeUploadError', { limit: MAX_FILE_SIZE_LIMIT }));\n return;\n }\n\n if (files.length > (MAX_FILES_LIMIT - mixedMediaUploads.length)) {\n setUploadError(getPhrase('maxFilesUploadError', { limit: MAX_FILES_LIMIT }));\n return;\n }\n \n if (files.some(file => !Dropzone.isValidFile(file, FileExtensions.MIXED_MEDIA))) {\n setUploadError(getPhrase('invalidTypeUploadError'));\n return;\n }\n\n setUploadError('');\n \n mixedMediaUploadCountRef.current += files.length;\n\n if (type)\n interactionTypeRef.current = type;\n\n mixedMediaUploadService.addFiles(files);\n }\n\n function onMixedMediaUploadComplete(upload: Core.Model): void {\n const uploadData: FileUpload = upload.toJSON();\n\n mixedMediaUploadsRef.current.push(uploadData);\n mixedMediaUploadCountRef.current--;\n\n if (mixedMediaUploadCountRef.current > 0)\n return;\n\n // The below will only run once all media files have been uploaded.\n let mixedMediaToUpload = mixedMediaUploadsRef.current.length;\n\n // const onError = () => console.log('mixedMedia upload error');\n\n mixedMediaUploadsRef.current.forEach(mixedMedia => {\n // setTimeout is required to detect changes correctly when files are removed from the uploading list in the backbone collection\n setTimeout(() => {\n mixedMediaToUpload--;\n \n const uploadedMedia = mixedMediaUploadService.getCollection().filter(r => r.get('fileInfo')?.id === mixedMedia.fileInfo.id);\n\n mixedMediaUploadService.getCollection().remove(uploadedMedia);\n setUploadedFiles(prevState => ([ ...prevState, ...uploadedMedia ]));\n\n if (mixedMediaToUpload > 0)\n return;\n\n AnalyticsHelper.logUserAction(\n { fileInfo: mixedMedia.fileInfo },\n {\n location: LocationContext.GiveFeedbackPopup,\n actionType: UserAction.Upload,\n entity: EntityType.MixedMedia,\n descriptor: AnalyticsHelper.mapInteractionType(interactionTypeRef.current)\n }\n );\n\n alerts.success(getPhrase('mixedMediaUploadSuccess'));\n });\n });\n\n mixedMediaUploadsRef.current = [];\n }\n\n function onDeleteFile(id: string) {\n setUploadedFiles(prevState => prevState.filter(file => file.id !== id));\n }\n\n function onFormSelect(option: FeedbackOption) {\n setSelectedOption(option);\n\n if (option)\n AnalyticsHelper.logUserAction(\n { type: option },\n {\n actionType: UserAction.Click,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Start\n }\n );\n }\n\n function getFeedbackType(option: FeedbackOption) {\n switch (option) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return FeedbackType.SuggestImprovement;\n case FeedbackOption.REPORT_BUG: return FeedbackType.ReportBug;\n case FeedbackOption.REQUEST_VIDEO: return FeedbackType.RequestVideo;\n case FeedbackOption.REQUEST_LIVESTREAM: return FeedbackType.RequestLivestream;\n case FeedbackOption.GIVE_PRAISE: return FeedbackType.GivePraise;\n case FeedbackOption.RAISE_ISSUE: return FeedbackType.RaiseIssue;\n case FeedbackOption.OTHER: return FeedbackType.Other;\n }\n }\n\n async function onSubmit(values: any, onDone: (options?: FormSubmissionOptions) => void) {\n const feedbackFormRequestData: FeedbackFormRequest = {\n type: getFeedbackType(selectedOption),\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n props.product,\n false,\n [\n ...(props.extraTags || []),\n 'give feedback',\n getFeedbackFormTitles(selectedOption).toLowerCase(),\n presentation.data?.description?.toLowerCase().trim(),\n masterUser.data?.userProfile?.metadata?.jobTitle?.toLowerCase()\n ].filter(Boolean)\n )\n };\n\n let feedbackFormValues = {\n ...values,\n currentPageUrl: LocationUtils.GetCurrentUrl()\n };\n\n if (selectedOption === FeedbackOption.REPORT_BUG && uploadedFiles.length) {\n feedbackFormValues = {\n ...feedbackFormValues,\n ...FeedbackFormHelper.categorizeFiles(uploadedFiles)\n };\n }\n\n try {\n await fetchAsync(FeedbackRequests.submitFeedback(feedbackFormRequestData, feedbackFormValues));\n\n AnalyticsHelper.logUserAction(\n {\n ...feedbackFormRequestData,\n ...feedbackFormValues\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n\n setFormStage('success');\n } catch {\n alerts.error(getPhrase('error'));\n } finally {\n onDone();\n }\n }\n\n return (\n <Popup\n size='lg'\n title={selectedOption ? getFeedbackFormTitles(selectedOption) : getPhrase('title')}\n closePopup={props.closePopup}\n backdrop='static'\n >\n {!selectedOption && <p><Text namespace={namespace} phrase='description' /></p>}\n\n {!selectedOption && (\n <FeedbackSelector\n onSelectOption={onFormSelect}\n options={[\n FeedbackOption.SUGGEST_IMPROVEMENT,\n FeedbackOption.REPORT_BUG,\n props.product === ProductId.StreamableLearning ?\n FeedbackOption.REQUEST_LIVESTREAM :\n FeedbackOption.REQUEST_VIDEO,\n FeedbackOption.GIVE_PRAISE,\n FeedbackOption.RAISE_ISSUE,\n FeedbackOption.OTHER\n ]}\n />\n )}\n\n {selectedOption && (\n <FeedbackForm\n selectedOption={selectedOption}\n formStage={formStage}\n onSubmit={onSubmit}\n setSelectedOption={onFormSelect}\n closePopup={props.closePopup}\n onFilesAdded={addMixedMediaFiles}\n uploadingFiles={mixedMediaUploads}\n uploadedFiles={uploadedFiles}\n deleteFile={onDeleteFile}\n cancelUpload={(id: string) => mixedMediaUploadService.cancelUpload(id)}\n audiences={audiences.data}\n uploadError={uploadError}\n initialValues={formState}\n setFormState={setFormState}\n instanceRegion={currentUser.data?.instanceRegion}\n hasExchangeTvProduct={!!exchangeTvProduct}\n exchangeTvUrl={exchangeTvProduct?.url}\n skipBeforeRequesting={!!props.skipBeforeRequestingVideoStep}\n // hide back button if we directly land on a selected option\n hideCancelButton={!!props.selectedOption}\n />\n )}\n </Popup>\n );\n}\n"],"x_google_ignoreList":[22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,129,130,131,132,133,134],"mappings":"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"}