@clickview/curator 1.0.10-rc.1 → 1.0.10

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/curator/webpack/universalModuleDefinition","file://C:/ClickView Projects/@clickview/packages/curator/webpack/bootstrap","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/CompaniesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/components/edit-company/EditCompany.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/components/edit-company/EditCompanyForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/components/edit-company/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/flight-requests/CompanyRequests.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/utils/CompanyValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/companies/CompaniesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/companies/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/edit-company/EditCompanyView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/edit-company/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/new-company/NewCompanyView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/companies/views/new-company/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/DomainOptionsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/components/edit-domain-option-details/DefaultValueField.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/components/edit-domain-option-details/EditDomainOptionDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/components/edit-domain-option-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/data-requests/DomainOptionRequests.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/data-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/interfaces/data-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/interfaces/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/interfaces/models/DomainOption.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/interfaces/models/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/utils/validation/DomainOptionValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/delete-domain-option/DeleteDomainOptionView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/delete-domain-option/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/domain-options/DomainOptionsView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/domain-options/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/edit-domain-option/EditDomainOptionView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/edit-domain-option/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/new-domain-option/NewDomainOptionView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/domain-options/views/new-domain-option/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/PeopleApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/components/edit-person/EditPerson.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/components/edit-person/EditPersonForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/components/edit-person/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/flight-requests/PersonRequests.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/utils/PersonValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/edit-person/EditPersonView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/edit-person/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/new-person/NewPersonView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/new-person/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/people/PeopleView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/people/views/people/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/PlaylistsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/components/edit-playlist-nav/EditPlaylistNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/components/edit-playlist-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/components/edit-playlist/EditPlaylistDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/components/edit-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/context/PlaylistsAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/context/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/services/PlaylistDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/services/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/utils/PlaylistNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/utils/validation/PlaylistValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/delete-playlist/DeletePlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/delete-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist-audiences/EditPlaylistAudiencesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist-subjects/EditPlaylistSubjectsView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist-videos/EditPlaylistVideosView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist-videos/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist/EditPlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/edit-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/new-playlist/NewPlaylistView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/new-playlist/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/remove-video/RemoveVideoView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/playlists/views/remove-video/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/SeriesApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/components/edit-series-details/EditSeriesDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/components/edit-series-details/EditSeriesDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/components/edit-series-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/components/edit-series-nav/EditSeriesNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/components/edit-series-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/context/SeriesAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/context/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/services/SeriesDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/services/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/utils/SeriesNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/utils/validation/SeriesValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/edit-series-audiences/EditSeriesAudiencesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/edit-series-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/edit-series-subjects/EditSeriesSubjectsView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/edit-series-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/edit-series/EditSeriesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/edit-series/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/new-series/NewSeriesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/series/views/new-series/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/SubjectsApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/audience-levels/AudienceLevels.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/audience-levels/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/edit-audience-details/EditAudienceDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/edit-audience-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/edit-object-audiences/EditObjectAudiences.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/edit-object-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/select-audiences/SelectAudiences.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/audiences/select-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberItem.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/classification-member-list/ClassificationMemberList.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/classification-member-list/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/classification-member-list/usePinnedVideo.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/edit-classification-details/EditClassificationDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/edit-classification-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/edit-classification-nav/EditClassificationNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/edit-classification-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/select-classifications/SelectClassifications.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/classifications/select-classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/levels/edit-level-details/EditLevelDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/levels/edit-level-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/levels/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/levels/select-levels/SelectLevels.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/levels/select-levels/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/presentations/edit-presentation-details/EditPresentationDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/presentations/edit-presentation-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/presentations/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/presentations/presentation-select/PresentationSelect.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/presentations/presentation-select/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/add-subject-members/AddSubjectMembers.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/add-subject-members/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-object-subjects/EditObjectSubjects.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-object-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetails.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-subject-details/EditSubjectDetailsForm.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-subject-details/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-subject-nav/EditSubjectNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/edit-subject-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/select-subjects/SelectSubjects.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/select-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/subject-classifications/SubjectClassifications.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/subject-classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberItem.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberList.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/subject-member-list/SubjectMemberListHeader.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/subjects/subject-member-list/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/top-nav/TopNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/components/top-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/context/PresentationContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/context/SubjectsAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/context/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/enums/OwnerType.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/enums/SubjectMemberType.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/enums/SubjectNodeType.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/hooks/UseSetDefaultPresentation.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/hooks/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/services/SubjectDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/services/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/SubjectMemberHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/SubjectsNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/validation/AudienceValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/validation/ClassificationValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/validation/LevelValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/validation/PresentationValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/validation/SubjectValidation.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/utils/validation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/delete-audience/DeleteAudienceView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/delete-audience/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/edit-audience/EditAudienceView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/edit-audience/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/edit-audiences-list/EditAudiencesListView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/edit-audiences-list/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/new-audience/NewAudienceView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/audiences/new-audience/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavUtils.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/classification-nav/ClassificationNavView.tsx","webpack://@clickview/curator/./src/apps/subjects/views/classifications/classification-nav/classification-nav.scss?0e30","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/classification-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/delete-classification/DeleteClassificationView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/delete-classification/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/edit-classification-members/EditClassificationMembersView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/edit-classification-members/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/edit-classification/EditClassificationView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/edit-classification/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/new-classification/NewClassificationView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/new-classification/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/remove-classification-member/RemoveClassificationMemberView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/classifications/remove-classification-member/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/edit-level/EditLevelView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/edit-level/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/edit-levels-list/EditLevelsListView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/edit-levels-list/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/new-level/NewLevelView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/levels/new-level/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/edit-presentation/EditPresentationView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/edit-presentation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/edit-presentations-list/EditPresentationsListView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/edit-presentations-list/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/new-presentation/NewPresentationView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/new-presentation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/select-presentation/SelectPresentationView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/presentations/select-presentation/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersUtils.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/add-subject-members/AddSubjectMembersView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/add-subject-members/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/delete-subject/DeleteSubjectView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/delete-subject/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersUtils.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/edit-subject-members/EditSubjectMembersView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/edit-subject-members/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/edit-subject/EditSubjectView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/edit-subject/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/new-subject/NewSubjectView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/new-subject/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/remove-subject-member/RemoveSubjectMemberView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/remove-subject-member/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/subject-classifications/SubjectClassificationsView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/subject-classifications/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/subject-nav/SubjectNavView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/subjects/subject-nav/index.ts","webpack://@clickview/curator/./src/apps/subjects/views/subjects/subject-nav/subject-nav.scss?c038","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/top-nav/TopNavView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/subjects/views/top-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/VideosApplication.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/components/edit-video-nav/EditVideoNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/components/edit-video-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/context/VideosAppContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/context/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/services/VideoDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/services/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/utils/VideoNavHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/edit-video-aliases/EditVideoAliasesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/edit-video-aliases/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/edit-video-audiences/EditVideoAudiencesView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/edit-video-audiences/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/edit-video-subjects/EditVideoSubjectsView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/edit-video-subjects/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/apps/videos/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/aliases/AddAlias.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/aliases/AliasList.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/aliases/Aliases.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/aliases/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/back-button/BackButton.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/back-button/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/checkbox/Checkbox.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/checkbox/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/forms/file-select/FileSelect.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/forms/file-select/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/forms/image-select/ImageSelect.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/forms/image-select/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/forms/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/image-cropper/ImageCropper.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/image-cropper/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-collection/ObjectCollection.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-collection/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-header/ObjectHeader.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-header/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-list-nav/ObjectListNav.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-list-nav/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-list/ObjectList.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/object-list/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/rating-select/RatingSelect.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/rating-select/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tabs/Tabs.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tabs/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree-select/TreeSelect.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree-select/TreeSelectHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree-select/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree/Tree.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree/TreeNode.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree/TreeNodeLink.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/tree/index.ts","webpack://@clickview/curator/./src/shared/components/tree/tree.scss?3414","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/video-list/SortableVideoList.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/video-list/VideoItem.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/video-list/VideoList.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/components/video-list/index.ts","webpack://@clickview/curator/./src/shared/components/video-list/video-list.scss?b09f","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/CuratorActions.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/DataPrefixes.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/FileExtensions.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/Layouts.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/RadioChannels.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/Services.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/constants/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/context/ImageStorageContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/context/UserContext.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/context/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/enums/CuratorGroup.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/enums/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/flight-requests/AliasRequests.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/flight-requests/RatingRequests.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/flight-requests/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/layouts/curator-layout/CuratorLayout.hbs","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/layouts/curator-layout/CuratorLayoutView.tsx","webpack://@clickview/curator/./src/shared/layouts/curator-layout/curator-layout.scss?5cf2","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/layouts/curator-layout/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/layouts/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/layouts/primitives/LayoutComponent.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/layouts/primitives/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/services/CuratorAppNavService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/services/ImageUploadDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/services/LanguageDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/services/UserDataService.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/services/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/ImageSelectHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/NavHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/PermissionsHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/PropHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/StringHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/TreeHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/UserHelper.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/utils/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/views/image-upload/ImageUploadView.tsx","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/views/image-upload/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/src/shared/views/index.ts","file://C:/ClickView Projects/@clickview/packages/curator/external \"@clickview/common\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"@clickview/shared\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"Backbone\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"Cropper\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"Formik\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"Handlebars\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"React\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"ReactBootstrap\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"ReactRedux\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"SortableHOC\"","file://C:/ClickView Projects/@clickview/packages/curator/external \"Yup\""],"names":[],"mappings":"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","file":"curator-app.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@clickview/common\"), require(\"@clickview/shared\"), require(\"Cropper\"), require(\"Formik\"), require(\"Handlebars\"), require(\"React\"), require(\"ReactBootstrap\"), require(\"ReactRedux\"), require(\"Yup\"), require(\"SortableHOC\"), require(\"Backbone\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@clickview/common\", \"@clickview/shared\", \"Cropper\", \"Formik\", \"Handlebars\", \"React\", \"ReactBootstrap\", \"ReactRedux\", \"Yup\", \"SortableHOC\", \"Backbone\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@clickview/curator\"] = factory(require(\"@clickview/common\"), require(\"@clickview/shared\"), require(\"Cropper\"), require(\"Formik\"), require(\"Handlebars\"), require(\"React\"), require(\"ReactBootstrap\"), require(\"ReactRedux\"), require(\"Yup\"), require(\"SortableHOC\"), require(\"Backbone\"));\n\telse\n\t\troot[\"@clickview/curator\"] = factory(root[\"@clickview/common\"], root[\"@clickview/shared\"], root[\"Cropper\"], root[\"Formik\"], root[\"Handlebars\"], root[\"React\"], root[\"ReactBootstrap\"], root[\"ReactRedux\"], root[\"Yup\"], root[\"SortableHOC\"], root[\"Backbone\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__clickview_common__, __WEBPACK_EXTERNAL_MODULE__clickview_shared__, __WEBPACK_EXTERNAL_MODULE_cropperjs__, __WEBPACK_EXTERNAL_MODULE_formik__, __WEBPACK_EXTERNAL_MODULE_handlebars__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_bootstrap__, __WEBPACK_EXTERNAL_MODULE_react_redux__, __WEBPACK_EXTERNAL_MODULE_yup__, __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__, __WEBPACK_EXTERNAL_MODULE_backbone__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { LayoutRegions } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { CompaniesView, NewCompanyView, EditCompanyView } from 'apps/companies/views';\r\n\r\nclass CompaniesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.COMPANIES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/companies(/)': 'companies',\r\n 'manage/companies/new(/)': 'newCompany',\r\n 'manage/companies/:id(/)': 'editCompany',\r\n };\r\n }\r\n}\r\n\r\nexport class CompaniesApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Companies Application';\r\n }\r\n\r\n public static get router(): any {\r\n return CompaniesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.COMPANIES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public companies(params: ObjectHash): void {\r\n const { cursor } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <CompaniesView cursor={cursor} />);\r\n }\r\n\r\n public newCompany(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewCompanyView />);\r\n }\r\n\r\n public editCompany(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditCompanyView id={id} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Company, FormWrapper } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { CompanyValidationSchema } from 'apps/companies/utils';\r\n\r\nimport { EditCompanyForm } from './EditCompanyForm';\r\n\r\ninterface EditCompanyProps {\r\n saveCompany: (data: CreateOrUpdateCompanyRequest, onDone: () => void) => void;\r\n company?: Company;\r\n}\r\n\r\nexport function EditCompany(props: EditCompanyProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateCompanyRequest, Company>\r\n initialValues={props.company}\r\n validationSchema={CompanyValidationSchema}\r\n onSubmit={props.saveCompany}\r\n >\r\n <EditCompanyForm isNew={!(props.company && props.company.id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormField, FormButtons } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\ninterface EditCompanyFormProps {\r\n isNew: boolean;\r\n}\r\n\r\nexport function EditCompanyForm(props: EditCompanyFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateCompanyRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateCompanyRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this company'\r\n autoFocus\r\n />\r\n <FormButtons isNew={props.isNew} />\r\n </Form>\r\n );\r\n}","export * from './EditCompany';","export * from './edit-company';","import { Flight, HttpVerbs } from '@clickview/common';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\nconst endpoints = {\r\n getCompanies: (cursor?: string) => {\r\n const baseUrl = `/api/master/v2/companies`;\r\n\r\n if (!cursor)\r\n return baseUrl;\r\n\r\n return `${baseUrl}?cursor=${cursor}`;\r\n },\r\n\r\n getCompany: (id: string) => `/api/master/v2/objects/${id}`,\r\n\r\n createCompany: () => `/api/master/v2/companies`,\r\n\r\n updateCompany: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n COMPANIES: 'companies',\r\n COMPANY: 'company',\r\n UPDATE_COMPANY: 'update:company'\r\n};\r\n\r\nexport const CompanyRequests = {\r\n getCompanies(cursor?: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.COMPANIES}${cursor ? `:${cursor}` : ''}`,\r\n url: endpoints.getCompanies(cursor),\r\n };\r\n },\r\n\r\n getCompany(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.COMPANY}:${id}`,\r\n url: endpoints.getCompany(id),\r\n };\r\n },\r\n\r\n createCompany(\r\n data: CreateOrUpdateCompanyRequest, success?: (data: any) => void, error?: (data: any) => void\r\n ): Flight.Request {\r\n return {\r\n key: DataPrefixes.COMPANY,\r\n url: endpoints.createCompany(),\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.COMPANIES],\r\n };\r\n },\r\n\r\n updateCompany(id: string, data: CreateOrUpdateCompanyRequest, callback?: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.UPDATE_COMPANY}:${id}`,\r\n url: endpoints.updateCompany(id),\r\n data,\r\n type: HttpVerbs.PUT,\r\n always: callback\r\n };\r\n }\r\n};","export * from './CompanyRequests';","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\n\r\nexport const CompanyValidationSchema = Yup.object().shape<CreateOrUpdateCompanyRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","export * from './CompanyValidation';","import * as React from 'react';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { CompanyCollection, Company, SearchBar } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\n\r\nconst application = AppChannels.COMPANIES;\r\n\r\nconst SEARCH_URL = '/api/domain/v1/search/companies/instant/raw';\r\n\r\nconst getCompanyAppLink = (company: Company) =>\r\n ({ application, action: Actions.Companies.EDIT_COMPANY, args: [company.id]});\r\n\r\nconst goToCompany = (person: Company) => Core.AppLinkHelper.trigger(getCompanyAppLink(person));\r\n\r\ninterface CompaniesViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function CompaniesView(props: CompaniesViewProps): JSX.Element {\r\n const companiesResponse = Flight.useBasicFetch<CompanyCollection>(CompanyRequests.getCompanies(props.cursor));\r\n\r\n return (\r\n <>\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n placeholder='Search for a company'\r\n onSuggestionSelected={goToCompany}\r\n getRemoteUrl={(q: string) => `${SEARCH_URL}?q=${q}`}\r\n activationLength={2}\r\n />\r\n </div>\r\n <ObjectCollection\r\n collection={companiesResponse && companiesResponse.data}\r\n collectionAppLink={{ application, action: Actions.Companies.COMPANIES }}\r\n newObjectAppLink={{ application, action: Actions.Companies.NEW_COMPANY }}\r\n getObjectAppLink={getCompanyAppLink}\r\n objectName={'Company'}\r\n />\r\n </>\r\n );\r\n}","export * from './CompaniesView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Company } from '@clickview/shared';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { EditCompany } from 'apps/companies/components';\r\n\r\ninterface EditCompanyViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditCompanyView(props: EditCompanyViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const companyResponse = Flight.useBasicFetch<Company>(CompanyRequests.getCompany(props.id));\r\n\r\n const saveCompany = (data: CreateOrUpdateCompanyRequest, onDone: () => void): void =>\r\n Flight.fetch(dispatch, CompanyRequests.updateCompany(props.id, data, onDone));\r\n\r\n return (\r\n <>\r\n {!!companyResponse.data &&\r\n <EditCompany company={companyResponse.data} saveCompany={saveCompany} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditCompanyView';","export * from './edit-company';\r\nexport * from './new-company';\r\nexport * from './companies';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { Company } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CompanyRequests } from 'apps/companies/flight-requests';\r\nimport { CreateOrUpdateCompanyRequest } from 'apps/companies/interfaces';\r\nimport { EditCompany } from 'apps/companies/components';\r\n\r\nexport function NewCompanyView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createCompany = (data: CreateOrUpdateCompanyRequest, onDone: () => void): void => {\r\n const onSuccess = (newCompany: Company) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PEOPLE,\r\n action: Actions.Companies.EDIT_COMPANY,\r\n args: [newCompany.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, CompanyRequests.createCompany(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <EditCompany saveCompany={createCompany} />\r\n );\r\n}","export * from './NewCompanyView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core, BaseAlert, CommonChannels } from '@clickview/common';\r\nimport { LayoutRegions, AlertList, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { DomainOptionsView, NewDomainOptionView, EditDomainOptionView, DeleteDomainOptionView } from 'apps/domain-options/views';\r\n\r\nclass DomainOptionsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.DOMAIN_OPTIONS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'developer/options(/)': 'domainOptions',\r\n 'developer/options/new(/)': 'newDomainOption',\r\n 'developer/options/:id(/)': 'editDomainOption'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteDomainOption'\r\n ];\r\n }\r\n}\r\n\r\nexport class DomainOptionsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'Domain Options Application';\r\n }\r\n\r\n public static get router(): any {\r\n return DomainOptionsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.DOMAIN_OPTIONS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public domainOptions(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <DomainOptionsView />);\r\n }\r\n\r\n public newDomainOption(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewDomainOptionView />);\r\n }\r\n\r\n public editDomainOption(optionId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditDomainOptionView optionId={optionId} />);\r\n }\r\n\r\n public deleteDomainOption(optionId: string): void {\r\n this.layout.showChildView(LayoutRegions.POPUP,\r\n <DeleteDomainOptionView optionId={optionId} {...this.getPopupProps()} />\r\n );\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { FieldAttributes } from 'formik';\r\nimport { FormField, FormFieldProps } from '@clickview/shared';\r\n\r\nimport { DomainOptionType, DomainOption } from 'apps/domain-options/interfaces';\r\n\r\ninterface DefaultValueFieldProps {\r\n type: DomainOptionType;\r\n defaultValue: string | number;\r\n}\r\n\r\nexport function DefaultValueField({ type, defaultValue }: DefaultValueFieldProps): JSX.Element {\r\n if (!type)\r\n return <></>;\r\n\r\n const formFieldProps: FieldAttributes<FormFieldProps<DomainOption>> = {\r\n label: 'Default Value',\r\n name: 'defaultValue',\r\n id: 'defaultValue',\r\n value: defaultValue\r\n };\r\n\r\n if (type === DomainOptionType.Boolean) {\r\n return (\r\n <FormField<DomainOption>\r\n as='select'\r\n {...formFieldProps}\r\n >\r\n <option value='true'>True</option>\r\n <option value='false'>False</option>\r\n </FormField>\r\n );\r\n }\r\n\r\n if (type === DomainOptionType.Long || type === DomainOptionType.StaffRequest)\r\n return <FormField<DomainOption> as='input' type='number' {...formFieldProps} />;\r\n\r\n if (type === DomainOptionType.String)\r\n return <FormField<DomainOption> as='input' {...formFieldProps} />;\r\n}\r\n","import * as React from 'react';\r\nimport { FormWrapper } from '@clickview/shared';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionValidationSchema } from 'apps/domain-options/utils';\r\nimport { EditDomainOptionDetailsForm } from './EditDomainOptionDetailsForm';\r\n\r\ninterface EditDomainOptionDetailsProps {\r\n domainOption?: DomainOption;\r\n saveDomainOption: (data: DomainOption, onDone: () => void) => void;\r\n}\r\n\r\nexport function EditDomainOptionDetails(props: EditDomainOptionDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<DomainOption>\r\n initialValues={props.domainOption}\r\n validationSchema={DomainOptionValidationSchema}\r\n onSubmit={props.saveDomainOption}\r\n >\r\n <EditDomainOptionDetailsForm id={props.domainOption && props.domainOption.id} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { ObjectHelper } from '@clickview/common';\r\nimport { FormField, SpinnerButton, MasterType, AppLink, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption, DomainOptionType, DomainOptionKind } from 'apps/domain-options/interfaces';\r\n\r\nimport { DefaultValueField } from './DefaultValueField';\r\n\r\nconst validEntities = [ MasterType.Customer, MasterType.User ];\r\n\r\ninterface EditDomainOptionDetailsFormProps {\r\n id?: string;\r\n}\r\n\r\nexport function EditDomainOptionDetailsForm(props: EditDomainOptionDetailsFormProps): React.ReactElement {\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const formikProps = useFormikContext<DomainOption>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<DomainOption>\r\n label='Name (snake_case)'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this domain option'\r\n autoFocus\r\n />\r\n\r\n <FormField<DomainOption>\r\n label='Display Name'\r\n type='text'\r\n name='displayName'\r\n id='displayName'\r\n value={formikProps.values.displayName}\r\n placeholder='Enter a display name for this domain option'\r\n />\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Kind'\r\n name='kind'\r\n id='kind'\r\n value={formikProps.values.kind}\r\n >\r\n {ObjectHelper.getEnumKeys(DomainOptionKind).map((key: DomainOptionKind) =>\r\n <option key={key} value={(DomainOptionKind as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Entity'\r\n name='entityType'\r\n id='entityType'\r\n value={formikProps.values.entityType}\r\n >\r\n {ObjectHelper.getEnumKeys(MasterType)\r\n .filter((key: MasterType) => validEntities.includes((MasterType as any)[key]))\r\n .map((key: MasterType) =>\r\n <option key={key} value={(MasterType as any)[key]}>{key}</option>\r\n )\r\n }\r\n </FormField>\r\n\r\n <FormField<DomainOption>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n {ObjectHelper.getEnumKeys(DomainOptionType).map((key: DomainOptionType) =>\r\n <option key={key} value={(DomainOptionType as any)[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n\r\n <DefaultValueField type={formikProps.values.type} defaultValue={formikProps.values.defaultValue} />\r\n\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.DELETE_DOMAIN_OPTION,\r\n args: [props.id]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditDomainOptionDetails';","export * from './edit-domain-option-details';","import { Flight, HttpVerbs } from '@clickview/common';\r\nimport { DomainOption, DomainOptionType } from 'apps/domain-options/interfaces';\r\n\r\nconst normalizeOptions = {\r\n namespace: 'domain_options'\r\n};\r\n\r\nconst endpoints = {\r\n getAll: () => `/api/domain/v3/settings/types`,\r\n getOne: (id: string) => `/api/domain/v3/settings/types/${id}`,\r\n createOne: () => `/api/domain/v3/settings/types`,\r\n updateOne: (id: string) => `/api/domain/v3/settings/types/${id}`,\r\n deleteOne: (id: string) => `/api/domain/v3/settings/types/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n DOMAIN_OPTIONS: 'domain:options',\r\n DOMAIN_OPTION: 'domain:option',\r\n UPDATE_DOMAIN_OPTION: 'update:domain:option',\r\n DELETE_DOMAIN_OPTION: 'delete:domain:option'\r\n};\r\n\r\nexport const DomainOptionRequests = {\r\n getAllOptions(): Flight.Request {\r\n return {\r\n key: DataPrefixes.DOMAIN_OPTIONS,\r\n url: endpoints.getAll(),\r\n normalizeOptions\r\n };\r\n },\r\n getOption(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.DOMAIN_OPTION}:${id}`,\r\n url: endpoints.getOne(id),\r\n normalizeOptions\r\n };\r\n },\r\n\r\n createOption(option: DomainOption, success: (data: any) => void, error: (data: any) => void): Flight.Request {\r\n /**\r\n * DefaultValue for String option types must always be wrapped with quotation marks.\r\n */\r\n if (option.type === DomainOptionType.String)\r\n option = quotifyDefaultValue(option);\r\n\r\n return {\r\n key: DataPrefixes.DOMAIN_OPTION,\r\n url: endpoints.createOne(),\r\n data: option,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.DOMAIN_OPTIONS],\r\n normalizeOptions\r\n };\r\n },\r\n\r\n updateOption(option: DomainOption, callback: () => void): Flight.Request {\r\n /**\r\n * DefaultValue for String option types must always be wrapped with quotation marks.\r\n */\r\n if (option.type === DomainOptionType.String)\r\n option = quotifyDefaultValue(option);\r\n\r\n return {\r\n key: `${DataPrefixes.UPDATE_DOMAIN_OPTION}:${option.id}`,\r\n url: endpoints.updateOne(option.id),\r\n data: option,\r\n type: HttpVerbs.PUT,\r\n always: callback,\r\n formatData: () => option,\r\n normalizeOptions\r\n };\r\n },\r\n deleteOption(id: string, success: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.DELETE_DOMAIN_OPTION}:${id}`,\r\n url: endpoints.deleteOne(id),\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: [DataPrefixes.DOMAIN_OPTIONS],\r\n normalizeOptions,\r\n success\r\n };\r\n },\r\n};\r\n\r\nfunction quotifyDefaultValue(option: DomainOption): DomainOption {\r\n const { defaultValue } = option;\r\n let defaultValueString = defaultValue as string;\r\n\r\n if (defaultValueString === '\"') {\r\n return {\r\n ...option,\r\n defaultValue: `\"${defaultValueString}\"`\r\n };\r\n }\r\n\r\n const firstChar = defaultValueString.charAt(0);\r\n const lastChar = defaultValueString.charAt(defaultValueString.length - 1);\r\n\r\n if (firstChar !== '\"')\r\n defaultValueString = `\"${defaultValueString}`;\r\n\r\n if (lastChar !== '\"')\r\n defaultValueString = `${defaultValueString}\"`;\r\n\r\n return {\r\n ...option,\r\n defaultValue: defaultValueString\r\n };\r\n}","export * from './DomainOptionRequests';","export * from './CreateOrUpdateDomainOptionRequest';","export * from './data-requests';\r\nexport * from './models';","import { MasterType } from '@clickview/shared';\r\n\r\n/**\r\n * In the database the types are saved as C# types written as strings. Every field here\r\n * has been copied from what already exists in the database.\r\n */\r\nexport enum DomainOptionType {\r\n Boolean = 'System.Boolean',\r\n String = 'System.String',\r\n StaffRequest = 'ClickView.DomainApi.Models.Options.Enums.StaffRequestOption, ClickView.DomainApi.Models, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null',\r\n Long = 'System.Int64'\r\n}\r\n\r\nexport enum DomainOptionKind {\r\n Permanent = 0,\r\n Temporary = 1\r\n}\r\n\r\nexport interface DomainOption {\r\n id: string;\r\n name: string;\r\n displayName: string;\r\n type: DomainOptionType;\r\n entityType: MasterType;\r\n kind: DomainOptionKind;\r\n defaultValue: string | number;\r\n}","export * from './DomainOption';","export * from './validation';","import * as Yup from 'yup';\r\nimport { MasterType } from '@clickview/shared';\r\n\r\nimport { DomainOption, DomainOptionType, DomainOptionKind } from 'apps/domain-options/interfaces';\r\n\r\nexport const DomainOptionValidationSchema = Yup.object().shape<DomainOption>({\r\n id: Yup.string(),\r\n\r\n name: Yup.string()\r\n .trim()\r\n .max(64, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n displayName: Yup.string()\r\n .trim()\r\n .max(255, 'Display name is too long')\r\n .required('Display name is required')\r\n .default(''),\r\n\r\n type: Yup.mixed<DomainOptionType>()\r\n .required('Type is required')\r\n .default(DomainOptionType.Boolean),\r\n\r\n entityType: Yup.mixed<MasterType>()\r\n .required('Entity type is required')\r\n .default(MasterType.Customer),\r\n\r\n kind: Yup.mixed<DomainOptionKind>()\r\n .required('Kind is required')\r\n .default(DomainOptionKind.Temporary),\r\n\r\n defaultValue: Yup.mixed<string | number>()\r\n .required('Default value is required')\r\n .default('false')\r\n\r\n}).noUnknown();","export * from './DomainOptionValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Core, Flight } from '@clickview/common';\r\nimport { Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\n\r\ninterface DeleteDomainOptionViewProps {\r\n optionId: string;\r\n}\r\n\r\nexport function DeleteDomainOptionView(props: DeleteDomainOptionViewProps & PopupViewProps): React.ReactElement {\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const domainOption = Flight.useBasicFetch<DomainOption>(DomainOptionRequests.getOption(props.optionId));\r\n const dispatch = useDispatch();\r\n\r\n const onDeleteSuccess = () => {\r\n props.closePopup();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.DOMAIN_OPTIONS\r\n });\r\n };\r\n\r\n const deleteDomainOption = () => {\r\n setShowButtonSpinner(true);\r\n\r\n Flight.fetch(dispatch, DomainOptionRequests.deleteOption(props.optionId, onDeleteSuccess));\r\n };\r\n\r\n return (\r\n <Popup title='Delete Domain Option' closePopup={props.closePopup} showLoadingSpinner={!domainOption.data}>\r\n {domainOption.data &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{domainOption.data.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={\r\n [\r\n {\r\n variant: 'link',\r\n onClick: props.closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteDomainOption,\r\n buttonText: 'Yes, delete this domain option',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ]\r\n }/>\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteDomainOptionView';","import * as React from 'react';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { AppLink, cvSvgLibrary, SvgContainer, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\n\r\nconst getOptionAppLink = (option: DomainOption) => ({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.EDIT_DOMAIN_OPTION,\r\n args: [option.id]\r\n});\r\n\r\nconst newOptionAppLink = {\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.NEW_DOMAIN_OPTION\r\n};\r\n\r\nexport function DomainOptionsView(): JSX.Element {\r\n const domainOptions = Flight.useBasicFetch<DomainOption[]>(DomainOptionRequests.getAllOptions());\r\n\r\n if (!domainOptions.data)\r\n return <></>;\r\n\r\n const optionNames = domainOptions.data.map(option => {\r\n if (option.displayName)\r\n option.name = option.displayName;\r\n\r\n return option;\r\n });\r\n\r\n return (\r\n <>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a domain option type to edit:</h5>\r\n <AppLink appLink={newOptionAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Domain Option</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={optionNames} getAppLink={getOptionAppLink} />\r\n </>\r\n );\r\n}","export * from './DomainOptionsView';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from '@clickview/common';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { EditDomainOptionDetails } from 'apps/domain-options/components';\r\n\r\ninterface EditDomainOptionViewProps {\r\n optionId: string;\r\n}\r\n\r\nexport function EditDomainOptionView({ optionId }: EditDomainOptionViewProps): JSX.Element {\r\n const domainOption = Flight.useBasicFetch<DomainOption>(DomainOptionRequests.getOption(optionId));\r\n\r\n const dispatch = useDispatch();\r\n const saveDomainOption = (data: DomainOption, onDone: () => void): void =>\r\n Flight.fetch(dispatch, DomainOptionRequests.updateOption(data, onDone));\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Domain Option</h4>\r\n {domainOption.data &&\r\n <EditDomainOptionDetails domainOption={domainOption.data} saveDomainOption={saveDomainOption} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditDomainOptionView';","export * from './delete-domain-option';\r\nexport * from './domain-options';\r\nexport * from './new-domain-option';\r\nexport * from './edit-domain-option';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Flight, Core } from '@clickview/common';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { DomainOption } from 'apps/domain-options/interfaces';\r\nimport { DomainOptionRequests } from 'apps/domain-options/data-requests';\r\nimport { EditDomainOptionDetails } from 'apps/domain-options/components';\r\n\r\nexport function NewDomainOptionView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createDomainOption = (data: DomainOption, onDone: () => void): void => {\r\n const onSuccess = (newDomainOption: DomainOption) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.DOMAIN_OPTIONS,\r\n action: Actions.DomainOptions.EDIT_DOMAIN_OPTION,\r\n args: [newDomainOption.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, DomainOptionRequests.createOption(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Domain Option</h4>\r\n <EditDomainOptionDetails saveDomainOption={createDomainOption} />\r\n </>\r\n );\r\n}","export * from './NewDomainOptionView';","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { LayoutRegions } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\n\r\nimport { PeopleView, NewPersonView, EditPersonView } from 'apps/people/views';\r\n\r\nclass PeopleAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.PEOPLE;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/people(/)': 'people',\r\n 'manage/people/new(/)': 'newPerson',\r\n 'manage/people/:id(/)': 'editPerson',\r\n };\r\n }\r\n}\r\n\r\nexport class PeopleApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public get name(): string {\r\n return 'People Application';\r\n }\r\n\r\n public static get router(): any {\r\n return PeopleAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PEOPLE;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return { name: Layouts.CURATOR_LAYOUT };\r\n }\r\n\r\n public people(params: ObjectHash): void {\r\n const { cursor } = params;\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <PeopleView cursor={cursor} />);\r\n }\r\n\r\n public newPerson(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPersonView />);\r\n }\r\n\r\n public editPerson(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPersonView id={id} />);\r\n }\r\n}","import * as React from 'react';\r\nimport { Person, FormWrapper } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { PersonValidationSchema } from 'apps/people/utils';\r\n\r\nimport { EditPersonForm } from './EditPersonForm';\r\n\r\ninterface EditPersonProps {\r\n savePerson: (data: CreateOrUpdatePersonRequest, onDone: () => void) => void;\r\n person?: Person;\r\n}\r\n\r\nexport function EditPerson(props: EditPersonProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdatePersonRequest, Person>\r\n initialValues={props.person}\r\n validationSchema={PersonValidationSchema}\r\n onSubmit={props.savePerson}\r\n >\r\n <EditPersonForm isNew={!(props.person && props.person.id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport { FormField, FormButtons } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\ninterface EditPersonFormProps {\r\n isNew: boolean;\r\n}\r\n\r\nexport function EditPersonForm(props: EditPersonFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdatePersonRequest>();\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePersonRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this person'\r\n autoFocus\r\n />\r\n <FormButtons isNew={props.isNew} />\r\n </Form>\r\n );\r\n}","export * from './EditPerson';","export * from './edit-person';","import { Flight, HttpVerbs } from '@clickview/common';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\nconst endpoints = {\r\n getPeople: (cursor?: string) => {\r\n const baseUrl = `/api/master/v2/people`;\r\n\r\n if (!cursor)\r\n return baseUrl;\r\n\r\n return `${baseUrl}?cursor=${cursor}`;\r\n },\r\n\r\n getPerson: (id: string) => `/api/master/v2/objects/${id}`,\r\n\r\n createPerson: () => `/api/master/v2/people`,\r\n\r\n updatePerson: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nconst DataPrefixes = {\r\n PEOPLE: 'people',\r\n PERSON: 'person',\r\n UPDATE_PERSON: 'update:person'\r\n};\r\n\r\nexport const PersonRequests = {\r\n getPeople(cursor?: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.PEOPLE}${cursor ? `:${cursor}` : ''}`,\r\n url: endpoints.getPeople(cursor),\r\n };\r\n },\r\n\r\n getPerson(id: string): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.PERSON}:${id}`,\r\n url: endpoints.getPerson(id),\r\n };\r\n },\r\n\r\n createPerson(\r\n data: CreateOrUpdatePersonRequest, success?: (data: any) => void, error?: (data: any) => void\r\n ): Flight.Request {\r\n return {\r\n key: DataPrefixes.PERSON,\r\n url: endpoints.createPerson(),\r\n data,\r\n type: HttpVerbs.POST,\r\n success,\r\n error,\r\n invalidationKeys: [DataPrefixes.PEOPLE],\r\n };\r\n },\r\n\r\n updatePerson(id: string, data: CreateOrUpdatePersonRequest, callback?: () => void): Flight.Request {\r\n return {\r\n key: `${DataPrefixes.UPDATE_PERSON}:${id}`,\r\n url: endpoints.updatePerson(id),\r\n data,\r\n type: HttpVerbs.PUT,\r\n always: callback\r\n };\r\n }\r\n};","export * from './PersonRequests';","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\n\r\nexport const PersonValidationSchema = Yup.object().shape<CreateOrUpdatePersonRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","export * from './PersonValidation';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { Person } from '@clickview/shared';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { EditPerson } from 'apps/people/components';\r\n\r\ninterface EditPersonViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditPersonView(props: EditPersonViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const personResponse = Flight.useBasicFetch<Person>(PersonRequests.getPerson(props.id));\r\n\r\n const savePerson = (data: CreateOrUpdatePersonRequest, onDone: () => void): void =>\r\n Flight.fetch(dispatch, PersonRequests.updatePerson(props.id, data, onDone));\r\n\r\n return (\r\n <>\r\n {!!personResponse.data &&\r\n <EditPerson person={personResponse.data} savePerson={savePerson} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPersonView';","export * from './edit-person';\r\nexport * from './new-person';\r\nexport * from './people';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { Person } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\nimport { CreateOrUpdatePersonRequest } from 'apps/people/interfaces';\r\nimport { EditPerson } from 'apps/people/components';\r\n\r\nexport function NewPersonView(): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const createPerson = (data: CreateOrUpdatePersonRequest, onDone: () => void): void => {\r\n const onSuccess = (newPerson: Person) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PEOPLE,\r\n action: Actions.People.EDIT_PERSON,\r\n args: [newPerson.id]\r\n });\r\n };\r\n\r\n Flight.fetch(dispatch, PersonRequests.createPerson(data, onSuccess, onDone));\r\n };\r\n\r\n return (\r\n <EditPerson savePerson={createPerson} />\r\n );\r\n}","export * from './NewPersonView';","import * as React from 'react';\r\n\r\nimport { Flight, Core } from '@clickview/common';\r\nimport { PersonCollection, Person, SearchBar } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectCollection } from 'shared/components';\r\n\r\nimport { PersonRequests } from 'apps/people/flight-requests';\r\n\r\nconst application = AppChannels.PEOPLE;\r\n\r\nconst SEARCH_URL = '/api/domain/v1/search/people/instant/raw';\r\n\r\nconst getPersonAppLink = (person: Person) => ({ application, action: Actions.People.EDIT_PERSON, args: [person.id]});\r\n\r\nconst goToPerson = (person: Person) => Core.AppLinkHelper.trigger(getPersonAppLink(person));\r\n\r\ninterface PeopleViewProps {\r\n cursor?: string;\r\n}\r\n\r\nexport function PeopleView(props: PeopleViewProps): JSX.Element {\r\n const peopleResponse = Flight.useBasicFetch<PersonCollection>(PersonRequests.getPeople(props.cursor));\r\n\r\n return (\r\n <>\r\n <div className='pb-3 w-50'>\r\n <SearchBar\r\n placeholder='Search for a person'\r\n onSuggestionSelected={goToPerson}\r\n getRemoteUrl={(q: string) => `${SEARCH_URL}?q=${q}`}\r\n activationLength={2}\r\n />\r\n </div>\r\n <ObjectCollection\r\n collection={peopleResponse && peopleResponse.data}\r\n collectionAppLink={{ application, action: Actions.People.PEOPLE }}\r\n newObjectAppLink={{ application, action: Actions.People.NEW_PERSON }}\r\n getObjectAppLink={getPersonAppLink}\r\n objectName={'Person'}\r\n />\r\n </>\r\n );\r\n}","export * from './PeopleView';","import * as React from 'react';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { Core, BaseAlert, CommonChannels, ObjectHelper, InstanceManager } from '@clickview/common';\r\nimport { AlertList, ImageType, LayoutRegions, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport { PlaylistsAppContextProvider } from 'apps/playlists/context';\r\nimport {\r\n NewPlaylistView,\r\n DeletePlaylistView,\r\n RemoveVideoView,\r\n EditPlaylistView,\r\n EditPlaylistVideosView,\r\n EditPlaylistSubjectsView,\r\n EditPlaylistAudiencesView\r\n} from 'apps/playlists/views';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { RemoveSubjectMemberView } from 'apps/subjects/views';\r\n\r\nclass PlaylistsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/playlists(/)': 'index',\r\n 'manage/playlists/new(/)': 'newPlaylist',\r\n 'manage/playlists/:id(/)': 'editPlaylist',\r\n 'manage/playlists/:id/videos(/)': 'editPlaylistVideos',\r\n 'manage/playlists/:id/subjects(/)': 'editPlaylistSubjects',\r\n 'manage/playlists/:id/audiences(/)': 'editPlaylistAudiences'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deletePlaylist',\r\n 'removeVideo',\r\n 'uploadImage',\r\n 'removeFromSubject'\r\n ];\r\n }\r\n}\r\n\r\nexport class PlaylistsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Playlists Application';\r\n }\r\n\r\n public static get router(): any {\r\n return PlaylistsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.PLAYLISTS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: PlaylistsAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public index(): void {\r\n this.navigate('/dashboards/playlists');\r\n }\r\n\r\n public newPlaylist(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPlaylistView />);\r\n }\r\n\r\n public editPlaylist(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPlaylistView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistVideos(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistVideosView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistSubjects(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistSubjectsView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public editPlaylistAudiences(playlistId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditPlaylistAudiencesView key={playlistId} playlistId={playlistId} />);\r\n }\r\n\r\n public deletePlaylist(playlistId: string): void {\r\n const props = {\r\n playlistId,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeletePlaylistView {...props} />);\r\n }\r\n\r\n public removeVideo(playlistId: string, videoId: string): void {\r\n const props = {\r\n playlistId,\r\n videoId,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveVideoView {...props} />);\r\n }\r\n\r\n public removeFromSubject(playlistId: string, subjectId: string): void {\r\n const props = {\r\n subjectId,\r\n memberId: playlistId,\r\n memberType: SubjectMemberType.Playlists,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveSubjectMemberView {...props} />);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n\r\n private navigate(url: string): void {\r\n Core.LocationUtils.PageLoad(url);\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { UserContext } from 'shared/context';\r\n\r\nimport { PlaylistNavHelper } from 'apps/playlists/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditPlaylistNavProps {\r\n playlistId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditPlaylistNav({ playlistId, activeAction }: EditPlaylistNavProps): React.ReactElement {\r\n const user = React.useContext(UserContext);\r\n\r\n return (\r\n <div className='py-2'>\r\n {!!user &&\r\n <Tabs\r\n tabs={PlaylistNavHelper.getEditPlaylistTabs(user, playlistId)}\r\n isItemActive={isItemActive(activeAction)}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditPlaylistNav';","import * as React from 'react';\r\nimport { Playlist, FormWrapper } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\nimport { PlaylistValidationSchema } from 'apps/playlists/utils';\r\n\r\nimport { EditPlaylistDetailsForm } from './EditPlaylistDetailsForm';\r\n\r\nconst getActions = (playlistId: string) => ([{\r\n label: 'Delete playlist',\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.DELETE_PLAYLIST,\r\n args: [playlistId]\r\n },\r\n className: 'text-danger'\r\n}]);\r\n\r\ninterface EditPlaylistDetailsProps {\r\n savePlaylist: (data: CreateOrUpdatePlaylistRequest, onDone: () => void) => void;\r\n playlist?: Playlist;\r\n}\r\n\r\nexport function EditPlaylistDetails(props: EditPlaylistDetailsProps): React.ReactElement {\r\n const id = props.playlist && props.playlist.id;\r\n\r\n return (\r\n <FormWrapper<CreateOrUpdatePlaylistRequest>\r\n initialValues={props.playlist}\r\n validationSchema={PlaylistValidationSchema}\r\n onSubmit={props.savePlaylist}\r\n >\r\n <EditPlaylistDetailsForm id={id} actions={!!id && getActions(id)} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport {\r\n FormField,\r\n SpinnerButton,\r\n ImageType,\r\n Cover,\r\n Banner,\r\n Actions,\r\n ActionOptions,\r\n useCanSubmitForm\r\n} from '@clickview/shared';\r\n\r\nimport { ImageSelect } from 'shared/components';\r\nimport { AppChannels, Actions as AppActions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\ninterface EditPlaylistDetailsFormProps {\r\n id?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditPlaylistDetailsForm(props: EditPlaylistDetailsFormProps): React.ReactElement {\r\n const formikProps = useFormikContext<CreateOrUpdatePlaylistRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePlaylistRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this playlist'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdatePlaylistRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={formikProps.values.description}\r\n placeholder='Describe this playlist here'\r\n />\r\n <ImageSelect\r\n imageType={ImageType.Covers}\r\n currentImage={formikProps.values.cover}\r\n setNewImage={(image: Cover) => formikProps.setFieldValue('cover', image)}\r\n application={AppChannels.PLAYLISTS}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect\r\n imageType={ImageType.Banners}\r\n currentImage={formikProps.values.banner}\r\n setNewImage={(image: Banner) => formikProps.setFieldValue('banner', image)}\r\n application={AppChannels.PLAYLISTS}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {!props.id ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditPlaylistDetails';","export * from './edit-playlist';\r\nexport * from './edit-playlist-nav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nexport const PlaylistsAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","export * from './PlaylistsAppContext';","import { BaseDataService, DataServiceError, FetchOptions } from '@clickview/common';\r\nimport { Playlist, VideoCollection, CacheDurations, PresentationAudienceCollection, ReorderRequest } from '@clickview/shared';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils';\r\n\r\nconst endpoints = {\r\n getPlaylist: (playlistId: string) => `/api/master/v2/objects/${playlistId}?query=cover,banner`,\r\n\r\n getPlaylistsById: (ids: string[]) => `/api/master/v2/objects?${ids.map(id => `id=${id}`).join('&')}`,\r\n\r\n createPlaylist: (userId: string) => `/api/master/v2/objects/${userId}/playlists`,\r\n\r\n updatePlaylist: (playlistId: string) => `/api/master/v2/objects/${playlistId}`,\r\n\r\n deletePlaylist: (playlistId: string) => `/api/master/v1/playlists/${playlistId}`,\r\n\r\n getPlaylistMembers: (playlistId: string, memberName: string, query?: string) => {\r\n let url = `/api/master/v2/objects/${playlistId}/${memberName}`;\r\n\r\n if (query)\r\n url += `?query=${query}`;\r\n\r\n return url;\r\n },\r\n\r\n reorderVideos: (playlistId: string) => `/api/master/v1/objects/${playlistId}/videos/reorder`,\r\n\r\n removeVideoFromPlaylist: (playlistId: string, videoId: string) =>\r\n `/api/master/v1/playlists/${playlistId}/dissociate/${videoId}`,\r\n};\r\n\r\nenum PlaylistMemberType {\r\n Videos = 'videos'\r\n}\r\n\r\nexport class PlaylistDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.PLAYLIST;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.PLAYLIST;\r\n }\r\n\r\n public getPlaylist(playlistId: string, callback?: (data: Playlist) => void, errorCallback?: () => void): Playlist {\r\n return this.get<Playlist>({\r\n resource: endpoints.getPlaylist(playlistId),\r\n eventPrefix: `${DataPrefixes.PLAYLIST}:${playlistId}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getPlaylistsById(\r\n ids: string[], callback?: (data: Playlist[]) => void, errorCallback?: () => void\r\n ): Playlist[] {\r\n return this.get<Playlist[]>({\r\n resource: endpoints.getPlaylistsById(ids),\r\n eventPrefix: `${DataPrefixes.PLAYLISTS}:${ids.join(',')}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createPlaylist(\r\n data: CreateOrUpdatePlaylistRequest, userId: string, callback?: (data: Playlist) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<Playlist>({\r\n resource: endpoints.createPlaylist(userId),\r\n data: { ...data, permissions: PermissionsHelper.getProtectedReadPermission() },\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.PLAYLIST,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created playlist.'),\r\n errorHandler: this.alertService.error('Failed to create playlist.')\r\n });\r\n }\r\n\r\n public updatePlaylist(\r\n id: string, data: CreateOrUpdatePlaylistRequest, callback?: (data: Playlist) => void, errorCallback?: () => void\r\n ): void {\r\n return this.update<Playlist>({\r\n resource: endpoints.updatePlaylist(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_PLAYLIST}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.PLAYLIST}:${id}`, DataPrefixes.PLAYLISTS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated playlist'),\r\n errorHandler: this.alertService.error('Failed to update playlist')\r\n });\r\n }\r\n\r\n public deletePlaylist(playlistId: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deletePlaylist(playlistId),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_PLAYLIST,\r\n invalidationKeys: [`${DataPrefixes.PLAYLIST}:${playlistId}`],\r\n successHandler: this.alertService.success('Successfully deleted playlist'),\r\n errorHandler: this.alertService.error('Failed to delete playlist.')\r\n });\r\n }\r\n\r\n public getPlaylistVideos(\r\n playlistId: string,\r\n callback?: (data: VideoCollection) => void,\r\n errorCallback?: () => void\r\n ): VideoCollection {\r\n return this.get<VideoCollection>({\r\n resource: endpoints.getPlaylistMembers(playlistId, PlaylistMemberType.Videos, '{orderBy:orderindex,limit:100}'),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.PLAYLIST}:${playlistId}:${PlaylistMemberType.Videos}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public reorderVideos(playlistId: string, reorderRequest: ReorderRequest, callback?: () => void): void {\r\n return this.update<ReorderRequest>({\r\n resource: endpoints.reorderVideos(playlistId),\r\n data: { ownerId: playlistId, ...reorderRequest },\r\n eventPrefix: DataPrefixes.REORDER_PLAYLIST_VIDEOS,\r\n expiryTime: CacheDurations.STANDARD,\r\n invalidationKeys: [`${DataPrefixes.PLAYLIST}:${playlistId}:videos`],\r\n callback,\r\n errorHandler: this.alertService.error('Failed to update playlist order.')\r\n });\r\n }\r\n\r\n public removeVideoFromPlaylist(\r\n playlistId: string, videoId: string, callback?: () => void, errorCallback?: () => void\r\n ): void {\r\n return this.delete({\r\n resource: endpoints.removeVideoFromPlaylist(playlistId, videoId),\r\n eventPrefix: `${DataPrefixes.REMOVE_PLAYLIST_VIDEO}:${playlistId}:${videoId}`,\r\n invalidationKeys: [`${DataPrefixes.PLAYLIST}:${playlistId}:videos`],\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.PLAYLIST,\r\n dataChannelName: DataChannels.PLAYLIST\r\n};\r\n\r\nexport const PlaylistDataServiceHelper = {\r\n getPlaylistFetchOptions: (\r\n playlistId: string, setData: (data: Playlist) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.PLAYLIST}:${playlistId}`,\r\n fetchData: (d: PlaylistDataService) => d.getPlaylist(playlistId),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_PLAYLIST\r\n }),\r\n\r\n getPlaylistsByIdFetchOptions: (\r\n ids: string[], setData: (data: Playlist[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.PLAYLISTS}:${ids.join(',')}`,\r\n fetchData: (d: PlaylistDataService) => d.getPlaylistsById(ids),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPlaylistVideosFetchOptions: (\r\n playlistId: string,\r\n setData: (data: VideoCollection) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.PLAYLIST}:${playlistId}:${PlaylistMemberType.Videos}`,\r\n fetchData: (d: PlaylistDataService) => d.getPlaylistVideos(playlistId),\r\n setData,\r\n onError\r\n })\r\n};","export * from './PlaylistDataService';","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem, CuratorUser } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils';\r\n\r\nexport const PlaylistNavHelper = {\r\n getEditPlaylistTabs(currentUser: CuratorUser, playlistId: string): NavItem[] {\r\n const application = AppChannels.PLAYLISTS;\r\n const actions = Actions.Playlists;\r\n\r\n const tabs: NavItem[] = [\r\n {\r\n label: 'Edit Playlist Details',\r\n appLink: { application, action: actions.EDIT_PLAYLIST, args: [playlistId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_VIDEOS, args: [playlistId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (canAccessSubjects)\r\n tabs.push(...[\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_SUBJECTS, args: [playlistId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_PLAYLIST_AUDIENCES, args: [playlistId]}\r\n }\r\n ]);\r\n\r\n return tabs;\r\n }\r\n};","export * from './validation';\r\nexport * from './PlaylistNavHelper';","import * as Yup from 'yup';\r\nimport { Cover, Banner, FileIdType } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\nexport const PlaylistValidationSchema = Yup.object().shape<CreateOrUpdatePlaylistRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .max(65535, 'Description is too long')\r\n .default(''),\r\n\r\n cover: Yup.object()\r\n .shape<Cover>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","export * from './PlaylistValidation';","import * as React from 'react';\r\nimport { useFetch, useService, Core } from '@clickview/common';\r\nimport { Playlist, Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { PlaylistDataService, PlaylistDataServiceHelper } from 'apps/playlists/services';\r\n\r\ninterface DeletePlaylistViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function DeletePlaylistView(props: DeletePlaylistViewProps & PopupViewProps): React.ReactElement {\r\n const { playlistId, closePopup } = props;\r\n\r\n const [ playlist, setPlaylist ] = React.useState<Playlist>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const playlistDataService = useService<PlaylistDataService>(DataServices.PLAYLIST);\r\n\r\n useFetch(PlaylistDataServiceHelper.getPlaylistFetchOptions(playlistId, setPlaylist), [playlistId]);\r\n\r\n const onDeleteSuccess = React.useCallback(() => {\r\n closePopup();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.PLAYLISTS\r\n });\r\n }, []);\r\n\r\n const deletePlaylist = React.useCallback(() => {\r\n setShowButtonSpinner(true);\r\n\r\n playlistDataService.deletePlaylist(playlistId, onDeleteSuccess, closePopup);\r\n\r\n }, [playlistId]);\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel',\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deletePlaylist,\r\n buttonText: 'Yes, delete playlist',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n const dataLoaded = !!playlist;\r\n\r\n return (\r\n <Popup title='Delete Playlist' closePopup={closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{playlist.name}</strong>?</p>\r\n <p>Please ensure it is not being used in any widgets.</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeletePlaylistView';","import * as React from 'react';\r\nimport { useService, useBulkFetch, useFetch } from '@clickview/common';\r\nimport { StateHelper, Playlist, PresentationAudience } from '@clickview/shared';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { Actions, DataServices } from 'shared/constants';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\nimport { PlaylistDataServiceHelper } from 'apps/playlists/services';\r\n\r\ninterface EditPlaylistAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n playlist?: Playlist;\r\n playlistLevels?: Level[];\r\n playlistAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditPlaylistAudiencesViewState>>;\r\n\r\nfunction useFetchData(playlistId: string, state: EditPlaylistAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditPlaylistAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch playlist and playlist levels\r\n useBulkFetch([\r\n PlaylistDataServiceHelper.getPlaylistFetchOptions(playlistId, getSetState('playlist')),\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistLevels'))\r\n ], [playlistId]);\r\n\r\n // Fetch playlist audiences. Re-fetch when playlistLevels changes as audiences may have changed.\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistAudiences')),\r\n [ playlistId, state.playlistLevels ]\r\n );\r\n\r\n // Fetch presentations and levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n // Fetched audiences for current presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditPlaylistAudiencesViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistAudiencesView({ playlistId }: EditPlaylistAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditPlaylistAudiencesViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(playlistId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.playlistLevels && !!state.playlistAudiences;\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST_AUDIENCES} />\r\n <ObjectHeader object={state.playlist} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.playlistLevels}\r\n objectAudiences={state.playlistAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Playlists}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n playlistId, levelIds, SubjectMemberType.Playlists, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n playlistId, state.currentPresentation.id, audienceIds, SubjectMemberType.Playlists, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistAudiencesView';","import * as React from 'react';\r\nimport { useService, useBulkFetch, useFetch } from '@clickview/common';\r\nimport { StateHelper, Playlist, Subject, Classification } from '@clickview/shared';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { PlaylistDataServiceHelper } from 'apps/playlists/services';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPlaylistSubjectsViewState {\r\n playlist?: Playlist;\r\n playlistSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n playlistClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditPlaylistSubjectsViewState>>;\r\n\r\nfunction useFetchData(playlistId: string, state: EditPlaylistSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditPlaylistSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch subject tree and presentations\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n // Fetch playlist and playlist subjects\r\n useBulkFetch([\r\n PlaylistDataServiceHelper.getPlaylistFetchOptions(playlistId, getSetState('playlist')),\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(\r\n playlistId, SubjectMemberType.Playlists, getSetState('playlistSubjects'))\r\n ], [playlistId]);\r\n\r\n // Fetch classification tree for presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever playlistSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.playlistSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditPlaylistSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.playlistSubjects && state.playlistSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.playlistSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n // Fetch playlist classifications\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(playlistId, SubjectMemberType.Playlists, getSetState('playlistClassifications')),\r\n [ playlistId, state.playlistSubjects ]\r\n );\r\n}\r\n\r\ninterface EditPlaylistSubjectsViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistSubjectsView({ playlistId }: EditPlaylistSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditPlaylistSubjectsViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(playlistId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.playlistSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.playlistClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST_SUBJECTS} />\r\n <ObjectHeader object={state.playlist} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.playlistSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Playlists}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.playlistClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n playlistId, subjectsId, SubjectMemberType.Playlists, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n playlistId, state.currentPresentation.id, classificationIds, SubjectMemberType.Playlists, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistSubjectsView';","import * as React from 'react';\r\nimport { useService, useBulkFetch } from '@clickview/common';\r\nimport { Video, VideoCollection, Playlist, ReorderHelper } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions, DataServices } from 'shared/constants';\r\nimport { SortableVideoList, ObjectHeader } from 'shared/components';\r\n\r\nimport { EditPlaylistNav } from 'apps/playlists/components';\r\nimport { PlaylistDataServiceHelper, PlaylistDataService } from 'apps/playlists/services';\r\n\r\nconst getVideoActions = (playlistId: string) => (video: Video) => ([\r\n {\r\n label: 'Remove video',\r\n appLink: {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.REMOVE_VIDEO,\r\n args: [ playlistId.toString(), video.id.toString() ]\r\n },\r\n className: 'text-danger'\r\n }\r\n]);\r\n\r\nconst getVideoAppLink = (video: Video) => ({\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args: [video.id]\r\n});\r\n\r\nfunction useFetchData(\r\n playlistId: string, setPlaylist: (p: Playlist) => void, setVideos: (v: VideoCollection) => void\r\n): void {\r\n useBulkFetch([\r\n PlaylistDataServiceHelper.getPlaylistFetchOptions(playlistId, setPlaylist),\r\n PlaylistDataServiceHelper.getPlaylistVideosFetchOptions(playlistId, setVideos)\r\n ], [playlistId]);\r\n}\r\n\r\ninterface EditPlaylistVideosViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistVideosView({ playlistId }: EditPlaylistVideosViewProps): React.ReactElement {\r\n const [ playlist, setPlaylist ] = React.useState<Playlist>();\r\n const [ videos, setVideos ] = React.useState<VideoCollection>();\r\n\r\n const playlistDataService = useService<PlaylistDataService>(DataServices.PLAYLIST);\r\n\r\n useFetchData(playlistId, setPlaylist, setVideos);\r\n\r\n const onSort = (oldIdx: number, newIdx: number) => {\r\n if (oldIdx === newIdx)\r\n return;\r\n\r\n const video = videos.data && videos.data[oldIdx];\r\n\r\n if (!video)\r\n return;\r\n\r\n const { reorderedItems, reorderRequest } = ReorderHelper.reorder(videos.data, oldIdx, newIdx);\r\n\r\n playlistDataService.reorderVideos(playlistId, reorderRequest);\r\n\r\n setVideos(videoCollection => ({ data: reorderedItems, pagination: videoCollection.pagination }));\r\n };\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST_VIDEOS} />\r\n <ObjectHeader object={playlist} />\r\n {!!videos &&\r\n <SortableVideoList\r\n onSortEnd={onSort}\r\n videos={videos}\r\n getVideoAppLink={getVideoAppLink}\r\n getVideoActions={getVideoActions(playlistId)}\r\n emptyMessage='There are no videos in this playlist.'\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditPlaylistVideosView';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\nimport { Playlist } from '@clickview/shared';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { PlaylistDataServiceHelper, PlaylistDataService } from 'apps/playlists/services';\r\nimport { EditPlaylistDetails, EditPlaylistNav } from 'apps/playlists/components';\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\n\r\ninterface EditPlaylistViewProps {\r\n playlistId: string;\r\n}\r\n\r\nexport function EditPlaylistView({ playlistId }: EditPlaylistViewProps): React.ReactElement {\r\n const [ playlist, setPlaylist ] = React.useState<Playlist>();\r\n\r\n const playlistDataService = useService<PlaylistDataService>(DataServices.PLAYLIST);\r\n\r\n useFetch(PlaylistDataServiceHelper.getPlaylistFetchOptions(playlistId, setPlaylist), [playlistId]);\r\n\r\n const savePlaylist = (data: CreateOrUpdatePlaylistRequest, onDone: () => void): void =>\r\n playlistDataService.updatePlaylist(playlistId, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <EditPlaylistNav playlistId={playlistId} activeAction={Actions.Playlists.EDIT_PLAYLIST} />\r\n {!!playlist && <EditPlaylistDetails playlist={playlist} savePlaylist={savePlaylist} />}\r\n </>\r\n );\r\n}","export * from './EditPlaylistView';","export * from './delete-playlist';\r\nexport * from './edit-playlist';\r\nexport * from './edit-playlist-audiences';\r\nexport * from './edit-playlist-subjects';\r\nexport * from './edit-playlist-videos';\r\nexport * from './new-playlist';\r\nexport * from './remove-video';","import * as React from 'react';\r\nimport { Core, useFetch, useService } from '@clickview/common';\r\nimport { Playlist, CurrentUser } from '@clickview/shared';\r\n\r\nimport { UserDataServiceHelper } from 'shared/services';\r\nimport { AppChannels, Actions, DataServices } from 'shared/constants';\r\n\r\nimport { CreateOrUpdatePlaylistRequest } from 'apps/playlists/interfaces';\r\nimport { PlaylistDataService } from 'apps/playlists/services';\r\nimport { EditPlaylistDetails } from 'apps/playlists/components';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newPlaylist: Playlist) => {\r\n onDone();\r\n\r\n if (!newPlaylist || !newPlaylist.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args: [newPlaylist.id]\r\n });\r\n};\r\n\r\nexport function NewPlaylistView(): React.ReactElement {\r\n const [ currentUser, setCurrentUser ] = React.useState<CurrentUser>();\r\n\r\n const playlistDataService = useService<PlaylistDataService>(DataServices.PLAYLIST);\r\n\r\n useFetch(UserDataServiceHelper.getCurrentUserFetchOptions<CurrentUser>(setCurrentUser), []);\r\n\r\n const savePlaylist = (data: CreateOrUpdatePlaylistRequest, onDone: () => void) =>\r\n playlistDataService.createPlaylist(data, currentUser.id, onCreateSuccess(onDone), onDone);\r\n\r\n return (\r\n <>\r\n {!!currentUser && <EditPlaylistDetails savePlaylist={savePlaylist} />}\r\n </>\r\n );\r\n}","export * from './NewPlaylistView';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\nimport { Video, Playlist, Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { PlaylistDataServiceHelper, PlaylistDataService } from 'apps/playlists/services';\r\n\r\ninterface RemoveVideoViewProps {\r\n videoId: string;\r\n playlistId: string;\r\n}\r\n\r\nexport function RemoveVideoView(props: RemoveVideoViewProps & PopupViewProps): React.ReactElement {\r\n const { videoId, playlistId, closePopup } = props;\r\n\r\n const [ video, setVideo ] = React.useState<Video>();\r\n const [ playlist, setPlaylist ] = React.useState<Playlist>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const playlistDataService = useService<PlaylistDataService>(DataServices.PLAYLIST);\r\n\r\n useFetch(VideoDataServiceHelper.getVideoFetchOptions(videoId, setVideo), [videoId]);\r\n useFetch(PlaylistDataServiceHelper.getPlaylistFetchOptions(playlistId, setPlaylist), [playlistId]);\r\n\r\n const removeVideo = React.useCallback(() => {\r\n setShowButtonSpinner(true);\r\n\r\n playlistDataService.removeVideoFromPlaylist(playlistId, videoId, closePopup, closePopup);\r\n\r\n }, [ videoId, playlistId ]);\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeVideo,\r\n buttonText: 'Yes, remove video',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n const dataLoaded = playlist && video;\r\n\r\n return (\r\n <Popup title='Remove Video' closePopup={closePopup} showLoadingSpinner={!dataLoaded}>\r\n {!!dataLoaded &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to remove <strong>{video.name}</strong> from <strong>{playlist.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveVideoView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core, BaseAlert, CommonChannels, ObjectHelper, InstanceManager } from '@clickview/common';\r\nimport { LayoutRegions, AlertList, ImageType, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutViewOptions, CuratorLayoutView } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport { SeriesAppContextProvider } from 'apps/series/context';\r\nimport { EditSeriesView, NewSeriesView, EditSeriesAudiencesView, EditSeriesSubjectsView } from 'apps/series/views';\r\n\r\nclass SeriesAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SERIES;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/series/new(/)': 'newSeries',\r\n 'manage/series/:id(/)': 'editSeries',\r\n 'manage/series/:id/videos(/)': 'editSeriesVideos',\r\n 'manage/series/:id/subjects(/)': 'editSeriesSubjects',\r\n 'manage/series/:id/audiences(/)': 'editSeriesAudiences'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class SeriesApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Series Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SeriesAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SERIES;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: SeriesAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public newSeries(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewSeriesView />);\r\n }\r\n\r\n public editSeries(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesView seriesId={seriesId} />);\r\n }\r\n\r\n public editSeriesVideos(seriesId: string): void {\r\n Core.LocationUtils.Redirect(`/manage/legacy/series/${seriesId}`, true);\r\n }\r\n\r\n public editSeriesSubjects(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesSubjectsView seriesId={seriesId} />);\r\n }\r\n\r\n public editSeriesAudiences(seriesId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSeriesAudiencesView seriesId={seriesId} />);\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { Series, FormWrapper, Rating } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SeriesValidationSchema } from 'apps/series/utils';\r\n\r\nimport { EditSeriesDetailsForm } from './EditSeriesDetailsForm';\r\n\r\ninterface EditSeriesDetailsProps {\r\n saveSeries: (data: CreateOrUpdateSeriesRequest, onDone: () => void) => void;\r\n ratings: Rating[];\r\n series?: Series;\r\n}\r\n\r\nexport function EditSeriesDetails(props: EditSeriesDetailsProps): JSX.Element {\r\n return (\r\n <FormWrapper<CreateOrUpdateSeriesRequest, Series>\r\n initialValues={props.series}\r\n validationSchema={SeriesValidationSchema}\r\n onSubmit={props.saveSeries}\r\n >\r\n <EditSeriesDetailsForm id={props.series && props.series.id} ratings={props.ratings} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\n\r\nimport {\r\n FormField,\r\n ImageType,\r\n Banner,\r\n SpinnerButton,\r\n Poster,\r\n Actions,\r\n ActionOptions,\r\n useCanSubmitForm,\r\n Rating\r\n} from '@clickview/shared';\r\n\r\nimport { ImageSelect, RatingSelect } from 'shared/components';\r\nimport { AppChannels, Actions as AppActions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\nimport { SERIES_MAX_DESCRIPTION_LENGTH } from 'apps/series/utils';\r\n\r\ninterface EditSeriesDetailsFormProps {\r\n ratings: Rating[];\r\n id?: string;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function EditSeriesDetailsForm(props: EditSeriesDetailsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<CreateOrUpdateSeriesRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateSeriesRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this series'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateSeriesRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n maxLength={SERIES_MAX_DESCRIPTION_LENGTH}\r\n value={formikProps.values.description}\r\n placeholder='Describe this series here'\r\n showCharacterCounter\r\n />\r\n <RatingSelect<CreateOrUpdateSeriesRequest> ratings={props.ratings} />\r\n <ImageSelect\r\n imageType={ImageType.TallPosters}\r\n currentImage={formikProps.values.poster}\r\n setNewImage={(image: Poster) => formikProps.setFieldValue('poster', image)}\r\n application={AppChannels.SERIES}\r\n uploadAction={AppActions.Series.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect\r\n imageType={ImageType.Banners}\r\n currentImage={formikProps.values.banner}\r\n setNewImage={(image: Banner) => formikProps.setFieldValue('banner', image)}\r\n application={AppChannels.SERIES}\r\n uploadAction={AppActions.Playlists.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between align-items-center'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {!props.id ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!!props.actions && <Actions actions={props.actions} />}\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditSeriesDetails';","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { UserContext } from 'shared/context';\r\n\r\nimport { SeriesNavHelper } from 'apps/series/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditSeriesNavProps {\r\n seriesId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditSeriesNav({ seriesId, activeAction }: EditSeriesNavProps): React.ReactElement {\r\n const user = React.useContext(UserContext);\r\n\r\n return (\r\n <div className='py-2'>\r\n {!!user &&\r\n <Tabs tabs={SeriesNavHelper.getEditSeriesTabs(user, seriesId)} isItemActive={isItemActive(activeAction)} />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditSeriesNav';","export * from './edit-series-details';\r\nexport * from './edit-series-nav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nexport const SeriesAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","export * from './SeriesAppContext';","import { BaseDataService, DataServiceError, FetchOptions } from '@clickview/common';\r\nimport { Series, CacheDurations } from '@clickview/shared';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\nimport { PermissionsHelper } from 'shared/utils';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nconst endpoints = {\r\n getSeries: (seriesId: string) => `/api/master/v2/objects/${seriesId}?query=thumbnail,poster,banner,rating`,\r\n\r\n getSeriesById: (ids: string[]) => `/api/master/v2/objects?${ids.map(id => `id=${id}`).join('&')}`,\r\n\r\n createSeries: () => `/api/master/v2/series`,\r\n\r\n updateSeries: (id: string) => `/api/master/v2/objects/${id}`\r\n};\r\n\r\nexport class SeriesDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.SERIES;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.SERIES;\r\n }\r\n\r\n public getSeries(seriesId: string, callback?: (video: Series) => void, errorCallback?: () => void): Series {\r\n return this.get<Series>({\r\n resource: endpoints.getSeries(seriesId),\r\n eventPrefix: `${DataPrefixes.SERIES}:${seriesId}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSeriesById(\r\n ids: string[], callback?: (data: Series[]) => void, errorCallback?: () => void\r\n ): Series[] {\r\n return this.get<Series[]>({\r\n resource: endpoints.getSeriesById(ids),\r\n eventPrefix: `${DataPrefixes.SERIES_BY_ID}:${ids.join(',')}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createSeries(\r\n data: CreateOrUpdateSeriesRequest,\r\n callback?: (data: Series) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n let newSeries: Series;\r\n\r\n this.chain()\r\n .create<Series>({\r\n resource: endpoints.createSeries(),\r\n data,\r\n callback: (series: Series) => newSeries = series,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.SERIES,\r\n expiryTime: CacheDurations.STANDARD,\r\n errorHandler: this.alertService.error('Failed to create series.')\r\n })\r\n .func(() => {\r\n if (!newSeries || !newSeries.id)\r\n return;\r\n\r\n /**\r\n * Associate protected permission with series.\r\n * We do this after creating the series as the series may have already\r\n * been created by a customer.\r\n */\r\n this.update<Series>({\r\n resource: endpoints.updateSeries(newSeries.id),\r\n data: { permissions: PermissionsHelper.getProtectedReadPermission() },\r\n callback,\r\n eventPrefix: DataPrefixes.SERIES,\r\n successHandler: this.alertService.success('Successfully created series')\r\n });\r\n })\r\n .run();\r\n }\r\n\r\n public updateSeries(\r\n id: string,\r\n data: CreateOrUpdateSeriesRequest,\r\n callback?: (data: Series) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n this.update<Series>({\r\n resource: endpoints.updateSeries(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_SERIES}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.SERIES}:${id}`, DataPrefixes.SERIES_BY_ID ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated series'),\r\n errorHandler: this.alertService.error('Failed to update series')\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.SERIES,\r\n dataChannelName: DataChannels.SERIES\r\n};\r\n\r\nexport const SeriesDataServiceHelper = {\r\n getSeriesFetchOptions(\r\n seriesId: string,\r\n setData: (data: Series) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SERIES}:${seriesId}`,\r\n fetchData: (d: SeriesDataService) => d.getSeries(seriesId),\r\n setData,\r\n onError\r\n };\r\n },\r\n\r\n getSeriesByIdFetchOptions: (\r\n ids: string[], setData: (data: Series[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SERIES_BY_ID}:${ids.join(',')}`,\r\n fetchData: (d: SeriesDataService) => d.getSeriesById(ids),\r\n setData,\r\n onError\r\n })\r\n};","export * from './SeriesDataService';","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem, CuratorUser } from 'shared/interfaces';\r\nimport { PermissionsHelper } from 'shared/utils';\r\n\r\nexport const SeriesNavHelper = {\r\n getEditSeriesTabs(currentUser: CuratorUser, seriesId: string): NavItem[] {\r\n const application = AppChannels.SERIES;\r\n const actions = Actions.Series;\r\n\r\n const tabs: NavItem[] = [\r\n {\r\n label: 'Edit Series Details',\r\n appLink: { application, action: actions.EDIT_SERIES, args: [seriesId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_SERIES_VIDEOS, args: [seriesId]}\r\n }\r\n ];\r\n\r\n const canAccessSubjects = PermissionsHelper.hasSubjectsAccess(currentUser);\r\n\r\n if (canAccessSubjects)\r\n tabs.push(...[\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_SERIES_SUBJECTS, args: [seriesId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_SERIES_AUDIENCES, args: [seriesId]}\r\n }\r\n ]);\r\n\r\n return tabs;\r\n }\r\n};","export * from './validation';\r\nexport * from './SeriesNavHelper';","import * as Yup from 'yup';\r\nimport { Poster, Banner, FileIdType } from '@clickview/shared';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\n\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nexport const SERIES_MAX_DESCRIPTION_LENGTH = 350;\r\n\r\nexport const SeriesValidationSchema = Yup.object().shape<CreateOrUpdateSeriesRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n description: Yup.string()\r\n .trim()\r\n .max(SERIES_MAX_DESCRIPTION_LENGTH, 'Description is too long')\r\n .default(''),\r\n\r\n rating: Yup.object()\r\n .shape<UpdateObjectRating>({\r\n id: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n poster: Yup.object()\r\n .shape<Poster>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","export * from './SeriesValidation';","import * as React from 'react';\r\nimport { useService, useBulkFetch, useFetch } from '@clickview/common';\r\nimport { StateHelper, Series, PresentationAudience } from '@clickview/shared';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\nimport { ObjectHeader } from 'shared/components';\r\n\r\nimport { EditSeriesNav } from 'apps/series/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\nimport { SeriesDataServiceHelper } from 'apps/series/services';\r\n\r\ninterface EditSeriesAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n series?: Series;\r\n seriesLevels?: Level[];\r\n seriesAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSeriesAudiencesViewState>>;\r\n\r\nfunction useFetchData(seriesId: string, state: EditSeriesAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditSeriesAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch series and series levels\r\n useBulkFetch([\r\n SeriesDataServiceHelper.getSeriesFetchOptions(seriesId, getSetState('series')),\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(\r\n seriesId, SubjectMemberType.Series, getSetState('seriesLevels'))\r\n ], [seriesId]);\r\n\r\n // Fetch series audiences\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesAudiences')),\r\n [ seriesId, state.seriesLevels ]\r\n );\r\n\r\n // Fetch presentations and levels\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n // Fetch audiences for currentPresentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditSeriesAudiencesViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesAudiencesView({ seriesId }: EditSeriesAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditSeriesAudiencesViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(seriesId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.seriesLevels && !!state.seriesAudiences;\r\n\r\n return (\r\n <>\r\n <EditSeriesNav seriesId={seriesId} activeAction={Actions.Series.EDIT_SERIES_AUDIENCES} />\r\n <ObjectHeader object={state.series} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.seriesLevels}\r\n objectAudiences={state.seriesAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Series}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n seriesId, levelIds, SubjectMemberType.Series, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n seriesId, state.currentPresentation.id, audienceIds, SubjectMemberType.Series, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesAudiencesView';","import * as React from 'react';\r\nimport { useService, useBulkFetch, useFetch } from '@clickview/common';\r\nimport { StateHelper, Series, Subject, Classification } from '@clickview/shared';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditSeriesNav } from 'apps/series/components';\r\nimport { SeriesDataServiceHelper } from 'apps/series/services';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditSeriesSubjectsViewState {\r\n series?: Series;\r\n seriesSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n seriesClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSeriesSubjectsViewState>>;\r\n\r\nfunction useFetchData(seriesId: string, state: EditSeriesSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditSeriesSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n // Fetch subject tree and presentations\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n // Fetch series and series subjects\r\n useBulkFetch([\r\n SeriesDataServiceHelper.getSeriesFetchOptions(seriesId, getSetState('series')),\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(\r\n seriesId, SubjectMemberType.Series, getSetState('seriesSubjects'))\r\n ], [seriesId]);\r\n\r\n // Fetch classification tree for presentation\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever seriesSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.seriesSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditSeriesSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.seriesSubjects && state.seriesSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.seriesSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n // Fetch series classifications\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(seriesId, SubjectMemberType.Series, getSetState('seriesClassifications')),\r\n [ seriesId, state.seriesSubjects ]\r\n );\r\n}\r\n\r\ninterface EditSeriesSubjectsViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesSubjectsView({ seriesId }: EditSeriesSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditSeriesSubjectsViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(seriesId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.seriesSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.seriesClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n <EditSeriesNav seriesId={seriesId} activeAction={Actions.Series.EDIT_SERIES_SUBJECTS} />\r\n <ObjectHeader object={state.series} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.seriesSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Series}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.seriesClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n seriesId, subjectsId, SubjectMemberType.Series, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n seriesId, state.currentPresentation.id, classificationIds, SubjectMemberType.Series, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesSubjectsView';","import * as React from 'react';\r\nimport { useFetch, useService, Flight } from '@clickview/common';\r\nimport { Series, Rating } from '@clickview/shared';\r\n\r\nimport { Actions, DataServices } from 'shared/constants';\r\nimport { RatingRequests } from 'shared/flight-requests';\r\n\r\nimport { SeriesDataServiceHelper, SeriesDataService } from 'apps/series/services';\r\nimport { EditSeriesNav, EditSeriesDetails } from 'apps/series/components';\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\ninterface EditSeriesViewProps {\r\n seriesId: string;\r\n}\r\n\r\nexport function EditSeriesView({ seriesId }: EditSeriesViewProps): JSX.Element {\r\n const [ series, setSeries ] = React.useState<Series>();\r\n\r\n const ratingsResponse = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n\r\n const seriesDataService = useService<SeriesDataService>(DataServices.SERIES);\r\n\r\n useFetch(SeriesDataServiceHelper.getSeriesFetchOptions(seriesId, setSeries), [seriesId]);\r\n\r\n const saveSeries = (data: CreateOrUpdateSeriesRequest, onDone: () => void) =>\r\n seriesDataService.updateSeries(seriesId, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <EditSeriesNav seriesId={seriesId} activeAction={Actions.Series.EDIT_SERIES} />\r\n {!!series && !!ratingsResponse.data &&\r\n <EditSeriesDetails series={series} saveSeries={saveSeries} ratings={ratingsResponse.data} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSeriesView';","export * from './edit-series';\r\nexport * from './edit-series-audiences';\r\nexport * from './edit-series-subjects';\r\nexport * from './new-series';","import * as React from 'react';\r\nimport { useService, Core, Flight } from '@clickview/common';\r\nimport { Series, Rating } from '@clickview/shared';\r\n\r\nimport { Actions, DataServices, AppChannels } from 'shared/constants';\r\nimport { RatingRequests } from 'shared/flight-requests';\r\n\r\nimport { SeriesDataService } from 'apps/series/services';\r\nimport { EditSeriesDetails } from 'apps/series/components';\r\nimport { CreateOrUpdateSeriesRequest } from 'apps/series/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newSeries: Series) => {\r\n onDone();\r\n\r\n if (!newSeries || !newSeries.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args: [newSeries.id]\r\n });\r\n};\r\n\r\n\r\nexport function NewSeriesView(): JSX.Element {\r\n const ratingsResponse = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\r\n\r\n const seriesDataService = useService<SeriesDataService>(DataServices.SERIES);\r\n\r\n const createSeries = (data: CreateOrUpdateSeriesRequest, onDone: () => void) =>\r\n seriesDataService.createSeries(data, onCreateSuccess(onDone), onDone);\r\n\r\n return (\r\n <>\r\n {!!ratingsResponse.data && <EditSeriesDetails saveSeries={createSeries} ratings={ratingsResponse.data} />}\r\n </>\r\n );\r\n}","export * from './NewSeriesView';","import * as React from 'react';\r\nimport { ObjectHash, Radio } from 'backbone';\r\nimport { Core, BaseAlert, CommonChannels, InstanceManager, ObjectHelper } from '@clickview/common';\r\nimport { AlertList, ImageType, LayoutRegions, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts, Actions, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutView, CuratorLayoutViewOptions } from 'shared/layouts';\r\nimport { ImageUploadView } from 'shared/views';\r\n\r\nimport {\r\n ClassificationNavView,\r\n NewClassificationView,\r\n EditClassificationView,\r\n EditClassificationMembersView,\r\n DeleteClassificationView,\r\n EditPresentationsListView,\r\n NewPresentationView,\r\n EditPresentationView,\r\n SubjectNavView,\r\n NewSubjectView,\r\n EditSubjectView,\r\n EditSubjectMembersView,\r\n DeleteSubjectView,\r\n RemoveClassificationMemberView,\r\n AddSubjectMembersView,\r\n RemoveSubjectMemberView,\r\n TopNavView,\r\n SelectPresentationView,\r\n EditLevelsListView,\r\n NewLevelView,\r\n EditLevelView,\r\n EditAudiencesListView,\r\n NewAudienceView,\r\n EditAudienceView,\r\n DeleteAudienceView,\r\n SubjectClassificationsView\r\n} from 'apps/subjects/views';\r\n\r\nimport { SubjectTree, ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectsAppContextProvider } from 'apps/subjects/context';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\n\r\nclass SubjectsAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.SUBJECTS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/subjects(/)': 'subjects',\r\n 'manage/subjects/add-objects(/)': 'addSubjectMembers',\r\n 'manage/subjects/new(/)': 'newSubject',\r\n 'manage/subjects/:id/edit(/)': 'editSubject',\r\n 'manage/subjects/:id/edit/playlists(/)': 'editSubjectPlaylists',\r\n 'manage/subjects/:id/edit/series(/)': 'editSubjectSeries',\r\n 'manage/subjects/:id/edit/videos(/)': 'editSubjectVideos',\r\n 'manage/subjects/:id/classifications(/)': 'subjectClassifications',\r\n\r\n 'manage/subjects/classifications(/)': 'classifications',\r\n 'manage/subjects/presentations/:id/classifications(/)': 'presentationClassifications',\r\n 'manage/subjects/presentations/:id/classifications/new(/)': 'newClassification',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit(/)': 'editClassification',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/playlists(/)': 'editClassificationPlaylists',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/series(/)': 'editClassificationSeries',\r\n 'manage/subjects/presentations/:id/classifications/:id/edit/videos(/)': 'editClassificationVideos',\r\n\r\n 'manage/subjects/levels(/)': 'levels',\r\n 'manage/subjects/levels/new(/)': 'newLevel',\r\n 'manage/subjects/levels/:id(/)': 'editLevel',\r\n\r\n 'manage/subjects/audiences(/)': 'audiences',\r\n 'manage/subjects/presentations/:id/audiences(/)': 'presentationAudiences',\r\n 'manage/subjects/presentations/:id/audiences/new(/)': 'newAudience',\r\n 'manage/subjects/presentations/:id/audiences/:id/edit(/)': 'editAudience',\r\n\r\n 'manage/subjects/presentations(/)': 'presentations',\r\n 'manage/subjects/presentations/new': 'newPresentation',\r\n 'manage/subjects/presentations/:id(/)': 'editPresentation'\r\n };\r\n }\r\n\r\n protected get appLinks(): string[] {\r\n return [\r\n 'deleteClassification',\r\n 'removeClassificationMember',\r\n 'deleteSubject',\r\n 'removeSubjectMember',\r\n 'deleteAudience',\r\n 'uploadImage'\r\n ];\r\n }\r\n}\r\n\r\nexport class SubjectsApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n private subjectDataService: SubjectDataService;\r\n\r\n private currentLeftNavId: string;\r\n\r\n public initialize(): void {\r\n this.subjectDataService = InstanceManager.getInstance(DataServices.SUBJECT, this);\r\n\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Subjects Application';\r\n }\r\n\r\n public static get router(): any {\r\n return SubjectsAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.SUBJECTS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: SubjectsAppContextProvider,\r\n getTopNavView: this.getTopNav\r\n }\r\n };\r\n }\r\n\r\n public subjects(): void {\r\n this.subjectDataService.getSubjectTree((subjectTree: SubjectTree) => {\r\n const firstSubject = !!subjectTree.children && subjectTree.children[0];\r\n\r\n if (!firstSubject) {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_SUBJECT\r\n }, { replace: true });\r\n\r\n return;\r\n }\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [firstSubject.id]\r\n }, { replace: true });\r\n });\r\n }\r\n\r\n public newSubject(params: ObjectHash): void {\r\n const props = {\r\n parentId: params.parentId\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewSubjectView key={params.parentId} {...props} />);\r\n\r\n this.renderSubjectsLeftNav();\r\n }\r\n\r\n public editSubject(subjectId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSubjectView key={subjectId} subjectId={subjectId} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectPlaylists(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditSubjectMembersView key={`${subjectId}:playlists`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectSeries(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Series };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditSubjectMembersView key={`${subjectId}:series`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public editSubjectVideos(subjectId: string): void {\r\n const props = { subjectId, memberType: SubjectMemberType.Videos };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditSubjectMembersView key={`${subjectId}:videos`} {...props} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public subjectClassifications(subjectId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <SubjectClassificationsView key={subjectId} subjectId={subjectId} />);\r\n\r\n this.renderSubjectsLeftNav(subjectId);\r\n }\r\n\r\n public addSubjectMembers(params: ObjectHash): void {\r\n const { memberType, objectIds } = params;\r\n\r\n if (!memberType || !objectIds)\r\n return;\r\n\r\n const props = {\r\n memberType,\r\n objectIds: Array.isArray(objectIds) ? objectIds : [objectIds]\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <AddSubjectMembersView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public removeSubjectMember(subjectId: string, memberId: string, memberType: SubjectMemberType): void {\r\n const props = {\r\n subjectId,\r\n memberId,\r\n memberType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveSubjectMemberView {...props} />);\r\n }\r\n\r\n public deleteSubject(subjectId: string): void {\r\n /**\r\n * If the subject being deleted is currently displayed the in the CONTENT region,\r\n * we want to route away from it on delete.\r\n */\r\n const routeToOnDelete = subjectId.toString() === this.currentLeftNavId.toString()\r\n ? { application: AppChannels.SUBJECTS, action: Actions.Subjects.NEW_SUBJECT }\r\n : null;\r\n\r\n const props = {\r\n subjectId,\r\n routeToOnDelete: routeToOnDelete ? routeToOnDelete : null,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteSubjectView {...props} />);\r\n }\r\n\r\n public classifications(): void {\r\n const getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_CLASSIFICATIONS,\r\n args: [presentation.id]\r\n });\r\n\r\n const props = { objectType: 'classifications', getAppLink };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SelectPresentationView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public presentationClassifications(presentationId: string): void {\r\n this.subjectDataService.getClassificationTree(presentationId, (classificationTree: ClassificationTree) => {\r\n const firstClassification = !!classificationTree.children && classificationTree.children[0];\r\n\r\n if (!firstClassification) {\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n }, { replace: true });\r\n\r\n return;\r\n }\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, firstClassification.id ]\r\n }, { replace: true });\r\n });\r\n }\r\n\r\n public newClassification(presentationId: string, params: ObjectHash): void {\r\n const props = {\r\n presentationId,\r\n parentId: params.parentId\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewClassificationView key={params.parentId} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId);\r\n }\r\n\r\n public editClassification(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditClassificationView key={classificationId} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationPlaylists(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Playlists };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:playlists`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationSeries(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Series };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:series`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public editClassificationVideos(presentationId: string, classificationId: string): void {\r\n const props = { presentationId, classificationId, memberType: SubjectMemberType.Videos };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT,\r\n <EditClassificationMembersView key={`${classificationId}:videos`} {...props} />);\r\n\r\n this.renderClassificationLeftNav(presentationId, classificationId);\r\n }\r\n\r\n public removeClassificationMember(classificationId: string, memberId: string, memberType: SubjectMemberType): void {\r\n const props = {\r\n classificationId,\r\n memberId,\r\n memberType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <RemoveClassificationMemberView {...props} />);\r\n }\r\n\r\n public deleteClassification(presentationId: string, classificationId: string): void {\r\n /**\r\n * If the classification being deleted is currently displayed the in the CONTENT region,\r\n * we want to route away from it (and back to the presentation) on delete.\r\n */\r\n const routeToOnDelete = classificationId === this.currentLeftNavId\r\n ? {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n }\r\n : null;\r\n\r\n const props = {\r\n classificationId,\r\n routeToOnDelete: routeToOnDelete ? routeToOnDelete : null,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteClassificationView {...props} />);\r\n }\r\n\r\n public levels(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditLevelsListView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newLevel(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewLevelView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public editLevel(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditLevelView key={id} id={id} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public audiences(): void {\r\n const getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentation.id]\r\n });\r\n\r\n const props = { objectType: 'audiences', getAppLink };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <SelectPresentationView {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public presentationAudiences(presentationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditAudiencesListView presentationId={presentationId} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newAudience(presentationId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewAudienceView presentationId={presentationId} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public editAudience(presentationId: string, audienceId: string): void {\r\n const props = { presentationId, audienceId };\r\n\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditAudienceView key={audienceId} {...props} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public deleteAudience(presentationId: string, audienceId: string): void {\r\n const routeToOnDelete = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n };\r\n\r\n const props = { id: audienceId, routeToOnDelete, ...this.getPopupProps() };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <DeleteAudienceView {...props} />);\r\n }\r\n\r\n public presentations(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPresentationsListView />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public newPresentation(): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <NewPresentationView />);\r\n }\r\n\r\n public editPresentation(id: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditPresentationView key={id} id={id} />);\r\n\r\n this.hideLeftNav();\r\n }\r\n\r\n public uploadImage(imageType: ImageType): void {\r\n const props = {\r\n imageType,\r\n ...this.getPopupProps()\r\n };\r\n\r\n this.layout.showChildView(LayoutRegions.POPUP, <ImageUploadView {...props} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n\r\n private renderClassificationLeftNav(presentationId: string, selectedClassificationId?: string): void {\r\n this.setCurrentLeftNavItem(selectedClassificationId);\r\n\r\n const props = { presentationId, selectedClassificationId };\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <ClassificationNavView {...props} />);\r\n }\r\n\r\n private renderSubjectsLeftNav(subjectId?: string): void {\r\n this.setCurrentLeftNavItem(subjectId);\r\n\r\n this.layout.showChildView(LayoutRegions.LEFT_NAV, <SubjectNavView selectedSubjectId={subjectId} />);\r\n }\r\n\r\n private setCurrentLeftNavItem(id?: string): void {\r\n if (id)\r\n this.currentLeftNavId = id;\r\n else\r\n this.currentLeftNavId = null;\r\n }\r\n\r\n private hideLeftNav(): void {\r\n this.setCurrentLeftNavItem();\r\n\r\n this.layout.hideLeftNav();\r\n }\r\n\r\n private getTopNav(currentAppLink: Core.AppLink): React.ReactElement {\r\n return <TopNavView currentAppLink={currentAppLink} />;\r\n }\r\n\r\n private getPopupProps(): PopupViewProps {\r\n return {\r\n closePopup: () => this.layout.closePopup()\r\n };\r\n }\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { PresentationAudience, AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\n\r\nconst getAudienceAppLink = (a: PresentationAudience) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ a.presentationId, a.masterId ]\r\n});\r\n\r\nconst getLevelAppLink = (l: Level) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [l.id]\r\n});\r\n\r\nconst getAudienceLevels = (audience: PresentationAudience, levels: Level[]) => {\r\n const audienceLevelIds = audience.levelIds;\r\n\r\n return levels.filter(l => audienceLevelIds.includes(l.id));\r\n};\r\n\r\ninterface AudienceLevelsHeaderProps {\r\n showLevels: boolean;\r\n}\r\n\r\nfunction AudienceLevelsHeader({ showLevels }: AudienceLevelsHeaderProps): JSX.Element {\r\n return (\r\n <thead>\r\n <tr>\r\n <th>Audiences</th>\r\n {!!showLevels && <th>Mapped Level(s)</th>}\r\n </tr>\r\n </thead>\r\n );\r\n}\r\n\r\ninterface AudienceLevelsRowProps {\r\n audience: PresentationAudience;\r\n levels: Level[];\r\n}\r\n\r\nfunction AudienceLevelsRow({ audience, levels }: AudienceLevelsRowProps): JSX.Element {\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={getAudienceAppLink(audience)}>{audience.name}</AppLink>\r\n </td>\r\n <td>\r\n {levels.map(l =>\r\n <AppLink key={l.id} appLink={getLevelAppLink(l)} className='mr-2'>{l.name}</AppLink>\r\n )}\r\n </td>\r\n </tr>\r\n );\r\n}\r\n\r\ninterface AudienceLevelsProps {\r\n audiences: PresentationAudience[];\r\n levels: Level[];\r\n}\r\n\r\nexport function AudienceLevels({ audiences, levels }: AudienceLevelsProps): JSX.Element {\r\n return (\r\n <Table responsive bordered>\r\n <AudienceLevelsHeader showLevels={!!audiences.length} />\r\n <tbody>\r\n {audiences.length\r\n ? audiences.map(a =>\r\n <AudienceLevelsRow key={a.masterId} audience={a} levels={getAudienceLevels(a, levels)} />\r\n )\r\n : <tr><td>This presentation has no audiences.</td></tr>\r\n }\r\n </tbody>\r\n </Table>\r\n );\r\n}","export * from './AudienceLevels';","import * as React from 'react';\r\nimport { PresentationAudience, FormWrapper } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\nimport { AudienceValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditAudienceDetailsForm } from './EditAudienceDetailsForm';\r\n\r\ninterface EditAudienceDetailsProps {\r\n presentationId: string;\r\n levels: Level[];\r\n saveAudience: (data: CreateOrUpdateAudienceRequest, onDone: () => void) => void;\r\n audience?: PresentationAudience;\r\n}\r\n\r\nexport function EditAudienceDetails(props: EditAudienceDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<CreateOrUpdateAudienceRequest>\r\n initialValues={props.audience}\r\n validationSchema={AudienceValidationSchema}\r\n onSubmit={props.saveAudience}\r\n >\r\n <EditAudienceDetailsForm\r\n masterId={props.audience && props.audience.masterId}\r\n presentationId={props.presentationId}\r\n levels={props.levels}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormField, SpinnerButton, AppLink, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditAudienceDetailsFormProps {\r\n masterId?: string;\r\n presentationId: string;\r\n levels: Level[];\r\n}\r\n\r\nexport function EditAudienceDetailsForm(props: EditAudienceDetailsFormProps): React.ReactElement {\r\n const isNew = props.masterId === null || props.masterId === undefined;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateAudienceRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this audience'\r\n autoFocus\r\n />\r\n <FormField\r\n label='Mapped Level(s)'\r\n as='select'\r\n name='levelIds'\r\n id='level-ids'\r\n multiple\r\n size={props.levels.length}\r\n value={formikProps.values.levelIds}\r\n >\r\n {props.levels.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </FormField>\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_AUDIENCE,\r\n args: [ props.presentationId, props.masterId ]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditAudienceDetails';","import * as React from 'react';\r\nimport { ArrayHelper } from '@clickview/common';\r\nimport { PresentationAudience } from '@clickview/shared';\r\n\r\nimport { AudienceLevels, PresentationSelect, SelectLevels, SelectAudiences } from 'apps/subjects/components';\r\nimport { Level, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\n// Filter out object audiences that aren't in current presentation.\r\nfunction filterAudiencesByPresentation(\r\n { objectAudiences, presentationAudiences }: EditObjectAudiencesProps\r\n): PresentationAudience[] {\r\n return objectAudiences.filter(a => presentationAudiences.some(p => p.masterId === a.masterId));\r\n}\r\n\r\nfunction getAllowedAudiences(\r\n { presentationAudiences, objectLevels, objectAudiences }: EditObjectAudiencesProps\r\n): PresentationAudience[] {\r\n const levelIds = objectLevels.map(l => l.id);\r\n\r\n /**\r\n * Show an audience if it is mapped to a level that the object is mapped to\r\n * OR if the object is already mapped to that audience so that it can be removed from the audience.\r\n */\r\n return presentationAudiences.filter(a =>\r\n ArrayHelper.intersection(a.levelIds, levelIds).length || objectAudiences.some(o => o.masterId === a.masterId));\r\n}\r\n\r\ninterface EditObjectAudiencesProps {\r\n objectLevels: Level[];\r\n objectAudiences: PresentationAudience[];\r\n presentations: Presentation[];\r\n currentPresentation: Presentation;\r\n setCurrentPresentation: (p: Presentation) => void;\r\n levels: Level[]; // List of all levels.\r\n presentationAudiences: PresentationAudience[]; // List of all audiences in presentations.\r\n memberType: SubjectMemberType;\r\n saveLevels: (levelIds: string[], addToAudiences: boolean, setSubmittingFalse: () => void) => void;\r\n saveAudiences: (audienceIds: string[], setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function EditObjectAudiences(props: EditObjectAudiencesProps): JSX.Element {\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const allowedPresentationAudiences = getAllowedAudiences(props);\r\n\r\n return (\r\n <>\r\n <div className='border-bottom pb-3 mb-3'>\r\n <h6>Levels</h6>\r\n <p>{`Select which levels this ${memberType} is mapped to.`}</p>\r\n <p>To see how levels correspond to audiences, scroll down to the audience-level mappings table.</p>\r\n <SelectLevels\r\n initialValues={{ levelIds: props.objectLevels.map(l => l.id), addToAudiences: true }}\r\n saveLevels={props.saveLevels}\r\n levels={props.levels}\r\n memberType={props.memberType}\r\n />\r\n </div>\r\n <h6>Audiences</h6>\r\n <p>{`Select a presentation to view its audiences and map them to this ${memberType}.`}</p>\r\n <div className='w-50 pb-3'>\r\n <PresentationSelect\r\n presentations={props.presentations}\r\n currentPresentation={props.currentPresentation}\r\n setCurrentPresentation={props.setCurrentPresentation}\r\n />\r\n </div>\r\n <p>Audience to level mappings for this presentation are displayed below.</p>\r\n <AudienceLevels levels={props.levels} audiences={props.presentationAudiences} />\r\n <p>\r\n {\r\n 'Only the audiences which are mapped to a level that this'\r\n + ` ${memberType} is mapped to are displayed below.`\r\n }\r\n </p>\r\n {!!allowedPresentationAudiences.length &&\r\n <SelectAudiences\r\n initialValues={{\r\n audienceIds: filterAudiencesByPresentation(props).map(a => a.masterId)\r\n }}\r\n saveAudiences={props.saveAudiences}\r\n audiences={allowedPresentationAudiences}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditObjectAudiences';","export * from './audience-levels';\r\nexport * from './edit-audience-details';\r\nexport * from './edit-object-audiences';\r\nexport * from './select-audiences';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormWrapper, FormField, SpinnerButton, PresentationAudience, useCanSubmitForm } from '@clickview/shared';\r\n\r\ninterface SelectAudiencesFormValues {\r\n audienceIds: string[];\r\n}\r\n\r\ninterface SelectAudiencesFormProps {\r\n audiences: PresentationAudience[];\r\n}\r\n\r\nfunction SelectAudiencesForm(props: SelectAudiencesFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectAudiencesFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectAudiencesFormValues>\r\n label='Audience(s)'\r\n as='select'\r\n name='audienceIds'\r\n id='audience-ids'\r\n multiple\r\n size={props.audiences.length}\r\n value={formikProps.values.audienceIds}\r\n >\r\n {props.audiences.map(a => <option key={a.masterId} value={a.masterId}>{a.name}</option>)}\r\n </FormField>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Audiences\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectAudiencesProps {\r\n initialValues: SelectAudiencesFormValues;\r\n audiences: PresentationAudience[];\r\n saveAudiences: (audienceIds: string[], onDone: () => void) => void;\r\n}\r\n\r\nexport function SelectAudiences(props: SelectAudiencesProps): JSX.Element {\r\n const onSubmit = ({ audienceIds }: SelectAudiencesFormValues, onDone: () => void) =>\r\n props.saveAudiences(audienceIds, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectAudiencesFormValues> initialValues={props.initialValues} onSubmit={onSubmit} enableReinitialize>\r\n <SelectAudiencesForm audiences={props.audiences} />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectAudiences';","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\nimport { BaseObject, AppLink, Actions, ActionOptions } from '@clickview/shared';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { PinState } from './usePinnedVideo';\r\n\r\ninterface ClassificationMemberItemProps<T extends BaseObject> {\r\n item: T;\r\n getItemAppLink: (item: T) => Core.AppLink;\r\n pinState: PinState;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function ClassificationMemberItem<T extends BaseObject>(\r\n props: ClassificationMemberItemProps<T>\r\n): React.ReactElement {\r\n const { item, getItemAppLink, actions, pinState } = props;\r\n\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={getItemAppLink(item)}>{item.name}</AppLink>\r\n </td>\r\n {pinState.isPinnable &&\r\n <td>\r\n <Checkbox\r\n selected={parseInt(item.id) === parseInt(pinState.currentPinnedVideo)}\r\n onToggle={(selected: boolean) => pinState.onChange(selected, item.id)}\r\n id={item.id}\r\n />\r\n </td>\r\n }\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\nimport { BaseObject, Classification, SpinnerButton, ActionOptions } from '@clickview/shared';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport { ClassificationMemberItem } from './ClassificationMemberItem';\r\nimport { usePinnedVideo } from './usePinnedVideo';\r\n\r\ninterface ClassificationMemberListProps<T extends BaseObject> {\r\n items: T[];\r\n memberType: SubjectMemberType;\r\n classification: Classification;\r\n updatePinnedVideo: (id: string, callback: (data: Classification) => void) => void;\r\n getItemAppLink: (item: T) => Core.AppLink;\r\n getActions?: (item: T) => ActionOptions[];\r\n}\r\n\r\nexport function ClassificationMemberList<T extends BaseObject>(\r\n props: ClassificationMemberListProps<T>\r\n): React.ReactElement {\r\n const { items, memberType, classification, getItemAppLink, getActions, updatePinnedVideo } = props;\r\n\r\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\r\n const pinState = usePinnedVideo(classification, memberType);\r\n\r\n if (!items.length)\r\n return <div className='py-5'>{`No ${memberType} in this classification.`}</div>;\r\n\r\n const onSubmit = () => {\r\n setIsSubmitting(true);\r\n updatePinnedVideo(pinState.currentPinnedVideo, () => setIsSubmitting(false));\r\n };\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n return (\r\n <>\r\n <Table responsive>\r\n <thead>\r\n <tr>\r\n <th>{memberHeading}</th>\r\n {pinState.isPinnable && <th>Pinned</th>}\r\n {FunctionHelper.isFunction(getActions) && <th></th>}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {items.map(item =>\r\n <ClassificationMemberItem\r\n item={item}\r\n key={item.id}\r\n getItemAppLink={getItemAppLink}\r\n actions={FunctionHelper.isFunction(getActions) && getActions(item)}\r\n pinState={pinState}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n {pinState.isPinnable && (\r\n <SpinnerButton\r\n showSpinner={isSubmitting}\r\n onClick={onSubmit}\r\n disabled={!pinState.canSubmit || isSubmitting}\r\n >\r\n Save\r\n </SpinnerButton>\r\n )}\r\n </>\r\n );\r\n}","export * from './ClassificationMemberList';","import * as React from 'react';\r\nimport { Classification } from '@clickview/shared';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nexport interface PinState {\r\n currentPinnedVideo: string;\r\n onChange: (selected: boolean, id: string) => void;\r\n canSubmit: boolean;\r\n isPinnable: boolean;\r\n}\r\n\r\nexport function usePinnedVideo(classification: Classification, memberType: SubjectMemberType): PinState {\r\n const initialPinnedVideo = classification.pinnedVideoMasterId || null;\r\n const [ currentPinnedVideo, setCurrentPinnedVideo ] = React.useState(initialPinnedVideo);\r\n\r\n const onChange = (selected: boolean, id: string): void => {\r\n setCurrentPinnedVideo(selected ? id : null);\r\n };\r\n\r\n const isPinnable = memberType === SubjectMemberType.Videos;\r\n const canSubmit = initialPinnedVideo !== currentPinnedVideo;\r\n\r\n return { currentPinnedVideo, onChange, canSubmit, isPinnable };\r\n}","import * as React from 'react';\r\nimport { Classification, FormWrapper } from '@clickview/shared';\r\n\r\nimport { ClassificationValidationSchema } from 'apps/subjects/utils';\r\nimport {\r\n SubjectTree,\r\n ClassificationTree,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\n\r\nimport { EditClassificationDetailsForm } from './EditClassificationDetailsForm';\r\n\r\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\r\n\r\ninterface EditClassificationDetailsProps {\r\n saveClassification: (data: RequestType, onDone: () => void) => void;\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n subjectTree: SubjectTree;\r\n classification?: Classification;\r\n}\r\n\r\nexport function EditClassificationDetails(props: EditClassificationDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<RequestType, Classification>\r\n initialValues={props.classification}\r\n validationSchema={ClassificationValidationSchema}\r\n onSubmit={props.saveClassification}\r\n >\r\n <EditClassificationDetailsForm\r\n id={props.classification && props.classification.id}\r\n presentationId={props.presentationId}\r\n classificationTree={props.classificationTree}\r\n subjectTree={props.subjectTree}\r\n />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Button } from 'react-bootstrap';\r\nimport { ObjectHelper, ArrayHelper } from '@clickview/common';\r\nimport {\r\n ImageType,\r\n AppLink,\r\n Cover,\r\n Banner,\r\n ClassificationType,\r\n SpinnerButton,\r\n FormField,\r\n FormHelper,\r\n useCanSubmitForm\r\n} from '@clickview/shared';\r\n\r\nimport { TreeSelect, ImageSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\nimport {\r\n SubjectTree,\r\n ClassificationTree,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\ntype RequestType = CreateClassificationRequest | UpdateClassificationRequest;\r\n\r\nconst getSubjectAppLink = (subjectId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subjectId]\r\n});\r\n\r\nconst isNodeDisabled = (classificationTree: ClassificationTree, classificationId: string) =>\r\n (node: ClassificationTree) => {\r\n if (node.id === classificationId)\r\n return true;\r\n\r\n const classificationNode = TreeHelper.find(classificationTree, classificationId);\r\n\r\n return !!TreeHelper.find(classificationNode, node.id);\r\n };\r\n\r\ninterface EditClassificationDetailsFormProps {\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n subjectTree: SubjectTree;\r\n id?: string;\r\n}\r\n\r\nexport function EditClassificationDetailsForm(props: EditClassificationDetailsFormProps): React.ReactElement {\r\n const formikProps = useFormikContext<RequestType>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const collapseInitialState = !isNew || !!(formikProps.values.parentIds && formikProps.values.parentIds.length);\r\n\r\n const [ collapseClassificationSelect, setCollapseClassificationSelect ] = React.useState(collapseInitialState);\r\n\r\n React.useEffect(() =>\r\n setCollapseClassificationSelect(collapseInitialState), [ props.id, formikProps.values.parentIds ]);\r\n\r\n /**\r\n * Set subjectIds to 'touched' so that errors will be displayed if no subject is selected.\r\n * On a new subject this will not trigger until a subject has been selected.\r\n */\r\n React.useEffect(() => {\r\n if (formikProps.values.subjectIds.length && !formikProps.touched.subjectIds)\r\n formikProps.setFieldTouched('subjectIds', true);\r\n }, [formikProps.values.subjectIds]);\r\n\r\n const handleParentIdSelect = (item: ClassificationTree) => formikProps.setFieldValue(\r\n 'parentIds',\r\n ArrayHelper.addOrRemove(formikProps.values.parentIds.map(pId => pId.toString()), item.id.toString())\r\n );\r\n\r\n const handleSubjectSelect = (item: SubjectTree) => formikProps.setFieldValue(\r\n 'subjectIds',\r\n ArrayHelper.addOrRemove(formikProps.values.subjectIds.map(sId => sId.toString()), item.id.toString())\r\n );\r\n\r\n const getTreeSelectClassName = (field: keyof RequestType) =>\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, field)} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<RequestType>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this classification'\r\n autoFocus\r\n />\r\n <FormField<RequestType>\r\n as='select'\r\n label='Type'\r\n name='type'\r\n id='type'\r\n value={formikProps.values.type}\r\n >\r\n {ObjectHelper.getEnumKeys(ClassificationType).map((key: ClassificationType) =>\r\n <option key={key} value={ClassificationType[key]}>{key}</option>\r\n )}\r\n </FormField>\r\n <FormField<RequestType>\r\n label='Coming Soon'\r\n name='comingSoon'\r\n id='comingSoon'\r\n type='checkbox'\r\n checked={formikProps.values.comingSoon}\r\n />\r\n <FormField<RequestType>\r\n label='Emphasize'\r\n name='emphasize'\r\n id='emphasize'\r\n type='checkbox'\r\n checked={formikProps.values.emphasize}\r\n />\r\n <FormField<RequestType> name='parentIds'>\r\n {() => (\r\n <div className={getTreeSelectClassName('parentIds')}>\r\n <TreeSelect<ClassificationTree>\r\n label='Parent Classification(s)'\r\n tree={props.classificationTree}\r\n selectedIds={formikProps.values.parentIds}\r\n onSelect={handleParentIdSelect}\r\n collapse={collapseClassificationSelect}\r\n noSelectionMessage='No parent selected, this will be a root classification.'\r\n isNodeDisabled={isNodeDisabled(props.classificationTree, props.id)}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <FormField<RequestType> name='subjectIds'>\r\n {() => (\r\n <div className={getTreeSelectClassName('subjectIds')}>\r\n <TreeSelect<SubjectTree>\r\n label='Mapped Subject(s)'\r\n tree={props.subjectTree}\r\n selectedIds={formikProps.values.subjectIds}\r\n onSelect={handleSubjectSelect}\r\n collapse={!isNew}\r\n getSelectedItemAppLink={getSubjectAppLink}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <ImageSelect\r\n imageType={ImageType.Covers}\r\n currentImage={formikProps.values.cover}\r\n setNewImage={(image: Cover) => formikProps.setFieldValue('cover', image)}\r\n application={AppChannels.SUBJECTS}\r\n uploadAction={Actions.Subjects.UPLOAD_IMAGE}\r\n />\r\n <ImageSelect\r\n imageType={ImageType.Banners}\r\n currentImage={formikProps.values.banner}\r\n setNewImage={(image: Banner) => formikProps.setFieldValue('banner', image)}\r\n application={AppChannels.SUBJECTS}\r\n uploadAction={Actions.Subjects.UPLOAD_IMAGE}\r\n />\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_CLASSIFICATION,\r\n args: [ props.presentationId, props.id ]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditClassificationDetails';","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nconst isItemActive = (memberType?: SubjectMemberType) => (item: NavItem) => {\r\n if (!memberType)\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\r\n\r\n case SubjectMemberType.Series:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\r\n\r\n case SubjectMemberType.Videos:\r\n return item.appLink.action === Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\r\n\r\n }\r\n};\r\n\r\ninterface EditClassificationNavProps {\r\n presentation: Presentation;\r\n classificationId: string;\r\n memberType?: SubjectMemberType;\r\n}\r\n\r\nexport function EditClassificationNav(props: EditClassificationNavProps): React.ReactElement {\r\n const { presentation, classificationId, memberType } = props;\r\n\r\n if (!presentation)\r\n return <></>;\r\n\r\n return (\r\n <>\r\n <h6>{`Presentation: ${!!presentation && presentation.name}`}</h6>\r\n <div className='py-2'>\r\n <Tabs\r\n tabs={SubjectsNavHelper.getEditClassificationTabs(presentation.id, classificationId)}\r\n isItemActive={isItemActive(memberType)}\r\n />\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditClassificationNav';","export * from './classification-member-list';\r\nexport * from './edit-classification-details';\r\nexport * from './edit-classification-nav';\r\nexport * from './select-classifications';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { ArrayHelper } from '@clickview/common';\r\nimport { FormWrapper, FormField, SpinnerButton, FormHelper, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\nconst getClassificationAppLink = (presentationId: string) => (classificationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classificationId ]\r\n});\r\n\r\ninterface SelectClassificationsFormValues {\r\n classificationIds: string[];\r\n}\r\n\r\ninterface SelectClassificationsFormProps {\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\r\n}\r\n\r\nfunction SelectClassificationsForm(props: SelectClassificationsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectClassificationsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n const handleSelect = (item: ClassificationTree) => formikProps.setFieldValue(\r\n 'classificationIds',\r\n ArrayHelper.addOrRemove(formikProps.values.classificationIds.map(id => id.toString()), item.id.toString())\r\n );\r\n\r\n const treeSelectClassName =\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'classificationIds')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectClassificationsFormValues> name='classificationIds'>\r\n {() => (\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<ClassificationTree>\r\n label='Mapped Classification(s)'\r\n tree={props.classificationTree}\r\n selectedIds={formikProps.values.classificationIds}\r\n onSelect={handleSelect}\r\n getSelectedItemAppLink={getClassificationAppLink(props.presentationId)}\r\n isNodeDisabled={props.isClassificationDisabled}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Classifications\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectClassificationsProps {\r\n initialValues: SelectClassificationsFormValues;\r\n presentationId: string;\r\n classificationTree: ClassificationTree;\r\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\r\n isClassificationDisabled?: (classification: ClassificationTree) => boolean;\r\n}\r\n\r\nexport function SelectClassifications(props: SelectClassificationsProps): JSX.Element {\r\n const onSubmit = ({ classificationIds }: SelectClassificationsFormValues, onDone: () => void) =>\r\n props.saveClassifications(classificationIds, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectClassificationsFormValues>\r\n initialValues={props.initialValues}\r\n onSubmit={onSubmit}\r\n enableReinitialize\r\n >\r\n <SelectClassificationsForm\r\n presentationId={props.presentationId}\r\n classificationTree={props.classificationTree}\r\n isClassificationDisabled={props.isClassificationDisabled}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectClassifications';","export * from './audiences';\r\nexport * from './classifications';\r\nexport * from './levels';\r\nexport * from './presentations';\r\nexport * from './subjects';\r\nexport * from './top-nav';\r\n","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormField, SpinnerButton, FormWrapper, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdateLevelRequest, Level } from 'apps/subjects/interfaces';\r\nimport { LevelValidationSchema } from 'apps/subjects/utils';\r\n\r\ninterface EditLevelDetailsFormProps {\r\n id?: string;\r\n}\r\n\r\nexport function EditLevelDetailsForm(props: EditLevelDetailsFormProps): React.ReactElement {\r\n const isNew = props.id === null || props.id === undefined;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateLevelRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateLevelRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this level'\r\n autoFocus\r\n />\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface EditLevelDetailsProps {\r\n level?: Level;\r\n saveLevel: (data: CreateOrUpdateLevelRequest, onDone: () => void) => void;\r\n}\r\n\r\nexport function EditLevelDetails(props: EditLevelDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<CreateOrUpdateLevelRequest>\r\n initialValues={props.level}\r\n validationSchema={LevelValidationSchema}\r\n onSubmit={props.saveLevel}\r\n >\r\n <EditLevelDetailsForm id={props.level && props.level.id} />\r\n </FormWrapper>\r\n );\r\n}","export * from './EditLevelDetails';","export * from './edit-level-details';\r\nexport * from './select-levels';","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { FormWrapper, FormField, SpinnerButton, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\ninterface SelectLevelsFormValues {\r\n levelIds: string[];\r\n addToAudiences: boolean;\r\n}\r\n\r\ninterface SelectLevelsFormProps {\r\n levels: Level[];\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nfunction SelectLevelsForm(props: SelectLevelsFormProps): JSX.Element {\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const formikProps = useFormikContext<SelectLevelsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectLevelsFormValues>\r\n label='Level(s)'\r\n as='select'\r\n name='levelIds'\r\n id='level-ids'\r\n multiple\r\n size={props.levels.length}\r\n value={formikProps.values.levelIds}\r\n >\r\n {props.levels.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </FormField>\r\n <FormField<SelectLevelsFormValues>\r\n label='Automatically add to audiences*'\r\n name='addToAudiences'\r\n id='add-to-audiences'\r\n type='checkbox'\r\n checked={formikProps.values.addToAudiences}\r\n />\r\n <p>\r\n <em>\r\n {\r\n `*If selected, when adding a ${memberType} to a level, all of that level\\'s`\r\n + ' audiences across all presentations will also be added to.'\r\n }\r\n </em>\r\n </p>\r\n <p>\r\n <strong>Note:</strong>{` When removing a ${memberType} from a level, that level's audiences `}\r\n <strong>will not</strong> be automatically removed from.\r\n </p>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Save Levels\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectLevelsProps {\r\n initialValues: SelectLevelsFormValues;\r\n levels: Level[];\r\n memberType: SubjectMemberType;\r\n saveLevels: (levelIds: string[], addToAudiences: boolean, setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function SelectLevels(props: SelectLevelsProps): JSX.Element {\r\n const onSubmit = ({ levelIds, addToAudiences }: SelectLevelsFormValues, onDone: () => void) =>\r\n props.saveLevels(levelIds, addToAudiences, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectLevelsFormValues> initialValues={props.initialValues} onSubmit={onSubmit}>\r\n <SelectLevelsForm levels={props.levels} memberType={props.memberType} />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectLevels';","import * as React from 'react';\r\nimport { Formik, FormikProps, FormikHelpers } from 'formik';\r\n\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\nimport { PresentationValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditPresentationDetailsForm } from './EditPresentationDetailsForm';\r\n\r\ninterface EditPresentationDetailsProps {\r\n presentation?: Presentation;\r\n savePresentation: (\r\n data: CreateOrUpdatePresentationRequest, formikHelpers: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ) => void;\r\n}\r\n\r\nexport function EditPresentationDetails(props: EditPresentationDetailsProps): React.ReactElement {\r\n const { presentation: { id = null, name = '', description = '' } = {}, savePresentation } = props;\r\n\r\n return (\r\n <Formik<CreateOrUpdatePresentationRequest>\r\n initialValues={{ name, description }}\r\n validationSchema={PresentationValidationSchema}\r\n onSubmit={savePresentation}\r\n >\r\n {(formikProps: FormikProps<CreateOrUpdatePresentationRequest>) =>\r\n <EditPresentationDetailsForm id={id} {...formikProps} />\r\n }\r\n </Formik>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, FormikProps } from 'formik';\r\n\r\nimport { FormField, SpinnerButton } from '@clickview/shared';\r\n\r\nimport { CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPresentationDetailsFormProps extends FormikProps<CreateOrUpdatePresentationRequest> {\r\n id?: string;\r\n}\r\n\r\nexport function EditPresentationDetailsForm(props: EditPresentationDetailsFormProps): React.ReactElement {\r\n const { values: { name, description }, id, isSubmitting } = props;\r\n\r\n const isNew = !id;\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdatePresentationRequest>\r\n label='Name'\r\n type='text'\r\n name='name'\r\n id='name'\r\n value={name}\r\n placeholder='Enter a name for this presentation'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdatePresentationRequest>\r\n label='Description'\r\n as='textarea'\r\n name='description'\r\n id='description'\r\n value={description}\r\n placeholder='Describe this presentation here'\r\n />\r\n <SpinnerButton showSpinner={isSubmitting} type='submit'>{isNew ? 'Create' : 'Save'}</SpinnerButton>\r\n </Form>\r\n );\r\n}","export * from './EditPresentationDetails';","export * from './edit-presentation-details';\r\nexport * from './presentation-select';","import * as React from 'react';\r\nimport { Form, FormControlProps } from 'react-bootstrap';\r\nimport { ArrayHelper } from '@clickview/common';\r\nimport { BaseObject } from '@clickview/shared';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getById = (id: string, arr: BaseObject[]) =>\r\n ArrayHelper.first(arr.filter(o => o.id.toString() === id.toString()));\r\n\r\ninterface PresentationSelectProps {\r\n presentations: Presentation[];\r\n currentPresentation?: Presentation;\r\n setCurrentPresentation: (presentation: Presentation) => void;\r\n label?: string;\r\n}\r\n\r\nPresentationSelect.defaultProps = {\r\n label: 'Presentation'\r\n};\r\n\r\nexport function PresentationSelect(props: PresentationSelectProps): React.ReactElement {\r\n const { presentations, currentPresentation, setCurrentPresentation, label } = props;\r\n\r\n const onSelectPresentation = (presentationId: string) => {\r\n const presentation = getById(presentationId, presentations);\r\n setCurrentPresentation(presentation);\r\n };\r\n\r\n // If no currentPresentation is set, set the first one by default.\r\n React.useEffect(() => {\r\n if (!presentations || currentPresentation)\r\n return;\r\n\r\n setCurrentPresentation(presentations[0]);\r\n }, [presentations]);\r\n\r\n return (\r\n <>\r\n {!!currentPresentation &&\r\n <>\r\n <Form.Label>{label}</Form.Label>\r\n <Form.Control\r\n as='select'\r\n value={currentPresentation.id}\r\n onChange={(e: React.ChangeEvent<FormControlProps>) => onSelectPresentation(e.target.value)}\r\n className='cursor-pointer'\r\n >\r\n {presentations.map(p => <option value={p.id} key={p.id}>{p.name}</option>)}\r\n </Form.Control>\r\n </>\r\n }\r\n </>\r\n );\r\n}","export * from './PresentationSelect';","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { AppLink, BaseObject } from '@clickview/shared';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SelectSubjects } from 'apps/subjects/components';\r\n\r\ninterface AddSubjectMembersProps {\r\n memberType: SubjectMemberType;\r\n subjectTree: SubjectTree;\r\n objects: BaseObject[];\r\n onClickAddToSubject: (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void;\r\n}\r\n\r\nexport function AddSubjectMembers(props: AddSubjectMembersProps): React.ReactElement {\r\n return (\r\n <>\r\n <h4>{`${StringHelper.capitalizeFirstLetter(props.memberType)}`}</h4>\r\n <Table responsive>\r\n <tbody>\r\n {props.objects && props.objects.map(o =>\r\n <tr key={o.id}>\r\n <td>\r\n <AppLink appLink={SubjectMemberHelper.getMemberAppLink(props.memberType, o.id)}>{o.name}</AppLink>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n <SelectSubjects\r\n initialValues={{ subjectIds: [], addToClassifications: true }}\r\n subjectTree={props.subjectTree}\r\n saveSubjects={props.onClickAddToSubject}\r\n memberType={props.memberType}\r\n saveBtnText='Add to subject'\r\n subjectRequired\r\n />\r\n </>\r\n );\r\n}","export * from './AddSubjectMembers';","import * as React from 'react';\r\nimport { Subject, Classification } from '@clickview/shared';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SelectSubjects, PresentationSelect, SelectClassifications } from 'apps/subjects/components';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\n\r\ninterface EditObjectSubjectsProps {\r\n objectSubjects: Subject[];\r\n subjectTree: SubjectTree;\r\n saveSubjects: (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => void;\r\n memberType: SubjectMemberType;\r\n presentations: Presentation[];\r\n currentPresentation: Presentation;\r\n setCurrentPresentation: (p: Presentation) => void;\r\n classificationTree: ClassificationTree;\r\n // List of classifications mapped to a subject that the object is mapped to.\r\n objectSubjectClassifications: Classification[];\r\n objectClassifications: Classification[];\r\n saveClassifications: (classificationIds: string[], setSubmittingFalse: () => void) => void;\r\n allowedClassificationIds?: string[];\r\n}\r\n\r\nexport function EditObjectSubjects(props: EditObjectSubjectsProps): JSX.Element {\r\n const singularMemberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const allowedClassificationIds = [\r\n ...props.objectClassifications,\r\n ...props.objectSubjectClassifications\r\n ].map(c => c.id);\r\n\r\n const isClassificationDisabled = (classification: ClassificationTree) =>\r\n !allowedClassificationIds.includes(classification.id);\r\n\r\n return (\r\n <>\r\n <div className='border-bottom pb-3 mb-3'>\r\n <h6>Subjects</h6>\r\n <p>{`Select which subjects this ${singularMemberType} is mapped to.`}</p>\r\n <SelectSubjects\r\n initialValues={{ subjectIds: props.objectSubjects.map(s => s.id) }}\r\n subjectTree={props.subjectTree}\r\n saveSubjects={props.saveSubjects}\r\n memberType={props.memberType}\r\n saveBtnText='Save Subjects'\r\n allowMultiple\r\n />\r\n </div>\r\n <h6>Classifications</h6>\r\n <p>{`Select a presentation to view its classifications and map them to this ${singularMemberType}.`}</p>\r\n <div className='w-50 pb-3'>\r\n <PresentationSelect\r\n presentations={props.presentations}\r\n currentPresentation={props.currentPresentation}\r\n setCurrentPresentation={props.setCurrentPresentation}\r\n />\r\n </div>\r\n {!!props.currentPresentation &&\r\n (!!props.classificationTree && !!props.classificationTree.children.length)\r\n ? <>\r\n <p>Only classifications which are mapped to one of the subjects selected above can be selected.</p>\r\n <SelectClassifications\r\n initialValues={{ classificationIds: props.objectClassifications.map(c => c.id) }}\r\n presentationId={props.currentPresentation.id}\r\n classificationTree={props.classificationTree}\r\n saveClassifications={props.saveClassifications}\r\n isClassificationDisabled={isClassificationDisabled}\r\n />\r\n </>\r\n : <p>This presentation has no classifications.</p>\r\n }\r\n </>\r\n );\r\n}","export * from './EditObjectSubjects';","import * as React from 'react';\r\nimport { Subject, FormWrapper } from '@clickview/shared';\r\n\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectValidationSchema } from 'apps/subjects/utils';\r\n\r\nimport { EditSubjectDetailsForm } from './EditSubjectDetailsForm';\r\n\r\ntype RequestType = CreateOrUpdateSubjectRequest;\r\n\r\ninterface EditSubjectDetailsProps {\r\n saveSubject: (data: RequestType, onDone: () => void) => void;\r\n subjectTree: SubjectTree;\r\n subject?: Subject;\r\n}\r\n\r\nexport function EditSubjectDetails(props: EditSubjectDetailsProps): React.ReactElement {\r\n return (\r\n <FormWrapper<RequestType>\r\n initialValues={props.subject}\r\n validationSchema={SubjectValidationSchema}\r\n onSubmit={props.saveSubject}\r\n >\r\n <EditSubjectDetailsForm id={props.subject && props.subject.id} subjectTree={props.subjectTree} />\r\n </FormWrapper>\r\n );\r\n}","import * as React from 'react';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { Button } from 'react-bootstrap';\r\nimport { FormField, SpinnerButton, AppLink, FormHelper, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\nconst isNodeDisabled = (subjectTree: SubjectTree, subjectId: string) =>\r\n (node: SubjectTree) => {\r\n if (node.id === subjectId)\r\n return true;\r\n\r\n const subjectNode = TreeHelper.find(subjectTree, subjectId);\r\n\r\n return !!TreeHelper.find(subjectNode, node.id);\r\n };\r\n\r\ninterface EditSubjectDetailsFormProps {\r\n id?: string;\r\n subjectTree: SubjectTree;\r\n}\r\n\r\nexport function EditSubjectDetailsForm(props: EditSubjectDetailsFormProps): React.ReactElement {\r\n const isNew = !props.id;\r\n\r\n const formikProps = useFormikContext<CreateOrUpdateSubjectRequest>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n const collapseInitialState = !isNew || !!formikProps.values.parentId;\r\n\r\n const [ collapseParentSelect, setCollapseParentSelect ] = React.useState(collapseInitialState);\r\n\r\n React.useEffect(() => setCollapseParentSelect(collapseInitialState), [ props.id, formikProps.values.parentId ]);\r\n\r\n const onSelectParent = (item: SubjectTree) => {\r\n const newParentId = item.id === formikProps.values.parentId\r\n ? null\r\n : item.id;\r\n\r\n formikProps.setFieldValue('parentId', newParentId);\r\n };\r\n\r\n const treeSelectClassName = `${FormHelper.getCustomFormControlClassName(\r\n formikProps.errors, formikProps.touched, 'parentId')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateOrUpdateSubjectRequest>\r\n label='Name'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Enter a name for this subject'\r\n autoFocus\r\n />\r\n <FormField<CreateOrUpdateSubjectRequest> name='parentId'>\r\n {() =>\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<SubjectTree>\r\n label='Parent Subject'\r\n tree={props.subjectTree}\r\n selectedIds={[formikProps.values.parentId]}\r\n onSelect={onSelectParent}\r\n collapse={collapseParentSelect}\r\n noSelectionMessage='No parent selected, this will be a root subject.'\r\n isNodeDisabled={isNodeDisabled(props.subjectTree, props.id)}\r\n />\r\n </div>\r\n }\r\n </FormField>\r\n <div className='d-flex justify-content-between'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {isNew ? 'Create' : 'Save'}\r\n </SpinnerButton>\r\n {!isNew &&\r\n <Button\r\n as={AppLink}\r\n variant='danger'\r\n appLink={{\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_SUBJECT,\r\n args: [props.id]\r\n }}\r\n >\r\n Delete\r\n </Button>\r\n }\r\n </div>\r\n </Form>\r\n );\r\n}","export * from './EditSubjectDetails';","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditSubjectNavProps {\r\n subjectId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditSubjectNav({ subjectId, activeAction }: EditSubjectNavProps): React.ReactElement {\r\n return (\r\n <>\r\n <Alert variant='danger'>\r\n Warning: You are editing the backbone subjects.\r\n </Alert>\r\n <div className='py-2'>\r\n <Tabs tabs={SubjectsNavHelper.getEditSubjectTabs(subjectId)} isItemActive={isItemActive(activeAction)} />\r\n </div>\r\n </>\r\n );\r\n}","export * from './EditSubjectNav';","export * from './add-subject-members';\r\nexport * from './edit-object-subjects';\r\nexport * from './edit-subject-details';\r\nexport * from './edit-subject-nav';\r\nexport * from './select-subjects';\r\nexport * from './subject-classifications';\r\nexport * from './subject-member-list';","import * as React from 'react';\r\nimport * as Yup from 'yup';\r\nimport { Form, useFormikContext } from 'formik';\r\nimport { ArrayHelper } from '@clickview/common';\r\nimport { FormWrapper, FormField, SpinnerButton, FormHelper, useCanSubmitForm } from '@clickview/shared';\r\n\r\nimport { TreeSelect } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getValidationSchema = (subjectRequired: boolean) => Yup.object().shape<SelectSubjectsFormValues>({\r\n subjectIds: subjectRequired\r\n ? Yup.array().of(Yup.string())\r\n .min(1, 'A subject is required')\r\n .required('A subject is required')\r\n : Yup.array().of(Yup.string()),\r\n\r\n addToClassifications: Yup.boolean()\r\n .default(true)\r\n\r\n}).noUnknown();\r\n\r\nconst getSubjectAppLink = (subjectId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subjectId]\r\n});\r\n\r\ninterface SelectSubjectsFormValues {\r\n subjectIds: string[];\r\n addToClassifications?: boolean;\r\n}\r\n\r\ninterface SelectSubjectsFormProps {\r\n subjectTree: SubjectTree;\r\n memberType: SubjectMemberType;\r\n allowMultiple?: boolean;\r\n saveBtnText?: string;\r\n}\r\n\r\nSelectSubjectsForm.defaultProps = {\r\n saveBtnText: 'Save'\r\n};\r\n\r\nfunction SelectSubjectsForm(props: SelectSubjectsFormProps): JSX.Element {\r\n const formikProps = useFormikContext<SelectSubjectsFormValues>();\r\n\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n const handleSelect = (item: SubjectTree) => {\r\n const subjectIds = props.allowMultiple\r\n ? ArrayHelper.addOrRemove(formikProps.values.subjectIds.map(id => id.toString()), item.id.toString())\r\n : [item.id];\r\n\r\n formikProps.setFieldValue('subjectIds', subjectIds);\r\n };\r\n\r\n const memberType = SubjectMemberHelper.singularizeMemberType(props.memberType);\r\n\r\n const treeSelectClassName =\r\n `${FormHelper.getCustomFormControlClassName(formikProps.errors, formikProps.touched, 'subjectIds')} h-auto py-2`;\r\n\r\n return (\r\n <Form>\r\n <FormField<SelectSubjectsFormValues> name='subjectIds'>\r\n {() => (\r\n <div className={treeSelectClassName}>\r\n <TreeSelect<SubjectTree>\r\n label={`Mapped Subject${props.allowMultiple ? '(s)' : ''}`}\r\n tree={props.subjectTree}\r\n selectedIds={formikProps.values.subjectIds}\r\n onSelect={handleSelect}\r\n collapse={!!formikProps.initialValues.subjectIds.length}\r\n getSelectedItemAppLink={getSubjectAppLink}\r\n />\r\n </div>\r\n )}\r\n </FormField>\r\n <FormField<SelectSubjectsFormValues>\r\n label='Automatically add to classifications*'\r\n name='addToClassifications'\r\n id='add-to-classifications'\r\n type='checkbox'\r\n checked={formikProps.values.addToClassifications}\r\n />\r\n <p>\r\n <em>\r\n {\r\n `*If selected, when adding a ${memberType} to a subject, all of that subject\\'s`\r\n + ' mapped classifications across all presentations will also be added to.'\r\n }\r\n </em>\r\n </p>\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n {props.saveBtnText}\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface SelectSubjectsProps {\r\n initialValues: SelectSubjectsFormValues;\r\n saveSubjects: (subjectIds: string[], addToClassifications: boolean, onDone: () => void) => void;\r\n subjectTree: SubjectTree;\r\n memberType: SubjectMemberType;\r\n subjectRequired?: boolean;\r\n allowMultiple?: boolean;\r\n saveBtnText?: string;\r\n}\r\n\r\nexport function SelectSubjects(props: SelectSubjectsProps): JSX.Element {\r\n const onSubmit = ({ subjectIds, addToClassifications }: SelectSubjectsFormValues, onDone: () => void) =>\r\n props.saveSubjects(subjectIds, addToClassifications, onDone);\r\n\r\n return (\r\n <FormWrapper<SelectSubjectsFormValues>\r\n initialValues={props.initialValues}\r\n validationSchema={getValidationSchema(props.subjectRequired)}\r\n onSubmit={onSubmit}\r\n >\r\n <SelectSubjectsForm\r\n subjectTree={props.subjectTree}\r\n memberType={props.memberType}\r\n allowMultiple={props.allowMultiple}\r\n saveBtnText={props.saveBtnText}\r\n />\r\n </FormWrapper>\r\n );\r\n}","export * from './SelectSubjects';","import * as React from 'react';\r\nimport { Classification, AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nconst getClassificationAppLink = (presentationId: string, classificationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classificationId ]\r\n});\r\n\r\ninterface PresentationClassificationsProps {\r\n presentation: Presentation;\r\n classifications: Classification[];\r\n}\r\n\r\nconst PresentationClassifications = (props: PresentationClassificationsProps) => (\r\n <div className='border rounded p-2 mb-3'>\r\n <h6 className='border-bottom pb-1'>{props.presentation.name}</h6>\r\n {(props.classifications && props.classifications.length)\r\n ? <ul className='list-unstyled mb-0'>\r\n {props.classifications.map(c =>\r\n <li key={c.id} className='py-1'>\r\n <AppLink appLink={getClassificationAppLink(props.presentation.id, c.id)}>\r\n {c.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n : <p><em>There are no classifications mapped to this subject in this presentation.</em></p>\r\n }\r\n </div>\r\n);\r\n\r\ninterface SubjectClassificationsProps {\r\n presentations: Presentation[];\r\n classificationDictionary: { [presentationId: string]: Classification[] };\r\n}\r\n\r\nexport const SubjectClassifications = (props: SubjectClassificationsProps) => (\r\n <>\r\n {!!props.presentations && !!props.classificationDictionary && props.presentations.map(p =>\r\n <PresentationClassifications\r\n key={p.id}\r\n presentation={p}\r\n classifications={props.classificationDictionary[p.id]}\r\n />\r\n )}\r\n </>\r\n);","export * from './SubjectClassifications';","import * as React from 'react';\r\nimport { Core, FunctionHelper, DevError } from '@clickview/common';\r\nimport { AppLink, Actions, ActionOptions } from '@clickview/shared';\r\n\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { SubjectMemberViewModel } from './SubjectMemberList';\r\n\r\ninterface SubjectMemberItemProps {\r\n member: SubjectMemberViewModel;\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n onToggleClassification: (classificationId: string, selected: boolean, memberId: string) => void;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function SubjectMemberItem(props: SubjectMemberItemProps): React.ReactElement {\r\n const {\r\n member: { id, name, classifications = []},\r\n getMemberAppLink,\r\n onToggleClassification,\r\n actions\r\n } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getMemberAppLink) && getMemberAppLink(id);\r\n\r\n if (classifications.length && !FunctionHelper.isFunction(onToggleClassification))\r\n Core.ErrorHelper.throw(new DevError('onToggleClassification must be passed to SubjectMemberItem'));\r\n\r\n return (\r\n <tr>\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={getMemberAppLink(id)}>{name}</AppLink>\r\n : name\r\n }\r\n </td>\r\n {!!classifications.length && classifications.map(c =>\r\n <td key={c.id}>\r\n <Checkbox\r\n selected={c.selected}\r\n onToggle={(s: boolean) => onToggleClassification(c.id, s, id)}\r\n />\r\n </td>\r\n )}\r\n {actions &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={actions} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\nimport { Classification, CollectionHelper, ActionOptions } from '@clickview/shared';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\n\r\nimport { SubjectMemberListHeader } from './SubjectMemberListHeader';\r\nimport { SubjectMemberItem } from './SubjectMemberItem';\r\n\r\nfunction allClassificationMembersSelected(\r\n memberType: SubjectMemberType,\r\n members: SubjectMemberViewModel[]\r\n): (classification: Classification) => boolean {\r\n return (classification: Classification) => {\r\n const classificationMembers = (classification as any)[memberType];\r\n\r\n const numSelectedMembers = CollectionHelper.length(classificationMembers);\r\n\r\n return !!numSelectedMembers && numSelectedMembers === members.length;\r\n };\r\n}\r\n\r\ntype ClassificationViewModel = { id: string, selected: boolean };\r\n\r\nexport interface SubjectMemberViewModel {\r\n id: string;\r\n name: string;\r\n classifications?: ClassificationViewModel[];\r\n}\r\n\r\ninterface SubjectMemberListProps {\r\n members: SubjectMemberViewModel[];\r\n memberType: SubjectMemberType;\r\n classifications: Classification[];\r\n getMemberAppLink: (memberId: string) => Core.AppLink;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n onToggleClassification: (classificationId: string, selected: boolean, memberId?: string) => void;\r\n getActions?: (itemId: string) => ActionOptions[];\r\n}\r\n\r\nexport function SubjectMemberList(props: SubjectMemberListProps): React.ReactElement {\r\n const {\r\n members,\r\n memberType,\r\n getActions,\r\n classifications,\r\n getClassificationAppLink,\r\n onToggleClassification,\r\n ...itemProps\r\n } = props;\r\n\r\n if (!members.length)\r\n return <div className='py-5'>{`No ${memberType} in this subject.`}</div>;\r\n\r\n const hasActions = FunctionHelper.isFunction(getActions);\r\n\r\n const headerProps = {\r\n memberType,\r\n classifications,\r\n getClassificationAppLink,\r\n getIsClassificationSelected: allClassificationMembersSelected(memberType, members),\r\n onToggleClassification,\r\n hasActions\r\n };\r\n\r\n return (\r\n <Table responsive bordered>\r\n <SubjectMemberListHeader {...headerProps} />\r\n <tbody>\r\n {members.map((member, idx) =>\r\n <SubjectMemberItem\r\n key={idx}\r\n member={member}\r\n actions={hasActions && getActions(member.id)}\r\n onToggleClassification={onToggleClassification}\r\n {...itemProps}\r\n />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, } from '@clickview/common';\r\nimport { AppLink, Classification } from '@clickview/shared';\r\n\r\nimport { StringHelper } from 'shared/utils';\r\nimport { Checkbox } from 'shared/components';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nconst getClassificationLabel = (c: Classification, showClassificationSubHeader: boolean) =>\r\n showClassificationSubHeader ? c.name : `Classification: ${c.name}`;\r\n\r\ninterface ClassificationHeaderColumnsProps {\r\n classifications: Classification[];\r\n getIsClassificationSelected: (classification: Classification) => boolean;\r\n onToggleClassification: (classificationId: string, selected: boolean) => void;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n showClassificationSubHeader: boolean;\r\n}\r\n\r\nfunction ClassificationHeaderColumns(props: ClassificationHeaderColumnsProps): React.ReactElement {\r\n return (\r\n <>\r\n {props.classifications.map(c =>\r\n <th key={c.id}>\r\n <span className='d-inline-block'>\r\n <Checkbox\r\n selected={props.getIsClassificationSelected(c)}\r\n onToggle={(selected: boolean) => props.onToggleClassification(c.id, selected)}\r\n />\r\n </span>\r\n <AppLink appLink={props.getClassificationAppLink(c.id)}>\r\n {getClassificationLabel(c, props.showClassificationSubHeader)}\r\n </AppLink>\r\n </th>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\ninterface SubjectMemberListHeaderProps {\r\n memberType: SubjectMemberType;\r\n hasActions: boolean;\r\n classifications: Classification[];\r\n getIsClassificationSelected: (classification: Classification) => boolean;\r\n onToggleClassification: (classificationId: string, selected: boolean) => void;\r\n getClassificationAppLink: (classificationId: string) => Core.AppLink;\r\n}\r\n\r\nexport function SubjectMemberListHeader(props: SubjectMemberListHeaderProps): React.ReactElement {\r\n const { memberType, hasActions, classifications, ...otherProps } = props;\r\n\r\n const memberHeading =\r\n `${StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType))} Name`;\r\n\r\n const hasClassifications = !!classifications && !!classifications.length;\r\n\r\n const showClassificationSubHeader = hasClassifications && classifications.length > 1;\r\n\r\n const rowSpan = hasClassifications ? 2 : 1;\r\n\r\n const classificationColumnsProps = { classifications, showClassificationSubHeader, ...otherProps };\r\n\r\n return (\r\n <thead>\r\n <tr>\r\n <th rowSpan={rowSpan}>{memberHeading}</th>\r\n {hasClassifications && (showClassificationSubHeader\r\n ? <th colSpan={classifications.length} className='text-center'>Classifications</th>\r\n : <ClassificationHeaderColumns {...classificationColumnsProps} />\r\n )}\r\n {hasActions && <th rowSpan={rowSpan}></th>}\r\n </tr>\r\n {hasClassifications && showClassificationSubHeader &&\r\n <tr>\r\n <ClassificationHeaderColumns {...classificationColumnsProps} />\r\n </tr>\r\n }\r\n </thead>\r\n );\r\n}","export * from './SubjectMemberList';","import * as React from 'react';\r\nimport { Navbar, Nav, Container } from 'react-bootstrap';\r\nimport { Core } from '@clickview/common';\r\nimport { AppLink } from '@clickview/shared';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\nimport { NavHelper } from 'shared/utils';\r\n\r\nexport interface TopNavProps {\r\n navItems: NavItem[];\r\n currentAppLink: Core.AppLink;\r\n}\r\n\r\nexport function TopNav({ navItems, currentAppLink }: TopNavProps): React.ReactElement {\r\n return (\r\n <Container>\r\n <Navbar className='justify-content-between align-items-center'>\r\n <Nav>\r\n {!!navItems && navItems.map((item, idx) =>\r\n <Nav.Item key={idx}>\r\n <Nav.Link\r\n as={AppLink}\r\n appLink={item.appLink}\r\n active={NavHelper.isItemActive(item, currentAppLink)}\r\n className={NavHelper.isItemActive(item, currentAppLink) ? 'text-primary' : ''}\r\n >\r\n {item.label}\r\n </Nav.Link>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n </Navbar>\r\n </Container>\r\n );\r\n}","export * from './TopNav';","import * as React from 'react';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\ntype IPresentationContent = [ Presentation, React.Dispatch<React.SetStateAction<Presentation>> ];\r\n\r\nexport const PresentationContext = React.createContext<IPresentationContent>(undefined);\r\n\r\nexport function PresentationContextProvider({ children }: React.PropsWithChildren<{}>): React.ReactElement {\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n return (\r\n <PresentationContext.Provider value={[ presentation, setPresentation ]}>\r\n {children}\r\n </PresentationContext.Provider>\r\n );\r\n}","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nimport { PresentationContextProvider } from 'apps/subjects/context';\r\n\r\nexport const SubjectsAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <PresentationContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </PresentationContextProvider>\r\n </UserContextProvider>\r\n);","export * from './PresentationContext';\r\nexport * from './SubjectsAppContext';","export enum OwnerType {\r\n Subject,\r\n Classification\r\n}","export enum SubjectMemberType {\r\n Playlists = 'playlists',\r\n Series = 'series',\r\n Videos = 'videos'\r\n}","export enum SubjectNodeType {\r\n Root = '0'\r\n}\r\n\r\nexport enum ClassificationNodeType {\r\n Root = 'root'\r\n}","export * from './OwnerType';\r\nexport * from './SubjectMemberType';\r\nexport * from './SubjectNodeType';","import * as React from 'react';\r\nimport { ArrayHelper } from '@clickview/common';\r\nimport { StateHelper } from '@clickview/shared';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\ninterface StateWithPresentations {\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n}\r\n\r\nexport function useSetDefaultPresentation<T extends StateWithPresentations>(\r\n state: T, setState: React.Dispatch<React.SetStateAction<T>>\r\n): void {\r\n React.useEffect(() => {\r\n // If there is already a current presentation, we don't want to set a default.\r\n if (!state.presentations || state.currentPresentation)\r\n return;\r\n\r\n // Set the first presentation.\r\n StateHelper.getSetStateByKey(setState, 'currentPresentation')(ArrayHelper.first(state.presentations));\r\n }, [state.presentations]);\r\n}","export * from './UseSetDefaultPresentation';","import { BaseDataService, DataServiceError, FetchOptions } from '@clickview/common';\r\nimport {\r\n Subject,\r\n BasePaginatedCollection,\r\n BaseObject,\r\n CacheDurations,\r\n Classification,\r\n PresentationAudience\r\n} from '@clickview/shared';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nimport {\r\n SubjectTree,\r\n Presentation,\r\n ClassificationTree,\r\n CreateOrUpdatePresentationRequest,\r\n CreateClassificationRequest,\r\n UpdateClassificationRequest,\r\n CreateOrUpdateSubjectRequest,\r\n CreateOrUpdateLevelRequest,\r\n CreateOrUpdateAudienceRequest\r\n} from 'apps/subjects/interfaces';\r\n\r\nimport { SubjectNodeType, ClassificationNodeType, SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Level } from 'apps/subjects/interfaces';\r\n\r\nconst endpoints = {\r\n getSubjectTree: () => `/api/subjects/v1/subjects/tree`,\r\n\r\n getSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n getSubjectMembers: (id: string, memberType: SubjectMemberType) =>\r\n `/api/subjects/v1/subjects/${id}/${memberType}?query={limit:100}`,\r\n\r\n getSubjectClassifications: (subjectId: string, presentationId?: string, memberType?: SubjectMemberType) => {\r\n let url = `/api/subjects/v1/subjects/${subjectId}/classifications`;\r\n\r\n const params = [];\r\n\r\n if (presentationId)\r\n params.push(`presentationId=${presentationId}`);\r\n\r\n if (memberType)\r\n params.push(`query=${memberType}{limit:100}`);\r\n\r\n if (!params.length)\r\n return url;\r\n\r\n return `${url}?${params.join('&')}`;\r\n },\r\n\r\n createSubject: () => `/api/subjects/v1/subjects`,\r\n\r\n updateSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n deleteSubject: (id: string) => `/api/subjects/v1/subjects/${id}`,\r\n\r\n getObjectSubjects: (id: string) => `/api/subjects/v1/objects/${id}/subjects`,\r\n\r\n updateObjectSubjects: (id: string, addToClassifications?: boolean) =>\r\n `/api/subjects/v1/objects/${id}/subjects?addToClassifications=${!!addToClassifications}`,\r\n\r\n addObjectsToSubject: (subjectId: string, addToClassifications?: boolean) =>\r\n `/api/subjects/v1/subjects/${subjectId}/objects?addToClassifications=${!!addToClassifications}`,\r\n\r\n removeObjectsFromSubject: (subjectId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/subjects/${subjectId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getPresentations: () => `/api/subjects/v1/presentations`,\r\n\r\n getPresentation: (id: string) => `/api/subjects/v1/presentations/${id}`,\r\n\r\n createPresentation: () => `/api/subjects/v1/presentations`,\r\n\r\n updatePresentation: (id: string) => `/api/subjects/v1/presentations/${id}`,\r\n\r\n getClassificationTree: (presentationId: string) =>\r\n `/api/subjects/v1/presentations/${presentationId}/classifications/tree`,\r\n\r\n getClassification: (id: string) => `/api/subjects/v1/classifications/${id}?query=cover,banner`,\r\n\r\n getClassificationMembers: (id: string, memberType: SubjectMemberType) =>\r\n `/api/subjects/v1/classifications/${id}/${memberType}?query={limit:100}`,\r\n\r\n createClassification: () => `/api/subjects/v1/classifications`,\r\n\r\n updateClassification: (id: string) => `/api/subjects/v1/classifications/${id}`,\r\n\r\n deleteClassification: (id: string) => `/api/subjects/v1/classifications/${id}`,\r\n\r\n getObjectClassifications: (id: string) => `/api/subjects/v1/objects/${id}/classifications`,\r\n\r\n updateObjectClassifications: (id: string, presentationId: string) =>\r\n `/api/subjects/v1/objects/${id}/classifications?presentationId=${presentationId}`,\r\n\r\n addObjectsToClassification: (classificationId: string) =>\r\n `/api/subjects/v1/classifications/${classificationId}/objects`,\r\n\r\n removeObjectsFromClassification: (classificationId: string, objectIds: string[]) =>\r\n `/api/subjects/v1/classifications/${classificationId}/objects?${objectIds.map(id => `objectId=${id}`).join('&')}`,\r\n\r\n getLevels: () => `/api/subjects/v1/levels`,\r\n\r\n getLevel: (id: string) => `/api/subjects/v1/levels/${id}`,\r\n\r\n createLevel: () => `/api/subjects/v1/levels`,\r\n\r\n updateLevel: (id: string) => `/api/subjects/v1/levels/${id}`,\r\n\r\n getObjectLevels: (id: string) => `/api/subjects/v1/objects/${id}/levels`,\r\n\r\n updateObjectLevels: (id: string, addToAudiences?: boolean) =>\r\n `/api/subjects/v1/objects/${id}/levels?addToAudiences=${!!addToAudiences}`,\r\n\r\n getAudiences: (presentationId: string) => `/api/subjects/v1/presentations/${presentationId}/audiences`,\r\n\r\n getAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n createAudience: () => `/api/subjects/v1/audiences`,\r\n\r\n updateAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n deleteAudience: (id: string) => `/api/subjects/v1/audiences/${id}`,\r\n\r\n getObjectAudiences: (id: string) => `/api/subjects/v1/objects/${id}/audiences`,\r\n\r\n updateObjectAudiences: (id: string, presentationId: string) =>\r\n `/api/subjects/v1/objects/${id}/audiences?presentationId=${presentationId}`\r\n};\r\n\r\nconst getSubjectClassificationsEventPrefix = (\r\n subjectId: string, presentationId?: string, memberType?: SubjectMemberType\r\n) => {\r\n let eventPrefix = `${DataPrefixes.SUBJECT}:${subjectId}`;\r\n\r\n if (presentationId)\r\n eventPrefix += `:${presentationId}`;\r\n\r\n eventPrefix += `:${DataPrefixes.CLASSIFICATIONS}`;\r\n\r\n if (memberType)\r\n eventPrefix += `:${memberType}`;\r\n\r\n return eventPrefix;\r\n};\r\n\r\nexport class SubjectDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.SUBJECT;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.SUBJECT;\r\n }\r\n\r\n public getPresentations(callback?: (data: Presentation[]) => void, errorCallback?: () => void): Presentation[] {\r\n return this.get<Presentation[]>({\r\n resource: endpoints.getPresentations(),\r\n eventPrefix: DataPrefixes.PRESENTATIONS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getPresentation(\r\n id: string, callback?: (data: Presentation) => void, errorCallback?: () => void\r\n ): Presentation {\r\n return this.get<Presentation>({\r\n resource: endpoints.getPresentation(id),\r\n eventPrefix: `${DataPrefixes.PRESENTATION}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createPresentation(\r\n data: CreateOrUpdatePresentationRequest,\r\n callback?: (data: Presentation) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Presentation>({\r\n resource: endpoints.createPresentation(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.PRESENTATION,\r\n invalidationKeys: [DataPrefixes.PRESENTATIONS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created presentation.'),\r\n errorHandler: this.alertService.error('Failed to create presentation.')\r\n });\r\n }\r\n\r\n public updatePresentation(\r\n id: string,\r\n data: CreateOrUpdatePresentationRequest,\r\n callback?: (data: Presentation) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Presentation>({\r\n resource: endpoints.updatePresentation(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_PRESENTATION}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.PRESENTATION}:${id}`, DataPrefixes.PRESENTATIONS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated presentation.'),\r\n errorHandler: this.alertService.error('Failed to update presentation.')\r\n });\r\n }\r\n\r\n public getSubjectTree(callback?: (data: SubjectTree) => void, errorCallback?: () => void): SubjectTree {\r\n return this.get<SubjectTree>({\r\n resource: endpoints.getSubjectTree(),\r\n formatData: (response: any) => ({ children: response, name: SubjectNodeType.Root, id: null }),\r\n eventPrefix: DataPrefixes.SUBJECTS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubject(\r\n id: string, callback?: (data: Subject) => void, errorCallback?: () => void\r\n ): Subject {\r\n return this.get<Subject>({\r\n resource: endpoints.getSubject(id),\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubjectMemberIds(\r\n subjectId: string, memberType: SubjectMemberType, callback?: (data: string[]) => void, errorCallback?: () => void\r\n ): string[] {\r\n return this.get<string[]>({\r\n resource: endpoints.getSubjectMembers(subjectId, memberType),\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getSubjectClassifications(\r\n subjectId: string,\r\n presentationId?: string,\r\n memberType?: SubjectMemberType,\r\n callback?: (data: Classification[]) => void,\r\n errorCallback?: () => void\r\n ): Classification[] {\r\n return this.get<Classification[]>({\r\n resource: endpoints.getSubjectClassifications(subjectId, presentationId, memberType),\r\n eventPrefix: getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType),\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createSubject(\r\n data: CreateOrUpdateSubjectRequest,\r\n callback?: (data: Subject) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Subject>({\r\n resource: endpoints.createSubject(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.SUBJECT,\r\n invalidationKeys: [DataPrefixes.SUBJECTS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created subject.'),\r\n errorHandler: this.alertService.error('Failed to create subject.')\r\n });\r\n }\r\n\r\n public updateSubject(\r\n id: string,\r\n data: CreateOrUpdateSubjectRequest,\r\n callback?: (data: Subject) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Subject>({\r\n resource: endpoints.updateSubject(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_SUBJECT}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.SUBJECT}:${id}`, DataPrefixes.SUBJECTS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated subject.'),\r\n errorHandler: this.alertService.error('Failed to save subject.')\r\n });\r\n }\r\n\r\n public deleteSubject(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteSubject(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_SUBJECT,\r\n invalidationKeys: [ `${DataPrefixes.SUBJECT}:${id}`, DataPrefixes.SUBJECTS ],\r\n successHandler: this.alertService.success('Successfully deleted subject'),\r\n errorHandler: this.alertService.error('Failed to delete subject')\r\n });\r\n }\r\n\r\n public getObjectSubjects(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Subject[]) => void,\r\n errorCallback?: () => void\r\n ): Subject[] {\r\n return this.get<Subject[]>({\r\n resource: endpoints.getObjectSubjects(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.SUBJECTS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectSubjects(\r\n objectId: string,\r\n subjectIds: string[],\r\n memberType: SubjectMemberType,\r\n addToClassifications?: boolean,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.SUBJECTS}`];\r\n\r\n if (addToClassifications)\r\n invalidationKeys.push(`${memberType}:${objectId}:${DataPrefixes.CLASSIFICATIONS}`);\r\n\r\n invalidationKeys.push(...subjectIds.map(id => `${DataPrefixes.SUBJECTS}:${id}:${memberType}`));\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectSubjects(objectId, addToClassifications),\r\n data: subjectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_SUBJECTS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} subjects.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} subjects.`)\r\n });\r\n }\r\n\r\n public addObjectsToSubject(\r\n subjectId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n addToClassifications?: boolean,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.SUBJECTS}`),\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`)\r\n ];\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToSubject(subjectId, addToClassifications),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_SUBJECT}:${subjectId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to subject.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to subject.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromSubject(\r\n subjectId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [\r\n `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n ...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.SUBJECTS}`)\r\n ];\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromSubject(subjectId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_SUBJECT}:${subjectId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from subject.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from subject.`)\r\n });\r\n }\r\n\r\n public getClassificationTree(\r\n presentationId: string, callback?: (data: ClassificationTree) => void, errorCallback?: () => void\r\n ): ClassificationTree {\r\n return this.get<ClassificationTree>({\r\n resource: endpoints.getClassificationTree(presentationId),\r\n formatData: (response: any) => ({ children: response, name: ClassificationNodeType.Root, id: null }),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATIONS}:${presentationId}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getClassification(\r\n id: string, callback?: (data: Classification) => void, errorCallback?: () => void\r\n ): Classification {\r\n return this.get<Classification>({\r\n resource: endpoints.getClassification(id),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getClassificationMembers(\r\n classificationId: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: BasePaginatedCollection<BaseObject>) => void,\r\n errorCallback?: () => void\r\n ): BasePaginatedCollection<BaseObject> {\r\n return this.get<BasePaginatedCollection<BaseObject>>({\r\n resource: endpoints.getClassificationMembers(classificationId, memberType),\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createClassification(\r\n data: CreateClassificationRequest,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create<Classification>({\r\n resource: endpoints.createClassification(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.CLASSIFICATION,\r\n invalidationKeys: [DataPrefixes.CLASSIFICATIONS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created classification.'),\r\n errorHandler: this.alertService.error('Failed to create classification.')\r\n });\r\n }\r\n\r\n public updateClassification(\r\n id: string,\r\n data: UpdateClassificationRequest,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Classification>({\r\n resource: endpoints.updateClassification(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_CLASSIFICATION}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.CLASSIFICATION}:${id}`, DataPrefixes.CLASSIFICATIONS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated classification.'),\r\n errorHandler: this.alertService.error('Failed to save classification.')\r\n });\r\n }\r\n\r\n public deleteClassification(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteClassification(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_CLASSIFICATION,\r\n invalidationKeys: [ `${DataPrefixes.CLASSIFICATION}:${id}`, DataPrefixes.CLASSIFICATIONS ],\r\n successHandler: this.alertService.success('Successfully deleted classification'),\r\n errorHandler: this.alertService.error('Failed to delete classification')\r\n });\r\n }\r\n\r\n public getObjectClassifications(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Classification[]) => void,\r\n errorCallback?: () => void\r\n ): Level[] {\r\n return this.get<Classification[]>({\r\n resource: endpoints.getObjectClassifications(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectClassifications(\r\n objectId: string,\r\n presentationId: string,\r\n classificationIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.CLASSIFICATIONS}`];\r\n\r\n invalidationKeys.push(...classificationIds.map(id => `${DataPrefixes.CLASSIFICATION}:${id}:${memberType}`));\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectClassifications(objectId, presentationId),\r\n data: classificationIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_CLASSIFICATIONS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} classifications.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} classifications.`)\r\n });\r\n }\r\n\r\n public addObjectsToClassification(\r\n classificationId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n subjectId?: string,\r\n presentationId?: string,\r\n callback?: (data: Classification) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [`${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`];\r\n\r\n if (subjectId)\r\n invalidationKeys.push(getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType));\r\n\r\n invalidationKeys.push(...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`));\r\n\r\n return this.create({\r\n resource: endpoints.addObjectsToClassification(classificationId),\r\n data: objectIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.ADD_TO_CLASSIFICATION}:${classificationId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully added ${alertMemberName} to classification.`),\r\n errorHandler: this.alertService.error(`Failed to add ${alertMemberName} to classification.`)\r\n });\r\n }\r\n\r\n public removeObjectsFromClassification(\r\n classificationId: string,\r\n objectIds: string[],\r\n memberType: SubjectMemberType,\r\n subjectId?: string,\r\n presentationId?: string,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = objectIds.length === 1\r\n ? SubjectMemberHelper.singularizeMemberType(memberType)\r\n : memberType;\r\n\r\n const invalidationKeys = [`${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`];\r\n\r\n if (subjectId)\r\n invalidationKeys.push(getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType));\r\n\r\n invalidationKeys.push(...objectIds.map(id => `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`));\r\n\r\n return this.delete({\r\n resource: endpoints.removeObjectsFromClassification(classificationId, objectIds),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.REMOVE_FROM_CLASSIFICATION}:${classificationId}:${memberType}`,\r\n invalidationKeys,\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success(`Successfully removed ${alertMemberName} from classification.`),\r\n errorHandler: this.alertService.error(`Failed to remove ${alertMemberName} from classification.`)\r\n });\r\n }\r\n\r\n public getLevels(callback?: (data: Level[]) => void, errorCallback?: () => void): Level[] {\r\n return this.get<Level[]>({\r\n resource: endpoints.getLevels(),\r\n eventPrefix: DataPrefixes.LEVELS,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getLevel(id: string, callback?: (data: Level) => void, errorCallback?: () => void): Level {\r\n return this.get<Level>({\r\n resource: endpoints.getLevel(id),\r\n eventPrefix: `${DataPrefixes.LEVEL}:${id}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public createLevel(\r\n data: CreateOrUpdateLevelRequest, callback?: (data: Level) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<Level>({\r\n resource: endpoints.createLevel(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.LEVEL,\r\n invalidationKeys: [DataPrefixes.LEVELS],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created level.'),\r\n errorHandler: this.alertService.error('Failed to create level.')\r\n });\r\n }\r\n\r\n public updateLevel(\r\n id: string,\r\n data: CreateOrUpdateLevelRequest,\r\n callback?: (data: Level) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<Level>({\r\n resource: endpoints.updateLevel(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_LEVEL}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.LEVEL}:${id}`, DataPrefixes.LEVELS ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated level.'),\r\n errorHandler: this.alertService.error('Failed to save level.')\r\n });\r\n }\r\n\r\n public getObjectLevels(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: Level[]) => void,\r\n errorCallback?: () => void\r\n ): Level[] {\r\n return this.get<Level[]>({\r\n resource: endpoints.getObjectLevels(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.LEVELS}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectLevels(\r\n objectId: string,\r\n levelsIds: string[],\r\n memberType: SubjectMemberType,\r\n addToAudiences?: boolean,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n const invalidationKeys = [`${memberType}:${objectId}:${DataPrefixes.LEVELS}`];\r\n\r\n if (addToAudiences)\r\n invalidationKeys.push(`${memberType}:${objectId}:${DataPrefixes.AUDIENCES}`);\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectLevels(objectId, addToAudiences),\r\n data: levelsIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_LEVELS}:${objectId}`,\r\n invalidationKeys,\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} levels.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} levels.`)\r\n });\r\n }\r\n\r\n public getAudiences(\r\n presentationId: string, callback?: (data: PresentationAudience[]) => void, errorCallback?: () => void\r\n ): PresentationAudience[] {\r\n return this.get<PresentationAudience[]>({\r\n resource: endpoints.getAudiences(presentationId),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.AUDIENCES}:${presentationId}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public getAudience(\r\n id: string, callback?: (data: PresentationAudience) => void, errorCallback?: () => void\r\n ): PresentationAudience {\r\n return this.get<PresentationAudience>({\r\n resource: endpoints.getAudience(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.AUDIENCE}:${id}`,\r\n expiryTime: CacheDurations.STANDARD\r\n });\r\n }\r\n\r\n public createAudience(\r\n data: CreateOrUpdateAudienceRequest, callback?: (data: PresentationAudience) => void, errorCallback?: () => void\r\n ): void {\r\n return this.create<PresentationAudience>({\r\n resource: endpoints.createAudience(),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.AUDIENCE,\r\n invalidationKeys: [DataPrefixes.AUDIENCES],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully created audience.'),\r\n errorHandler: this.alertService.error('Failed to create audience.')\r\n });\r\n }\r\n\r\n public updateAudience(\r\n id: string,\r\n data: CreateOrUpdateAudienceRequest,\r\n callback?: (data: PresentationAudience) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.update<PresentationAudience>({\r\n resource: endpoints.updateAudience(id),\r\n data,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_AUDIENCE}:${id}`,\r\n invalidationKeys: [ `${DataPrefixes.AUDIENCE}:${id}`, DataPrefixes.AUDIENCES ],\r\n expiryTime: CacheDurations.STANDARD,\r\n successHandler: this.alertService.success('Successfully updated audience.'),\r\n errorHandler: this.alertService.error('Failed to update audience.')\r\n });\r\n }\r\n\r\n public deleteAudience(id: string, callback?: () => void, errorCallback?: () => void): void {\r\n return this.delete({\r\n resource: endpoints.deleteAudience(id),\r\n callback,\r\n errorCallback,\r\n eventPrefix: DataPrefixes.DELETE_AUDIENCE,\r\n invalidationKeys: [ `${DataPrefixes.AUDIENCE}:${id}`, DataPrefixes.AUDIENCES ],\r\n successHandler: this.alertService.success('Successfully deleted audience'),\r\n errorHandler: this.alertService.error('Failed to delete audience')\r\n });\r\n }\r\n\r\n public getObjectAudiences(\r\n id: string,\r\n memberType: SubjectMemberType,\r\n callback?: (data: PresentationAudience[]) => void,\r\n errorCallback?: () => void\r\n ): PresentationAudience[] {\r\n return this.get<PresentationAudience[]>({\r\n resource: endpoints.getObjectAudiences(id),\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.AUDIENCES}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public updateObjectAudiences(\r\n objectId: string,\r\n presentationId: string,\r\n audienceIds: string[],\r\n memberType: SubjectMemberType,\r\n callback?: () => void,\r\n errorCallback?: () => void\r\n ): void {\r\n const alertMemberName = SubjectMemberHelper.singularizeMemberType(memberType);\r\n\r\n return this.update({\r\n resource: endpoints.updateObjectAudiences(objectId, presentationId),\r\n data: audienceIds,\r\n callback,\r\n errorCallback,\r\n eventPrefix: `${DataPrefixes.UPDATE_OBJECT_AUDIENCES}:${objectId}`,\r\n invalidationKeys: [`${memberType}:${objectId}:${DataPrefixes.AUDIENCES}`],\r\n successHandler: this.alertService.success(`Successfully updated ${alertMemberName} audiences.`),\r\n errorHandler: this.alertService.error(`Failed to update ${alertMemberName} audiences.`)\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.SUBJECT,\r\n dataChannelName: DataChannels.SUBJECT\r\n};\r\n\r\nexport const SubjectDataServiceHelper = {\r\n getSubjectTreeFetchOptions: (\r\n setData: (data: SubjectTree) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.SUBJECTS,\r\n fetchData: (d: SubjectDataService) => d.getSubjectTree(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getSubjectFetchOptions: (\r\n id: string, setData: (data: Subject) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getSubject(id),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_SUBJECT\r\n }),\r\n\r\n getSubjectMemberIdsFetchOptions: (\r\n subjectId: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: string[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.SUBJECT}:${subjectId}:${memberType}`,\r\n fetchData: (d: SubjectDataService) => d.getSubjectMemberIds(subjectId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getSubjectClassificationFetchOptions: (\r\n subjectId: string,\r\n setData: (data: Classification[]) => void,\r\n presentationId?: string,\r\n memberType?: SubjectMemberType,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: getSubjectClassificationsEventPrefix(subjectId, presentationId, memberType),\r\n fetchData: (d: SubjectDataService) => d.getSubjectClassifications(subjectId, presentationId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectSubjectsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Subject[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.SUBJECTS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectSubjects(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPresentationsFetchOptions: (\r\n setData: (data: Presentation[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.PRESENTATIONS,\r\n fetchData: (d: SubjectDataService) => d.getPresentations(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getPresentationFetchOptions: (\r\n id: string, setData: (data: Presentation) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.PRESENTATION}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getPresentation(id),\r\n setData,\r\n onError\r\n }),\r\n\r\n getClassificationTreeFetchOptions: (\r\n presentationId: string, setData: (data: ClassificationTree) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATIONS}:${presentationId}`,\r\n fetchData: (d: SubjectDataService) => d.getClassificationTree(presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getClassificationFetchOptions: (\r\n id: string, setData: (data: Classification) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getClassification(id),\r\n setData,\r\n onError,\r\n deleteEventPrefix: DataPrefixes.DELETE_CLASSIFICATION\r\n }),\r\n\r\n getClassificationMembersFetchOptions: (\r\n classificationId: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: BasePaginatedCollection<BaseObject>) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.CLASSIFICATION}:${classificationId}:${memberType}`,\r\n fetchData: (d: SubjectDataService) => d.getClassificationMembers(classificationId, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectClassificationsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Classification[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.CLASSIFICATIONS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectClassifications(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelsFetchOptions: (\r\n setData: (data: Level[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.LEVELS,\r\n fetchData: (d: SubjectDataService) => d.getLevels(),\r\n setData,\r\n onError\r\n }),\r\n\r\n getLevelFetchOptions: (\r\n levelId: string, setData: (data: Level) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.LEVEL}:${levelId}`,\r\n fetchData: (d: SubjectDataService) => d.getLevel(levelId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectLevelsFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: Level[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.LEVELS}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectLevels(id, memberType),\r\n setData,\r\n onError\r\n }),\r\n\r\n getAudiencesFetchOptions: (\r\n presentationId: string, setData: (data: PresentationAudience[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.AUDIENCES}:${presentationId}`,\r\n fetchData: (d: SubjectDataService) => d.getAudiences(presentationId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getAudienceFetchOptions: (\r\n id: string, setData: (data: PresentationAudience) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.AUDIENCE}:${id}`,\r\n fetchData: (d: SubjectDataService) => d.getAudience(id),\r\n setData,\r\n onError\r\n }),\r\n\r\n getObjectAudiencesFetchOptions: (\r\n id: string,\r\n memberType: SubjectMemberType,\r\n setData: (data: PresentationAudience[]) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${memberType}:${id}:${DataPrefixes.AUDIENCES}`,\r\n fetchData: (d: SubjectDataService) => d.getObjectAudiences(id, memberType),\r\n setData,\r\n onError\r\n })\r\n};","export * from './SubjectDataService';","import { Core } from '@clickview/common';\r\nimport { ActionOptions } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\n\r\nexport const SubjectMemberHelper = {\r\n singularizeMemberType(memberType: SubjectMemberType): string {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return 'playlist';\r\n\r\n case SubjectMemberType.Series:\r\n return 'series';\r\n\r\n case SubjectMemberType.Videos:\r\n return 'video';\r\n }\r\n },\r\n\r\n getMemberAppLink(memberType: SubjectMemberType, memberId: string): Core.AppLink {\r\n const args = [memberId];\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return {\r\n application: AppChannels.PLAYLISTS,\r\n action: Actions.Playlists.EDIT_PLAYLIST,\r\n args\r\n };\r\n\r\n case SubjectMemberType.Series:\r\n return {\r\n application: AppChannels.SERIES,\r\n action: Actions.Series.EDIT_SERIES,\r\n args\r\n };\r\n\r\n case SubjectMemberType.Videos:\r\n return {\r\n application: AppChannels.VIDEOS,\r\n action: Actions.Videos.EDIT_VIDEO,\r\n args\r\n };\r\n }\r\n },\r\n\r\n getMemberActions(\r\n subjectId: string, ownerType: OwnerType, memberType: SubjectMemberType, memberId: string\r\n ): ActionOptions[] {\r\n return [\r\n {\r\n label: `Remove ${SubjectMemberHelper.singularizeMemberType(memberType)}`,\r\n appLink: {\r\n application: AppChannels.SUBJECTS,\r\n action: ownerType === OwnerType.Subject\r\n ? Actions.Subjects.REMOVE_SUBJECT_MEMBER\r\n : Actions.Subjects.REMOVE_CLASSIFICATION_MEMBER,\r\n args: [ subjectId, memberId, memberType ]\r\n },\r\n className: 'text-danger'\r\n }\r\n ];\r\n }\r\n};","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const SubjectsNavHelper = {\r\n getTopNavItems(): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Classifications',\r\n appLink: { application, action: actions.CLASSIFICATIONS },\r\n activeActions: [\r\n actions.CLASSIFICATIONS,\r\n actions.PRESENTATION_CLASSIFICATIONS,\r\n actions.NEW_CLASSIFICATION,\r\n actions.EDIT_CLASSIFICATION,\r\n actions.EDIT_CLASSIFICATION_PLAYLISTS,\r\n actions.EDIT_CLASSIFICATION_SERIES,\r\n actions.EDIT_CLASSIFICATION_VIDEOS,\r\n actions.DELETE_CLASSIFICATION,\r\n actions.REMOVE_CLASSIFICATION_MEMBER\r\n ]\r\n },\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.SUBJECTS },\r\n activeActions: [\r\n actions.SUBJECTS,\r\n actions.NEW_SUBJECT,\r\n actions.EDIT_SUBJECT,\r\n actions.EDIT_SUBJECT_PLAYLISTS,\r\n actions.EDIT_SUBJECT_SERIES,\r\n actions.EDIT_SUBJECT_VIDEOS,\r\n actions.SUBJECT_CLASSIFICATIONS,\r\n actions.DELETE_SUBJECT,\r\n actions.ADD_SUBJECT_MEMBERS,\r\n actions.REMOVE_SUBJECT_MEMBER\r\n ]\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.AUDIENCES },\r\n activeActions: [\r\n actions.AUDIENCES,\r\n actions.PRESENTATION_AUDIENCES,\r\n actions.NEW_AUDIENCE,\r\n actions.EDIT_AUDIENCE\r\n ]\r\n },\r\n {\r\n label: 'Levels',\r\n appLink: { application, action: actions.LEVELS },\r\n activeActions: [\r\n actions.LEVELS,\r\n actions.NEW_LEVEL,\r\n actions.EDIT_LEVEL\r\n ]\r\n },\r\n {\r\n label: 'Presentations',\r\n appLink: { application, action: actions.PRESENTATIONS },\r\n activeActions: [ actions.PRESENTATIONS, actions.NEW_PRESENTATION, actions.EDIT_PRESENTATION ]\r\n }\r\n ];\r\n },\r\n\r\n getEditSubjectTabs(subjectId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Subject Details',\r\n appLink: { application, action: actions.EDIT_SUBJECT, args: [subjectId]}\r\n },\r\n {\r\n label: 'Classifications',\r\n appLink: { application, action: actions.SUBJECT_CLASSIFICATIONS, args: [subjectId]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: { application, action: actions.EDIT_SUBJECT_PLAYLISTS, args: [subjectId]}\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_SUBJECT_SERIES, args: [subjectId]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_SUBJECT_VIDEOS, args: [subjectId]}\r\n }\r\n ];\r\n },\r\n\r\n getEditClassificationTabs(presentationId: string, classificationId: string): NavItem[] {\r\n const application = AppChannels.SUBJECTS;\r\n const actions = Actions.Subjects;\r\n\r\n return [\r\n {\r\n label: 'Edit Classification Details',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION, args: [ presentationId, classificationId ]}\r\n },\r\n {\r\n label: 'Playlists',\r\n appLink: {\r\n application, action: actions.EDIT_CLASSIFICATION_PLAYLISTS, args: [ presentationId, classificationId ]\r\n }\r\n },\r\n {\r\n label: 'Series',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION_SERIES, args: [ presentationId, classificationId ]}\r\n },\r\n {\r\n label: 'Videos',\r\n appLink: { application, action: actions.EDIT_CLASSIFICATION_VIDEOS, args: [ presentationId, classificationId ]}\r\n }\r\n ];\r\n }\r\n};","export * from './validation';\r\nexport * from './SubjectMemberHelper';\r\nexport * from './SubjectsNavHelper';","import * as Yup from 'yup';\r\nimport { CreateOrUpdateAudienceRequest } from 'apps/subjects/interfaces';\r\n\r\n// Omitting presentationId as it is not controlled in the form.\r\ntype Schema = Omit<CreateOrUpdateAudienceRequest, 'presentationId'>;\r\n\r\nexport const AudienceValidationSchema = Yup.object().shape<Schema>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n levelIds: Yup.array().of(Yup.string())\r\n .required('A level is required')\r\n .default([])\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\nimport { Cover, Banner, ClassificationType, FileIdType } from '@clickview/shared';\r\n\r\nimport { UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\nimport { ClassificationNodeType } from 'apps/subjects/enums';\r\n\r\nexport const ClassificationValidationSchema = Yup.object().shape<UpdateClassificationRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n parentIds: Yup.array().of(Yup.string())\r\n .default([ClassificationNodeType.Root]),\r\n\r\n subjectIds: Yup.array().of(Yup.string())\r\n .min(1, 'A classification must be mapped to at least one subject')\r\n .required('A classification must be mapped to at least one subject')\r\n .default([]),\r\n\r\n type: Yup.mixed<ClassificationType>()\r\n .required('Type is required')\r\n .default(ClassificationType.Subject),\r\n\r\n emphasize: Yup.boolean()\r\n .default(false),\r\n\r\n comingSoon: Yup.boolean()\r\n .default(true),\r\n\r\n cover: Yup.object()\r\n .shape<Cover>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown(),\r\n\r\n banner: Yup.object()\r\n .shape<Banner>({\r\n fileId: Yup.string(),\r\n fileIdType: Yup.mixed<FileIdType>(),\r\n url: Yup.string()\r\n })\r\n .default({})\r\n .noUnknown()\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\nexport const LevelValidationSchema = Yup.object().shape<CreateOrUpdateLevelRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default('')\r\n\r\n}).noUnknown();","import * as Yup from 'yup';\r\n\r\nexport const PresentationValidationSchema = Yup.object().shape({\r\n name: Yup.string()\r\n .max(255, 'Name is too long')\r\n .required('Name is required'),\r\n description: Yup.string()\r\n .max(65535, 'Description is too long')\r\n .required('Description is required'),\r\n});","import * as Yup from 'yup';\r\n\r\nimport { CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectNodeType } from 'apps/subjects/enums';\r\n\r\nexport const SubjectValidationSchema = Yup.object().shape<CreateOrUpdateSubjectRequest>({\r\n name: Yup.string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n\r\n parentId: Yup.string()\r\n .default(SubjectNodeType.Root)\r\n\r\n}).noUnknown();","export * from './AudienceValidation';\r\nexport * from './ClassificationValidation';\r\nexport * from './LevelValidation';\r\nexport * from './PresentationValidation';\r\nexport * from './SubjectValidation';","import * as React from 'react';\r\nimport { Core, useFetch, useService } from '@clickview/common';\r\nimport { PresentationAudience, Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\n\r\nconst getButtons = (deleteAudience: () => void, close: () => void, showSpinner: boolean): PopupButton[] => ([\r\n {\r\n variant: 'link',\r\n onClick: close,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteAudience,\r\n buttonText: 'Yes, delete this audience',\r\n isSpinnerButton: true,\r\n showSpinner: showSpinner\r\n }\r\n]);\r\n\r\ninterface DeleteAudienceViewProps {\r\n id: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteAudienceView(props: DeleteAudienceViewProps & PopupViewProps): React.ReactElement {\r\n const { id, routeToOnDelete, closePopup } = props;\r\n\r\n const [ audience, setAudience ] = React.useState<PresentationAudience>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getAudienceFetchOptions(id, setAudience), [id]);\r\n\r\n const deleteAudience = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteAudience(id, onSuccess, closePopup);\r\n };\r\n\r\n return (\r\n <Popup title='Delete Audience' closePopup={closePopup} showLoadingSpinner={!audience}>\r\n {!!audience &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{audience.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={getButtons(deleteAudience, closePopup, showButtonSpinner)} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteAudienceView';","import * as React from 'react';\r\nimport { useService, useFetch } from '@clickview/common';\r\nimport { PresentationAudience } from '@clickview/shared';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditAudienceDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdateAudienceRequest, Level } from 'apps/subjects/interfaces';\r\n\r\nconst getAudiencesAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n});\r\n\r\ninterface EditAudienceViewProps {\r\n presentationId: string;\r\n audienceId: string;\r\n}\r\n\r\nexport function EditAudienceView({ presentationId, audienceId }: EditAudienceViewProps): React.ReactElement {\r\n const [ audience, setAudience ] = React.useState<PresentationAudience>();\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getAudienceFetchOptions(audienceId, setAudience), [audienceId]);\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), [presentationId]);\r\n\r\n const saveAudience = (data: CreateOrUpdateAudienceRequest, onDone: () => void) =>\r\n subjectDataService.updateAudience(audienceId, { ...data, presentationId }, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <BackButton appLink={getAudiencesAppLink(presentationId)} backToName='audiences' />\r\n </div>\r\n {!!presentation && <h6>{`Presentation: ${presentation.name}`}</h6>}\r\n {!!audience && !!levels &&\r\n <EditAudienceDetails\r\n audience={audience}\r\n levels={levels}\r\n saveAudience={saveAudience}\r\n presentationId={presentationId}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditAudienceView';","import * as React from 'react';\r\nimport { useFetch } from '@clickview/common';\r\nimport { SvgContainer, SvgContainerSize, cvSvgLibrary, PresentationAudience, AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAudienceAppLink = (presentationId: string) => (audience: PresentationAudience) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, audience.masterId ]\r\n});\r\n\r\nconst getNewAudienceAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_AUDIENCE,\r\n args: [presentationId]\r\n});\r\n\r\nconst selectPresentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.AUDIENCES\r\n};\r\n\r\ninterface EditAudiencesListViewProps {\r\n presentationId: string;\r\n}\r\n\r\nexport function EditAudiencesListView(props: EditAudiencesListViewProps): React.ReactElement {\r\n const { presentationId } = props;\r\n\r\n const [ audiences, setAudiences ] = React.useState<PresentationAudience[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getAudiencesFetchOptions(presentationId, setAudiences), []);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <BackButton appLink={selectPresentationAppLink} backToName='presentations' />\r\n </div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select an audience to edit:</h5>\r\n <AppLink appLink={getNewAudienceAppLink(presentationId)} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Audience</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav\r\n objects={audiences}\r\n getAppLink={getAudienceAppLink(props.presentationId)}\r\n // \\u002B is the unicode number for &plus\r\n emptyMessage={'There are no audiences in this presentation yet. Click \\'\\u002B New Audience\\' to create one.'}\r\n />\r\n </>\r\n );\r\n}","export * from './EditAudiencesListView';","export * from './delete-audience';\r\nexport * from './edit-audience';\r\nexport * from './edit-audiences-list';\r\nexport * from './new-audience';","import * as React from 'react';\r\nimport { Core, useService, useFetch } from '@clickview/common';\r\nimport { PresentationAudience } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions, DataServices } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { EditAudienceDetails } from 'apps/subjects/components';\r\nimport { Presentation, Level, CreateOrUpdateAudienceRequest } from 'apps/subjects/interfaces';\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAudiencesAppLink = (presentationId: string) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATION_AUDIENCES,\r\n args: [presentationId]\r\n});\r\n\r\nconst onCreateSuccess = (presentationId: string, onDone: () => void) => (newAudience: PresentationAudience) => {\r\n onDone();\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_AUDIENCE,\r\n args: [ presentationId, newAudience.masterId ]\r\n });\r\n};\r\n\r\ninterface NewAudienceViewProps {\r\n presentationId: string;\r\n}\r\n\r\nexport function NewAudienceView({ presentationId }: NewAudienceViewProps): React.ReactElement {\r\n const [ levels, setLevels ] = React.useState<Level[]>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), [presentationId]);\r\n\r\n const saveAudience = (data: CreateOrUpdateAudienceRequest, onDone: () => void) =>\r\n subjectDataService.createAudience(\r\n { ...data, presentationId }, onCreateSuccess(presentationId, onDone), onDone\r\n );\r\n\r\n return (\r\n <>\r\n <div className='pb-2'>\r\n <BackButton appLink={getAudiencesAppLink(presentationId)} backToName='audiences' />\r\n </div>\r\n {!!presentation && <h6>{`Presentation: ${presentation.name}`}</h6>}\r\n {!!levels && <EditAudienceDetails levels={levels} presentationId={presentationId} saveAudience={saveAudience} />}\r\n </>\r\n );\r\n}","export * from './NewAudienceView';","import { Core, useBulkFetch } from '@clickview/common';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { TreeNodeAction } from 'shared/components';\r\n\r\nimport { ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nexport function useFetchData(\r\n presentationId: string,\r\n setClassificationTree: (data: ClassificationTree) => void,\r\n setPresentation: (data: Presentation) => void\r\n): void {\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const presentationFetchOptions =\r\n SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation);\r\n\r\n useBulkFetch([ classificationTreeFetchOptions, presentationFetchOptions ], [presentationId]);\r\n}\r\n\r\nexport function getClassificationAppLink(presentationId: string, classification: ClassificationTree): Core.AppLink {\r\n return {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, classification.id ]\r\n };\r\n}\r\n\r\nexport function getNewClassificationAppLink(presentationId: string): Core.AppLink {\r\n return {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_CLASSIFICATION,\r\n args: [presentationId]\r\n };\r\n}\r\n\r\nexport function getActions(presentationId: string): TreeNodeAction<ClassificationTree>[] {\r\n return [\r\n {\r\n label: 'Add child',\r\n getAppLink: (c: ClassificationTree) => ({\r\n ...getNewClassificationAppLink(presentationId),\r\n args: [presentationId],\r\n params: { parentId: c.id }\r\n })\r\n },\r\n {\r\n label: 'Delete classification',\r\n getAppLink: (c: ClassificationTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_CLASSIFICATION,\r\n args: [ presentationId, c.id ]\r\n }),\r\n className: 'text-danger'\r\n }\r\n ];\r\n}","import * as React from 'react';\r\nimport { cvSvgLibrary, AppLink, SvgContainer, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport { Tree } from 'shared/components';\r\n\r\nimport { ClassificationTree, Presentation } from 'apps/subjects/interfaces';\r\n\r\nimport { getNewClassificationAppLink, getClassificationAppLink, getActions, useFetchData } from './ClassificationNavUtils';\r\nimport styles from './classification-nav.scss';\r\n\r\ninterface ClassificationNavViewProps {\r\n presentationId: string;\r\n selectedClassificationId?: string;\r\n}\r\n\r\nexport function ClassificationNavView(props: ClassificationNavViewProps): React.ReactElement {\r\n const { presentationId, selectedClassificationId } = props;\r\n\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n useFetchData(presentationId, setClassificationTree, setPresentation);\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n {!!presentation && <h6 className='border-bottom pb-2'>{`Classifications (${presentation.name})`}</h6>}\r\n <AppLink appLink={getNewClassificationAppLink(presentationId)} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Classification</span>\r\n </AppLink>\r\n {!!classificationTree &&\r\n <div className='border-top pt-1'>\r\n <Tree<ClassificationTree>\r\n tree={classificationTree}\r\n getAppLink={\r\n (classification: ClassificationTree) => getClassificationAppLink(presentationId, classification)\r\n }\r\n selectedIds={[selectedClassificationId]}\r\n actions={getActions(presentationId)}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--11O8h\"};","export * from './ClassificationNavView';","import * as React from 'react';\r\nimport { Core, useFetch, useService } from '@clickview/common';\r\nimport { Classification, Popup, PopupButtons, PopupButton, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\ninterface DeleteClassificationViewProps {\r\n classificationId: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteClassificationView(props: DeleteClassificationViewProps & PopupViewProps): React.ReactElement {\r\n const { classificationId, routeToOnDelete, closePopup } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification), []);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const deleteClassification = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteClassification(classificationId, onSuccess, closePopup);\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteClassification,\r\n buttonText: 'Yes, delete this classification',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title='Delete Classification' closePopup={closePopup} showLoadingSpinner={!classification}>\r\n {!!classification &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{classification.name}</strong>?</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteClassificationView';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\nimport { BaseObject, Classification, BasePaginatedCollection } from '@clickview/shared';\r\n\r\nimport { PropHelper } from 'shared/utils';\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { EditClassificationNav, ClassificationMemberList } from 'apps/subjects/components';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Presentation, UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditClassificationMembersViewProps {\r\n presentationId: string;\r\n classificationId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nexport function EditClassificationMembersView(props: EditClassificationMembersViewProps): React.ReactElement {\r\n const { presentationId, classificationId, memberType } = props;\r\n\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ members, setMembers ] = React.useState<BasePaginatedCollection<BaseObject>>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation), []);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationFetchOptions(\r\n classificationId, setClassification), [classificationId]);\r\n\r\n useFetch(SubjectDataServiceHelper.getClassificationMembersFetchOptions(\r\n classificationId, memberType, setMembers), [ classificationId, memberType ]);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const updatePinnedVideo = (id: string, callback: (data: Classification) => void): void => {\r\n const requestObject: UpdateClassificationRequest = {\r\n ...classification,\r\n pinnedVideoMasterId: id\r\n };\r\n subjectDataService.updateClassification(classificationId, requestObject, callback);\r\n };\r\n\r\n const classificationMemberListProps = {\r\n items: members && members.data,\r\n memberType,\r\n classification,\r\n updatePinnedVideo,\r\n getItemAppLink: (item: BaseObject) => SubjectMemberHelper.getMemberAppLink(memberType, item.id),\r\n getActions: (item: BaseObject) =>\r\n SubjectMemberHelper.getMemberActions(classificationId, OwnerType.Classification, memberType, item.id)\r\n };\r\n\r\n const headerProps = { presentation, classificationId };\r\n\r\n const dataLoaded = PropHelper.propsLoaded(classificationMemberListProps);\r\n\r\n return (\r\n <>\r\n <EditClassificationNav {...headerProps} memberType={memberType} />\r\n {dataLoaded &&\r\n <ClassificationMemberList {...classificationMemberListProps} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditClassificationMembersView';","import * as React from 'react';\r\nimport { useFetch, useService, useBulkFetch } from '@clickview/common';\r\nimport { Classification } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { PropHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditClassificationDetails, EditClassificationNav } from 'apps/subjects/components';\r\nimport { Presentation, ClassificationTree, SubjectTree, UpdateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditClassificationViewProps {\r\n presentationId: string;\r\n classificationId: string;\r\n}\r\n\r\nexport function EditClassificationView(props: EditClassificationViewProps): React.ReactElement {\r\n const { presentationId, classificationId } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const classificationFetchOptions =\r\n SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification);\r\n\r\n const presentationFetchOptions =\r\n SubjectDataServiceHelper.getPresentationFetchOptions(presentationId, setPresentation);\r\n\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(classificationFetchOptions, [classificationId]);\r\n useBulkFetch([ presentationFetchOptions, classificationTreeFetchOptions ], [presentationId]);\r\n\r\n const saveClassification = (data: UpdateClassificationRequest, onDone: () => void): void =>\r\n subjectDataService.updateClassification(classificationId, data, onDone, onDone);\r\n\r\n return (\r\n <div>\r\n <EditClassificationNav presentation={presentation} classificationId={classificationId} />\r\n {!!classification && !!classificationTree && !!subjectTree &&\r\n <EditClassificationDetails\r\n classification={classification}\r\n presentationId={presentationId}\r\n subjectTree={subjectTree}\r\n classificationTree={classificationTree}\r\n saveClassification={saveClassification}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './EditClassificationView';","export * from './classification-nav';\r\nexport * from './delete-classification';\r\nexport * from './edit-classification';\r\nexport * from './edit-classification-members';\r\nexport * from './new-classification';\r\nexport * from './remove-classification-member';","import * as React from 'react';\r\nimport { Core, useFetch, useService } from '@clickview/common';\r\nimport { Classification } from '@clickview/shared';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditClassificationDetails } from 'apps/subjects/components';\r\nimport { ClassificationTree, SubjectTree, CreateClassificationRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (presentationId: string, onDone: () => void) => (newClassification: Classification) => {\r\n onDone();\r\n\r\n if (!newClassification || !newClassification.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_CLASSIFICATION,\r\n args: [ presentationId, newClassification.id ]\r\n });\r\n};\r\n\r\ninterface NewClassificationViewProps {\r\n presentationId: string;\r\n parentId?: string;\r\n}\r\n\r\nexport function NewClassificationView(props: NewClassificationViewProps): React.ReactElement {\r\n const { presentationId, parentId } = props;\r\n\r\n const [ classificationTree, setClassificationTree ] = React.useState<ClassificationTree>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const classificationTreeFetchOptions =\r\n SubjectDataServiceHelper.getClassificationTreeFetchOptions(presentationId, setClassificationTree);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(classificationTreeFetchOptions, [presentationId]);\r\n\r\n const saveClassification = (data: CreateClassificationRequest, onDone: () => void): void =>\r\n subjectDataService.createClassification(\r\n { ...data, presentationId }, onCreateSuccess(presentationId, onDone), onDone\r\n );\r\n\r\n return (\r\n <div>\r\n <h4 className='py-2'>Create New Classification</h4>\r\n {!!subjectTree && !!classificationTree &&\r\n <EditClassificationDetails\r\n classification={(parentId ? { parentIds: [parentId]} : {}) as Classification}\r\n presentationId={presentationId}\r\n subjectTree={subjectTree}\r\n classificationTree={classificationTree}\r\n saveClassification={saveClassification}\r\n />\r\n }\r\n </div>\r\n );\r\n}","export * from './NewClassificationView';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\nimport {\r\n Video,\r\n Series,\r\n BaseObject,\r\n Playlist,\r\n Classification,\r\n Popup,\r\n PopupButton,\r\n PopupButtons,\r\n PopupViewProps\r\n} from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { PlaylistDataServiceHelper } from 'apps/playlists/services';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SeriesDataServiceHelper } from 'apps/series/services';\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\n\r\nconst getMemberFetchOptions = (\r\n memberType: SubjectMemberType, memberId: string, setMember: (data: BaseObject) => void\r\n) => {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistDataServiceHelper.getPlaylistFetchOptions(memberId, setMember);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesDataServiceHelper.getSeriesFetchOptions(memberId, setMember);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoDataServiceHelper.getVideoFetchOptions(memberId, setMember);\r\n }\r\n};\r\n\r\nconst getPopupButtons = (\r\n closePopup: () => void, removeMember: () => void, memberType: SubjectMemberType, showButtonSpinner: boolean\r\n): PopupButton[] => ([\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeMember,\r\n buttonText: `Yes, remove this ${SubjectMemberHelper.singularizeMemberType(memberType)}`,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n]);\r\n\r\ninterface RemoveClassificationMemberViewProps {\r\n classificationId: string;\r\n memberId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\ntype MemberType = Playlist | Series | Video;\r\n\r\ntype PropTypes = RemoveClassificationMemberViewProps & PopupViewProps;\r\n\r\nexport function RemoveClassificationMemberView(props: PropTypes): React.ReactElement {\r\n const { classificationId, memberId, memberType, closePopup } = props;\r\n\r\n const [ classification, setClassification ] = React.useState<Classification>();\r\n const [ member, setMember ] = React.useState<MemberType>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(getMemberFetchOptions(memberType, memberId, setMember), [memberId]);\r\n useFetch(\r\n SubjectDataServiceHelper.getClassificationFetchOptions(classificationId, setClassification),\r\n [classificationId]\r\n );\r\n\r\n const removeMember = () => {\r\n setShowButtonSpinner(true);\r\n\r\n subjectDataService.removeObjectsFromClassification(\r\n classificationId, [memberId], memberType, null, null, closePopup, closePopup);\r\n\r\n if (classification.pinnedVideoMasterId === memberId) {\r\n subjectDataService.updateClassification(classificationId, {\r\n ...classification,\r\n pinnedVideoMasterId: null\r\n });\r\n }\r\n };\r\n\r\n const dataLoaded = !!classification && !!member;\r\n\r\n const popupTitle = `Remove ${StringHelper.capitalizeFirstLetter(\r\n SubjectMemberHelper.singularizeMemberType(memberType))}`;\r\n\r\n return (\r\n <Popup title={popupTitle} closePopup={closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {member.name}</strong> from <strong>{classification.name}</strong>?\r\n </p>\r\n <p>This will not remove it from the backbone subject.</p>\r\n </div>\r\n <PopupButtons buttons={getPopupButtons(closePopup, removeMember, memberType, showButtonSpinner)} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveClassificationMemberView';","export * from './audiences';\r\nexport * from './classifications';\r\nexport * from './levels';\r\nexport * from './presentations';\r\nexport * from './subjects';\r\nexport * from './top-nav';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { PropHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditLevelDetails } from 'apps/subjects/components';\r\nimport { Level, CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditLevelViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditLevelView({ id }: EditLevelViewProps): React.ReactElement {\r\n const [ level, setLevel ] = React.useState<Level>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelFetchOptions(id, setLevel), [id]);\r\n\r\n const saveLevel = (data: CreateOrUpdateLevelRequest, onDone: () => void) =>\r\n subjectDataService.updateLevel(id, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Level</h4>\r\n {!!level && <EditLevelDetails level={level} saveLevel={saveLevel} />}\r\n </>\r\n );\r\n}","export * from './EditLevelView';","import * as React from 'react';\r\nimport { useFetch } from '@clickview/common';\r\nimport { cvSvgLibrary, AppLink, SvgContainer, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Level } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAppLink = (level: Level) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [level.id]\r\n});\r\n\r\nconst newLevelAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_LEVEL,\r\n};\r\n\r\nexport function EditLevelsListView(): React.ReactElement {\r\n const [ Levels, setLevels ] = React.useState<Level[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getLevelsFetchOptions(setLevels), []);\r\n\r\n return (\r\n <div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a level to edit:</h5>\r\n <AppLink appLink={newLevelAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Level</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={Levels} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './EditLevelsListView';","export * from './edit-level';\r\nexport * from './edit-levels-list';\r\nexport * from './new-level';","import * as React from 'react';\r\nimport { Core, useService } from '@clickview/common';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { EditLevelDetails } from 'apps/subjects/components';\r\nimport { Level, CreateOrUpdateLevelRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newLevel: Level) => {\r\n onDone();\r\n\r\n if (!newLevel || !newLevel.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_LEVEL,\r\n args: [newLevel.id]\r\n });\r\n};\r\n\r\nexport function NewLevelView(): React.ReactElement {\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const saveLevel = (data: CreateOrUpdateLevelRequest, onDone: () => void): void =>\r\n subjectDataService.createLevel(data, onCreateSuccess(onDone), onDone);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Level</h4>\r\n <EditLevelDetails saveLevel={saveLevel} />\r\n </>\r\n );\r\n}","export * from './NewLevelView';","import * as React from 'react';\r\nimport { FormikHelpers } from 'formik';\r\nimport { useFetch, useService } from '@clickview/common';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { PropHelper } from 'shared/utils';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditPresentationDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditPresentationViewProps {\r\n id: string;\r\n}\r\n\r\nexport function EditPresentationView({ id }: EditPresentationViewProps): React.ReactElement {\r\n const [ presentation, setPresentation ] = React.useState<Presentation>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationFetchOptions(id, setPresentation), [id]);\r\n\r\n const savePresentation = (\r\n data: CreateOrUpdatePresentationRequest, { setSubmitting }: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ): void => subjectDataService.updatePresentation(id, data, () => setSubmitting(false), () => setSubmitting(false));\r\n\r\n const formProps = { presentation, savePresentation };\r\n\r\n const dataLoaded = PropHelper.propsLoaded(formProps);\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Edit Presentation</h4>\r\n {!!dataLoaded && <EditPresentationDetails {...formProps} />}\r\n </>\r\n );\r\n}","export * from './EditPresentationView';","import * as React from 'react';\r\nimport { useFetch } from '@clickview/common';\r\nimport { SvgContainer, SvgContainerSize, cvSvgLibrary, AppLink } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst getAppLink = (presentation: Presentation) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_PRESENTATION,\r\n args: [presentation.id]\r\n});\r\n\r\nconst newPresentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_PRESENTATION,\r\n};\r\n\r\nexport function EditPresentationsListView(): React.ReactElement {\r\n const [ presentations, setPresentations ] = React.useState<Presentation[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(setPresentations), []);\r\n\r\n return (\r\n <div>\r\n <div className='d-flex justify-content-between mb-2'>\r\n <h5 className='d-inline-block m-0'>Select a presentation to edit:</h5>\r\n <AppLink appLink={newPresentationAppLink} className='d-block'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Presentation</span>\r\n </AppLink>\r\n </div>\r\n <ObjectListNav objects={presentations} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './EditPresentationsListView';","export * from './edit-presentation';\r\nexport * from './edit-presentations-list';\r\nexport * from './new-presentation';\r\nexport * from './select-presentation';","import * as React from 'react';\r\nimport { FormikHelpers } from 'formik';\r\nimport { Core, useService } from '@clickview/common';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { EditPresentationDetails } from 'apps/subjects/components';\r\nimport { Presentation, CreateOrUpdatePresentationRequest } from 'apps/subjects/interfaces';\r\n\r\nexport function NewPresentationView(): React.ReactElement {\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const onCreateSuccess = (newPresentation: Presentation, setSubmitting: (isSubmitting: boolean) => void) => {\r\n setSubmitting(false);\r\n\r\n if (!newPresentation || !newPresentation.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_PRESENTATION,\r\n args: [newPresentation.id]\r\n });\r\n };\r\n\r\n const savePresentation = (\r\n data: CreateOrUpdatePresentationRequest, { setSubmitting }: FormikHelpers<CreateOrUpdatePresentationRequest>\r\n ): void => {\r\n subjectDataService.createPresentation(\r\n data,\r\n (_data: Presentation) => onCreateSuccess(_data, setSubmitting),\r\n () => setSubmitting(false)\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <h4 className='py-2'>Create New Presentation</h4>\r\n <EditPresentationDetails savePresentation={savePresentation} />\r\n </>\r\n );\r\n}","export * from './NewPresentationView';","import * as React from 'react';\r\nimport { Core, useFetch } from '@clickview/common';\r\nimport { Text } from '@clickview/shared';\r\n\r\nimport { ObjectListNav } from 'shared/components';\r\n\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nconst namespace = 'subjects.selectPresentation';\r\n\r\ninterface SelectPresentationViewProps {\r\n objectType: string;\r\n getAppLink: (presentation: Presentation) => Core.AppLink;\r\n}\r\n\r\nexport function SelectPresentationView({ objectType, getAppLink }: SelectPresentationViewProps): React.ReactElement {\r\n const [ presentations, setPresentations ] = React.useState<Presentation[]>();\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(setPresentations), []);\r\n\r\n return (\r\n <div>\r\n <h5><Text namespace={namespace} phrase='heading' options={{ objectType }} /></h5>\r\n <ObjectListNav objects={presentations} getAppLink={getAppLink} />\r\n </div>\r\n );\r\n}","export * from './SelectPresentationView';","import { FetchOptions, useFetch, Core } from '@clickview/common';\r\nimport { BaseObject, StateHelper } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { PlaylistDataServiceHelper } from 'apps/playlists/services';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SeriesDataServiceHelper } from 'apps/series/services';\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\n\r\nimport { AddSubjectMembersViewProps, AddSubjectMembersViewState } from './AddSubjectMembersView';\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<AddSubjectMembersViewState>>;\r\n\r\n// Wrapper function for typing StateHelper.getSetStateByKey<T>\r\nexport function getSetState(setState: SetState, key: keyof AddSubjectMembersViewState): (data: any) => void {\r\n return StateHelper.getSetStateByKey<AddSubjectMembersViewState>(setState, key);\r\n}\r\n\r\n// Hook to fetch all data required for AddSubjectMembersView\r\nexport function useFetchData(\r\n props: AddSubjectMembersViewProps,\r\n setState: SetState\r\n): void {\r\n const { memberType, objectIds } = props;\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(\r\n getSetState(setState, 'subjectTree')\r\n );\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n\r\n const objectFetchOptions = getObjectFetchOptions(\r\n memberType, objectIds, getSetState(setState, 'objects')\r\n );\r\n\r\n useFetch(objectFetchOptions, [ memberType, objectIds ]);\r\n}\r\n\r\nexport function addToSubject(\r\n subjectDataService: SubjectDataService,\r\n props: AddSubjectMembersViewProps,\r\n state: AddSubjectMembersViewState,\r\n setState: SetState\r\n): void {\r\n const { selectedSubject, objects } = state;\r\n\r\n const onDone = () => getSetState(setState, 'showConfirmationPopup')(false);\r\n\r\n const onSuccess = () => {\r\n onDone();\r\n Core.AppLinkHelper.trigger(getSubjectMemberAppLink(selectedSubject.id, props.memberType));\r\n };\r\n\r\n subjectDataService.addObjectsToSubject(\r\n selectedSubject.id, objects.map(o => o.id), props.memberType, state.addToClassifications, onSuccess, onDone\r\n );\r\n}\r\n\r\nexport function getObjectFetchOptions(\r\n memberType: SubjectMemberType,\r\n objectIds: string[],\r\n setObject: (data: BaseObject[]) => void\r\n): FetchOptions {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistDataServiceHelper.getPlaylistsByIdFetchOptions(objectIds, setObject);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesDataServiceHelper.getSeriesByIdFetchOptions(objectIds, setObject);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoDataServiceHelper.getVideosByIdFetchOptions(objectIds, setObject);\r\n }\r\n}\r\n\r\nexport function getConfirmationPopupTitle(\r\n memberType: SubjectMemberType, objects: BaseObject[], subject: SubjectTree\r\n): string {\r\n if (!objects || !subject)\r\n return;\r\n\r\n const memberText = objects.length === 1\r\n ? `this ${SubjectMemberHelper.singularizeMemberType(memberType)}`\r\n : `these ${memberType}`;\r\n\r\n return `Add ${memberText} to ${subject.name}`;\r\n}\r\n\r\nfunction getSubjectMemberAppLink(subjectId: string, memberType: SubjectMemberType): Core.AppLink {\r\n const baseAppLink = { application: AppChannels.SUBJECTS, args: [subjectId]};\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_PLAYLISTS };\r\n\r\n case SubjectMemberType.Series:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_SERIES };\r\n\r\n case SubjectMemberType.Videos:\r\n return { ...baseAppLink, action: Actions.Subjects.EDIT_SUBJECT_VIDEOS };\r\n }\r\n}","import * as React from 'react';\r\nimport { useService, ArrayHelper } from '@clickview/common';\r\nimport { BaseObject, ConfirmationPopup } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper, TreeHelper } from 'shared/utils';\r\n\r\nimport { SubjectTree, ClassificationTree } from 'apps/subjects/interfaces';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { AddSubjectMembers } from 'apps/subjects/components';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\n\r\nimport {\r\n useFetchData,\r\n getConfirmationPopupTitle,\r\n getSetState,\r\n addToSubject\r\n} from './AddSubjectMembersUtils';\r\n\r\nconst getMemberName = (memberType: SubjectMemberType) =>\r\n StringHelper.capitalizeFirstLetter(SubjectMemberHelper.singularizeMemberType(memberType));\r\n\r\nconst onClickAddToSubject = (\r\n state: AddSubjectMembersViewState,\r\n setState: React.Dispatch<React.SetStateAction<AddSubjectMembersViewState>>\r\n) => (subjectIds: string[], addToClassifications: boolean, setSubmittingFalse: () => void) => {\r\n // Set submitting to false as we are showing a confirmation popup before making an api call.\r\n setSubmittingFalse();\r\n\r\n getSetState(setState, 'selectedSubject')(TreeHelper.find(state.subjectTree, ArrayHelper.first(subjectIds)));\r\n getSetState(setState, 'addToClassifications')(addToClassifications);\r\n getSetState(setState, 'showConfirmationPopup')(true);\r\n};\r\n\r\nexport interface AddSubjectMembersViewState {\r\n // Api Data\r\n objects?: BaseObject[];\r\n subjectTree?: SubjectTree;\r\n classificationTree?: ClassificationTree;\r\n\r\n // View State\r\n selectedSubject?: SubjectTree;\r\n addToClassifications?: boolean;\r\n showConfirmationPopup?: boolean;\r\n}\r\n\r\nexport interface AddSubjectMembersViewProps {\r\n memberType: SubjectMemberType;\r\n objectIds: string[];\r\n}\r\n\r\nexport function AddSubjectMembersView(props: AddSubjectMembersViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<AddSubjectMembersViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props, setState);\r\n\r\n const setShowConfirmationPopup = (show: boolean) => getSetState(setState, 'showConfirmationPopup')(show);\r\n\r\n return (\r\n <>\r\n {!!state.objects && !!state.subjectTree &&\r\n <AddSubjectMembers\r\n memberType={props.memberType}\r\n objects={state.objects}\r\n subjectTree={state.subjectTree}\r\n onClickAddToSubject={onClickAddToSubject(state, setState)}\r\n />\r\n }\r\n {state.showConfirmationPopup &&\r\n <ConfirmationPopup\r\n title={getConfirmationPopupTitle(props.memberType, state.objects, state.selectedSubject)}\r\n onClickConfirm={() => addToSubject(subjectDataService, props, state, setState)}\r\n closePopup={() => setShowConfirmationPopup(false)}\r\n >\r\n <p>\r\n {`The following ${props.memberType} will be added to `}\r\n <strong>{state.selectedSubject.name}</strong>\r\n {state.addToClassifications ? ` and its mapped classifications:` : ':'}\r\n </p>\r\n <ul>\r\n {state.objects.map(o =>\r\n <li key={o.id}>{o.name}</li>\r\n )}\r\n </ul>\r\n {!state.addToClassifications &&\r\n <p>{`${state.objects.length === 1 ? 'It' : 'They'} will not be added to its mapped classifications.`}</p>\r\n }\r\n <p>\r\n {`${getMemberName(props.memberType)} to classification mappings can be managed from the `}\r\n <strong>{`Edit Subject ${StringHelper.capitalizeFirstLetter(props.memberType)} `}</strong>\r\n page.\r\n </p>\r\n </ConfirmationPopup>\r\n }\r\n </>\r\n );\r\n}","export * from './AddSubjectMembersView';","import * as React from 'react';\r\nimport { Core, useFetch, useService } from '@clickview/common';\r\nimport { Subject, Popup, PopupButtons, PopupButton, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\ninterface DeleteSubjectViewProps {\r\n subjectId: string;\r\n routeToOnDelete?: Core.AppLink;\r\n}\r\n\r\nexport function DeleteSubjectView(props: DeleteSubjectViewProps & PopupViewProps): React.ReactElement {\r\n const { subjectId, routeToOnDelete, closePopup } = props;\r\n\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n useFetch(SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject), []);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const deleteSubject = (): void => {\r\n setShowButtonSpinner(true);\r\n\r\n const onSuccess = () => {\r\n closePopup();\r\n\r\n if (routeToOnDelete)\r\n Core.AppLinkHelper.trigger(routeToOnDelete);\r\n };\r\n\r\n subjectDataService.deleteSubject(subjectId, onSuccess, closePopup);\r\n };\r\n\r\n const buttons: PopupButton[] = [\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: deleteSubject,\r\n buttonText: 'Yes, delete this subject',\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n ];\r\n\r\n return (\r\n <Popup title='Delete Subject' closePopup={closePopup} showLoadingSpinner={!subject}>\r\n {!!subject &&\r\n <>\r\n <div>\r\n <p>Are you sure you want to delete <strong>{subject.name}</strong>?</p>\r\n <p>Subjects that have mapped classifications cannot be deleted.</p>\r\n </div>\r\n <PopupButtons buttons={buttons} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './DeleteSubjectView';","import * as React from 'react';\r\n\r\nimport { Core, FetchOptions, useFetch } from '@clickview/common';\r\nimport { BaseObject, StateHelper, Classification } from '@clickview/shared';\r\n\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberViewModel } from 'apps/subjects/components';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { PresentationContext } from 'apps/subjects/context';\r\n\r\nimport { PlaylistDataServiceHelper } from 'apps/playlists/services';\r\n\r\nimport { SeriesDataServiceHelper } from 'apps/series/services';\r\n\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\n\r\nimport { EditSubjectMembersState, EditSubjectMembersViewProps } from './EditSubjectMembersView';\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditSubjectMembersState>>;\r\n\r\n// Wrapper function for typing StateHelper.getSetStateByKey<T>\r\nexport function getSetState(setState: SetState, key: keyof EditSubjectMembersState): (data: any) => void {\r\n return StateHelper.getSetStateByKey<EditSubjectMembersState>(setState, key);\r\n}\r\n\r\n// Hook to fetch all data required for AddSubjectMembersView\r\nexport function useFetchData(\r\n props: EditSubjectMembersViewProps,\r\n state: EditSubjectMembersState,\r\n setState: SetState\r\n): void {\r\n const { subjectId, memberType } = props;\r\n\r\n const { memberIds } = state;\r\n\r\n const [presentation] = React.useContext(PresentationContext);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(\r\n getSetState(setState, 'presentations')),\r\n []\r\n );\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectMemberIdsFetchOptions(\r\n subjectId,\r\n memberType,\r\n getSetState(setState, 'memberIds')\r\n ),\r\n [ subjectId, memberType ]\r\n );\r\n\r\n useFetch(\r\n getMemberFetchOptions(memberType, memberIds, getSetState(setState, 'members')),\r\n [ memberType, memberIds ],\r\n !!memberIds && !!memberIds.length\r\n );\r\n\r\n useFetch(\r\n !!presentation &&\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n subjectId,\r\n getSetState(setState, 'classifications'),\r\n presentation.id,\r\n memberType\r\n ),\r\n [ subjectId, memberType, presentation ],\r\n !!presentation\r\n );\r\n}\r\n\r\n// Hook to map classifications to members\r\nexport function useMapData(\r\n props: EditSubjectMembersViewProps,\r\n state: EditSubjectMembersState,\r\n setState: SetState\r\n): void {\r\n const { memberIds, members, classifications } = state;\r\n\r\n // Map classifications\r\n React.useEffect(() => {\r\n const setMembersWithClassifications = getSetState(setState, 'membersWithClassifications');\r\n setMembersWithClassifications(mapClassificationsToMembers(props.memberType, members, classifications));\r\n }, [ members, classifications ]);\r\n\r\n // If there are no memberIds (e.g. the last member gets removed) set members to [].\r\n React.useEffect(() => {\r\n if (members && members.length && memberIds && !memberIds.length)\r\n getSetState(setState, 'members')([]);\r\n }, [memberIds]);\r\n}\r\n\r\nfunction getMemberFetchOptions(\r\n memberType: SubjectMemberType, memberIds: string[], setMembers: (data: BaseObject[]) => void\r\n): FetchOptions {\r\n if (!memberIds || !memberIds.length)\r\n return;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistDataServiceHelper.getPlaylistsByIdFetchOptions(memberIds, setMembers);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesDataServiceHelper.getSeriesByIdFetchOptions(memberIds, setMembers);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoDataServiceHelper.getVideosByIdFetchOptions(memberIds, setMembers);\r\n }\r\n}\r\n\r\nexport const getClassificationAppLink = (memberType: SubjectMemberType, presentationId: string) =>\r\n (classificationId: string): Core.AppLink => {\r\n const application = AppChannels.SUBJECTS;\r\n const args = [ presentationId, classificationId ];\r\n\r\n let action;\r\n\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_PLAYLISTS;\r\n break;\r\n\r\n case SubjectMemberType.Series:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_SERIES;\r\n break;\r\n\r\n case SubjectMemberType.Videos:\r\n action = Actions.Subjects.EDIT_CLASSIFICATION_VIDEOS;\r\n break;\r\n }\r\n\r\n return { application, action, args };\r\n };\r\n\r\n/**\r\n * For each member, list the classifications on the subject with a flag\r\n * to determine whether or not the member is associated with that classification.\r\n */\r\nfunction mapClassificationsToMembers(\r\n memberType: SubjectMemberType, members: BaseObject[], classifications: Classification[]\r\n): SubjectMemberViewModel[] {\r\n if (!members || !classifications)\r\n return;\r\n\r\n const isMemberInClassification = (member: BaseObject, classification: Classification) =>\r\n !!(classification as any)[memberType] &&\r\n !!(classification as any)[memberType].data.filter((m: BaseObject) => m.id === member.id).length;\r\n\r\n return members.map(m => ({\r\n id: m.id,\r\n name: m.name,\r\n classifications: classifications.map(c => ({ id: c.id, selected: isMemberInClassification(m, c) }))\r\n }));\r\n}\r\n\r\nexport function toggleObjectsInClassification(\r\n d: SubjectDataService,\r\n memberType: SubjectMemberType,\r\n memberIds: string[],\r\n subjectId: string,\r\n presentationId: string,\r\n classificationId: string,\r\n selected: boolean\r\n): void {\r\n const apiFn = selected\r\n ? d.addObjectsToClassification.bind(d)\r\n : d.removeObjectsFromClassification.bind(d);\r\n\r\n apiFn(classificationId, memberIds, memberType, subjectId, presentationId);\r\n}\r\n\r\nexport function getActiveAction(memberType: SubjectMemberType): string {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return Actions.Subjects.EDIT_SUBJECT_PLAYLISTS;\r\n\r\n case SubjectMemberType.Series:\r\n return Actions.Subjects.EDIT_SUBJECT_SERIES;\r\n\r\n case SubjectMemberType.Videos:\r\n return Actions.Subjects.EDIT_SUBJECT_VIDEOS;\r\n }\r\n}","import * as React from 'react';\r\nimport { Alert } from 'react-bootstrap';\r\nimport { useService } from '@clickview/common';\r\nimport { BaseObject, Classification } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\n\r\nimport { EditSubjectNav, SubjectMemberList, PresentationSelect, SubjectMemberViewModel } from 'apps/subjects/components';\r\nimport { SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType, OwnerType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\nimport { PresentationContext } from 'apps/subjects/context';\r\n\r\nimport {\r\n useFetchData,\r\n useMapData,\r\n getClassificationAppLink,\r\n toggleObjectsInClassification,\r\n getActiveAction\r\n} from './EditSubjectMembersUtils';\r\n\r\nexport interface EditSubjectMembersState {\r\n // Data fetched from api.\r\n presentations?: Presentation[];\r\n classifications?: Classification[];\r\n memberIds?: string[];\r\n members?: BaseObject[];\r\n\r\n // View state.\r\n membersWithClassifications?: SubjectMemberViewModel[];\r\n}\r\n\r\nexport interface EditSubjectMembersViewProps {\r\n subjectId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\nexport function EditSubjectMembersView(props: EditSubjectMembersViewProps): React.ReactElement {\r\n const { subjectId, memberType } = props;\r\n\r\n const [ state, setState ] = React.useState<EditSubjectMembersState>({});\r\n\r\n const { presentations, classifications, memberIds, membersWithClassifications } = state;\r\n\r\n const [ currentPresentation, setCurrentPresentation ] = React.useContext(PresentationContext);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(props, state, setState);\r\n useMapData(props, state, setState);\r\n\r\n const presentationSelectProps = {\r\n presentations,\r\n currentPresentation,\r\n setCurrentPresentation\r\n };\r\n\r\n const onToggleClassification = (classificationId: string, selected: boolean, memberId?: string) =>\r\n toggleObjectsInClassification(\r\n subjectDataService,\r\n memberType,\r\n memberId ? [memberId] : memberIds,\r\n subjectId,\r\n currentPresentation && currentPresentation.id,\r\n classificationId,\r\n selected\r\n );\r\n\r\n const subjectMemberProps = {\r\n members: membersWithClassifications || [],\r\n memberType,\r\n getMemberAppLink: (itemId: string) => SubjectMemberHelper.getMemberAppLink(memberType, itemId),\r\n getActions: (itemId: string) =>\r\n SubjectMemberHelper.getMemberActions(subjectId, OwnerType.Subject, memberType, itemId),\r\n classifications,\r\n getClassificationAppLink: currentPresentation && getClassificationAppLink(memberType, currentPresentation.id),\r\n onToggleClassification\r\n };\r\n\r\n const subjectMemberDataLoaded = !!currentPresentation && !!classifications;\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={getActiveAction(memberType)} />\r\n <Alert variant='info' className='m-0'>\r\n {\r\n `Select which ${memberType} are shown for each classification in this subject.`\r\n + ' Change the selected presentation to view different classifications.'\r\n }\r\n </Alert>\r\n <div className='w-50 py-2'>\r\n {!!presentations && <PresentationSelect {...presentationSelectProps} />}\r\n </div>\r\n {subjectMemberDataLoaded && <SubjectMemberList {...subjectMemberProps} />}\r\n </>\r\n );\r\n}","export * from './EditSubjectMembersView';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\nimport { Subject } from '@clickview/shared';\r\n\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditSubjectDetails, EditSubjectNav } from 'apps/subjects/components';\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\ninterface EditSubjectViewProps {\r\n subjectId: string;\r\n}\r\n\r\nexport function EditSubjectView({ subjectId }: EditSubjectViewProps): React.ReactElement {\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const subjectFetchOptions =\r\n SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n useFetch(subjectFetchOptions, [subjectId]);\r\n\r\n const saveSubject = (data: CreateOrUpdateSubjectRequest, onDone: () => void): void =>\r\n subjectDataService.updateSubject(subjectId, data, onDone, onDone);\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={Actions.Subjects.EDIT_SUBJECT} />\r\n {!!subject && !!subjectTree &&\r\n <EditSubjectDetails subject={subject} subjectTree={subjectTree} saveSubject={saveSubject} />\r\n }\r\n </>\r\n );\r\n}","export * from './EditSubjectView';","export * from './add-subject-members';\r\nexport * from './delete-subject';\r\nexport * from './edit-subject';\r\nexport * from './edit-subject-members';\r\nexport * from './new-subject';\r\nexport * from './remove-subject-member';\r\nexport * from './subject-classifications';\r\nexport * from './subject-nav';","import * as React from 'react';\r\nimport { Core, useFetch, useService } from '@clickview/common';\r\nimport { Subject } from '@clickview/shared';\r\n\r\nimport { DataServices, AppChannels, Actions } from 'shared/constants';\r\nimport { BackButton } from 'shared/components';\r\n\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { EditSubjectDetails } from 'apps/subjects/components';\r\nimport { SubjectTree, CreateOrUpdateSubjectRequest } from 'apps/subjects/interfaces';\r\n\r\nconst onCreateSuccess = (onDone: () => void) => (newSubject: Subject) => {\r\n onDone();\r\n\r\n if (!newSubject || !newSubject.id)\r\n return;\r\n\r\n Core.AppLinkHelper.trigger({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [newSubject.id]\r\n });\r\n};\r\n\r\ninterface NewSubjectViewProps {\r\n parentId?: string;\r\n}\r\n\r\nexport function NewSubjectView({ parentId } : NewSubjectViewProps): React.ReactElement {\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n const subjectTreeFetchOptions = SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree);\r\n\r\n useFetch(subjectTreeFetchOptions, []);\r\n\r\n const saveSubject = (data: CreateOrUpdateSubjectRequest, onDone: () => void): void =>\r\n subjectDataService.createSubject(data, onCreateSuccess(onDone), onDone);\r\n\r\n const presentationAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.PRESENTATIONS\r\n };\r\n\r\n return (\r\n <>\r\n <div className='pb-2 border-bottom'>\r\n <BackButton backToName='Presentations' appLink={presentationAppLink} />\r\n </div>\r\n <h4 className='py-2'>Create New Subject</h4>\r\n {!!subjectTree &&\r\n <EditSubjectDetails\r\n subject={{ parentId } as Subject}\r\n subjectTree={subjectTree}\r\n saveSubject={saveSubject}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './NewSubjectView';","import * as React from 'react';\r\nimport { useFetch, useService } from '@clickview/common';\r\nimport { Subject, Playlist, Video, Series, BaseObject, Popup, PopupButton, PopupButtons, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { DataServices } from 'shared/constants';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nimport { PlaylistDataServiceHelper } from 'apps/playlists/services';\r\nimport { SubjectDataServiceHelper, SubjectDataService } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { SubjectMemberHelper } from 'apps/subjects/utils';\r\nimport { SeriesDataServiceHelper } from 'apps/series/services';\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\n\r\nconst getMemberFetchOptions = (\r\n memberType: SubjectMemberType, memberId: string, setMember: (data: BaseObject) => void\r\n) => {\r\n switch (memberType) {\r\n case SubjectMemberType.Playlists:\r\n return PlaylistDataServiceHelper.getPlaylistFetchOptions(memberId, setMember);\r\n\r\n case SubjectMemberType.Series:\r\n return SeriesDataServiceHelper.getSeriesFetchOptions(memberId, setMember);\r\n\r\n case SubjectMemberType.Videos:\r\n return VideoDataServiceHelper.getVideoFetchOptions(memberId, setMember);\r\n }\r\n};\r\n\r\nconst getPopupButtons = (\r\n closePopup: () => void, removeMember: () => void, memberType: SubjectMemberType, showButtonSpinner: boolean\r\n): PopupButton[] => ([\r\n {\r\n variant: 'link',\r\n onClick: closePopup,\r\n buttonText: 'Cancel'\r\n },\r\n {\r\n variant: 'danger',\r\n onClick: removeMember,\r\n buttonText: `Yes, remove this ${SubjectMemberHelper.singularizeMemberType(memberType)}`,\r\n isSpinnerButton: true,\r\n showSpinner: showButtonSpinner\r\n }\r\n]);\r\n\r\ninterface RemoveSubjectMemberViewProps {\r\n subjectId: string;\r\n memberId: string;\r\n memberType: SubjectMemberType;\r\n}\r\n\r\ntype MemberType = Playlist | Series | Video;\r\n\r\ntype PropTypes = RemoveSubjectMemberViewProps & PopupViewProps;\r\n\r\nexport function RemoveSubjectMemberView(props: PropTypes): React.ReactElement {\r\n const { subjectId, memberId, memberType, closePopup } = props;\r\n\r\n const [ subject, setSubject ] = React.useState<Subject>();\r\n const [ member, setMember ] = React.useState<MemberType>();\r\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetch(getMemberFetchOptions(memberType, memberId, setMember), [memberId]);\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectFetchOptions(subjectId, setSubject),\r\n [subjectId]\r\n );\r\n\r\n const removeMember = () => {\r\n setShowButtonSpinner(true);\r\n\r\n subjectDataService.removeObjectsFromSubject(subjectId, [memberId], memberType, closePopup, closePopup);\r\n };\r\n\r\n const dataLoaded = !!subject && !!member;\r\n\r\n const popupTitle = `Remove ${StringHelper.capitalizeFirstLetter(\r\n SubjectMemberHelper.singularizeMemberType(memberType))}`;\r\n\r\n return (\r\n <Popup title={popupTitle} closePopup={closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div>\r\n <p>\r\n Are you sure you want to remove <strong>\r\n {member.name}</strong> from <strong>{subject.name}</strong>?\r\n </p>\r\n <p>Please ensure that it is not in any classifications before removing.</p>\r\n </div>\r\n <PopupButtons buttons={getPopupButtons(closePopup, removeMember, memberType, showButtonSpinner)} />\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}","export * from './RemoveSubjectMemberView';","import * as React from 'react';\r\nimport { useFetch, ArrayHelper } from '@clickview/common';\r\nimport { Classification, StateHelper } from '@clickview/shared';\r\n\r\nimport { Actions } from 'shared/constants';\r\n\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { EditSubjectNav, SubjectClassifications } from 'apps/subjects/components';\r\nimport { Presentation } from 'apps/subjects/interfaces';\r\n\r\nfunction useFetchData(\r\n subjectId: string,\r\n setState: React.Dispatch<React.SetStateAction<SubjectClassificationsViewState>>\r\n): void {\r\n const getSetState = (key: keyof SubjectClassificationsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(subjectId, getSetState('classifications')),\r\n [subjectId]\r\n );\r\n\r\n useFetch(SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')), []);\r\n}\r\n\r\ninterface SubjectClassificationsViewState {\r\n classifications?: Classification[];\r\n presentations?: Presentation[];\r\n}\r\n\r\ninterface SubjectClassificationsViewProps {\r\n subjectId: string;\r\n}\r\n\r\nexport function SubjectClassificationsView({ subjectId }: SubjectClassificationsViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<SubjectClassificationsViewState>({});\r\n\r\n useFetchData(subjectId, setState);\r\n\r\n return (\r\n <>\r\n <EditSubjectNav subjectId={subjectId} activeAction={Actions.Subjects.SUBJECT_CLASSIFICATIONS} />\r\n <SubjectClassifications\r\n presentations={state.presentations}\r\n classificationDictionary={ArrayHelper.groupBy(state.classifications, 'presentationId')}\r\n />\r\n </>\r\n );\r\n}","export * from './SubjectClassificationsView';","import * as React from 'react';\r\nimport { useFetch } from '@clickview/common';\r\nimport { cvSvgLibrary, AppLink, SvgContainer, SvgContainerSize } from '@clickview/shared';\r\n\r\nimport { Tree, TreeNodeAction } from 'shared/components';\r\nimport { AppChannels, Actions } from 'shared/constants';\r\n\r\nimport { SubjectTree } from 'apps/subjects/interfaces';\r\nimport { SubjectDataServiceHelper } from 'apps/subjects/services';\r\n\r\nimport styles from './subject-nav.scss';\r\n\r\ninterface SubjectNavViewProps {\r\n selectedSubjectId?: string;\r\n}\r\n\r\nexport function SubjectNavView({ selectedSubjectId }: SubjectNavViewProps): React.ReactElement {\r\n const [ subjectTree, setSubjectTree ] = React.useState<SubjectTree>();\r\n\r\n useFetch(SubjectDataServiceHelper.getSubjectTreeFetchOptions(setSubjectTree), []);\r\n\r\n const getAppLink = React.useCallback((subject: SubjectTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.EDIT_SUBJECT,\r\n args: [subject.id]\r\n }), []);\r\n\r\n const newSubjectAppLink = {\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.NEW_SUBJECT\r\n };\r\n\r\n const actions: TreeNodeAction<SubjectTree>[] = [\r\n {\r\n label: 'Add child',\r\n getAppLink: (s: SubjectTree) => ({\r\n ...newSubjectAppLink,\r\n params: { parentId: s.id }\r\n })\r\n },\r\n {\r\n label: 'Delete subject',\r\n getAppLink: (s: SubjectTree) => ({\r\n application: AppChannels.SUBJECTS,\r\n action: Actions.Subjects.DELETE_SUBJECT,\r\n args: [s.id]\r\n }),\r\n className: 'text-danger'\r\n }\r\n ];\r\n\r\n return (\r\n <div className={`${styles.navContainer} h-auto pr-2 border-right`}>\r\n <h5 className='border-bottom pb-2'>Subjects</h5>\r\n <AppLink appLink={newSubjectAppLink} className='d-inline-block pb-2'>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>New Subject</span>\r\n </AppLink>\r\n {!!subjectTree &&\r\n <div className='border-top pt-1'>\r\n <Tree<SubjectTree>\r\n tree={subjectTree}\r\n getAppLink={getAppLink}\r\n selectedIds={[selectedSubjectId]}\r\n actions={actions}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","export * from './SubjectNavView';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"cv--navContainer--3vLoN\"};","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\n\r\nimport { TopNav } from 'apps/subjects/components';\r\nimport { SubjectsNavHelper } from 'apps/subjects/utils';\r\n\r\ninterface TopNavViewProps {\r\n currentAppLink: Core.AppLink;\r\n}\r\n\r\nexport function TopNavView({ currentAppLink }: TopNavViewProps): React.ReactElement {\r\n return <TopNav navItems={SubjectsNavHelper.getTopNavItems()} currentAppLink={currentAppLink} />;\r\n}","export * from './TopNavView';","import * as React from 'react';\r\nimport { Radio, ObjectHash } from 'backbone';\r\nimport { Core, BaseAlert, CommonChannels, ObjectHelper, InstanceManager } from '@clickview/common';\r\nimport { LayoutRegions, AlertList } from '@clickview/shared';\r\n\r\nimport { AppChannels, Layouts, DataServices } from 'shared/constants';\r\nimport { CuratorLayoutViewOptions, CuratorLayoutView } from 'shared/layouts';\r\n\r\nimport { VideosAppContextProvider } from 'apps/videos/context';\r\nimport { EditVideoAudiencesView, EditVideoSubjectsView, EditVideoAliasesView } from 'apps/videos/views';\r\n\r\nclass VideosAppRouter extends Core.AppRouter {\r\n public get channelName(): string {\r\n return AppChannels.VIDEOS;\r\n }\r\n\r\n protected get appRoutes(): ObjectHash {\r\n return {\r\n 'manage/videos/:id(/)': 'editVideo',\r\n 'manage/videos/:id/audiences(/)': 'editVideoAudiences',\r\n 'manage/videos/:id/subjects(/)': 'editVideoSubjects',\r\n 'manage/videos/:id/aliases(/)': 'editVideoAliases',\r\n };\r\n }\r\n}\r\n\r\nexport class VideosApplication extends Core.Application {\r\n protected layout: CuratorLayoutView;\r\n\r\n public initialize(): void {\r\n /**\r\n * Obtain an instance of all data services used in the application\r\n * to prevent any instances being destroyed between renders.\r\n * \r\n * This is caused by the InstanceManager not being suited\r\n * to the way React renders function components - Matt.\r\n */\r\n ObjectHelper.values(DataServices).forEach(d => InstanceManager.getInstance(d, this));\r\n }\r\n\r\n public get name(): string {\r\n return 'Videos Application';\r\n }\r\n\r\n public static get router(): any {\r\n return VideosAppRouter;\r\n }\r\n\r\n public get channelName(): string {\r\n return AppChannels.VIDEOS;\r\n }\r\n\r\n public get layoutOptions(): Core.LayoutOptions<CuratorLayoutViewOptions> {\r\n return {\r\n name: Layouts.CURATOR_LAYOUT,\r\n options: {\r\n provider: VideosAppContextProvider\r\n }\r\n };\r\n }\r\n\r\n public editVideo(videoId: string): void {\r\n Core.LocationUtils.Redirect(`/tools/programlookup/${videoId}`);\r\n }\r\n\r\n public editVideoAudiences(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoAudiencesView videoId={videoId} />);\r\n }\r\n\r\n public editVideoSubjects(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoSubjectsView videoId={videoId} />);\r\n }\r\n\r\n public editVideoAliases(videoId: string): void {\r\n this.layout.showChildView(LayoutRegions.CONTENT, <EditVideoAliasesView videoId={videoId} />);\r\n }\r\n\r\n protected onShowAlert(options: ObjectHash = {}): void {\r\n const { collection } = options;\r\n\r\n const alerts: BaseAlert[] = collection ? collection.toJSON() : [];\r\n\r\n const removeAlert = (id: string) => Radio.channel(CommonChannels.ALERT).trigger('remove:alert', id);\r\n\r\n this.layout.showChildView(LayoutRegions.ALERT, <AlertList alerts={alerts} removeAlert={removeAlert} />);\r\n }\r\n}","import * as React from 'react';\r\n\r\nimport { Tabs } from 'shared/components';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { VideoNavHelper } from 'apps/videos/utils';\r\n\r\nconst isItemActive = (activeAction: string) => (item: NavItem) => item.appLink.action === activeAction;\r\n\r\ninterface EditVideoNavProps {\r\n videoId: string;\r\n activeAction: string;\r\n}\r\n\r\nexport function EditVideoNav({ videoId, activeAction }: EditVideoNavProps): React.ReactElement {\r\n return (\r\n <div className='py-2'>\r\n <Tabs tabs={VideoNavHelper.getEditVideoTabs(videoId)} isItemActive={isItemActive(activeAction)} />\r\n </div>\r\n );\r\n}","export * from './EditVideoNav';","export * from './edit-video-nav';","import * as React from 'react';\r\n\r\nimport { ImageStorageContextProvider, UserContextProvider } from 'shared/context';\r\n\r\nexport const VideosAppContextProvider = ({ children }: React.PropsWithChildren<{}>): React.ReactElement => (\r\n <UserContextProvider>\r\n <ImageStorageContextProvider>\r\n {children}\r\n </ImageStorageContextProvider>\r\n </UserContextProvider>\r\n);","export * from './VideosAppContext';","import { BaseDataService, DataServiceError, FetchOptions } from '@clickview/common';\r\nimport { Video, CacheDurations, PresentationAudienceCollection } from '@clickview/shared';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nconst endpoints = {\r\n getVideo: (videoId: string) => `/api/master/v2/objects/${videoId}`,\r\n\r\n getVideosById: (ids: string[]) => `/api/master/v2/objects?${ids.map(id => `id=${id}`).join('&')}`\r\n};\r\n\r\nexport class VideoDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.VIDEO;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.VIDEO;\r\n }\r\n\r\n public getVideo(videoId: string, callback?: (video: Video) => void, errorCallback?: () => void): Video {\r\n return this.get<Video>({\r\n resource: endpoints.getVideo(videoId),\r\n eventPrefix: `${DataPrefixes.VIDEO}:${videoId}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n\r\n public getVideosById(\r\n ids: string[], callback?: (data: Video[]) => void, errorCallback?: () => void\r\n ): Video[] {\r\n return this.get<Video[]>({\r\n resource: endpoints.getVideosById(ids),\r\n eventPrefix: `${DataPrefixes.VIDEO}:${ids.join(',')}`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.VIDEO,\r\n dataChannelName: DataChannels.VIDEO\r\n};\r\n\r\nexport const VideoDataServiceHelper = {\r\n getVideoFetchOptions: (\r\n videoId: string,\r\n setData: (data: Video) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.VIDEO}:${videoId}`,\r\n fetchData: (d: VideoDataService) => d.getVideo(videoId),\r\n setData,\r\n onError\r\n }),\r\n\r\n getVideosByIdFetchOptions: (\r\n ids: string[], setData: (data: Video[]) => void, onError?: (error: DataServiceError) => void\r\n ): FetchOptions => ({\r\n ...BaseFetchOptions,\r\n eventPrefix: `${DataPrefixes.VIDEO}:${ids.join(',')}`,\r\n fetchData: (d: VideoDataService) => d.getVideosById(ids),\r\n setData,\r\n onError\r\n })\r\n};","export * from './VideoDataService';","import { AppChannels, Actions } from 'shared/constants';\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const VideoNavHelper = {\r\n getEditVideoTabs(videoId: string): NavItem[] {\r\n const application = AppChannels.VIDEOS;\r\n const actions = Actions.Videos;\r\n\r\n return [\r\n {\r\n label: 'Edit Video Details',\r\n appLink: { application, action: actions.EDIT_VIDEO, args: [videoId]}\r\n },\r\n {\r\n label: 'Subjects',\r\n appLink: { application, action: actions.EDIT_VIDEO_SUBJECTS, args: [videoId]}\r\n },\r\n {\r\n label: 'Audiences',\r\n appLink: { application, action: actions.EDIT_VIDEO_AUDIENCES, args: [videoId]}\r\n },\r\n {\r\n label: 'Aliases',\r\n appLink: { application, action: actions.EDIT_VIDEO_ALIASES, args: [videoId]}\r\n }\r\n ];\r\n }\r\n};","export * from './VideoNavHelper';","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Flight } from '@clickview/common';\r\nimport { useAlerts } from '@clickview/shared';\r\n\r\nimport { Actions } from 'shared/constants';\r\nimport { AliasCollection, CreateAliasRequest } from 'shared/interfaces';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components/edit-video-nav';\r\nimport { Aliases } from 'shared/components/aliases';\r\nimport AliasesRequests from 'shared/flight-requests/AliasRequests';\r\n\r\ninterface EditVideoAliasesViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoAliasesView({ videoId }: EditVideoAliasesViewProps): React.ReactElement {\r\n const dispatch = useDispatch();\r\n const alerts = useAlerts();\r\n\r\n const aliases = Flight.useBasicFetch<AliasCollection>(AliasesRequests.getAliases(videoId));\r\n\r\n function createAlias(alias: CreateAliasRequest, success: () => void): void {\r\n Flight.fetch(dispatch, AliasesRequests.createAlias(videoId, alias, () => {\r\n alerts.success('Successfully created alias');\r\n success();\r\n }, () => {\r\n alerts.error('Something went wrong creating your alias');\r\n }));\r\n }\r\n\r\n function deleteAlias(id: string): void {\r\n Flight.fetch(dispatch, AliasesRequests.deleteAlias(videoId, id, () => {\r\n alerts.success('Successfully deleted alias');\r\n }, () => {\r\n alerts.error('Something went wrong deleting your alias');\r\n }));\r\n }\r\n\r\n if (!aliases.data)\r\n return <>Loading...</>;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={videoId} activeAction={Actions.Videos.EDIT_VIDEO_ALIASES} />\r\n <Aliases\r\n aliases={aliases.data.data}\r\n onSave={createAlias}\r\n onDelete={deleteAlias}\r\n />\r\n </>\r\n );\r\n}","export * from './EditVideoAliasesView';","import * as React from 'react';\r\nimport { useService, useBulkFetch, useFetch } from '@clickview/common';\r\nimport { StateHelper, Video, PresentationAudience } from '@clickview/shared';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { Actions, DataServices } from 'shared/constants';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components';\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectAudiences } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { Presentation, Level } from 'apps/subjects/interfaces';\r\n\r\ninterface EditVideoAudiencesViewState {\r\n presentations?: Presentation[];\r\n levels?: Level[];\r\n\r\n video?: Video;\r\n videoLevels?: Level[];\r\n videoAudiences?: PresentationAudience[];\r\n\r\n currentPresentation?: Presentation;\r\n presentationAudiences?: PresentationAudience[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditVideoAudiencesViewState>>;\r\n\r\nfunction useFetchData(videoId: string, state: EditVideoAudiencesViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditVideoAudiencesViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useBulkFetch([\r\n VideoDataServiceHelper.getVideoFetchOptions(videoId, getSetState('video')),\r\n SubjectDataServiceHelper.getObjectLevelsFetchOptions(\r\n videoId, SubjectMemberType.Videos, getSetState('videoLevels'))\r\n ], [videoId]);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectAudiencesFetchOptions(\r\n videoId, SubjectMemberType.Videos, getSetState('videoAudiences')),\r\n [ videoId, state.videoLevels ]\r\n );\r\n\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations')),\r\n SubjectDataServiceHelper.getLevelsFetchOptions(getSetState('levels')),\r\n ], []);\r\n\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getAudiencesFetchOptions(\r\n state.currentPresentation.id, getSetState('presentationAudiences')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n}\r\n\r\ninterface EditVideoAudiencesViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoAudiencesView({ videoId }: EditVideoAudiencesViewProps): JSX.Element {\r\n const [ state, setState ] = React.useState<EditVideoAudiencesViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(videoId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.presentations && !!state.levels && !!state.presentationAudiences\r\n && !!state.videoLevels && !!state.videoAudiences;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={videoId} activeAction={Actions.Videos.EDIT_VIDEO_AUDIENCES} />\r\n <ObjectHeader object={state.video} />\r\n {!!dataLoaded &&\r\n <EditObjectAudiences\r\n objectLevels={state.videoLevels}\r\n objectAudiences={state.videoAudiences}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n levels={state.levels}\r\n presentationAudiences={state.presentationAudiences}\r\n memberType={SubjectMemberType.Videos}\r\n saveLevels={(levelIds: string[], addToAudiences: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectLevels(\r\n videoId, levelIds, SubjectMemberType.Videos, addToAudiences, onDone, onDone)\r\n }\r\n saveAudiences={(audienceIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectAudiences(\r\n videoId, state.currentPresentation.id, audienceIds, SubjectMemberType.Videos, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './EditVideoAudiencesView';","import * as React from 'react';\r\nimport { useService, useBulkFetch, useFetch } from '@clickview/common';\r\nimport { StateHelper, Video, Subject, Classification } from '@clickview/shared';\r\n\r\nimport { ObjectHeader } from 'shared/components';\r\nimport { DataServices, Actions } from 'shared/constants';\r\n\r\nimport { EditVideoNav } from 'apps/videos/components';\r\n\r\nimport { SubjectDataService, SubjectDataServiceHelper } from 'apps/subjects/services';\r\nimport { SubjectMemberType } from 'apps/subjects/enums';\r\nimport { EditObjectSubjects } from 'apps/subjects/components';\r\nimport { useSetDefaultPresentation } from 'apps/subjects/hooks';\r\nimport { SubjectTree, Presentation, ClassificationTree } from 'apps/subjects/interfaces';\r\nimport { VideoDataServiceHelper } from 'apps/videos/services';\r\n\r\ninterface EditVideoSubjectsViewState {\r\n video?: Video;\r\n videoSubjects?: Subject[];\r\n subjectTree?: SubjectTree;\r\n subjectClassifications?: Classification[];\r\n\r\n presentations?: Presentation[];\r\n currentPresentation?: Presentation;\r\n\r\n classificationTree?: ClassificationTree;\r\n videoClassifications?: Classification[];\r\n}\r\n\r\ntype SetState = React.Dispatch<React.SetStateAction<EditVideoSubjectsViewState>>;\r\n\r\nfunction useFetchData(videoId: string, state: EditVideoSubjectsViewState, setState: SetState): void {\r\n const getSetState = (key: keyof EditVideoSubjectsViewState) => StateHelper.getSetStateByKey(setState, key);\r\n\r\n useBulkFetch([\r\n SubjectDataServiceHelper.getSubjectTreeFetchOptions(getSetState('subjectTree')),\r\n SubjectDataServiceHelper.getPresentationsFetchOptions(getSetState('presentations'))\r\n ], []);\r\n\r\n useBulkFetch([\r\n VideoDataServiceHelper.getVideoFetchOptions(videoId, getSetState('video')),\r\n SubjectDataServiceHelper.getObjectSubjectsFetchOptions(\r\n videoId, SubjectMemberType.Videos, getSetState('videoSubjects'))\r\n ], [videoId]);\r\n\r\n useFetch(\r\n !!state.currentPresentation && SubjectDataServiceHelper.getClassificationTreeFetchOptions(\r\n state.currentPresentation.id, getSetState('classificationTree')),\r\n [state.currentPresentation],\r\n !!state.currentPresentation\r\n );\r\n\r\n // Reset subjectClassifications whenever videoSubjects changes\r\n React.useEffect(() => getSetState('subjectClassifications')([]), [state.videoSubjects]);\r\n\r\n const setSubjectClassifications = (\r\n classifications: Classification[], currentState: EditVideoSubjectsViewState\r\n ) => ([ ...(currentState.subjectClassifications || []), ...classifications ]);\r\n\r\n // Fetch classifications for each subject\r\n const subjectClassificationsFetchOptions = state.videoSubjects && state.videoSubjects.map(s =>\r\n SubjectDataServiceHelper.getSubjectClassificationFetchOptions(\r\n s.id, StateHelper.getSetStateByKey(setState, 'subjectClassifications', setSubjectClassifications))\r\n );\r\n\r\n useBulkFetch(subjectClassificationsFetchOptions, [state.videoSubjects], !!subjectClassificationsFetchOptions);\r\n\r\n useFetch(\r\n SubjectDataServiceHelper.getObjectClassificationsFetchOptions(videoId, SubjectMemberType.Videos, getSetState('videoClassifications')),\r\n [ videoId, state.videoSubjects ]\r\n );\r\n}\r\n\r\ninterface EditVideoSubjectsViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function EditVideoSubjectsView({ videoId }: EditVideoSubjectsViewProps): React.ReactElement {\r\n const [ state, setState ] = React.useState<EditVideoSubjectsViewState>({});\r\n\r\n const subjectDataService = useService<SubjectDataService>(DataServices.SUBJECT);\r\n\r\n useFetchData(videoId, state, setState);\r\n useSetDefaultPresentation(state, setState);\r\n\r\n const dataLoaded = !!state.videoSubjects && !!state.subjectTree && !!state.presentations\r\n && !!state.classificationTree && !!state.videoClassifications && !!state.subjectClassifications;\r\n\r\n return (\r\n <>\r\n <EditVideoNav videoId={videoId} activeAction={Actions.Videos.EDIT_VIDEO_SUBJECTS} />\r\n <ObjectHeader object={state.video} />\r\n {dataLoaded &&\r\n <EditObjectSubjects\r\n objectSubjects={state.videoSubjects}\r\n subjectTree={state.subjectTree}\r\n memberType={SubjectMemberType.Videos}\r\n presentations={state.presentations}\r\n currentPresentation={state.currentPresentation}\r\n setCurrentPresentation={StateHelper.getSetStateByKey(setState, 'currentPresentation')}\r\n objectClassifications={state.videoClassifications}\r\n objectSubjectClassifications={state.subjectClassifications}\r\n classificationTree={state.classificationTree}\r\n saveSubjects={(subjectsId: string[], addToClassifications: boolean, onDone: () => void) =>\r\n subjectDataService.updateObjectSubjects(\r\n videoId, subjectsId, SubjectMemberType.Videos, addToClassifications, onDone, onDone)\r\n }\r\n saveClassifications={(classificationIds: string[], onDone: () => void) =>\r\n subjectDataService.updateObjectClassifications(\r\n videoId, state.currentPresentation.id, classificationIds, SubjectMemberType.Videos, onDone, onDone)\r\n }\r\n />\r\n }\r\n </>\r\n );\r\n}\r\n","export * from './EditVideoSubjectsView';","export * from './edit-video-audiences';\r\nexport * from './edit-video-subjects';\r\nexport * from './edit-video-aliases';","import './apps/subjects/views/presentations/select-presentation/select-presentation.lang.json';\r\n\r\nexport * from './shared/constants';\r\nexport * from './shared/layouts';\r\nexport * from './shared/services';\r\n\r\nexport * from './apps/companies/CompaniesApplication';\r\n\r\nexport * from './apps/domain-options/DomainOptionsApplication';\r\n\r\nexport * from './apps/people/PeopleApplication';\r\n\r\nexport * from './apps/playlists/services';\r\nexport * from './apps/playlists/PlaylistsApplication';\r\n\r\nexport * from './apps/series/services';\r\nexport * from './apps/series/SeriesApplication';\r\n\r\nexport * from './apps/subjects/services';\r\nexport * from './apps/subjects/SubjectsApplication';\r\n\r\nexport * from './apps/videos/services';\r\nexport * from './apps/videos/VideosApplication';\r\n\r\nexport * from './apps/domain-options/DomainOptionsApplication';","import * as React from 'react';\r\n\r\nimport { string, object } from 'yup';\r\nimport { useFormikContext, Form } from 'formik';\r\nimport { FormWrapper, FormField, SpinnerButton, useCanSubmitForm } from '@clickview/shared';\r\nimport { CreateAliasRequest, Alias } from 'shared/interfaces';\r\n\r\n\r\nconst AliasValidationSchema = object().shape<CreateAliasRequest>({\r\n name: string()\r\n .trim()\r\n .max(255, 'Name is too long')\r\n .required('Name is required')\r\n .default(''),\r\n});\r\n\r\nfunction EditAliasForm(): React.ReactElement {\r\n const formikProps = useFormikContext<CreateAliasRequest>();\r\n const canSubmit = useCanSubmitForm(formikProps);\r\n\r\n return (\r\n <Form>\r\n <FormField<CreateAliasRequest>\r\n label='Create an alias'\r\n name='name'\r\n id='name'\r\n value={formikProps.values.name}\r\n placeholder='Add an alias'\r\n />\r\n <div className='d-flex justify-content-end'>\r\n <SpinnerButton showSpinner={formikProps.isSubmitting} type='submit' disabled={!canSubmit}>\r\n Add\r\n </SpinnerButton>\r\n </div>\r\n </Form>\r\n );\r\n}\r\n\r\ninterface AddAliasProps {\r\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\r\n}\r\n\r\nfunction AddAlias(props : AddAliasProps) : JSX.Element {\r\n const { onSave } = props;\r\n\r\n const onSubmit = (data: CreateAliasRequest, onDone: () => void) : void => {\r\n onSave(data, onDone);\r\n };\r\n\r\n return (\r\n <FormWrapper<CreateAliasRequest, Alias>\r\n initialValues={{ name: '' }}\r\n validationSchema={AliasValidationSchema}\r\n onSubmit={onSubmit}\r\n resetOnSubmit\r\n >\r\n <EditAliasForm />\r\n </FormWrapper>\r\n );\r\n\r\n}\r\n\r\nexport default AddAlias;","import * as React from 'react';\r\nimport { Alias } from 'shared/interfaces/models';\r\nimport { SvgContainer, cvSvgLibrary } from '@clickview/shared';\r\n\r\ninterface AliasProps{\r\n alias: Alias;\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nfunction Alias( { alias, onDelete } : AliasProps) : JSX.Element {\r\n return (\r\n <li className='list-group-item d-flex justify-content-between'>\r\n {alias.name}\r\n <SvgContainer svgName={cvSvgLibrary.Delete} onClick={() => onDelete(alias.id)} />\r\n </li>\r\n );\r\n}\r\n\r\ninterface AliasListProps {\r\n aliases: Alias[];\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nfunction AliasList( { aliases, onDelete } : AliasListProps) : JSX.Element {\r\n return (\r\n <ul className='list-group mb-3'>\r\n {\r\n aliases\r\n ? aliases.map(alias => <Alias key={alias.id} alias={alias} onDelete={onDelete} />)\r\n : <span>Currently there are no aliases for this object.</span>\r\n }\r\n </ul>\r\n );\r\n}\r\n\r\nexport default AliasList;\r\n","import * as React from 'react';\r\n\r\nimport AliasList from './AliasList';\r\nimport AddAlias from './AddAlias';\r\nimport { Alias, CreateAliasRequest } from 'shared/interfaces';\r\n\r\ninterface AliasesProps {\r\n aliases: Alias[];\r\n onSave: (alias: CreateAliasRequest, success: () => void) => void;\r\n onDelete: (id: string) => void;\r\n}\r\n\r\nexport function Aliases(props: AliasesProps) : JSX.Element {\r\n\r\n const { onSave, aliases, onDelete } = props;\r\n\r\n return (\r\n <div className='w-50'>\r\n <h1>Aliases</h1>\r\n <AliasList aliases={aliases} onDelete={onDelete} />\r\n <AddAlias onSave={onSave} />\r\n </div>\r\n );\r\n}","export * from './Aliases';","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\nimport { SvgContainer, SvgContainerSize, AppLink, cvSvgLibrary } from '@clickview/shared';\r\n\r\ninterface BackButtonProps {\r\n backToName: string;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nexport function BackButton({ backToName, appLink }: BackButtonProps): React.ReactElement {\r\n return (\r\n <AppLink appLink={appLink} className='d-inline-flex align-items-center'>\r\n <SvgContainer svgName={cvSvgLibrary.ArrowLeft} size={SvgContainerSize.Small} />\r\n <span className='ml-1'>{`Back to ${backToName}`}</span>\r\n </AppLink>\r\n );\r\n}","export * from './BackButton';","import * as React from 'react';\r\nimport { Form, FormCheckProps } from 'react-bootstrap';\r\nimport { RandomHelper } from '@clickview/common';\r\n\r\ninterface CheckboxProps {\r\n selected: boolean;\r\n onToggle: (selected: boolean) => void;\r\n}\r\n\r\nexport function Checkbox(props : CheckboxProps & FormCheckProps): React.ReactElement {\r\n const { selected, onToggle, ...formCheckProps } = props;\r\n\r\n /**\r\n * We store the value of `selected` in state as `checked` so that if the value\r\n * of `selected` relies on an api call, the UI can be immediately updated.\r\n */\r\n const [ checked, setChecked ] = React.useState(selected);\r\n\r\n React.useEffect(() => setChecked(selected), [selected]);\r\n\r\n const onChangeHandler = () => {\r\n setChecked(!checked);\r\n onToggle(!checked);\r\n };\r\n\r\n return (\r\n <Form.Check\r\n type='checkbox'\r\n id={`checkbox-${RandomHelper.getRandomInt()}`}\r\n checked={checked}\r\n onChange={onChangeHandler}\r\n {...formCheckProps}\r\n />\r\n );\r\n}","export * from './Checkbox';","import * as React from 'react';\r\nimport { FieldAttributes, Field } from 'formik';\r\nimport { Form } from 'react-bootstrap';\r\nimport { FunctionHelper } from '@clickview/common';\r\n\r\nexport interface FileSelectProps {\r\n onFileSelect: (files: FileList) => void;\r\n acceptMultiple?: boolean;\r\n mimeType?: string;\r\n label?: string;\r\n error?: string | string[];\r\n touched?: boolean;\r\n}\r\n\r\nexport function FileSelect(props: FieldAttributes<FileSelectProps>): React.ReactElement {\r\n const { onFileSelect, acceptMultiple, mimeType, label, error, touched, ...fieldProps } = props;\r\n\r\n const showError = error && touched;\r\n\r\n let className = 'custom-file-input cursor-pointer';\r\n\r\n if (showError)\r\n className += ' is-invalid';\r\n\r\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.currentTarget.files;\r\n\r\n if (!files || !files.length || !FunctionHelper.isFunction(onFileSelect))\r\n return;\r\n\r\n onFileSelect(files);\r\n };\r\n\r\n const fileInputProps = {\r\n type: 'file',\r\n className,\r\n onChange,\r\n autoComplete: 'off',\r\n value: '',\r\n multiple: !!acceptMultiple,\r\n ...(mimeType ? { accept: mimeType } : {})\r\n };\r\n\r\n return (\r\n <div className='form-group'>\r\n <div className='custom-file'>\r\n <Field {...fileInputProps} {...fieldProps}>{props.children}</Field>\r\n <Form.Label className='custom-file-label' htmlFor={fieldProps.id}>{label}</Form.Label>\r\n </div>\r\n </div>\r\n );\r\n}","export * from './FileSelect';","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\nimport {\r\n SvgContainer,\r\n SvgContainerSize,\r\n ImageType,\r\n FileIdType,\r\n cvSvgLibrary,\r\n ImageHelper,\r\n Image,\r\n ImageMinDimensions\r\n} from '@clickview/shared';\r\n\r\nimport { FileSelect, FileSelectProps } from 'shared/components';\r\nimport { FileExtensions } from 'shared/constants';\r\nimport { ImageSelectHelper } from 'shared/utils';\r\nimport { ImageStorageContext } from 'shared/context';\r\n\r\nconst Labels = {\r\n [ImageType.Thumbnails]: 'Thumbnail',\r\n [ImageType.Banners]: 'Banner',\r\n [ImageType.Avatars]: 'Avatar',\r\n [ImageType.Logos]: 'Logo',\r\n [ImageType.Covers]: 'Cover',\r\n [ImageType.Posters]: 'Poster',\r\n [ImageType.TallPosters]: 'Poster'\r\n};\r\n\r\ninterface ImageSelectProps extends Omit<FileSelectProps, 'onFileSelect'> {\r\n imageType: ImageType;\r\n currentImage?: Image;\r\n setNewImage: (image: Image) => void;\r\n application: string;\r\n uploadAction: string;\r\n}\r\n\r\nexport function ImageSelect(props: ImageSelectProps): React.ReactElement {\r\n const { imageType, currentImage, setNewImage, application, uploadAction, ...rest } = props;\r\n\r\n const { setDataUrl, getImage, imageUploaded } = React.useContext(ImageStorageContext);\r\n\r\n const [ imageSelected, setImageSelected ] = React.useState(false);\r\n const [ image, setImage ] = React.useState<Image>(currentImage);\r\n const [ hideImage, setHideImage ] = React.useState(false);\r\n\r\n const onImageLoad = (imageEl: HTMLImageElement) => {\r\n setImageSelected(true);\r\n setDataUrl(imageEl.src);\r\n\r\n // Trigger Upload Image appLink\r\n Core.AppLinkHelper.trigger({ application, action: uploadAction, args: [imageType]});\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!imageSelected)\r\n return;\r\n\r\n const newImage = getImage();\r\n\r\n if (!newImage)\r\n return;\r\n\r\n // Prevent this effect from being re-run unless we select an new image in this component.\r\n setImageSelected(false);\r\n setImage(newImage);\r\n setNewImage({ fileId: newImage.id, fileIdType: FileIdType.ImageAPIv2 });\r\n }, [imageUploaded]);\r\n\r\n return (\r\n <div className='form-group'>\r\n <div className='form-control h-auto py-2'>\r\n <label>{Labels[imageType]}</label>\r\n <em className='ml-1 text-muted'>\r\n {\r\n `(Minimum dimensions are ${ImageMinDimensions[imageType].width}px`\r\n + ` x ${ImageMinDimensions[imageType].height}px)`\r\n }\r\n </em>\r\n <FileSelect\r\n label={`Choose a ${Labels[imageType].toLowerCase()}`}\r\n name='image'\r\n mimeType={FileExtensions.IMAGES}\r\n onFileSelect={(files: FileList) => ImageSelectHelper.onFileSelect(imageType, files, onImageLoad)}\r\n {...rest}\r\n />\r\n {!!image && !!image.url &&\r\n <>\r\n {!hideImage &&\r\n <div className={`pb-2 ${imageType === ImageType.Banners ? 'w-100' : 'w-50'}`}>\r\n <img src={ImageHelper.createUrl(image.url)} className='img img-fluid' />\r\n </div>\r\n }\r\n <div className='d-flex justify-content-center'>\r\n <SvgContainer\r\n svgName={hideImage ? cvSvgLibrary.ChevronDown : cvSvgLibrary.ChevronUp}\r\n size={SvgContainerSize.Large}\r\n className='svg-container cursor-pointer'\r\n onClick={() => setHideImage(!hideImage)}\r\n title={hideImage ? 'Show image' : 'Hide image'}\r\n tooltipPlacement='top'\r\n />\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n}","export * from './ImageSelect';","export * from './file-select';\r\nexport * from './image-select';","import * as React from 'react';\r\nimport Cropper from 'cropperjs';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nimport { FunctionHelper } from '@clickview/common';\r\nimport { SpinnerButton } from '@clickview/shared';\r\n\r\n/**\r\n * This enum maps to the viewMode option in the\r\n * Cropperjs documentation. \r\n * https://github.com/fengyuanchen/cropperjs\r\n */\r\nenum CropperViewMode {\r\n NoRestrictions = 0,\r\n RestrictToCanvas = 1\r\n}\r\n\r\nconst MIME_REGEX = /data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,.*/;\r\n\r\nconst getImageMimeType = (dataUrl: string) => {\r\n const mime = dataUrl.match(MIME_REGEX);\r\n\r\n if (!mime)\r\n return;\r\n\r\n return mime[1];\r\n};\r\n\r\ninterface ImageCropperProps {\r\n dataUrl: string;\r\n minHeight: number;\r\n minWidth: number;\r\n onCrop: (dataUrl: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport function ImageCropper(props: ImageCropperProps): React.ReactElement {\r\n const{ dataUrl, minHeight, minWidth, onCrop, onCancel } = props;\r\n\r\n const imageRef = React.useRef<HTMLImageElement>();\r\n const cropperRef = React.useRef<Cropper>();\r\n\r\n const [ imageLoaded, setImageLoaded ] = React.useState(false);\r\n const [ showSpinner, setShowSpinner ] = React.useState(false);\r\n\r\n const crop = () => {\r\n if (!imageLoaded)\r\n return;\r\n\r\n setShowSpinner(true);\r\n\r\n const croppedDataUrl = cropperRef.current.getCroppedCanvas().toDataURL(getImageMimeType(dataUrl));\r\n\r\n FunctionHelper.isFunction(onCrop) && onCrop(croppedDataUrl);\r\n };\r\n\r\n React.useEffect(() => {\r\n const image = new Image();\r\n image.src = dataUrl;\r\n\r\n const viewPortToImageRatio = imageRef.current.offsetWidth / image.width;\r\n\r\n cropperRef.current = new Cropper(imageRef.current, {\r\n viewMode: CropperViewMode.RestrictToCanvas,\r\n autoCropArea: 1, // Number between 0 and 1 that defines the initial cropper area as a percentage of the image.\r\n aspectRatio: minWidth / minHeight,\r\n minCropBoxWidth: minWidth * viewPortToImageRatio,\r\n minCropBoxHeight: minHeight * viewPortToImageRatio,\r\n ready: () => setImageLoaded(true)\r\n });\r\n\r\n return () => cropperRef.current.destroy();\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className='pb-3'>\r\n <img ref={imageRef} src={dataUrl} className='img img-fluid mw-100' />\r\n </div>\r\n <div className='d-flex justify-content-end border-top pt-3'>\r\n <Button variant='link' onClick={onCancel}>Cancel</Button>\r\n <SpinnerButton onClick={crop} disabled={!imageLoaded} showSpinner={showSpinner}>Crop</SpinnerButton>\r\n </div>\r\n </>\r\n );\r\n}","export * from './ImageCropper';","export * from './back-button';\r\nexport * from './checkbox';\r\nexport * from './forms';\r\nexport * from './image-cropper';\r\nexport * from './object-collection';\r\nexport * from './object-header';\r\nexport * from './object-list';\r\nexport * from './object-list-nav';\r\nexport * from './rating-select';\r\nexport * from './tabs';\r\nexport * from './tree';\r\nexport * from './tree-select';\r\nexport * from './video-list';\r\nexport * from './aliases';","import * as React from 'react';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { BaseObject, BasePaginatedCollection, Pagination } from '@clickview/shared';\r\n\r\nimport { ObjectList } from 'shared/components';\r\n\r\ninterface ObjectCollectionProps {\r\n collection: BasePaginatedCollection<BaseObject>;\r\n collectionAppLink: Core.AppLink;\r\n newObjectAppLink: Core.AppLink;\r\n getObjectAppLink: (obj: BaseObject) => Core.AppLink;\r\n objectName: string;\r\n}\r\n\r\nexport function ObjectCollection(props: ObjectCollectionProps): JSX.Element {\r\n if (!props.collection)\r\n return <></>;\r\n\r\n const { data, pagination } = props.collection;\r\n\r\n return (\r\n <>\r\n {!!data &&\r\n <ObjectList\r\n objects={data}\r\n getObjectAppLink={props.getObjectAppLink}\r\n newObjectAppLink={props.newObjectAppLink}\r\n objectName={props.objectName}\r\n />\r\n }\r\n {!!pagination && !!pagination.cursors &&\r\n <Pagination\r\n cursors={pagination.cursors}\r\n appLink={props.collectionAppLink}\r\n />\r\n }\r\n </>\r\n );\r\n}","export * from './ObjectCollection';","import * as React from 'react';\r\nimport { BaseObject, Actions, ActionOptions } from '@clickview/shared';\r\n\r\ninterface ObjectHeaderProps {\r\n object: BaseObject;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function ObjectHeader({ object, actions }: ObjectHeaderProps): JSX.Element {\r\n return (\r\n <div className='d-flex justify-content-between py-2'>\r\n {!!object && <h5>{object.name}</h5>}\r\n {!!actions && <span><Actions actions={actions} /></span>}\r\n </div>\r\n );\r\n}","export * from './ObjectHeader';","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\nimport { BaseObject, AppLink } from '@clickview/shared';\r\n\r\ninterface ObjectListNavProps {\r\n objects: BaseObject[];\r\n getAppLink: (obj: BaseObject) => Core.AppLink;\r\n emptyMessage?: string;\r\n}\r\n\r\nObjectListNav.defaultProps = {\r\n emptyMessage: 'There is nothing here.'\r\n};\r\n\r\nexport function ObjectListNav({ objects, getAppLink, emptyMessage }: ObjectListNavProps): React.ReactElement {\r\n if (!objects)\r\n return <></>;\r\n\r\n if (!objects.length)\r\n return <div className='py-3'><p>{emptyMessage}</p></div>;\r\n\r\n return (\r\n <ul className='list-unstyled'>\r\n {objects.map((o, idx) =>\r\n <li key={idx} className='border rounded mb-3'>\r\n <AppLink appLink={getAppLink(o)} className='d-block p-3'>\r\n {o.name}\r\n </AppLink>\r\n </li>\r\n )}\r\n </ul>\r\n );\r\n}","export * from './ObjectListNav';","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\n\r\nimport { Core } from '@clickview/common';\r\nimport { BaseObject, AppLink, SvgContainer, cvSvgLibrary, SvgContainerSize } from '@clickview/shared';\r\n\r\ninterface ObjectItemProps {\r\n object: BaseObject;\r\n appLink: Core.AppLink;\r\n}\r\n\r\nfunction ObjectItem(props: ObjectItemProps): JSX.Element {\r\n return (\r\n <tr>\r\n <td>\r\n <AppLink appLink={props.appLink}>\r\n {props.object.name}\r\n </AppLink>\r\n </td>\r\n <td></td>\r\n </tr>\r\n );\r\n}\r\n\r\ninterface ObjectListProps {\r\n objects: BaseObject[];\r\n newObjectAppLink: Core.AppLink;\r\n getObjectAppLink: (obj: BaseObject) => Core.AppLink;\r\n objectName: string;\r\n}\r\n\r\nexport function ObjectList(props: ObjectListProps): JSX.Element {\r\n return (\r\n <Table responsive>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>\r\n <div className='d-flex justify-content-end'>\r\n <AppLink appLink={props.newObjectAppLink}>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <span>{`New ${props.objectName}`}</span>\r\n </AppLink>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.objects.map(o =>\r\n <ObjectItem key={o.id} object={o} appLink={props.getObjectAppLink(o)} />\r\n )}\r\n </tbody>\r\n </Table>\r\n );\r\n}","export * from './ObjectList';","import * as React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nimport { Rating, FormField } from '@clickview/shared';\r\n\r\nimport { UpdateObjectRating } from 'shared/interfaces';\r\n\r\nconst getRatingLabel = (rating: Rating) => `${rating.name}${rating.code ? ` (${rating.code})` : ''}`;\r\n\r\ntype ObjectWithRating<T extends object> = T & { rating: UpdateObjectRating };\r\n\r\ninterface RatingSelectProps {\r\n ratings: Rating[];\r\n}\r\n\r\nexport function RatingSelect<T extends ObjectWithRating<{}>>(props: RatingSelectProps): JSX.Element {\r\n const formikProps = useFormikContext<T>();\r\n\r\n return (\r\n <FormField<T>\r\n as='select'\r\n label='Rating'\r\n name='rating'\r\n id='rating'\r\n value={formikProps.values.rating && formikProps.values.rating.id}\r\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>\r\n formikProps.setFieldValue('rating', e.target.value ? { id: e.target.value } : {})\r\n }\r\n >\r\n <>\r\n <option value={''}>Please select a rating</option>\r\n {props.ratings.map((rating, idx) =>\r\n <option key={idx} value={rating.id}>{getRatingLabel(rating)}</option>\r\n )}\r\n </>\r\n </FormField>\r\n );\r\n}","export * from './RatingSelect';","import * as React from 'react';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { AppLink } from '@clickview/shared';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nimport { NavHelper } from 'shared/utils';\r\n\r\ninterface TabsProps {\r\n tabs: NavItem[];\r\n isItemActive?: (item: NavItem) => boolean;\r\n}\r\n\r\nTabs.defaultProps = {\r\n isItemActive: NavHelper.isItemActive\r\n};\r\n\r\nexport function Tabs({ tabs, isItemActive }: TabsProps): React.ReactElement {\r\n return (\r\n <Nav fill variant='tabs'>\r\n {tabs.map((tab, idx) =>\r\n <Nav.Item key={idx}>\r\n <Nav.Link as={AppLink} appLink={tab.appLink} active={isItemActive(tab)}>\r\n {tab.label}\r\n </Nav.Link>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n );\r\n}","export * from './Tabs';","import * as React from 'react';\r\nimport { Core, FunctionHelper, ObjectHelper } from '@clickview/common';\r\nimport { AppLink, BaseObject } from '@clickview/shared';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { Tree, TreeProps } from 'shared/components';\r\n\r\nimport { TreeSelectHelper, SelectedItems } from './TreeSelectHelper';\r\n\r\ninterface TreeSelectProps<T extends BaseTree<BaseObject>> extends TreeProps<T> {\r\n label?: string;\r\n hideCollapseBtn?: boolean;\r\n collapse?: boolean;\r\n noSelectionMessage?: string;\r\n isNodeDisabled?: (node: T) => boolean;\r\n getSelectedItemAppLink?: (itemId: string) => Core.AppLink;\r\n}\r\n\r\nexport function TreeSelect<T extends BaseTree<BaseObject>>(props: TreeSelectProps<T>): React.ReactElement {\r\n const {\r\n onSelect,\r\n label,\r\n hideCollapseBtn,\r\n collapse,\r\n noSelectionMessage,\r\n isNodeDisabled,\r\n getSelectedItemAppLink,\r\n ...otherProps\r\n } = props;\r\n\r\n const { tree, selectedIds } = otherProps;\r\n\r\n const [ selectedItems, setSelectedItems ] =\r\n React.useState<SelectedItems>(TreeSelectHelper.getState<T>(selectedIds, tree));\r\n\r\n React.useEffect(() => setSelectedItems(TreeSelectHelper.getState<T>(selectedIds, tree)), [ selectedIds, tree ]);\r\n\r\n const [ isCollapsed, setIsCollapsed ] = React.useState(!!collapse);\r\n\r\n React.useEffect(() => setIsCollapsed(!!collapse), [collapse]);\r\n\r\n const onSelectHandler = (item: T) => FunctionHelper.isFunction(onSelect) && onSelect(item);\r\n\r\n const showHeader = !hideCollapseBtn || !!label;\r\n\r\n return (\r\n <>\r\n {showHeader &&\r\n <div className='pb-2'>\r\n {!!label && <label className='m-0'>{label}</label>}\r\n {!hideCollapseBtn &&\r\n <a className='float-right cursor-pointer' onClick={() => setIsCollapsed(!isCollapsed)}>\r\n {isCollapsed ? 'Expand' : 'Collapse'}\r\n </a>\r\n }\r\n </div>\r\n }\r\n {!isCollapsed &&\r\n <div className='py-2 border-top'>\r\n <Tree onSelect={onSelectHandler} isDisabled={isNodeDisabled} {...otherProps} />\r\n </div>\r\n }\r\n {(!ObjectHelper.isEmpty(selectedItems) || !!noSelectionMessage) &&\r\n <div className='py-2 border-top'>\r\n <label>Selected:</label>\r\n <ul className='m-0'>\r\n {!ObjectHelper.isEmpty(selectedItems)\r\n ? Object.keys(selectedItems).map((key, idx) =>\r\n <li key={idx}>\r\n {FunctionHelper.isFunction(getSelectedItemAppLink)\r\n ? <AppLink appLink={getSelectedItemAppLink(key)}>{selectedItems[key]}</AppLink>\r\n : selectedItems[key]\r\n }\r\n </li>\r\n )\r\n : <li>{noSelectionMessage}</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","import { BaseObject } from '@clickview/shared';\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { TreeHelper } from 'shared/utils';\r\n\r\ntype U = BaseTree<BaseObject>;\r\n\r\n/**\r\n * A map of selected items and the chord of their location.\r\n * e.g. {\r\n * 'xyx': 'Science -> Physics'\r\n * }\r\n */\r\nexport interface SelectedItems {\r\n [id: string]: string;\r\n}\r\n\r\nexport const TreeSelectHelper = {\r\n getChord<T extends U>(tree: T, item: T): string {\r\n return TreeHelper.getPath(tree, item).map(i => i.name).join(' -> ');\r\n },\r\n\r\n getState<T extends U>(selectedIds: string[], tree: T): SelectedItems {\r\n let selectedItems = {};\r\n\r\n Array.isArray(selectedIds) && selectedIds.forEach(id => {\r\n const item = TreeHelper.find(tree, id);\r\n\r\n if (item)\r\n selectedItems = { [id]: TreeSelectHelper.getChord(tree, item), ...selectedItems };\r\n });\r\n\r\n return selectedItems;\r\n }\r\n};","export * from './TreeSelect';","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\nimport { BaseObject } from '@clickview/shared';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\n\r\nimport { TreeNode, TreeNodeAction } from './TreeNode';\r\nimport styles from './tree.scss';\r\n\r\nexport interface TreeProps<T extends BaseTree<BaseObject>> {\r\n tree: T;\r\n selectedIds?: string[];\r\n getAppLink?: (item: T) => Core.AppLink;\r\n onSelect?: (item: T) => void;\r\n isDisabled?: (item: T) => boolean;\r\n actions?: TreeNodeAction<T>[];\r\n}\r\n\r\nexport function Tree<T extends BaseTree<BaseObject>>(props: TreeProps<T>): React.ReactElement {\r\n const { tree, ...childProps } = props;\r\n\r\n if (!tree || !tree.children)\r\n return <></>;\r\n\r\n return (\r\n <ul className={`m-0 p-0 ${styles.tree}`}>\r\n {tree.children.map(child => <TreeNode key={child.id} tree={child} {...childProps} />)}\r\n </ul>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\n\r\nimport { SvgContainer, SvgContainerSize, BaseObject, cvSvgLibrary } from '@clickview/shared';\r\n\r\nimport { StringHelper, TreeHelper } from 'shared/utils';\r\nimport { BaseTree } from 'shared/interfaces';\r\n\r\nimport { Tree } from './Tree';\r\nimport { TreeNodeLink } from './TreeNodeLink';\r\nimport styles from './tree.scss';\r\n\r\nexport interface TreeNodeAction<T extends BaseTree<BaseObject>> {\r\n label: string;\r\n getAppLink: (node: T) => Core.AppLink;\r\n className?: string;\r\n}\r\n\r\ninterface TreeNodeProps<T extends BaseTree<BaseObject>> {\r\n tree: T;\r\n selectedIds?: string[];\r\n getAppLink?: (item: T) => Core.AppLink;\r\n onSelect?: (item: T) => void;\r\n isDisabled?: (item: T) => boolean;\r\n actions?: TreeNodeAction<T>[];\r\n}\r\n\r\nexport function TreeNode<T extends BaseTree<BaseObject>>(props: TreeNodeProps<T>): React.ReactElement {\r\n const { tree, selectedIds, getAppLink, onSelect, isDisabled, actions } = props;\r\n\r\n const isSelected = Array.isArray(selectedIds) && selectedIds.some(id => StringHelper.isEqual(tree.id, id));\r\n\r\n const isParentOfSelected = React.useMemo(() =>\r\n Array.isArray(selectedIds) && selectedIds.some(id => TreeHelper.find(tree, id)), [ tree, selectedIds ]);\r\n\r\n const [ isExpanded, setIsExpanded ] = React.useState(isParentOfSelected);\r\n\r\n const hasChildren = !!tree.children && !!tree.children.length;\r\n\r\n const linkProps = {\r\n name: tree.name,\r\n appLink: FunctionHelper.isFunction(getAppLink) ? getAppLink(tree) : null,\r\n onSelect: FunctionHelper.isFunction(onSelect) ? (() => onSelect(tree)) : null,\r\n isDisabled: FunctionHelper.isFunction(isDisabled) ? isDisabled(tree) : false,\r\n className: isSelected && styles.selected || isParentOfSelected && styles.parentOfSelected,\r\n actions: !!actions && actions.map(a => ({ ...a, appLink: a.getAppLink(tree) }))\r\n };\r\n\r\n return (\r\n <li className={`position-relative${isExpanded ? '' : ` ${styles.collapsed}`}`}>\r\n <div className='position-relative'>\r\n <span className={styles.node}>\r\n {hasChildren &&\r\n <SvgContainer\r\n svgName={cvSvgLibrary.ChevronDown}\r\n size={SvgContainerSize.Small}\r\n className={`svg-container ${styles.chevron}`}\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n />\r\n }\r\n <TreeNodeLink {...linkProps} />\r\n </span>\r\n {isExpanded && <Tree {...props} />}\r\n </div>\r\n </li>\r\n );\r\n}","import * as React from 'react';\r\nimport { Core } from '@clickview/common';\r\nimport { AppLink, Actions, ActionOptions } from '@clickview/shared';\r\n\r\nimport styles from './tree.scss';\r\n\r\ninterface TreeNodeLinkProps {\r\n name: string;\r\n appLink?: Core.AppLink;\r\n onSelect?: () => void;\r\n className?: string;\r\n isDisabled?: boolean;\r\n actions?: ActionOptions[];\r\n}\r\n\r\nexport function TreeNodeLink(props: TreeNodeLinkProps): React.ReactElement {\r\n const { name, appLink, onSelect, isDisabled, className, actions } = props;\r\n\r\n let textClassName = styles.text;\r\n\r\n if (className)\r\n textClassName += ` ${className}`;\r\n\r\n if (isDisabled)\r\n return <a className={`${textClassName} text-muted ${styles.disabled}`}>{name}</a>;\r\n\r\n return (\r\n <>\r\n {appLink\r\n ? <AppLink appLink={appLink} className={textClassName}>{name}</AppLink>\r\n : <a onClick={onSelect} className={textClassName}>{name}</a>\r\n }\r\n {!!actions && <Actions className={styles.actions} actions={actions} />}\r\n </>\r\n );\r\n}","export * from './Tree';\r\nexport * from './TreeNode';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tree\":\"cv--tree--1abau\",\"text\":\"cv--text--f13wK\",\"chevron\":\"cv--chevron--25eVA\",\"disabled\":\"cv--disabled--1qyCo\",\"parentOfSelected\":\"cv--parentOfSelected--1fgN6\",\"selected\":\"cv--selected--cVZit\",\"actions\":\"cv--actions--2BGWp\",\"node\":\"cv--node--rJVbQ\",\"collapsed\":\"cv--collapsed--vc2by\"};","import * as React from 'react';\r\nimport { SortableContainer, SortStart, SortEnd } from 'react-sortable-hoc';\r\nimport { Table } from 'react-bootstrap';\r\nimport { CollectionHelper } from '@clickview/shared';\r\n\r\nimport { VideoListItems, VideoListProps, VideoListHeader } from './VideoList';\r\n\r\nimport styles from './video-list.scss';\r\n\r\ntype ForwardRefProps = { forwardedRef: React.MutableRefObject<HTMLTableSectionElement> };\r\n\r\nconst SortableList = SortableContainer(({ forwardedRef, ...props }: VideoListProps & ForwardRefProps) =>\r\n <VideoListItems sortable ref={forwardedRef} {...props} />\r\n);\r\n\r\n/**\r\n * Remove the styles.sortingContainer class from the container\r\n * Set the width of the td elements in the cloned tr\r\n */\r\nconst handleSortStart = (ref: React.MutableRefObject<HTMLTableSectionElement>) => ({ node }: SortStart) => {\r\n const tbody = ref.current;\r\n\r\n if (!tbody)\r\n return;\r\n\r\n tbody.classList.add(styles.sortingContainer);\r\n\r\n const draggedEl = tbody.querySelector(`.${styles.draggedVideoItem}`);\r\n\r\n node.childNodes.forEach((td: HTMLTableCellElement, idx) =>\r\n (draggedEl.childNodes[idx] as HTMLTableCellElement ).style.width = `${td.offsetWidth}px`\r\n );\r\n};\r\n\r\n/**\r\n * Add the styles.sortingContainer class from the container\r\n * Call the onSortEnd prop\r\n */\r\nconst handleSortEnd = (\r\n ref: React.MutableRefObject<HTMLTableSectionElement>, onSortEnd: (oldIdx: number, newIdx: number) => void\r\n) => (sort: SortEnd) => {\r\n const containerEl = ref.current;\r\n\r\n if (containerEl)\r\n containerEl.classList.remove(styles.sortingContainer);\r\n\r\n onSortEnd(sort.oldIndex, sort.newIndex);\r\n};\r\n\r\ninterface SortableVideoListProps {\r\n onSortEnd: (oldIdx: number, newIdx: number) => void;\r\n}\r\n\r\nSortableVideoList.defaultProps = {\r\n emptyMessage: 'There are no videos in this list.'\r\n};\r\n\r\nexport function SortableVideoList(props: SortableVideoListProps & VideoListProps): React.ReactElement {\r\n const { onSortEnd, emptyMessage, ...videoListProps } = props;\r\n\r\n const ref = React.useRef<HTMLTableSectionElement>();\r\n\r\n if (CollectionHelper.isEmpty(props.videos))\r\n return <div>{emptyMessage}</div>;\r\n\r\n return (\r\n <Table responsive>\r\n <VideoListHeader sortable {...props} />\r\n <SortableList\r\n forwardedRef={ref}\r\n onSortStart={handleSortStart(ref)}\r\n onSortEnd={handleSortEnd(ref, onSortEnd)}\r\n lockAxis='y'\r\n lockToContainerEdges\r\n distance={1} // This allows mousedown/click events to be consumed before sorting is triggered.\r\n helperClass={styles.draggedVideoItem}\r\n helperContainer={() => ref.current} // this is the <tbody> in <VideoList />\r\n {...videoListProps}\r\n />\r\n </Table>\r\n );\r\n}","import * as React from 'react';\r\nimport { SortableElement } from 'react-sortable-hoc';\r\nimport { Core, FunctionHelper } from '@clickview/common';\r\nimport { Video, AppLink, Actions, ActionGenerator } from '@clickview/shared';\r\n\r\nconst getClassName = (additionalClassName: string) => {\r\n let className = 'bg-white';\r\n\r\n if (additionalClassName)\r\n className += ` ${additionalClassName}`;\r\n\r\n return className;\r\n};\r\n\r\ninterface VideoItemProps {\r\n video: Video;\r\n getVideoAppLink?: (video: Video) => Core.AppLink;\r\n getVideoActions?: ActionGenerator;\r\n className?: string;\r\n sortable?: boolean;\r\n itemNumber?: number;\r\n}\r\n\r\nexport function VideoItem(props: VideoItemProps): React.ReactElement {\r\n const { video, getVideoAppLink, getVideoActions, className = '', itemNumber } = props;\r\n\r\n const appLink = FunctionHelper.isFunction(getVideoAppLink) && getVideoAppLink(video);\r\n\r\n return (\r\n <tr className={getClassName(className)}>\r\n {!!itemNumber &&\r\n <td>\r\n <span>{itemNumber}</span>\r\n </td>\r\n }\r\n <td>\r\n {appLink\r\n ? <AppLink appLink={appLink}>{video.name}</AppLink>\r\n : video.name\r\n }\r\n </td>\r\n {FunctionHelper.isFunction(getVideoActions) &&\r\n <td>\r\n <span className='d-flex justify-content-end'>\r\n <Actions actions={getVideoActions(video)} />\r\n </span>\r\n </td>\r\n }\r\n </tr>\r\n );\r\n}\r\n\r\nexport const SortableVideoItem = SortableElement((props: VideoItemProps) => <VideoItem sortable {...props} />);","import * as React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport { Core } from '@clickview/common';\r\nimport { CollectionHelper, VideoCollection, Video, ActionGenerator } from '@clickview/shared';\r\n\r\nimport { SortableVideoItem, VideoItem } from './VideoItem';\r\nimport styles from './video-list.scss';\r\n\r\nexport interface VideoListProps {\r\n videos: VideoCollection;\r\n getVideoAppLink?: (video: Video) => Core.AppLink;\r\n getVideoActions?: ActionGenerator;\r\n sortable?: boolean;\r\n emptyMessage?: string;\r\n}\r\n\r\nexport const VideoListHeader = ({ sortable, getVideoActions }: VideoListProps) => (\r\n <thead>\r\n <tr>\r\n {!!sortable && <th>#</th>}\r\n <th>Name</th>\r\n {!!getVideoActions && <th></th>}\r\n </tr>\r\n </thead>\r\n);\r\n\r\nexport const VideoListItems = React.forwardRef(\r\n ({ videos, sortable, ...childProps }: VideoListProps, ref: React.MutableRefObject<HTMLTableSectionElement>) => (\r\n <tbody ref={ref}>\r\n {!CollectionHelper.isEmpty(videos) && videos.data.map((v, idx) =>\r\n sortable\r\n ? <SortableVideoItem\r\n key={v.id}\r\n index={idx}\r\n itemNumber={idx + 1}\r\n video={v}\r\n className={styles.draggableVideoItem}\r\n {...childProps}\r\n />\r\n : <VideoItem video={v} {...childProps} />\r\n )}\r\n </tbody>\r\n )\r\n);\r\n\r\nVideoList.defaultProps = {\r\n emptyMessage: 'There are no videos in this list.'\r\n};\r\n\r\nexport function VideoList({ emptyMessage, ...props }: VideoListProps): JSX.Element {\r\n return (\r\n !CollectionHelper.isEmpty(props.videos)\r\n ? <Table responsive>\r\n <VideoListHeader {...props} />\r\n <VideoListItems {...props} />\r\n </Table>\r\n : <div>{emptyMessage}</div>\r\n );\r\n}","export * from './SortableVideoList';\r\nexport { VideoList } from './VideoList';","// extracted by mini-css-extract-plugin\nmodule.exports = {\"draggableVideoItem\":\"cv--draggableVideoItem--1JMCe\",\"draggedVideoItem\":\"cv--draggedVideoItem--3jjle\"};","const SHARED_ACTIONS = {\r\n UPLOAD_IMAGE: 'upload:image'\r\n};\r\n\r\nexport const Actions = {\r\n Subjects: {\r\n SUBJECTS: 'subjects',\r\n NEW_SUBJECT: 'new:subject',\r\n EDIT_SUBJECT: 'edit:subject',\r\n EDIT_SUBJECT_PLAYLISTS: 'edit:subject:playlists',\r\n EDIT_SUBJECT_SERIES: 'edit:subject:series',\r\n EDIT_SUBJECT_VIDEOS: 'edit:subject:videos',\r\n SUBJECT_CLASSIFICATIONS: 'subject:classifications',\r\n DELETE_SUBJECT: 'delete:subject',\r\n ADD_SUBJECT_MEMBERS: 'add:subject:members',\r\n REMOVE_SUBJECT_MEMBER: 'remove:subject:member',\r\n\r\n CLASSIFICATIONS: 'classifications',\r\n PRESENTATION_CLASSIFICATIONS: 'presentation:classifications',\r\n NEW_CLASSIFICATION: 'new:classification',\r\n EDIT_CLASSIFICATION: 'edit:classification',\r\n EDIT_CLASSIFICATION_PLAYLISTS: 'edit:classification:playlists',\r\n EDIT_CLASSIFICATION_SERIES: 'edit:classification:series',\r\n EDIT_CLASSIFICATION_VIDEOS: 'edit:classification:videos',\r\n DELETE_CLASSIFICATION: 'delete:classification',\r\n REMOVE_CLASSIFICATION_MEMBER: 'remove:classification:member',\r\n\r\n LEVELS: 'levels',\r\n NEW_LEVEL: 'new:level',\r\n EDIT_LEVEL: 'edit:level',\r\n\r\n AUDIENCES: 'audiences',\r\n PRESENTATION_AUDIENCES: 'presentation:audiences',\r\n NEW_AUDIENCE: 'new:audience',\r\n EDIT_AUDIENCE: 'edit:audience',\r\n DELETE_AUDIENCE: 'delete:audience',\r\n\r\n PRESENTATIONS: 'presentations',\r\n NEW_PRESENTATION: 'new:presentation',\r\n EDIT_PRESENTATION: 'edit:presentation',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Playlists: {\r\n PLAYLISTS: 'index',\r\n NEW_PLAYLIST: 'new:playlist',\r\n EDIT_PLAYLIST: 'edit:playlist',\r\n EDIT_PLAYLIST_VIDEOS: 'edit:playlist:videos',\r\n EDIT_PLAYLIST_SUBJECTS: 'edit:playlist:subjects',\r\n EDIT_PLAYLIST_AUDIENCES: 'edit:playlist:audiences',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n\r\n REMOVE_VIDEO: 'remove:video',\r\n\r\n REMOVE_FROM_SUBJECT: 'remove:from:subject',\r\n\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Series: {\r\n EDIT_SERIES: 'edit:series',\r\n EDIT_SERIES_VIDEOS: 'edit:series:videos',\r\n EDIT_SERIES_SUBJECTS: 'edit:series:subjects',\r\n EDIT_SERIES_AUDIENCES: 'edit:series:audiences',\r\n ...SHARED_ACTIONS\r\n },\r\n\r\n Videos: {\r\n EDIT_VIDEO: 'edit:video',\r\n EDIT_VIDEO_AUDIENCES: 'edit:video:audiences',\r\n EDIT_VIDEO_SUBJECTS: 'edit:video:subjects',\r\n EDIT_VIDEO_ALIASES: 'edit:video:aliases'\r\n },\r\n\r\n DomainOptions: {\r\n DOMAIN_OPTIONS: 'domain:options',\r\n NEW_DOMAIN_OPTION: 'new:domain:option',\r\n EDIT_DOMAIN_OPTION: 'edit:domain:option',\r\n DELETE_DOMAIN_OPTION: 'delete:domain:option'\r\n },\r\n\r\n People: {\r\n PEOPLE: 'people',\r\n NEW_PERSON: 'new:person',\r\n EDIT_PERSON: 'edit:person'\r\n },\r\n\r\n Companies: {\r\n COMPANIES: 'companies',\r\n NEW_COMPANY: 'new:company',\r\n EDIT_COMPANY: 'edit:company'\r\n }\r\n};","export const DataPrefixes = {\r\n SUBJECT: 'subject',\r\n SUBJECTS: 'subjects',\r\n UPDATE_SUBJECT: 'update:subject',\r\n DELETE_SUBJECT: 'delete:subject',\r\n UPDATE_OBJECT_SUBJECTS: 'update:object:subjects',\r\n ADD_TO_SUBJECT: 'add:to:subject',\r\n REMOVE_FROM_SUBJECT: 'remove:from:subject',\r\n\r\n CLASSIFICATION: 'classification',\r\n CLASSIFICATIONS: 'classifications',\r\n UPDATE_CLASSIFICATION: 'update:classification',\r\n DELETE_CLASSIFICATION: 'delete:classification',\r\n UPDATE_OBJECT_CLASSIFICATIONS: 'update:object:classifications',\r\n ADD_TO_CLASSIFICATION: 'add:to:classification',\r\n REMOVE_FROM_CLASSIFICATION: 'remove:from:classification',\r\n\r\n PRESENTATION: 'presentation',\r\n PRESENTATIONS: 'presentations',\r\n UPDATE_PRESENTATION: 'update:presentation',\r\n\r\n LEVEL: 'level',\r\n LEVELS: 'levels',\r\n UPDATE_LEVEL: 'update:level',\r\n ADD_TO_LEVEL: 'add:to:level',\r\n REMOVE_FROM_LEVEL: 'remove:from:level',\r\n UPDATE_OBJECT_LEVELS: 'update:object:levels',\r\n\r\n AUDIENCE: 'audience',\r\n AUDIENCES: 'audiences',\r\n UPDATE_AUDIENCE: 'update:audience',\r\n DELETE_AUDIENCE: 'delete:audience',\r\n UPDATE_OBJECT_AUDIENCES: 'update:object:audiences',\r\n\r\n PLAYLIST: 'playlist',\r\n PLAYLISTS: 'playlists',\r\n UPDATE_PLAYLIST: 'update:playlist',\r\n DELETE_PLAYLIST: 'delete:playlist',\r\n PLAYLIST_VIDEOS: 'playlist:videos',\r\n REORDER_PLAYLIST_VIDEOS: 'reorder:playlist:videos',\r\n REMOVE_PLAYLIST_VIDEO: 'remove:playlist:video',\r\n\r\n VIDEO: 'video',\r\n\r\n SERIES: 'series',\r\n SERIES_BY_ID: 'series:by:id',\r\n UPDATE_SERIES: 'update:series',\r\n\r\n CURRENT_USER: 'current:user',\r\n\r\n UPLOAD_IMAGE: 'upload:image',\r\n\r\n LOCALE: 'locale',\r\n PHRASES: 'PHRASES'\r\n};","const imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\r\n\r\nexport const FileExtensions = {\r\n IMAGES: `.${imageExtensions.join(',.')}`\r\n};","export const Layouts = {\r\n CURATOR_LAYOUT: 'CuratorLayout'\r\n};","export const AppChannels = {\r\n COMPANIES: 'companies:application',\r\n DOMAIN_OPTIONS: 'domain:options:application',\r\n PEOPLE: 'people:application',\r\n PLAYLISTS: 'playlists:application',\r\n SERIES: 'series:application',\r\n SUBJECTS: 'subjects:application',\r\n VIDEOS: 'videos:application'\r\n};\r\n\r\nexport const DataChannels = {\r\n IMAGE_UPLOAD: 'image:upload:data:service',\r\n PLAYLIST: 'playlist:data:service',\r\n SERIES: 'series:data:service',\r\n SUBJECT: 'subject:data:service',\r\n USER: 'user:data:service',\r\n VIDEO: 'video:data:service',\r\n LANGUAGE: 'language:data:service'\r\n};","export const DataServices = {\r\n IMAGE_UPLOAD: 'ImageUploadDataService',\r\n PLAYLIST: 'PlaylistDataService',\r\n SUBJECT: 'SubjectDataService',\r\n USER: 'UserDataService',\r\n VIDEO: 'VideoDataService',\r\n SERIES: 'SeriesDataService',\r\n LANGUAGE: 'LanguageDataService'\r\n};","export * from './CuratorActions';\r\nexport * from './DataPrefixes';\r\nexport * from './FileExtensions';\r\nexport * from './Layouts';\r\nexport * from './RadioChannels';\r\nexport * from './Services';","import * as React from 'react';\r\n\r\nimport { Image } from '@clickview/shared';\r\n\r\n/**\r\n * This context is used for transferring image\r\n * data between different areas of the application.\r\n * \r\n * It stores base64 image files that have been read \r\n * in from ImageSelect component for the purpose of\r\n * being cropped and uploaded in ImageUploadView.\r\n * \r\n * Image objects uploaded in ImageUploadView can then be\r\n * stored in the context for use in the component\r\n * that initially requested the upload.\r\n */\r\ninterface IImageStorageContext {\r\n /**\r\n * Retrieve the stored base64 dataUrl. This will\r\n * reset the stored value after it is read.\r\n */\r\n getDataUrl: () => string;\r\n\r\n /**\r\n * Set the stored dataUrl.\r\n */\r\n setDataUrl: (dataUrl: string) => void;\r\n\r\n /**\r\n * Retrieve the stored image object. This will\r\n * reset the stored image object.\r\n */\r\n getImage: () => Image;\r\n\r\n /**\r\n * Store an image after it has been successfully\r\n * uploaded.\r\n */\r\n setImage: (image: Image) => void;\r\n\r\n /**\r\n * Flag to notify anything using this context\r\n * that an image has been uploaded.\r\n */\r\n imageUploaded: boolean;\r\n}\r\n\r\nexport const ImageStorageContext = React.createContext<IImageStorageContext>(undefined);\r\n\r\nexport const ImageStorageContextProvider = ({ children }: React.PropsWithChildren<{}>) => {\r\n const [ dataUrl, setDataUrl ] = React.useState<string>();\r\n const [ imageUploaded, setImageUploaded ] = React.useState(false);\r\n const [ image, setImage ] = React.useState<Image>();\r\n\r\n const getDataUrl = () => {\r\n const url = dataUrl;\r\n\r\n setDataUrl(null);\r\n\r\n return url;\r\n };\r\n\r\n const storeImage = (_image: Image) => {\r\n setImage(_image);\r\n setImageUploaded(true);\r\n };\r\n\r\n const getImage = () => {\r\n const _image = image;\r\n\r\n setImage(null);\r\n setImageUploaded(false);\r\n\r\n return _image;\r\n };\r\n\r\n const context = { getDataUrl, setDataUrl, imageUploaded, getImage, setImage: storeImage };\r\n\r\n return (\r\n <ImageStorageContext.Provider value={context}>\r\n {children}\r\n </ImageStorageContext.Provider>\r\n );\r\n};","import * as React from 'react';\r\nimport { useFetch } from '@clickview/common';\r\nimport { UserDataServiceHelper } from '@clickview/shared';\r\n\r\nimport { CuratorUser } from 'shared/interfaces';\r\n\r\nexport const UserContext = React.createContext<CuratorUser>(undefined);\r\n\r\nexport function UserContextProvider({ children }: React.PropsWithChildren<{}>): React.ReactElement {\r\n const [ user, setUser ] = React.useState<CuratorUser>();\r\n\r\n useFetch(UserDataServiceHelper.getCurrentUserFetchOptions<CuratorUser>(setUser), []);\r\n\r\n return (\r\n <UserContext.Provider value={user}>\r\n {children}\r\n </UserContext.Provider>\r\n );\r\n}","export * from './ImageStorageContext';\r\nexport * from './UserContext';","/**\r\n * The values in this enum directly\r\n * map to the group names in Master.\r\n */\r\nexport enum CuratorGroup {\r\n Developer = 'Curator Devs',\r\n Curator = 'Curators',\r\n Support = 'Support',\r\n SalesSupport = 'Sales Support'\r\n}","export * from './CuratorGroup';","import { Flight, HttpVerbs } from '@clickview/common';\r\nimport { CreateAliasRequest } from 'shared/interfaces';\r\n\r\nconst AliasesRequests = {\r\n getAliases(id: string) : Flight.Request {\r\n return {\r\n key: `aliases:${id}`,\r\n url: `/api/master/v2/objects/${id}/aliases`\r\n };\r\n },\r\n createAlias(id: string, data: CreateAliasRequest, success: () => void, error: () => void) : Flight.Request {\r\n return {\r\n key: `create:alias`,\r\n url: `/api/master/v2/objects/${id}/aliases`,\r\n type: HttpVerbs.POST,\r\n invalidationKeys: `aliases:${id}`,\r\n data,\r\n success,\r\n error\r\n };\r\n },\r\n deleteAlias(videoId: string, id: string, success: () => void, error: () => void): Flight.Request {\r\n return {\r\n key: `delete:alias`,\r\n url: `/api/domain/v2/objects/${videoId}/aliases/${id}`,\r\n type: HttpVerbs.DELETE,\r\n invalidationKeys: `aliases:${videoId}`,\r\n success,\r\n error\r\n };\r\n }\r\n};\r\n\r\nexport default AliasesRequests;","import { Flight } from '@clickview/common';\r\n\r\nconst endpoints = {\r\n ratings: () => `/api/domain/v2/me/ratings`\r\n};\r\n\r\nconst DataPrefixes = {\r\n RATINGS: 'ratings'\r\n};\r\n\r\nexport const RatingRequests = {\r\n ratings(): Flight.Request {\r\n return {\r\n url: endpoints.ratings(),\r\n key: DataPrefixes.RATINGS\r\n };\r\n }\r\n};","export * from './RatingRequests';","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n return \"<div class=\\\"layout-region\\\"></div>\";\n},\"useData\":true});","import * as React from 'react';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core, FunctionHelper, ReactLayoutView } from '@clickview/common';\r\nimport { LayoutRegions } from '@clickview/shared';\r\n\r\nimport { LayoutComponent, LayoutComponentProps } from 'shared/layouts';\r\n\r\nimport CuratorLayoutTemplate from './CuratorLayout.hbs';\r\nimport styles from './curator-layout.scss';\r\n\r\nexport interface CuratorLayoutViewOptions extends Core.LayoutViewOptions {\r\n provider?: (props: React.PropsWithChildren<{}>) => React.ReactElement;\r\n getTopNavView?: (currentAppLink: Core.AppLink) => React.ReactElement;\r\n}\r\n\r\nexport abstract class CuratorLayoutView extends ReactLayoutView {\r\n protected options: CuratorLayoutViewOptions;\r\n protected childComponents: { [index: string]: React.ReactNode} = {};\r\n\r\n constructor(options?: CuratorLayoutViewOptions) {\r\n super(options);\r\n }\r\n\r\n public get title(): boolean {\r\n return false;\r\n }\r\n\r\n public get name(): string {\r\n return 'CuratorLayoutView';\r\n }\r\n\r\n public get template(): any {\r\n return CuratorLayoutTemplate;\r\n }\r\n\r\n public get className(): string {\r\n return `container-fluid ${styles.curatorLayout}`;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n layout: '.layout-region'\r\n };\r\n }\r\n\r\n public static getCacheKey(options: CuratorLayoutViewOptions): string {\r\n let ck = `${this.name}`;\r\n\r\n const optionKeys: string[] = [];\r\n\r\n Object.keys(options).forEach((key: keyof CuratorLayoutViewOptions) => {\r\n optionKeys.push(`${key}:${options[key]}`);\r\n });\r\n\r\n if (optionKeys.length) {\r\n optionKeys.sort();\r\n ck += `:${optionKeys.join(':')}`;\r\n }\r\n\r\n return ck;\r\n }\r\n\r\n private getChildComponents(): LayoutComponentProps {\r\n return {\r\n topNav: {\r\n component: this.childComponents[LayoutRegions.TOP_NAV],\r\n className: styles.topNavRegion\r\n },\r\n leftNav: {\r\n component: this.childComponents[LayoutRegions.LEFT_NAV],\r\n className: `py-3 ${styles.leftNavRegion}`\r\n },\r\n content: {\r\n component: this.childComponents[LayoutRegions.CONTENT],\r\n className: 'position-relative container py-3'\r\n },\r\n popup: {\r\n component: this.childComponents[LayoutRegions.POPUP]\r\n },\r\n alert: {\r\n component: this.childComponents[LayoutRegions.ALERT]\r\n }\r\n };\r\n }\r\n\r\n protected unsetRegion(region: string): void {\r\n delete this.childComponents[region];\r\n\r\n this.renderLayout();\r\n }\r\n\r\n public renderTopNav(): void {\r\n if (!FunctionHelper.isFunction(this.options.getTopNavView))\r\n return;\r\n\r\n this.childComponents[LayoutRegions.TOP_NAV] = this.options.getTopNavView(Core.AppLinkHelper.getCurrentAppLink());\r\n }\r\n\r\n public hideLeftNav(): void {\r\n this.unsetRegion(LayoutRegions.LEFT_NAV);\r\n }\r\n\r\n public closePopup(): void {\r\n this.unsetRegion(LayoutRegions.POPUP);\r\n }\r\n\r\n public showChildView(region: string, component: React.ReactElement): void {\r\n this.childComponents[region] = component;\r\n\r\n this.renderTopNav();\r\n this.renderLayout();\r\n }\r\n\r\n public renderLayout(): void {\r\n const props = { provider: this.options.provider, ...this.getChildComponents() };\r\n\r\n super.showChildView('layout', this.wrapWithStore(<LayoutComponent {...props} />));\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"curatorLayout\":\"cv--curatorLayout--XayF7\",\"topNavRegion\":\"cv--topNavRegion--3ewaZ\",\"leftNavRegion\":\"cv--leftNavRegion--2c2o6\"};","export * from './CuratorLayoutView';","export * from './curator-layout';\r\nexport * from './primitives';","import * as React from 'react';\r\n\r\ninterface LayoutRegionComponentProps {\r\n className?: string;\r\n}\r\n\r\nconst LayoutRegionComponent = (props: React.PropsWithChildren<LayoutRegionComponentProps>): React.ReactElement => {\r\n const { className, children } = props;\r\n\r\n return (\r\n <div className={className}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst getClassName = (baseClassName: string, additionalClassNames?: string) =>\r\n `${baseClassName}${additionalClassNames ? ` ${additionalClassNames}` : ''}`;\r\n\r\ninterface LayoutItem {\r\n component: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport interface LayoutComponentProps {\r\n topNav?: LayoutItem;\r\n leftNav?: LayoutItem;\r\n content?: LayoutItem;\r\n popup?: LayoutItem;\r\n alert?: LayoutItem;\r\n}\r\n\r\nconst LayoutComponent = (props: LayoutComponentProps): React.ReactElement => {\r\n const { topNav, leftNav, content, popup, alert } = props;\r\n\r\n return (\r\n <>\r\n <div className='position-relative'>\r\n {!!topNav.component &&\r\n <LayoutRegionComponent className={getClassName('top-nav-region', topNav.className)}>\r\n {topNav.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!leftNav.component &&\r\n <LayoutRegionComponent className={getClassName('left-nav-region', leftNav.className)}>\r\n {leftNav.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!content.component &&\r\n <div className='content-container'>\r\n <LayoutRegionComponent className={getClassName('content-region', content.className)}>\r\n {content.component}\r\n </LayoutRegionComponent>\r\n </div>\r\n }\r\n </div>\r\n {!!popup.component &&\r\n <LayoutRegionComponent className={getClassName('popup-region', popup.className)}>\r\n {popup.component}\r\n </LayoutRegionComponent>\r\n }\r\n {!!alert.component &&\r\n <LayoutRegionComponent className={getClassName('alert-region', alert.className)}>\r\n {alert.component}\r\n </LayoutRegionComponent>\r\n }\r\n </>\r\n );\r\n};\r\n\r\ninterface WithProviderProps extends LayoutComponentProps {\r\n provider?: (props: React.PropsWithChildren<{}>) => React.ReactElement;\r\n}\r\n\r\nconst LayoutComponentWithProvider = (props: WithProviderProps): React.ReactElement => {\r\n const { provider: Provider, ...layoutComponentProps } = props;\r\n\r\n if (!Provider)\r\n return <LayoutComponent {...layoutComponentProps} />;\r\n\r\n return (\r\n <Provider>\r\n <LayoutComponent {...layoutComponentProps} />\r\n </Provider>\r\n );\r\n};\r\n\r\nexport { LayoutComponentWithProvider as LayoutComponent };","export * from './LayoutComponent';","import { Core, CommonChannels } from '@clickview/common';\r\n\r\n// Mapping of AppChannels to nav item text.\r\ninterface NavItemMappings {\r\n [appChannel: string]: string;\r\n}\r\n\r\ninterface CuratorAppNavServiceOptions {\r\n navSelector: string;\r\n currentItemClassName: string;\r\n navItemMappings: NavItemMappings;\r\n}\r\n\r\nexport class CuratorAppNavService extends Core.Service {\r\n protected options: CuratorAppNavServiceOptions;\r\n private currentApplication: string;\r\n\r\n public initialize(): void {\r\n this.listenTo(CommonChannels.SHELL, Core.EventNames.ROUTING_END, this.updateNav);\r\n }\r\n\r\n public get name(): string {\r\n return 'CuratorAppNavService';\r\n }\r\n\r\n private updateNav(): void {\r\n const currentApp = Core.AppLinkHelper.getCurrentAppLink().application;\r\n\r\n if (currentApp === this.currentApplication)\r\n return;\r\n\r\n this.currentApplication = currentApp;\r\n\r\n const currentNavItemTitle = this.options.navItemMappings[currentApp];\r\n\r\n if (!currentNavItemTitle)\r\n return;\r\n\r\n const nav = document.querySelector(this.options.navSelector);\r\n\r\n if (!nav || !nav.children)\r\n return;\r\n\r\n /**\r\n * This assumes that nav will be a list of elements, each of which has a nested <a>.\r\n * e.g. ul > li > a\r\n */\r\n [...nav.children].forEach(el => {\r\n const a = el.querySelector('a');\r\n\r\n if (!a)\r\n return;\r\n\r\n a.classList.remove(this.options.currentItemClassName);\r\n\r\n if (a.text === currentNavItemTitle)\r\n a.classList.add(this.options.currentItemClassName);\r\n });\r\n }\r\n}","import { BaseDataService } from '@clickview/common';\r\nimport { ImageType, Image } from '@clickview/shared';\r\n\r\nimport { DataServices, DataPrefixes, DataChannels } from 'shared/constants';\r\n\r\nexport class ImageUploadDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.IMAGE_UPLOAD;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.IMAGE_UPLOAD;\r\n }\r\n\r\n public uploadBase64Image(\r\n dataUrl: string,\r\n type: ImageType,\r\n callback?: (data: Image) => void,\r\n errorCallback?: () => void\r\n ): void {\r\n return this.create({\r\n resource: `/api/image/upload?type=${type}`,\r\n eventPrefix: DataPrefixes.UPLOAD_IMAGE,\r\n data: dataUrl,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { BaseDataService, ConcurrencyHelper } from '@clickview/common';\r\nimport { CacheDurations } from '@clickview/shared';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\ninterface LanguageConfig {\r\n locale: string;\r\n phrases: any;\r\n}\r\n\r\nexport class LanguageDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.LANGUAGE;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.LANGUAGE;\r\n }\r\n\r\n public getLanguageConfig(callback?: (languageConfig: LanguageConfig) => void): void {\r\n const languageConfig: LanguageConfig = { locale: 'en', phrases: {} };\r\n\r\n const asyncCounter = new ConcurrencyHelper(3);\r\n\r\n const dataServiceCallback = () => {\r\n asyncCounter.decrement();\r\n\r\n if (asyncCounter.getValue() > 0)\r\n return;\r\n\r\n callback(languageConfig);\r\n };\r\n\r\n this.get<string>({\r\n resource: '/api/locale',\r\n eventPrefix: DataPrefixes.LOCALE,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (locale: string) => {\r\n languageConfig.locale = locale;\r\n dataServiceCallback();\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases/shared',\r\n eventPrefix: `${DataPrefixes.PHRASES}:shared`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (phrases: any) => {\r\n if (phrases.shared === null)\r\n phrases.shared = {};\r\n\r\n languageConfig.phrases = {\r\n ...languageConfig.phrases,\r\n ...phrases\r\n };\r\n dataServiceCallback();\r\n }\r\n });\r\n\r\n this.get<ObjectHash>({\r\n resource: '/api/phrases/subjects',\r\n eventPrefix: `${DataPrefixes.PHRASES}:subjects`,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback: (phrases: any) => {\r\n if (phrases.subjects === null)\r\n phrases.subjects = {};\r\n\r\n languageConfig.phrases = {\r\n ...languageConfig.phrases,\r\n ...phrases\r\n };\r\n dataServiceCallback();\r\n }\r\n });\r\n }\r\n}","import { BaseDataService, DataServiceError, FetchOptions } from '@clickview/common';\r\nimport { CacheDurations } from '@clickview/shared';\r\n\r\nimport { DataServices, DataChannels, DataPrefixes } from 'shared/constants';\r\n\r\nexport class UserDataService extends BaseDataService {\r\n public get name(): string {\r\n return DataServices.USER;\r\n }\r\n\r\n public get channelName(): string {\r\n return DataChannels.USER;\r\n }\r\n\r\n public getCurrentUser<T>(callback?: (user: T) => void, errorCallback?: () => void): T {\r\n return this.get<T>({\r\n resource: '/api/currentuser',\r\n eventPrefix: DataPrefixes.CURRENT_USER,\r\n expiryTime: CacheDurations.STANDARD,\r\n callback,\r\n errorCallback\r\n });\r\n }\r\n}\r\n\r\nconst BaseFetchOptions = {\r\n dataServiceName: DataServices.USER,\r\n dataChannelName: DataChannels.USER\r\n};\r\n\r\nexport const UserDataServiceHelper = {\r\n getCurrentUserFetchOptions<T>(\r\n setData: (data: T) => void,\r\n onError?: (error: DataServiceError) => void\r\n ): FetchOptions {\r\n return {\r\n ...BaseFetchOptions,\r\n eventPrefix: DataPrefixes.CURRENT_USER,\r\n fetchData: (d: UserDataService) => d.getCurrentUser<T>(),\r\n setData,\r\n onError\r\n };\r\n }\r\n};","export * from './CuratorAppNavService';\r\nexport * from './ImageUploadDataService';\r\nexport * from './UserDataService';\r\nexport * from './LanguageDataService';","import { FunctionHelper } from '@clickview/common';\r\nimport { ImageType, ImageMinDimensions } from '@clickview/shared';\r\n\r\nexport const ImageSelectHelper = {\r\n onFileSelect(imageType: ImageType, files: FileList, onImageLoad: (image: HTMLImageElement) => void): void {\r\n if (!files || !files.length)\r\n return;\r\n\r\n const reader = new FileReader();\r\n\r\n reader.addEventListener('load', () => ImageSelectHelper.onReaderLoad(reader, imageType, onImageLoad));\r\n\r\n reader.readAsDataURL(files[0]);\r\n },\r\n\r\n onReaderLoad(reader: FileReader, imageType: ImageType, onImageLoad: (image: HTMLImageElement) => void): void {\r\n const image = new Image();\r\n image.src = reader.result as string;\r\n\r\n const minWidth = ImageMinDimensions[imageType].width;\r\n const minHeight = ImageMinDimensions[imageType].height;\r\n\r\n image.addEventListener('load', () => {\r\n if (ImageSelectHelper.isImageValid(imageType, image) && FunctionHelper.isFunction(onImageLoad)) {\r\n onImageLoad(image);\r\n } else {\r\n // TODO: Implement error\r\n alert(`Image too small: minimum dimensions are ${minWidth} x ${minHeight}`);\r\n }\r\n });\r\n },\r\n\r\n isImageValid(imageType: ImageType, image: HTMLImageElement): boolean {\r\n const minWidth = ImageMinDimensions[imageType].width;\r\n const minHeight = ImageMinDimensions[imageType].height;\r\n\r\n if (minWidth && image.width < minWidth)\r\n return false;\r\n\r\n if (minHeight && image.height < minHeight)\r\n return false;\r\n\r\n return true;\r\n }\r\n};","import { Core } from '@clickview/common';\r\n\r\nimport { NavItem } from 'shared/interfaces';\r\n\r\nexport const NavHelper = {\r\n isItemActive(item: NavItem, currentAppLink?: Core.AppLink): boolean {\r\n if (!currentAppLink)\r\n currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\r\n\r\n if (currentAppLink.application !== item.appLink.application)\r\n return false;\r\n\r\n // If navItem has a list of active actions, check to see if current action is one.\r\n if (Array.isArray(item.activeActions))\r\n return item.activeActions.includes(currentAppLink.action);\r\n\r\n // Otherwise, use navItem's appLink action.\r\n return currentAppLink.action === item.appLink.action;\r\n }\r\n};","import { CuratorUser } from 'shared/interfaces';\r\nimport { UserHelper } from 'shared/utils';\r\nimport { CuratorGroup } from 'shared/enums';\r\n\r\ninterface Permission {\r\n value: string;\r\n access: string;\r\n}\r\n\r\nexport const PermissionsHelper = {\r\n getProtectedReadPermission(): Permission[] {\r\n return [{\r\n value: 'protected',\r\n access: 'r'\r\n }];\r\n },\r\n\r\n hasSubjectsAccess(user: CuratorUser): boolean {\r\n return UserHelper.getGroupNames(user).includes(CuratorGroup.Developer);\r\n }\r\n};","export const PropHelper = {\r\n propsLoaded(props: {}): boolean {\r\n return Object.values(props).every(p => !!p);\r\n }\r\n};","export const StringHelper = {\r\n isEqual(str1: string | number, str2: string | number): boolean {\r\n return !!str1 && !!str2 && str1.toString() === str2.toString();\r\n },\r\n\r\n capitalizeFirstLetter(str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n};","import { BaseObject } from '@clickview/shared';\r\n\r\nimport { BaseTree } from 'shared/interfaces';\r\nimport { StringHelper } from 'shared/utils';\r\n\r\nexport const TreeHelper = {\r\n find<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T | null {\r\n if (!tree || !tree.children || !tree.children.length)\r\n return;\r\n\r\n const find = (node: T): T | null => {\r\n if (StringHelper.isEqual(node.id, id))\r\n return node;\r\n\r\n const children = node.children;\r\n\r\n if (!children || !children.length)\r\n return;\r\n\r\n for (let i = 0; i < children.length; i++) {\r\n const child = find(children[i] as T);\r\n\r\n if (child)\r\n return child;\r\n }\r\n };\r\n\r\n for (let j = 0; j < tree.children.length; j++) {\r\n const child = find(tree.children[j] as T);\r\n\r\n if (child)\r\n return child;\r\n }\r\n },\r\n\r\n getPath<T extends BaseTree<BaseObject>>(tree: T, node: T): T[] {\r\n let path = [node];\r\n\r\n const getParentId = (_node: T) => {\r\n if (_node.hasOwnProperty('parentIds') && Array.isArray(_node.parentIds) && _node.parentIds.length)\r\n return _node.parentIds[0];\r\n\r\n if (_node.hasOwnProperty('parentId'))\r\n return _node.parentId;\r\n\r\n return null;\r\n };\r\n\r\n let parentId = getParentId(node);\r\n\r\n while (parentId) {\r\n const parent = TreeHelper.find(tree, parentId);\r\n\r\n if (parent)\r\n path = [ parent, ...path ];\r\n\r\n parentId = parent ? getParentId(parent) : null;\r\n }\r\n\r\n return path;\r\n }\r\n};","import { CuratorUser } from 'shared/interfaces';\r\n\r\nexport const UserHelper = {\r\n getGroupNames(user: CuratorUser): string[] {\r\n return (user && user.groups) ? user.groups.map(g => g.name) : [];\r\n }\r\n};","export * from './ImageSelectHelper';\r\nexport * from './NavHelper';\r\nexport * from './PermissionsHelper';\r\nexport * from './PropHelper';\r\nexport * from './StringHelper';\r\nexport * from './TreeHelper';\r\nexport * from './UserHelper';","import * as React from 'react';\r\nimport { useService } from '@clickview/common';\r\nimport { ImageType, Image, ImageMinDimensions, Popup, PopupViewProps } from '@clickview/shared';\r\n\r\nimport { ImageStorageContext } from 'shared/context';\r\nimport { ImageCropper } from 'shared/components';\r\nimport { DataServices } from 'shared/constants';\r\nimport { ImageUploadDataService } from 'shared/services';\r\n\r\ninterface ImageUploadViewProps {\r\n imageType: ImageType;\r\n}\r\n\r\nexport function ImageUploadView({ imageType, closePopup }: ImageUploadViewProps & PopupViewProps): React.ReactElement {\r\n const { getDataUrl, setImage } = React.useContext(ImageStorageContext);\r\n\r\n const [dataUrl] = React.useState(getDataUrl());\r\n const [ showCropper, setShowCropper ] = React.useState(false);\r\n\r\n const imageUploadDataService = useService<ImageUploadDataService>(DataServices.IMAGE_UPLOAD);\r\n\r\n const onImageUploadSuccess = (image: Image) => {\r\n setImage(image);\r\n closePopup();\r\n };\r\n\r\n const onCrop = (croppedDataUrl: string) =>\r\n imageUploadDataService.uploadBase64Image(croppedDataUrl, imageType, onImageUploadSuccess, closePopup);\r\n\r\n const cropperProps = {\r\n dataUrl,\r\n imageType,\r\n minWidth: ImageMinDimensions[imageType].width,\r\n minHeight: ImageMinDimensions[imageType].height,\r\n onCrop,\r\n onCancel: closePopup\r\n };\r\n\r\n return (\r\n <Popup title='Crop Image' closePopup={closePopup} onEntered={() => setShowCropper(true)}>\r\n {showCropper && <ImageCropper {...cropperProps} />}\r\n </Popup>\r\n );\r\n}","export * from './ImageUploadView';","export * from './image-upload';","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_common__;","module.exports = __WEBPACK_EXTERNAL_MODULE__clickview_shared__;","module.exports = __WEBPACK_EXTERNAL_MODULE_backbone__;","module.exports = __WEBPACK_EXTERNAL_MODULE_cropperjs__;","module.exports = __WEBPACK_EXTERNAL_MODULE_formik__;","module.exports = __WEBPACK_EXTERNAL_MODULE_handlebars__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_bootstrap__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_redux__;","module.exports = __WEBPACK_EXTERNAL_MODULE_react_sortable_hoc__;","module.exports = __WEBPACK_EXTERNAL_MODULE_yup__;"],"sourceRoot":""}