@sunbird-cb/toc 0.0.9 → 0.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.
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
- package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
- package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
- package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
- package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
- package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +261 -248
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1177 -1148
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
- package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
- package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
- package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
- package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
- package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
- package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
- package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
- package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
- package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
- package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
- package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
- package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
- package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
- package/esm2022/lib/_collection-api.mjs +57 -57
- package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
- package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
- package/esm2022/lib/_models/common.model.mjs +2 -2
- package/esm2022/lib/_models/error.model.mjs +2 -2
- package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
- package/esm2022/lib/_services/rating.service.mjs +89 -89
- package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
- package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
- package/esm2022/lib/_services/widget-content.model.mjs +247 -247
- package/esm2022/lib/_services/widget-content.service.mjs +594 -594
- package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
- package/esm2022/lib/app-toc-lib.module.mjs +499 -499
- package/esm2022/lib/collection.config.mjs +161 -161
- package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
- package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
- package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
- package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
- package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
- package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
- package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
- package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2938 -2907
- package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
- package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
- package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
- package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
- package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
- package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
- package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
- package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
- package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
- package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
- package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
- package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
- package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
- package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
- package/esm2022/lib/models/app-toc.model.mjs +38 -38
- package/esm2022/lib/models/auto-complete.model.mjs +2 -2
- package/esm2022/lib/models/card-content.model.mjs +13 -13
- package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
- package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
- package/esm2022/lib/models/goal.model.mjs +2 -2
- package/esm2022/lib/models/meta-tag.model.mjs +8 -8
- package/esm2022/lib/models/playlist.model.mjs +2 -2
- package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
- package/esm2022/lib/models/rating.model.mjs +2 -2
- package/esm2022/lib/models/user-profile.model.mjs +21 -21
- package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
- package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
- package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
- package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
- package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
- package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
- package/esm2022/lib/services/access-control.service.mjs +56 -56
- package/esm2022/lib/services/action.service.mjs +23 -23
- package/esm2022/lib/services/app-toc-v2.service.mjs +332 -313
- package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
- package/esm2022/lib/services/certificate.service.mjs +69 -69
- package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
- package/esm2022/lib/services/editor.service.mjs +34 -34
- package/esm2022/lib/services/load-check.service.mjs +21 -21
- package/esm2022/lib/services/loader.service.mjs +33 -33
- package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
- package/esm2022/lib/services/netcore.service.mjs +56 -56
- package/esm2022/lib/services/nps-grid.service.mjs +31 -31
- package/esm2022/lib/services/otp.service.mjs +43 -43
- package/esm2022/lib/services/profile-v2.service.mjs +43 -43
- package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
- package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
- package/esm2022/lib/services/timer.service.mjs +23 -23
- package/esm2022/lib/services/title-tag.service.mjs +71 -71
- package/esm2022/lib/services/user-profile.service.mjs +55 -55
- package/esm2022/lib/services/viewer-data.service.mjs +64 -64
- package/esm2022/lib/services/viewer-util.service.mjs +599 -590
- package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
- package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
- package/esm2022/public-api.mjs +73 -71
- package/esm2022/sunbird-cb-toc.mjs +4 -4
- package/fesm2022/sunbird-cb-toc.mjs +24901 -24766
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/index.d.ts +6 -5
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -31
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -15
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -20
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -22
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -15
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -9
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -11
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -12
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -18
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -14
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -11
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -17
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -14
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -199
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -16
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -10
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -38
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -19
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -11
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -183
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -41
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -54
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -47
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +51 -49
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +175 -171
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -8
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -16
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -40
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -21
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -45
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -128
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -29
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -9
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -28
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -24
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -14
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -9
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -12
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -10
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -22
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -8
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -18
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -8
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +16 -15
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -35
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -19
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -14
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -13
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -15
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -10
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -16
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -11
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -34
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -17
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -21
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -12
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -21
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -9
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -47
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -14
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -22
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -19
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -15
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -21
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -18
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
- package/lib/_collection-api.d.ts +35 -34
- package/lib/_collection-api.d.ts.map +1 -0
- package/lib/_constants/widget-content.constants.d.ts +8 -7
- package/lib/_constants/widget-content.constants.d.ts.map +1 -0
- package/lib/_directives/tooltip.directive.d.ts +18 -17
- package/lib/_directives/tooltip.directive.d.ts.map +1 -0
- package/lib/_models/common.model.d.ts +4 -3
- package/lib/_models/common.model.d.ts.map +1 -0
- package/lib/_models/error.model.d.ts +6 -5
- package/lib/_models/error.model.d.ts.map +1 -0
- package/lib/_pipes/highlight.pipe.d.ts +11 -10
- package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
- package/lib/_services/rating.service.d.ts +19 -18
- package/lib/_services/rating.service.d.ts.map +1 -0
- package/lib/_services/samuhik-charcha.service.d.ts +14 -13
- package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
- package/lib/_services/viewer-route-util.d.ts +9 -8
- package/lib/_services/viewer-route-util.d.ts.map +1 -0
- package/lib/_services/widget-content.model.d.ts +516 -515
- package/lib/_services/widget-content.model.d.ts.map +1 -0
- package/lib/_services/widget-content.service.d.ts +102 -101
- package/lib/_services/widget-content.service.d.ts.map +1 -0
- package/lib/_shared/translate-loader.factory.d.ts +8 -7
- package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
- package/lib/app-toc-lib.module.d.ts +89 -88
- package/lib/app-toc-lib.module.d.ts.map +1 -0
- package/lib/collection.config.d.ts +160 -159
- package/lib/collection.config.d.ts.map +1 -0
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -17
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -225
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -78
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -22
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -31
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -47
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -14
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -21
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +415 -408
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -47
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -22
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -14
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -149
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -42
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -27
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -15
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -195
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -44
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -54
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -18
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -20
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -13
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
- package/lib/models/app-toc-analytics.model.d.ts +153 -152
- package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
- package/lib/models/app-toc.model.d.ts +85 -84
- package/lib/models/app-toc.model.d.ts.map +1 -0
- package/lib/models/auto-complete.model.d.ts +28 -27
- package/lib/models/auto-complete.model.d.ts.map +1 -0
- package/lib/models/card-content.model.d.ts +20 -19
- package/lib/models/card-content.model.d.ts.map +1 -0
- package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
- package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
- package/lib/models/discussion-forum.model.d.ts +41 -40
- package/lib/models/discussion-forum.model.d.ts.map +1 -0
- package/lib/models/goal.model.d.ts +23 -22
- package/lib/models/goal.model.d.ts.map +1 -0
- package/lib/models/meta-tag.model.d.ts +7 -6
- package/lib/models/meta-tag.model.d.ts.map +1 -0
- package/lib/models/playlist.model.d.ts +24 -23
- package/lib/models/playlist.model.d.ts.map +1 -0
- package/lib/models/profile-revamp.model.d.ts +15 -14
- package/lib/models/profile-revamp.model.d.ts.map +1 -0
- package/lib/models/rating.model.d.ts +18 -17
- package/lib/models/rating.model.d.ts.map +1 -0
- package/lib/models/user-profile.model.d.ts +38 -37
- package/lib/models/user-profile.model.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/config-resolver.service.d.ts +12 -11
- package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/profile-resolver.service.d.ts +12 -11
- package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -19
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
- package/lib/services/access-control.service.d.ts +30 -29
- package/lib/services/access-control.service.d.ts.map +1 -0
- package/lib/services/action.service.d.ts +10 -9
- package/lib/services/action.service.d.ts.map +1 -0
- package/lib/services/app-toc-v2.service.d.ts +17 -16
- package/lib/services/app-toc-v2.service.d.ts.map +1 -0
- package/lib/services/app-toc.service.d.ts +241 -235
- package/lib/services/app-toc.service.d.ts.map +1 -0
- package/lib/services/certificate.service.d.ts +43 -42
- package/lib/services/certificate.service.d.ts.map +1 -0
- package/lib/services/discuss-utils.service.d.ts +34 -33
- package/lib/services/discuss-utils.service.d.ts.map +1 -0
- package/lib/services/editor.service.d.ts +18 -17
- package/lib/services/editor.service.d.ts.map +1 -0
- package/lib/services/load-check.service.d.ts +9 -8
- package/lib/services/load-check.service.d.ts.map +1 -0
- package/lib/services/loader.service.d.ts +17 -16
- package/lib/services/loader.service.d.ts.map +1 -0
- package/lib/services/mobile-apps.service.d.ts +39 -38
- package/lib/services/mobile-apps.service.d.ts.map +1 -0
- package/lib/services/netcore.service.d.ts +34 -33
- package/lib/services/netcore.service.d.ts.map +1 -0
- package/lib/services/nps-grid.service.d.ts +16 -15
- package/lib/services/nps-grid.service.d.ts.map +1 -0
- package/lib/services/otp.service.d.ts +21 -20
- package/lib/services/otp.service.d.ts.map +1 -0
- package/lib/services/profile-v2.service.d.ts +21 -20
- package/lib/services/profile-v2.service.d.ts.map +1 -0
- package/lib/services/reset-ratings.service.d.ts +9 -8
- package/lib/services/reset-ratings.service.d.ts.map +1 -0
- package/lib/services/resource-download-helper.service.d.ts +30 -29
- package/lib/services/resource-download-helper.service.d.ts.map +1 -0
- package/lib/services/timer.service.d.ts +10 -9
- package/lib/services/timer.service.d.ts.map +1 -0
- package/lib/services/title-tag.service.d.ts +22 -21
- package/lib/services/title-tag.service.d.ts.map +1 -0
- package/lib/services/user-profile.service.d.ts +25 -24
- package/lib/services/user-profile.service.d.ts.map +1 -0
- package/lib/services/viewer-data.service.d.ts +59 -58
- package/lib/services/viewer-data.service.d.ts.map +1 -0
- package/lib/services/viewer-util.service.d.ts +77 -76
- package/lib/services/viewer-util.service.d.ts.map +1 -0
- package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -56
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
- package/lib/share-toc/share-toc.module.d.ts +33 -32
- package/lib/share-toc/share-toc.module.d.ts.map +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +59 -56
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-toc.d.ts.map +1 -0
|
@@ -1,183 +1,183 @@
|
|
|
1
|
-
import { Component, Inject, ViewChild } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
-
import { ConfirmationDialogComponent } from '@sunbird-cb/consumption';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/router";
|
|
6
|
-
import * as i2 from "../../../../services/app-toc.service";
|
|
7
|
-
import * as i3 from "@sunbird-cb/utils-v2";
|
|
8
|
-
import * as i4 from "@angular/platform-browser";
|
|
9
|
-
import * as i5 from "@angular/material/dialog";
|
|
10
|
-
import * as i6 from "@angular/material/legacy-dialog";
|
|
11
|
-
import * as i7 from "@angular/material/legacy-snack-bar";
|
|
12
|
-
import * as i8 from "@angular/common";
|
|
13
|
-
import * as i9 from "@angular/material/icon";
|
|
14
|
-
import * as i10 from "@angular/material/progress-spinner";
|
|
15
|
-
import * as i11 from "@ngx-translate/core";
|
|
16
|
-
export class AssignmentViewerComponent {
|
|
17
|
-
constructor(router, tocSvc, configSvc, sanitizer, dialogRef, data, dialogLegacy, snackBar) {
|
|
18
|
-
this.router = router;
|
|
19
|
-
this.tocSvc = tocSvc;
|
|
20
|
-
this.configSvc = configSvc;
|
|
21
|
-
this.sanitizer = sanitizer;
|
|
22
|
-
this.dialogRef = dialogRef;
|
|
23
|
-
this.data = data;
|
|
24
|
-
this.dialogLegacy = dialogLegacy;
|
|
25
|
-
this.snackBar = snackBar;
|
|
26
|
-
this.documentUrl = '';
|
|
27
|
-
this.documentType = '';
|
|
28
|
-
this.loading = true;
|
|
29
|
-
this.error = false;
|
|
30
|
-
this.errorMessage = '';
|
|
31
|
-
this.safeSrc = null;
|
|
32
|
-
this.height = '750px';
|
|
33
|
-
this.width = '80%';
|
|
34
|
-
}
|
|
35
|
-
ngOnInit() {
|
|
36
|
-
// this.documentUrl = 'https://portal.dev.karmayogibharat.net/content-store/content/do_1144038388811530241163/artifact/do_1144038388811530241163_1758281114109_leave-policy_ver-4.1.docx1758281113936.pdf'
|
|
37
|
-
// this.documentUrl = 'https://portal.dev.karmayogibharat.net/content-store/content/do_1144038206161797121162/artifact/do_1144038206161797121162_1758278884521_sravan.resume1758278884414.docx'
|
|
38
|
-
this.documentUrl = this.data.url;
|
|
39
|
-
if (this.documentUrl.toLowerCase().endsWith('.pdf')) {
|
|
40
|
-
this.documentType = 'pdf';
|
|
41
|
-
}
|
|
42
|
-
else if (this.documentUrl.toLowerCase().endsWith('.docx')) {
|
|
43
|
-
this.documentType = 'docx';
|
|
44
|
-
}
|
|
45
|
-
else if (this.documentUrl.toLowerCase().endsWith('.doc')) {
|
|
46
|
-
this.documentType = 'doc';
|
|
47
|
-
}
|
|
48
|
-
this.processDocumentUrl();
|
|
49
|
-
}
|
|
50
|
-
processDocumentUrl() {
|
|
51
|
-
try {
|
|
52
|
-
if (this.documentType === 'pdf') {
|
|
53
|
-
const pdfUrlWithParams = this.documentUrl + '#toolbar=0&navpanes=0&scrollbar=0';
|
|
54
|
-
this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(pdfUrlWithParams);
|
|
55
|
-
}
|
|
56
|
-
else if (['doc', 'docx'].includes(this.documentType)) {
|
|
57
|
-
setTimeout(() => {
|
|
58
|
-
const googleDocsUrl = `https://docs.google.com/viewer?url=${encodeURIComponent(this.documentUrl)}&embedded=true&chrome=false&disablePopouts=true&hideControls=1&nocache=${Date.now()}`;
|
|
59
|
-
this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(googleDocsUrl);
|
|
60
|
-
console.log('Google Docs viewer URL:', googleDocsUrl);
|
|
61
|
-
}, 1000);
|
|
62
|
-
}
|
|
63
|
-
this.loading = false;
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
this.error = true;
|
|
67
|
-
this.loading = false;
|
|
68
|
-
this.errorMessage = err instanceof Error ? err.message : 'Error loading document';
|
|
69
|
-
console.error('Document viewer error:', err);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
onIframeLoad() {
|
|
73
|
-
this.loading = false;
|
|
74
|
-
}
|
|
75
|
-
onIframeError() {
|
|
76
|
-
this.loading = false;
|
|
77
|
-
this.error = true;
|
|
78
|
-
this.errorMessage = 'Failed to load the document';
|
|
79
|
-
}
|
|
80
|
-
ngAfterViewInit() {
|
|
81
|
-
if (this.docIframe && this.docIframe.nativeElement) {
|
|
82
|
-
try {
|
|
83
|
-
const iframeDoc = this.docIframe.nativeElement.contentDocument ||
|
|
84
|
-
this.docIframe.nativeElement.contentWindow.document;
|
|
85
|
-
const style = iframeDoc.createElement('style');
|
|
86
|
-
style.textContent = `
|
|
87
|
-
.Header, #BrandBar, #CommandBar, .CommandBar, .TabContainer, .MenuBar {
|
|
88
|
-
display: none !important;
|
|
89
|
-
}
|
|
90
|
-
`;
|
|
91
|
-
iframeDoc.head.appendChild(style);
|
|
92
|
-
}
|
|
93
|
-
catch (e) {
|
|
94
|
-
console.log('Cannot access iframe content due to security restrictions');
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
handleClose() {
|
|
99
|
-
this.submitAssignmentAsDraft();
|
|
100
|
-
}
|
|
101
|
-
submitAssignmentAsDraft() {
|
|
102
|
-
const payload = {
|
|
103
|
-
submitUrl: this.documentUrl,
|
|
104
|
-
formId: this.data.assessment.formId,
|
|
105
|
-
};
|
|
106
|
-
this.tocSvc.submitDraftAssignment(payload).subscribe((res) => {
|
|
107
|
-
if (res && res.responseCode && res.responseCode === 'OK') {
|
|
108
|
-
this.openSnackbar('Assignment saved as a draft');
|
|
109
|
-
this.dialogRef.close();
|
|
110
|
-
}
|
|
111
|
-
}, error => {
|
|
112
|
-
this.dialogRef.close();
|
|
113
|
-
console.error('Error submitting assignment', error);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
submitAssignment() {
|
|
117
|
-
const payload = {
|
|
118
|
-
submitUrl: this.documentUrl,
|
|
119
|
-
formId: this.data.assessment.formId,
|
|
120
|
-
};
|
|
121
|
-
this.tocSvc.submitAssignment(payload).subscribe((res) => {
|
|
122
|
-
if (res && res.responseCode && res.responseCode === 'OK') {
|
|
123
|
-
this.openSnackbar('Assignment Submitted Successfully');
|
|
124
|
-
this.dialogRef.close();
|
|
125
|
-
}
|
|
126
|
-
}, error => {
|
|
127
|
-
this.dialogRef.close();
|
|
128
|
-
console.error('Error submitting assignment', error);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
handleSubmitAssignment() {
|
|
132
|
-
const dialgoData = {
|
|
133
|
-
description: 'Are you sure you want to submit your assignment? Once submitted, you won’t be able to make any changes',
|
|
134
|
-
iconName: 'info_circle',
|
|
135
|
-
type: 'warning',
|
|
136
|
-
buttonsPositionClass: 'justify-center items-center',
|
|
137
|
-
buttons: [
|
|
138
|
-
{
|
|
139
|
-
classes: 'btn-out-line',
|
|
140
|
-
text: 'Discard',
|
|
141
|
-
response: false
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
classes: 'succes-button',
|
|
145
|
-
text: 'Submit',
|
|
146
|
-
response: true
|
|
147
|
-
}
|
|
148
|
-
]
|
|
149
|
-
};
|
|
150
|
-
const dialogRef = this.dialogLegacy.open(ConfirmationDialogComponent, {
|
|
151
|
-
data: dialgoData,
|
|
152
|
-
disableClose: true,
|
|
153
|
-
width: '400px',
|
|
154
|
-
maxWidth: '90vw'
|
|
155
|
-
});
|
|
156
|
-
dialogRef.afterClosed().subscribe((result) => {
|
|
157
|
-
if (result) {
|
|
158
|
-
this.submitAssignment();
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
this.dialogRef.close();
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
openSnackbar(primaryMsg, duration = 5000) {
|
|
166
|
-
this.snackBar.open(primaryMsg, 'X', {
|
|
167
|
-
duration,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentViewerComponent, deps: [{ token: i1.Router }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i6.MatLegacyDialog }, { token: i7.MatLegacySnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
171
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentViewerComponent, selector: "ws-widget-app-assignment-viewer", viewQueries: [{ propertyName: "docIframe", first: true, predicate: ["docIframe"], descendants: true }], ngImport: i0, template: "<div class=\"document-viewer-container\">\
|
|
172
|
-
}
|
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentViewerComponent, decorators: [{
|
|
174
|
-
type: Component,
|
|
175
|
-
args: [{ selector: 'ws-widget-app-assignment-viewer', template: "<div class=\"document-viewer-container\">\
|
|
176
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.MatDialogRef }, { type: undefined, decorators: [{
|
|
177
|
-
type: Inject,
|
|
178
|
-
args: [MAT_DIALOG_DATA]
|
|
179
|
-
}] }, { type: i6.MatLegacyDialog }, { type: i7.MatLegacySnackBar }]; }, propDecorators: { docIframe: [{
|
|
180
|
-
type: ViewChild,
|
|
181
|
-
args: ['docIframe']
|
|
182
|
-
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9hcHAtdG9jLWFzc2lnbm1lbnQtdmlld2VyL2FwcC10b2MtYXNzaWdubWVudC12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci9hcHAtdG9jLWFzc2lnbm1lbnQtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFBO0FBS3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFBOzs7Ozs7Ozs7Ozs7O0FBVXJFLE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFBbUIsTUFBYyxFQUN4QixNQUFxQixFQUNyQixTQUFnQyxFQUMvQixTQUF1QixFQUN4QixTQUFrRCxFQUN6QixJQUFTLEVBQ2pDLFlBQTZCLEVBQzdCLFFBQTJCO1FBUGxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUMvQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FB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U0FDRixDQUFBO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDcEUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUE7UUFFRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQixFQUFFLFdBQW1CLElBQUk7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNsQyxRQUFRO1NBQ1QsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0E3SlUseUJBQXlCLGtLQWUxQixlQUFlO21HQWZkLHlCQUF5QiwrS0NoQnRDLDZ3REF1Q1E7OzRGRHZCSyx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0UsaUNBQWlDOzswQkFvQnhDLE1BQU07MkJBQUMsZUFBZTswR0FSRCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcclxuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcclxuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHN1bmJpcmQtY2IvY29uc3VtcHRpb24nXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xyXG5pbXBvcnQgeyBBcHBUb2NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvYXBwLXRvYy5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtYXBwLWFzc2lnbm1lbnQtdmlld2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnRWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGRvY3VtZW50VXJsID0gJydcclxuICBkb2N1bWVudFR5cGUgPSAnJ1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlXHJcbiAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJydcclxuICBzYWZlU3JjOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbFxyXG4gIEBWaWV3Q2hpbGQoJ2RvY0lmcmFtZScpIGRvY0lmcmFtZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZFxyXG4gIGhlaWdodDogc3RyaW5nID0gJzc1MHB4J1xyXG4gIHdpZHRoOiBzdHJpbmcgPSAnODAlJ1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyB0b2NTdmM6IEFwcFRvY1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29uZmlnU3ZjOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFzc2lnbm1lbnRWaWV3ZXJDb21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXHJcbiAgICBwcml2YXRlIGRpYWxvZ0xlZ2FjeTogTWF0TGVnYWN5RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0TGVnYWN5U25hY2tCYXIsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyB0aGlzLmRvY3VtZW50VXJsID0gJ2h0dHBzOi8vcG9ydGFsLmRldi5rYXJtYXlvZ2liaGFyYXQubmV0L2NvbnRlbnQtc3RvcmUvY29udGVudC9kb18xMTQ0MDM4Mzg4ODExNTMwMjQxMTYzL2FydGlmYWN0L2RvXzExNDQwMzgzODg4MTE1MzAyNDExNjNfMTc1ODI4MTExNDEwOV9sZWF2ZS1wb2xpY3lfdmVyLTQuMS5kb2N4MTc1ODI4MTExMzkzNi5wZGYnXHJcbiAgICAvLyB0aGlzLmRvY3VtZW50VXJsID0gJ2h0dHBzOi8vcG9ydGFsLmRldi5rYXJtYXlvZ2liaGFyYXQubmV0L2NvbnRlbnQtc3RvcmUvY29udGVudC9kb18xMTQ0MDM4MjA2MTYxNzk3MTIxMTYyL2FydGlmYWN0L2RvXzExNDQwMzgyMDYxNjE3OTcxMjExNjJfMTc1ODI3ODg4NDUyMV9zcmF2YW4ucmVzdW1lMTc1ODI3ODg4NDQxNC5kb2N4J1xyXG4gICAgdGhpcy5kb2N1bWVudFVybCA9IHRoaXMuZGF0YS51cmxcclxuICAgIGlmICh0aGlzLmRvY3VtZW50VXJsLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5wZGYnKSkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50VHlwZSA9ICdwZGYnXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZG9jdW1lbnRVcmwudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmRvY3gnKSkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50VHlwZSA9ICdkb2N4J1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRvY3VtZW50VXJsLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5kb2MnKSkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50VHlwZSA9ICdkb2MnXHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2Nlc3NEb2N1bWVudFVybCgpXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzRG9jdW1lbnRVcmwoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5kb2N1bWVudFR5cGUgPT09ICdwZGYnKSB7XHJcbiAgICAgICAgY29uc3QgcGRmVXJsV2l0aFBhcmFtcyA9IHRoaXMuZG9jdW1lbnRVcmwgKyAnI3Rvb2xiYXI9MCZuYXZwYW5lcz0wJnNjcm9sbGJhcj0wJ1xyXG4gICAgICAgIHRoaXMuc2FmZVNyYyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChwZGZVcmxXaXRoUGFyYW1zKVxyXG4gICAgICB9IGVsc2UgaWYgKFsnZG9jJywgJ2RvY3gnXS5pbmNsdWRlcyh0aGlzLmRvY3VtZW50VHlwZSkpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGdvb2dsZURvY3NVcmwgPSBgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vdmlld2VyP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmRvY3VtZW50VXJsKX0mZW1iZWRkZWQ9dHJ1ZSZjaHJvbWU9ZmFsc2UmZGlzYWJsZVBvcG91dHM9dHJ1ZSZoaWRlQ29udHJvbHM9MSZub2NhY2hlPSR7RGF0ZS5ub3coKX1gXHJcbiAgICAgICAgICB0aGlzLnNhZmVTcmMgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZ29vZ2xlRG9jc1VybClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdHb29nbGUgRG9jcyB2aWV3ZXIgVVJMOicsIGdvb2dsZURvY3NVcmwpXHJcbiAgICAgICAgfSwgMTAwMClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSB0cnVlXHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdFcnJvciBsb2FkaW5nIGRvY3VtZW50J1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdEb2N1bWVudCB2aWV3ZXIgZXJyb3I6JywgZXJyKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JZnJhbWVMb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSWZyYW1lRXJyb3IoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5lcnJvciA9IHRydWVcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0ZhaWxlZCB0byBsb2FkIHRoZSBkb2N1bWVudCdcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZG9jSWZyYW1lICYmIHRoaXMuZG9jSWZyYW1lLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBpZnJhbWVEb2MgPSB0aGlzLmRvY0lmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudCB8fFxyXG4gICAgICAgICAgdGhpcy5kb2NJZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBpZnJhbWVEb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKVxyXG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gYFxyXG4gICAgICAgICAgLkhlYWRlciwgI0JyYW5kQmFyLCAjQ29tbWFuZEJhciwgLkNvbW1hbmRCYXIsIC5UYWJDb250YWluZXIsIC5NZW51QmFyIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGBcclxuICAgICAgICBpZnJhbWVEb2MuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSlcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgYWNjZXNzIGlmcmFtZSBjb250ZW50IGR1ZSB0byBzZWN1cml0eSByZXN0cmljdGlvbnMnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbG9zZSgpIHtcclxuICAgIHRoaXMuc3VibWl0QXNzaWdubWVudEFzRHJhZnQoKVxyXG4gIH1cclxuXHJcbiAgc3VibWl0QXNzaWdubWVudEFzRHJhZnQoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBzdWJtaXRVcmw6IHRoaXMuZG9jdW1lbnRVcmwsXHJcbiAgICAgIGZvcm1JZDogdGhpcy5kYXRhLmFzc2Vzc21lbnQuZm9ybUlkLFxyXG4gICAgfVxyXG4gICAgdGhpcy50b2NTdmMuc3VibWl0RHJhZnRBc3NpZ25tZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcyAmJiByZXMucmVzcG9uc2VDb2RlICYmIHJlcy5yZXNwb25zZUNvZGUgPT09ICdPSycpIHtcclxuICAgICAgICB0aGlzLm9wZW5TbmFja2JhcignQXNzaWdubWVudCBzYXZlZCBhcyBhIGRyYWZ0JylcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXHJcbiAgICAgIH1cclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIGFzc2lnbm1lbnQnLCBlcnJvcilcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdWJtaXRBc3NpZ25tZW50KCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgc3VibWl0VXJsOiB0aGlzLmRvY3VtZW50VXJsLFxyXG4gICAgICBmb3JtSWQ6IHRoaXMuZGF0YS5hc3Nlc3NtZW50LmZvcm1JZCxcclxuICAgIH1cclxuICAgIHRoaXMudG9jU3ZjLnN1Ym1pdEFzc2lnbm1lbnQocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5yZXNwb25zZUNvZGUgJiYgcmVzLnJlc3BvbnNlQ29kZSA9PT0gJ09LJykge1xyXG4gICAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdBc3NpZ25tZW50IFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHknKVxyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcclxuICAgICAgfVxyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgYXNzaWdubWVudCcsIGVycm9yKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZVN1Ym1pdEFzc2lnbm1lbnQoKSB7XHJcbiAgICBjb25zdCBkaWFsZ29EYXRhID0ge1xyXG4gICAgICBkZXNjcmlwdGlvbjogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBzdWJtaXQgeW91ciBhc3NpZ25tZW50PyBPbmNlIHN1Ym1pdHRlZCwgeW91IHdvbuKAmXQgYmUgYWJsZSB0byBtYWtlIGFueSBjaGFuZ2VzJyxcclxuICAgICAgaWNvbk5hbWU6ICdpbmZvX2NpcmNsZScsXHJcbiAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgYnV0dG9uc1Bvc2l0aW9uQ2xhc3M6ICdqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXInLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2xhc3NlczogJ2J0bi1vdXQtbGluZScsXHJcbiAgICAgICAgICB0ZXh0OiAnRGlzY2FyZCcsXHJcbiAgICAgICAgICByZXNwb25zZTogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNsYXNzZXM6ICdzdWNjZXMtYnV0dG9uJyxcclxuICAgICAgICAgIHRleHQ6ICdTdWJtaXQnLFxyXG4gICAgICAgICAgcmVzcG9uc2U6IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nTGVnYWN5Lm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRpYWxnb0RhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICc0MDBweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnOTB2dydcclxuICAgIH0pXHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5zdWJtaXRBc3NpZ25tZW50KClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvcGVuU25hY2tiYXIocHJpbWFyeU1zZzogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gNTAwMCkge1xyXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKHByaW1hcnlNc2csICdYJywge1xyXG4gICAgICBkdXJhdGlvbixcclxuICAgIH0pXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdmlld2VyLWNvbnRhaW5lclwiPlxyXG4gIDwhLS0gTG9hZGluZyBzcGlubmVyIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNDBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPHAgY2xhc3M9XCJsb2FkaW5nLXRleHRcIj5Mb2FkaW5nIGRvY3VtZW50Li4uPC9wPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEVycm9yIG1lc3NhZ2UgLS0+XHJcbiAgPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1jb250YWluZXJcIj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImVycm9yLWljb25cIj5lcnJvcl9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cclxuICAgIDxwIGNsYXNzPVwiZXJyb3ItdXJsXCI+VVJMOiB7eyBkb2N1bWVudFVybCB9fTwvcD5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdC1kaXZcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDdweCk7XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXRpdGxlIGZvbnQtYm9sZCBwLTUgbWItNSBmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXY+UG9zdCBBc3NpZ25tZW50IFByZXZpZXc8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiZGlzY2FyZC1idG4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiaGFuZGxlQ2xvc2UoKVwiPlxyXG4gICAgICAgICAgICB7eyAndXNlckFzc2lnbm1lbnRzLmRpc2NhcmQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInN1Ym1pdC1idG4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiaGFuZGxlU3VibWl0QXNzaWdubWVudCgpXCI+XHJcbiAgICAgICAgICAgIHt7ICd1c2VyQXNzaWdubWVudHMuc3VibWl0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyc1wiICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjQwXCIgY2xhc3M9XCJibHVlLXNwaW5uZXIgbS1hdXRvXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3JcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVycm9yXCIgY2xhc3M9XCJpZnJhbWUtY29udGFpbmVyICBwYi00XCIgW25nU3R5bGVdPVwieyAnaGVpZ2h0JzogaGVpZ2h0LCAnd2lkdGgnOiAnMTAwJScgfVwiPlxyXG4gICAgICAgICAgPGlmcmFtZSAqbmdJZj1cInNhZmVTcmNcIiBbc3JjXT1cInNhZmVTcmNcIiBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6ICcxMDAlJywgJ2hlaWdodCc6ICcxMDAlJyB9XCIgZnJhbWVib3JkZXI9XCIxXCJcclxuICAgICAgICAgICAgKGxvYWQpPVwib25JZnJhbWVMb2FkKClcIiAoZXJyb3IpPVwib25JZnJhbWVFcnJvcigpXCI+XHJcbiAgICAgICAgICA8L2lmcmFtZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj4iXX0=
|
|
1
|
+
import { Component, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { ConfirmationDialogComponent } from '@sunbird-cb/consumption';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
import * as i2 from "../../../../services/app-toc.service";
|
|
7
|
+
import * as i3 from "@sunbird-cb/utils-v2";
|
|
8
|
+
import * as i4 from "@angular/platform-browser";
|
|
9
|
+
import * as i5 from "@angular/material/dialog";
|
|
10
|
+
import * as i6 from "@angular/material/legacy-dialog";
|
|
11
|
+
import * as i7 from "@angular/material/legacy-snack-bar";
|
|
12
|
+
import * as i8 from "@angular/common";
|
|
13
|
+
import * as i9 from "@angular/material/icon";
|
|
14
|
+
import * as i10 from "@angular/material/progress-spinner";
|
|
15
|
+
import * as i11 from "@ngx-translate/core";
|
|
16
|
+
export class AssignmentViewerComponent {
|
|
17
|
+
constructor(router, tocSvc, configSvc, sanitizer, dialogRef, data, dialogLegacy, snackBar) {
|
|
18
|
+
this.router = router;
|
|
19
|
+
this.tocSvc = tocSvc;
|
|
20
|
+
this.configSvc = configSvc;
|
|
21
|
+
this.sanitizer = sanitizer;
|
|
22
|
+
this.dialogRef = dialogRef;
|
|
23
|
+
this.data = data;
|
|
24
|
+
this.dialogLegacy = dialogLegacy;
|
|
25
|
+
this.snackBar = snackBar;
|
|
26
|
+
this.documentUrl = '';
|
|
27
|
+
this.documentType = '';
|
|
28
|
+
this.loading = true;
|
|
29
|
+
this.error = false;
|
|
30
|
+
this.errorMessage = '';
|
|
31
|
+
this.safeSrc = null;
|
|
32
|
+
this.height = '750px';
|
|
33
|
+
this.width = '80%';
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
// this.documentUrl = 'https://portal.dev.karmayogibharat.net/content-store/content/do_1144038388811530241163/artifact/do_1144038388811530241163_1758281114109_leave-policy_ver-4.1.docx1758281113936.pdf'
|
|
37
|
+
// this.documentUrl = 'https://portal.dev.karmayogibharat.net/content-store/content/do_1144038206161797121162/artifact/do_1144038206161797121162_1758278884521_sravan.resume1758278884414.docx'
|
|
38
|
+
this.documentUrl = this.data.url;
|
|
39
|
+
if (this.documentUrl.toLowerCase().endsWith('.pdf')) {
|
|
40
|
+
this.documentType = 'pdf';
|
|
41
|
+
}
|
|
42
|
+
else if (this.documentUrl.toLowerCase().endsWith('.docx')) {
|
|
43
|
+
this.documentType = 'docx';
|
|
44
|
+
}
|
|
45
|
+
else if (this.documentUrl.toLowerCase().endsWith('.doc')) {
|
|
46
|
+
this.documentType = 'doc';
|
|
47
|
+
}
|
|
48
|
+
this.processDocumentUrl();
|
|
49
|
+
}
|
|
50
|
+
processDocumentUrl() {
|
|
51
|
+
try {
|
|
52
|
+
if (this.documentType === 'pdf') {
|
|
53
|
+
const pdfUrlWithParams = this.documentUrl + '#toolbar=0&navpanes=0&scrollbar=0';
|
|
54
|
+
this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(pdfUrlWithParams);
|
|
55
|
+
}
|
|
56
|
+
else if (['doc', 'docx'].includes(this.documentType)) {
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
const googleDocsUrl = `https://docs.google.com/viewer?url=${encodeURIComponent(this.documentUrl)}&embedded=true&chrome=false&disablePopouts=true&hideControls=1&nocache=${Date.now()}`;
|
|
59
|
+
this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(googleDocsUrl);
|
|
60
|
+
console.log('Google Docs viewer URL:', googleDocsUrl);
|
|
61
|
+
}, 1000);
|
|
62
|
+
}
|
|
63
|
+
this.loading = false;
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
this.error = true;
|
|
67
|
+
this.loading = false;
|
|
68
|
+
this.errorMessage = err instanceof Error ? err.message : 'Error loading document';
|
|
69
|
+
console.error('Document viewer error:', err);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
onIframeLoad() {
|
|
73
|
+
this.loading = false;
|
|
74
|
+
}
|
|
75
|
+
onIframeError() {
|
|
76
|
+
this.loading = false;
|
|
77
|
+
this.error = true;
|
|
78
|
+
this.errorMessage = 'Failed to load the document';
|
|
79
|
+
}
|
|
80
|
+
ngAfterViewInit() {
|
|
81
|
+
if (this.docIframe && this.docIframe.nativeElement) {
|
|
82
|
+
try {
|
|
83
|
+
const iframeDoc = this.docIframe.nativeElement.contentDocument ||
|
|
84
|
+
this.docIframe.nativeElement.contentWindow.document;
|
|
85
|
+
const style = iframeDoc.createElement('style');
|
|
86
|
+
style.textContent = `
|
|
87
|
+
.Header, #BrandBar, #CommandBar, .CommandBar, .TabContainer, .MenuBar {
|
|
88
|
+
display: none !important;
|
|
89
|
+
}
|
|
90
|
+
`;
|
|
91
|
+
iframeDoc.head.appendChild(style);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
console.log('Cannot access iframe content due to security restrictions');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
handleClose() {
|
|
99
|
+
this.submitAssignmentAsDraft();
|
|
100
|
+
}
|
|
101
|
+
submitAssignmentAsDraft() {
|
|
102
|
+
const payload = {
|
|
103
|
+
submitUrl: this.documentUrl,
|
|
104
|
+
formId: this.data.assessment.formId,
|
|
105
|
+
};
|
|
106
|
+
this.tocSvc.submitDraftAssignment(payload).subscribe((res) => {
|
|
107
|
+
if (res && res.responseCode && res.responseCode === 'OK') {
|
|
108
|
+
this.openSnackbar('Assignment saved as a draft');
|
|
109
|
+
this.dialogRef.close();
|
|
110
|
+
}
|
|
111
|
+
}, error => {
|
|
112
|
+
this.dialogRef.close();
|
|
113
|
+
console.error('Error submitting assignment', error);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
submitAssignment() {
|
|
117
|
+
const payload = {
|
|
118
|
+
submitUrl: this.documentUrl,
|
|
119
|
+
formId: this.data.assessment.formId,
|
|
120
|
+
};
|
|
121
|
+
this.tocSvc.submitAssignment(payload).subscribe((res) => {
|
|
122
|
+
if (res && res.responseCode && res.responseCode === 'OK') {
|
|
123
|
+
this.openSnackbar('Assignment Submitted Successfully');
|
|
124
|
+
this.dialogRef.close();
|
|
125
|
+
}
|
|
126
|
+
}, error => {
|
|
127
|
+
this.dialogRef.close();
|
|
128
|
+
console.error('Error submitting assignment', error);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
handleSubmitAssignment() {
|
|
132
|
+
const dialgoData = {
|
|
133
|
+
description: 'Are you sure you want to submit your assignment? Once submitted, you won’t be able to make any changes',
|
|
134
|
+
iconName: 'info_circle',
|
|
135
|
+
type: 'warning',
|
|
136
|
+
buttonsPositionClass: 'justify-center items-center',
|
|
137
|
+
buttons: [
|
|
138
|
+
{
|
|
139
|
+
classes: 'btn-out-line',
|
|
140
|
+
text: 'Discard',
|
|
141
|
+
response: false
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
classes: 'succes-button',
|
|
145
|
+
text: 'Submit',
|
|
146
|
+
response: true
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
};
|
|
150
|
+
const dialogRef = this.dialogLegacy.open(ConfirmationDialogComponent, {
|
|
151
|
+
data: dialgoData,
|
|
152
|
+
disableClose: true,
|
|
153
|
+
width: '400px',
|
|
154
|
+
maxWidth: '90vw'
|
|
155
|
+
});
|
|
156
|
+
dialogRef.afterClosed().subscribe((result) => {
|
|
157
|
+
if (result) {
|
|
158
|
+
this.submitAssignment();
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this.dialogRef.close();
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
openSnackbar(primaryMsg, duration = 5000) {
|
|
166
|
+
this.snackBar.open(primaryMsg, 'X', {
|
|
167
|
+
duration,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentViewerComponent, deps: [{ token: i1.Router }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i6.MatLegacyDialog }, { token: i7.MatLegacySnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
171
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignmentViewerComponent, selector: "ws-widget-app-assignment-viewer", viewQueries: [{ propertyName: "docIframe", first: true, predicate: ["docIframe"], descendants: true }], ngImport: i0, template: "<div class=\"document-viewer-container\">\n <!-- Loading spinner -->\n <div *ngIf=\"loading\" class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n <p class=\"loading-text\">Loading document...</p>\n </div>\n\n <!-- Error message -->\n <div *ngIf=\"error\" class=\"error-container\">\n <mat-icon class=\"error-icon\">error_outline</mat-icon>\n <p class=\"error-message\">{{ errorMessage }}</p>\n <p class=\"error-url\">URL: {{ documentUrl }}</p>\n </div>\n\n\n <div class=\"flex\">\n <div class=\"left-div\" style=\"width: 100%; height: calc(100vh - 107px);\">\n <div class=\"left-title font-bold p-5 mb-5 flex flex-row justify-between\">\n <div>Post Assignment Preview</div>\n <div class=\"flex gap-4\">\n <button mat-button class=\"discard-btn cursor-pointer\" (click)=\"handleClose()\">\n {{ 'userAssignments.discard' | translate }}\n </button>\n <button mat-button class=\"submit-btn cursor-pointer\" (click)=\"handleSubmitAssignment()\">\n {{ 'userAssignments.submit' | translate }}\n </button>\n </div>\n </div>\n <div class=\"loaders\" *ngIf=\"loading\">\n <mat-spinner diameter=\"40\" class=\"blue-spinner m-auto\"></mat-spinner>\n </div>\n <div *ngIf=\"!loading && !error\">\n <div *ngIf=\"!error\" class=\"iframe-container pb-4\" [ngStyle]=\"{ 'height': height, 'width': '100%' }\">\n <iframe *ngIf=\"safeSrc\" [src]=\"safeSrc\" [ngStyle]=\"{ 'width': '100%', 'height': '100%' }\" frameborder=\"1\"\n (load)=\"onIframeLoad()\" (error)=\"onIframeError()\">\n </iframe>\n </div>\n </div>\n </div>\n </div>", styles: [".document-viewer-container{position:relative;background-color:transparent;border-radius:4px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:200px;z-index:99999}.loading-container .loading-text{margin-top:16px;color:#0009}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;text-align:center;min-height:200px}.error-container .error-icon{font-size:48px;height:48px;width:48px;color:#f44336;margin-bottom:16px}.error-container .error-message{font-size:18px;color:#000000de;margin-bottom:8px}.error-container .error-url{font-size:14px;color:#0009;word-break:break-all;max-width:100%}.iframe-container{width:800px}.iframe-container iframe{border:none;width:800px;height:100%}.title-div{font-size:24px;font-weight:500;font-family:Lato;border-bottom:2px solid #c3c3c3}.left-title{border-bottom:1px solid #c3c3c3}.discard-btn{background-color:#fff;border:1px solid #1B4CA1!important;border-radius:16px;padding:6px 16px;color:#1b4ca1;font-weight:600;font-size:14px;font-family:Lato}.submit-btn{background-color:#1b4ca1;border-radius:16px;padding:6px 16px;color:#fff;font-size:14px;font-weight:600;border:none!important;font-family:Lato}.loaders{position:absolute;top:50%;left:50%}.loaders .blue-spinner{transform:translate(-50%,-50%);z-index:1000}.loaders .blue-spinner ::ng-deep .mat-progress-spinner circle,.loaders .blue-spinner ::ng-deep .mat-spinner circle{stroke:#1b4ca1!important}\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] }); }
|
|
172
|
+
}
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignmentViewerComponent, decorators: [{
|
|
174
|
+
type: Component,
|
|
175
|
+
args: [{ selector: 'ws-widget-app-assignment-viewer', template: "<div class=\"document-viewer-container\">\n <!-- Loading spinner -->\n <div *ngIf=\"loading\" class=\"loading-container\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n <p class=\"loading-text\">Loading document...</p>\n </div>\n\n <!-- Error message -->\n <div *ngIf=\"error\" class=\"error-container\">\n <mat-icon class=\"error-icon\">error_outline</mat-icon>\n <p class=\"error-message\">{{ errorMessage }}</p>\n <p class=\"error-url\">URL: {{ documentUrl }}</p>\n </div>\n\n\n <div class=\"flex\">\n <div class=\"left-div\" style=\"width: 100%; height: calc(100vh - 107px);\">\n <div class=\"left-title font-bold p-5 mb-5 flex flex-row justify-between\">\n <div>Post Assignment Preview</div>\n <div class=\"flex gap-4\">\n <button mat-button class=\"discard-btn cursor-pointer\" (click)=\"handleClose()\">\n {{ 'userAssignments.discard' | translate }}\n </button>\n <button mat-button class=\"submit-btn cursor-pointer\" (click)=\"handleSubmitAssignment()\">\n {{ 'userAssignments.submit' | translate }}\n </button>\n </div>\n </div>\n <div class=\"loaders\" *ngIf=\"loading\">\n <mat-spinner diameter=\"40\" class=\"blue-spinner m-auto\"></mat-spinner>\n </div>\n <div *ngIf=\"!loading && !error\">\n <div *ngIf=\"!error\" class=\"iframe-container pb-4\" [ngStyle]=\"{ 'height': height, 'width': '100%' }\">\n <iframe *ngIf=\"safeSrc\" [src]=\"safeSrc\" [ngStyle]=\"{ 'width': '100%', 'height': '100%' }\" frameborder=\"1\"\n (load)=\"onIframeLoad()\" (error)=\"onIframeError()\">\n </iframe>\n </div>\n </div>\n </div>\n </div>", styles: [".document-viewer-container{position:relative;background-color:transparent;border-radius:4px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:200px;z-index:99999}.loading-container .loading-text{margin-top:16px;color:#0009}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;text-align:center;min-height:200px}.error-container .error-icon{font-size:48px;height:48px;width:48px;color:#f44336;margin-bottom:16px}.error-container .error-message{font-size:18px;color:#000000de;margin-bottom:8px}.error-container .error-url{font-size:14px;color:#0009;word-break:break-all;max-width:100%}.iframe-container{width:800px}.iframe-container iframe{border:none;width:800px;height:100%}.title-div{font-size:24px;font-weight:500;font-family:Lato;border-bottom:2px solid #c3c3c3}.left-title{border-bottom:1px solid #c3c3c3}.discard-btn{background-color:#fff;border:1px solid #1B4CA1!important;border-radius:16px;padding:6px 16px;color:#1b4ca1;font-weight:600;font-size:14px;font-family:Lato}.submit-btn{background-color:#1b4ca1;border-radius:16px;padding:6px 16px;color:#fff;font-size:14px;font-weight:600;border:none!important;font-family:Lato}.loaders{position:absolute;top:50%;left:50%}.loaders .blue-spinner{transform:translate(-50%,-50%);z-index:1000}.loaders .blue-spinner ::ng-deep .mat-progress-spinner circle,.loaders .blue-spinner ::ng-deep .mat-spinner circle{stroke:#1b4ca1!important}\n"] }]
|
|
176
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.MatDialogRef }, { type: undefined, decorators: [{
|
|
177
|
+
type: Inject,
|
|
178
|
+
args: [MAT_DIALOG_DATA]
|
|
179
|
+
}] }, { type: i6.MatLegacyDialog }, { type: i7.MatLegacySnackBar }]; }, propDecorators: { docIframe: [{
|
|
180
|
+
type: ViewChild,
|
|
181
|
+
args: ['docIframe']
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9hcHAtdG9jLWFzc2lnbm1lbnQtdmlld2VyL2FwcC10b2MtYXNzaWdubWVudC12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci9hcHAtdG9jLWFzc2lnbm1lbnQtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFBO0FBS3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFBOzs7Ozs7Ozs7Ozs7O0FBVXJFLE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFBbUIsTUFBYyxFQUN4QixNQUFxQixFQUNyQixTQUFnQyxFQUMvQixTQUF1QixFQUN4QixTQUFrRCxFQUN6QixJQUFTLEVBQ2pDLFlBQTZCLEVBQzdCLFFBQTJCO1FBUGxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUMvQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FB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U0FDRixDQUFBO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDcEUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUE7UUFFRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQixFQUFFLFdBQW1CLElBQUk7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNsQyxRQUFRO1NBQ1QsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0E3SlUseUJBQXlCLGtLQWUxQixlQUFlO21HQWZkLHlCQUF5QiwrS0NoQnRDLCtyREF1Q1E7OzRGRHZCSyx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0UsaUNBQWlDOzswQkFvQnhDLE1BQU07MkJBQUMsZUFBZTswR0FSRCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJ1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHN1bmJpcmQtY2IvY29uc3VtcHRpb24nXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IEFwcFRvY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hcHAtdG9jLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLXdpZGdldC1hcHAtYXNzaWdubWVudC12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRvYy1hc3NpZ25tZW50LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC10b2MtYXNzaWdubWVudC12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBBc3NpZ25tZW50Vmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZG9jdW1lbnRVcmwgPSAnJ1xuICBkb2N1bWVudFR5cGUgPSAnJ1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZVxuICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJydcbiAgc2FmZVNyYzogU2FmZVJlc291cmNlVXJsIHwgbnVsbCA9IG51bGxcbiAgQFZpZXdDaGlsZCgnZG9jSWZyYW1lJykgZG9jSWZyYW1lOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG4gIGhlaWdodDogc3RyaW5nID0gJzc1MHB4J1xuICB3aWR0aDogc3RyaW5nID0gJzgwJSdcbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyB0b2NTdmM6IEFwcFRvY1NlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFzc2lnbm1lbnRWaWV3ZXJDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZGlhbG9nTGVnYWN5OiBNYXRMZWdhY3lEaWFsb2csXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0TGVnYWN5U25hY2tCYXIsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gdGhpcy5kb2N1bWVudFVybCA9ICdodHRwczovL3BvcnRhbC5kZXYua2FybWF5b2dpYmhhcmF0Lm5ldC9jb250ZW50LXN0b3JlL2NvbnRlbnQvZG9fMTE0NDAzODM4ODgxMTUzMDI0MTE2My9hcnRpZmFjdC9kb18xMTQ0MDM4Mzg4ODExNTMwMjQxMTYzXzE3NTgyODExMTQxMDlfbGVhdmUtcG9saWN5X3Zlci00LjEuZG9jeDE3NTgyODExMTM5MzYucGRmJ1xuICAgIC8vIHRoaXMuZG9jdW1lbnRVcmwgPSAnaHR0cHM6Ly9wb3J0YWwuZGV2Lmthcm1heW9naWJoYXJhdC5uZXQvY29udGVudC1zdG9yZS9jb250ZW50L2RvXzExNDQwMzgyMDYxNjE3OTcxMjExNjIvYXJ0aWZhY3QvZG9fMTE0NDAzODIwNjE2MTc5NzEyMTE2Ml8xNzU4Mjc4ODg0NTIxX3NyYXZhbi5yZXN1bWUxNzU4Mjc4ODg0NDE0LmRvY3gnXG4gICAgdGhpcy5kb2N1bWVudFVybCA9IHRoaXMuZGF0YS51cmxcbiAgICBpZiAodGhpcy5kb2N1bWVudFVybC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcucGRmJykpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gJ3BkZidcbiAgICB9IGVsc2UgaWYgKHRoaXMuZG9jdW1lbnRVcmwudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmRvY3gnKSkge1xuICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSAnZG9jeCdcbiAgICB9IGVsc2UgaWYgKHRoaXMuZG9jdW1lbnRVcmwudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLmRvYycpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50VHlwZSA9ICdkb2MnXG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc0RvY3VtZW50VXJsKClcbiAgfVxuXG4gIHByb2Nlc3NEb2N1bWVudFVybCgpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnRUeXBlID09PSAncGRmJykge1xuICAgICAgICBjb25zdCBwZGZVcmxXaXRoUGFyYW1zID0gdGhpcy5kb2N1bWVudFVybCArICcjdG9vbGJhcj0wJm5hdnBhbmVzPTAmc2Nyb2xsYmFyPTAnXG4gICAgICAgIHRoaXMuc2FmZVNyYyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChwZGZVcmxXaXRoUGFyYW1zKVxuICAgICAgfSBlbHNlIGlmIChbJ2RvYycsICdkb2N4J10uaW5jbHVkZXModGhpcy5kb2N1bWVudFR5cGUpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdvb2dsZURvY3NVcmwgPSBgaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vdmlld2VyP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmRvY3VtZW50VXJsKX0mZW1iZWRkZWQ9dHJ1ZSZjaHJvbWU9ZmFsc2UmZGlzYWJsZVBvcG91dHM9dHJ1ZSZoaWRlQ29udHJvbHM9MSZub2NhY2hlPSR7RGF0ZS5ub3coKX1gXG4gICAgICAgICAgdGhpcy5zYWZlU3JjID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGdvb2dsZURvY3NVcmwpXG4gICAgICAgICAgY29uc29sZS5sb2coJ0dvb2dsZSBEb2NzIHZpZXdlciBVUkw6JywgZ29vZ2xlRG9jc1VybClcbiAgICAgICAgfSwgMTAwMClcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9yID0gdHJ1ZVxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdFcnJvciBsb2FkaW5nIGRvY3VtZW50J1xuICAgICAgY29uc29sZS5lcnJvcignRG9jdW1lbnQgdmlld2VyIGVycm9yOicsIGVycilcbiAgICB9XG4gIH1cblxuICBvbklmcmFtZUxvYWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgfVxuXG4gIG9uSWZyYW1lRXJyb3IoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICB0aGlzLmVycm9yID0gdHJ1ZVxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0ZhaWxlZCB0byBsb2FkIHRoZSBkb2N1bWVudCdcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuZG9jSWZyYW1lICYmIHRoaXMuZG9jSWZyYW1lLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGlmcmFtZURvYyA9IHRoaXMuZG9jSWZyYW1lLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50IHx8XG4gICAgICAgICAgdGhpcy5kb2NJZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50V2luZG93LmRvY3VtZW50XG4gICAgICAgIGNvbnN0IHN0eWxlID0gaWZyYW1lRG9jLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJylcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBgXG4gICAgICAgICAgLkhlYWRlciwgI0JyYW5kQmFyLCAjQ29tbWFuZEJhciwgLkNvbW1hbmRCYXIsIC5UYWJDb250YWluZXIsIC5NZW51QmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgIGBcbiAgICAgICAgaWZyYW1lRG9jLmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgYWNjZXNzIGlmcmFtZSBjb250ZW50IGR1ZSB0byBzZWN1cml0eSByZXN0cmljdGlvbnMnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsb3NlKCkge1xuICAgIHRoaXMuc3VibWl0QXNzaWdubWVudEFzRHJhZnQoKVxuICB9XG5cbiAgc3VibWl0QXNzaWdubWVudEFzRHJhZnQoKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIHN1Ym1pdFVybDogdGhpcy5kb2N1bWVudFVybCxcbiAgICAgIGZvcm1JZDogdGhpcy5kYXRhLmFzc2Vzc21lbnQuZm9ybUlkLFxuICAgIH1cbiAgICB0aGlzLnRvY1N2Yy5zdWJtaXREcmFmdEFzc2lnbm1lbnQocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcyAmJiByZXMucmVzcG9uc2VDb2RlICYmIHJlcy5yZXNwb25zZUNvZGUgPT09ICdPSycpIHtcbiAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ0Fzc2lnbm1lbnQgc2F2ZWQgYXMgYSBkcmFmdCcpXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgICAgIH1cbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIGFzc2lnbm1lbnQnLCBlcnJvcilcbiAgICB9KVxuICB9XG5cbiAgc3VibWl0QXNzaWdubWVudCgpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgc3VibWl0VXJsOiB0aGlzLmRvY3VtZW50VXJsLFxuICAgICAgZm9ybUlkOiB0aGlzLmRhdGEuYXNzZXNzbWVudC5mb3JtSWQsXG4gICAgfVxuICAgIHRoaXMudG9jU3ZjLnN1Ym1pdEFzc2lnbm1lbnQocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcyAmJiByZXMucmVzcG9uc2VDb2RlICYmIHJlcy5yZXNwb25zZUNvZGUgPT09ICdPSycpIHtcbiAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ0Fzc2lnbm1lbnQgU3VibWl0dGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgICAgIH1cbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJtaXR0aW5nIGFzc2lnbm1lbnQnLCBlcnJvcilcbiAgICB9KVxuICB9XG5cbiAgaGFuZGxlU3VibWl0QXNzaWdubWVudCgpIHtcbiAgICBjb25zdCBkaWFsZ29EYXRhID0ge1xuICAgICAgZGVzY3JpcHRpb246ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc3VibWl0IHlvdXIgYXNzaWdubWVudD8gT25jZSBzdWJtaXR0ZWQsIHlvdSB3b27igJl0IGJlIGFibGUgdG8gbWFrZSBhbnkgY2hhbmdlcycsXG4gICAgICBpY29uTmFtZTogJ2luZm9fY2lyY2xlJyxcbiAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgIGJ1dHRvbnNQb3NpdGlvbkNsYXNzOiAnanVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzZXM6ICdidG4tb3V0LWxpbmUnLFxuICAgICAgICAgIHRleHQ6ICdEaXNjYXJkJyxcbiAgICAgICAgICByZXNwb25zZTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzZXM6ICdzdWNjZXMtYnV0dG9uJyxcbiAgICAgICAgICB0ZXh0OiAnU3VibWl0JyxcbiAgICAgICAgICByZXNwb25zZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nTGVnYWN5Lm9wZW4oQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBkaWFsZ29EYXRhLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICBtYXhXaWR0aDogJzkwdncnXG4gICAgfSlcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5zdWJtaXRBc3NpZ25tZW50KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgb3BlblNuYWNrYmFyKHByaW1hcnlNc2c6IHN0cmluZywgZHVyYXRpb246IG51bWJlciA9IDUwMDApIHtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4ocHJpbWFyeU1zZywgJ1gnLCB7XG4gICAgICBkdXJhdGlvbixcbiAgICB9KVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkb2N1bWVudC12aWV3ZXItY29udGFpbmVyXCI+XG4gIDwhLS0gTG9hZGluZyBzcGlubmVyIC0tPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI0MFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPHAgY2xhc3M9XCJsb2FkaW5nLXRleHRcIj5Mb2FkaW5nIGRvY3VtZW50Li4uPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIEVycm9yIG1lc3NhZ2UgLS0+XG4gIDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZXJyb3ItY29udGFpbmVyXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cbiAgICA8cCBjbGFzcz1cImVycm9yLXVybFwiPlVSTDoge3sgZG9jdW1lbnRVcmwgfX08L3A+XG4gIDwvZGl2PlxuXG5cbiAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdC1kaXZcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDdweCk7XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdC10aXRsZSBmb250LWJvbGQgcC01IG1iLTUgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5Qb3N0IEFzc2lnbm1lbnQgUHJldmlldzwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNFwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImRpc2NhcmQtYnRuIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImhhbmRsZUNsb3NlKClcIj5cbiAgICAgICAgICAgIHt7ICd1c2VyQXNzaWdubWVudHMuZGlzY2FyZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJzdWJtaXQtYnRuIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImhhbmRsZVN1Ym1pdEFzc2lnbm1lbnQoKVwiPlxuICAgICAgICAgICAge3sgJ3VzZXJBc3NpZ25tZW50cy5zdWJtaXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyc1wiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI0MFwiIGNsYXNzPVwiYmx1ZS1zcGlubmVyIG0tYXV0b1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3JcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFlcnJvclwiIGNsYXNzPVwiaWZyYW1lLWNvbnRhaW5lciAgcGItNFwiIFtuZ1N0eWxlXT1cInsgJ2hlaWdodCc6IGhlaWdodCwgJ3dpZHRoJzogJzEwMCUnIH1cIj5cbiAgICAgICAgICA8aWZyYW1lICpuZ0lmPVwic2FmZVNyY1wiIFtzcmNdPVwic2FmZVNyY1wiIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogJzEwMCUnLCAnaGVpZ2h0JzogJzEwMCUnIH1cIiBmcmFtZWJvcmRlcj1cIjFcIlxuICAgICAgICAgICAgKGxvYWQpPVwib25JZnJhbWVMb2FkKClcIiAoZXJyb3IpPVwib25JZnJhbWVFcnJvcigpXCI+XG4gICAgICAgICAgPC9pZnJhbWU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiJdfQ==
|