@hmcts/media-viewer 2.9.5 → 2.10.0
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/assets/all.scss +1 -1
- package/assets/sass/tags.scss +1 -1
- package/esm2020/hmcts-media-viewer.mjs +5 -0
- package/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
- package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
- package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +75 -0
- package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
- package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
- package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
- package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
- package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +87 -0
- package/esm2020/lib/annotations/annotations.module.mjs +158 -0
- package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +176 -0
- package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
- package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
- package/esm2020/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +31 -0
- package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +61 -0
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +53 -0
- package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
- package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
- package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +123 -0
- package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +113 -0
- package/esm2020/lib/annotations/pipes/date/date.pipe.mjs +26 -0
- package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
- package/esm2020/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +16 -0
- package/esm2020/lib/annotations/services/annotation-api/annotation-api.service.mjs +58 -0
- package/esm2020/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +45 -0
- package/esm2020/lib/annotations/services/tags/tags.services.mjs +41 -0
- package/esm2020/lib/annotations/tags/tags.component.mjs +53 -0
- package/esm2020/lib/bookmark/components/bookmark-icons.component.mjs +25 -0
- package/esm2020/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +22 -0
- package/esm2020/lib/icp/icp-follower.service.mjs +60 -0
- package/esm2020/lib/icp/icp-presenter.service.mjs +55 -0
- package/esm2020/lib/icp/icp-session-api.service.mjs +21 -0
- package/esm2020/lib/icp/icp-update.service.mjs +57 -0
- package/esm2020/lib/icp/icp.service.mjs +93 -0
- package/esm2020/lib/icp/participants-list/participants-list.component.mjs +30 -0
- package/esm2020/lib/icp/socket.service.mjs +118 -0
- package/esm2020/lib/media-viewer.component.mjs +244 -0
- package/esm2020/lib/media-viewer.module.mjs +151 -0
- package/{esm2015/lib/print.service.js → esm2020/lib/print.service.mjs} +9 -7
- package/esm2020/lib/redaction/components/redaction.component.mjs +91 -0
- package/esm2020/lib/redaction/services/redaction-api.service.mjs +50 -0
- package/esm2020/lib/shared/gov-uk-date/gov-uk-date.component.mjs +28 -0
- package/esm2020/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +34 -0
- package/esm2020/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +63 -0
- package/esm2020/lib/shared/gov-uk-label/gov-uk-label.component.mjs +44 -0
- package/esm2020/lib/shared/shared.module.mjs +53 -0
- package/esm2020/lib/shared/util/services/number.helper.service.mjs +23 -0
- package/{esm2015/lib/store/bookmarks-store-utils.js → esm2020/lib/store/bookmarks-store-utils.mjs} +1 -3
- package/esm2020/lib/store/effects/annotation.effects.mjs +44 -0
- package/esm2020/lib/store/effects/bookmarks.effects.mjs +44 -0
- package/esm2020/lib/store/effects/document.effects.mjs +44 -0
- package/esm2020/lib/store/effects/icp.effects.mjs +26 -0
- package/esm2020/lib/store/effects/redaction.effects.mjs +67 -0
- package/esm2020/lib/store/reducers/annotations.reducer.mjs +183 -0
- package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +116 -0
- package/esm2020/lib/store/reducers/document.reducer.mjs +135 -0
- package/esm2020/lib/store/reducers/icp.reducer.mjs +56 -0
- package/esm2020/lib/store/reducers/redaction.reducer.mjs +116 -0
- package/esm2020/lib/store/reducers/tags.reducer.mjs +93 -0
- package/esm2020/lib/store/selectors/annotation.selectors.mjs +81 -0
- package/esm2020/lib/store/selectors/bookmark.selectors.mjs +36 -0
- package/{esm2015/lib/store/selectors/document.selectors.js → esm2020/lib/store/selectors/document.selectors.mjs} +3 -6
- package/esm2020/lib/store/selectors/icp.selectors.mjs +13 -0
- package/{esm2015/lib/store/selectors/redaction.selectors.js → esm2020/lib/store/selectors/redaction.selectors.mjs} +6 -10
- package/{esm2015/lib/store/selectors/tag.selectors.js → esm2020/lib/store/selectors/tag.selectors.mjs} +4 -7
- package/esm2020/lib/store/store-utils.mjs +131 -0
- package/esm2020/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +41 -0
- package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +188 -0
- package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +199 -0
- package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +66 -0
- package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +105 -0
- package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
- package/{esm2015/lib/toolbar/toolbar-event.service.js → esm2020/lib/toolbar/toolbar-event.service.mjs} +7 -5
- package/esm2020/lib/toolbar/toolbar.module.mjs +67 -0
- package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +78 -0
- package/esm2020/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +22 -0
- package/esm2020/lib/viewers/grab-n-drag.directive.mjs +57 -0
- package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
- package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +58 -0
- package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +193 -0
- package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +40 -0
- package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +230 -0
- package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +192 -0
- package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
- package/esm2020/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +77 -0
- package/esm2020/lib/viewers/rotation-persist/rotation-api.service.mjs +27 -0
- package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +64 -0
- package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
- package/esm2020/lib/viewers/viewer-event.service.mjs +30 -0
- package/esm2020/lib/viewers/viewer-util.service.mjs +20 -0
- package/esm2020/public_api.mjs +32 -0
- package/fesm2015/hmcts-media-viewer.mjs +6602 -0
- package/fesm2015/hmcts-media-viewer.mjs.map +1 -0
- package/fesm2020/hmcts-media-viewer.mjs +6893 -0
- package/fesm2020/hmcts-media-viewer.mjs.map +1 -0
- package/hmcts-media-viewer.d.ts.map +1 -1
- package/index.d.ts +6 -0
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +3 -0
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +1 -1
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +3 -0
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +1 -1
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +3 -0
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +1 -1
- package/lib/annotations/annotation-set/annotation-set.component.d.ts +3 -0
- package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +1 -1
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +3 -0
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +1 -1
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +5 -2
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +1 -1
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +3 -0
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +1 -1
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +3 -0
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +1 -1
- package/lib/annotations/annotations.module.d.ts +32 -0
- package/lib/annotations/annotations.module.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment/comment.component.d.ts +3 -0
- package/lib/annotations/comment-set/comment/comment.component.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment/comment.service.d.ts +5 -2
- package/lib/annotations/comment-set/comment/comment.service.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +3 -0
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +3 -0
- package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +3 -0
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +6 -3
- package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +3 -0
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +3 -0
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment-set-render.service.d.ts +3 -0
- package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +1 -1
- package/lib/annotations/comment-set/comment-set.component.d.ts +3 -0
- package/lib/annotations/comment-set/comment-set.component.d.ts.map +1 -1
- package/lib/annotations/comments-summary/comments-summary.component.d.ts +6 -3
- package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +1 -1
- package/lib/annotations/pipes/date/date.pipe.d.ts +3 -0
- package/lib/annotations/pipes/date/date.pipe.d.ts.map +1 -1
- package/lib/annotations/pipes/filter/filter.pipe.d.ts +3 -0
- package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +1 -1
- package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +3 -0
- package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +1 -1
- package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +3 -0
- package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +1 -1
- package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +3 -0
- package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +1 -1
- package/lib/annotations/services/tags/tags.services.d.ts +3 -0
- package/lib/annotations/services/tags/tags.services.d.ts.map +1 -1
- package/lib/annotations/tags/tags.component.d.ts +6 -3
- package/lib/annotations/tags/tags.component.d.ts.map +1 -1
- package/lib/bookmark/components/bookmark-icons.component.d.ts +3 -0
- package/lib/bookmark/components/bookmark-icons.component.d.ts.map +1 -1
- package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +3 -0
- package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +1 -1
- package/lib/icp/icp-follower.service.d.ts +3 -0
- package/lib/icp/icp-follower.service.d.ts.map +1 -1
- package/lib/icp/icp-presenter.service.d.ts +3 -0
- package/lib/icp/icp-presenter.service.d.ts.map +1 -1
- package/lib/icp/icp-session-api.service.d.ts +3 -0
- package/lib/icp/icp-session-api.service.d.ts.map +1 -1
- package/lib/icp/icp-update.service.d.ts +3 -0
- package/lib/icp/icp-update.service.d.ts.map +1 -1
- package/lib/icp/icp.service.d.ts +3 -0
- package/lib/icp/icp.service.d.ts.map +1 -1
- package/lib/icp/participants-list/participants-list.component.d.ts +3 -0
- package/lib/icp/participants-list/participants-list.component.d.ts.map +1 -1
- package/lib/icp/socket.service.d.ts +3 -0
- package/lib/icp/socket.service.d.ts.map +1 -1
- package/lib/media-viewer.component.d.ts +3 -0
- package/lib/media-viewer.component.d.ts.map +1 -1
- package/lib/media-viewer.module.d.ts +31 -0
- package/lib/media-viewer.module.d.ts.map +1 -1
- package/lib/print.service.d.ts +3 -0
- package/lib/print.service.d.ts.map +1 -1
- package/lib/redaction/components/redaction.component.d.ts +3 -0
- package/lib/redaction/components/redaction.component.d.ts.map +1 -1
- package/lib/redaction/services/redaction-api.service.d.ts +3 -0
- package/lib/redaction/services/redaction-api.service.d.ts.map +1 -1
- package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +3 -0
- package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +1 -1
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +3 -0
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +1 -1
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +3 -0
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +1 -1
- package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +3 -0
- package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +1 -1
- package/lib/shared/shared.module.d.ts +11 -0
- package/lib/shared/shared.module.d.ts.map +1 -1
- package/lib/shared/util/services/number.helper.service.d.ts +3 -0
- package/lib/shared/util/services/number.helper.service.d.ts.map +1 -1
- package/lib/store/actions/annotation.actions.d.ts +1 -1
- package/lib/store/actions/annotation.actions.d.ts.map +1 -1
- package/lib/store/actions/bookmark.actions.d.ts +1 -1
- package/lib/store/actions/bookmark.actions.d.ts.map +1 -1
- package/lib/store/actions/document.actions.d.ts +1 -1
- package/lib/store/actions/document.actions.d.ts.map +1 -1
- package/lib/store/actions/icp.actions.d.ts +1 -1
- package/lib/store/actions/icp.actions.d.ts.map +1 -1
- package/lib/store/actions/redaction.actions.d.ts +1 -1
- package/lib/store/actions/redaction.actions.d.ts.map +1 -1
- package/lib/store/actions/tag.actions.d.ts +1 -1
- package/lib/store/actions/tag.actions.d.ts.map +1 -1
- package/lib/store/effects/annotation.effects.d.ts +6 -3
- package/lib/store/effects/annotation.effects.d.ts.map +1 -1
- package/lib/store/effects/bookmarks.effects.d.ts +8 -5
- package/lib/store/effects/bookmarks.effects.d.ts.map +1 -1
- package/lib/store/effects/document.effects.d.ts +6 -3
- package/lib/store/effects/document.effects.d.ts.map +1 -1
- package/lib/store/effects/icp.effects.d.ts +5 -2
- package/lib/store/effects/icp.effects.d.ts.map +1 -1
- package/lib/store/effects/redaction.effects.d.ts +9 -6
- package/lib/store/effects/redaction.effects.d.ts.map +1 -1
- package/lib/store/selectors/annotation.selectors.d.ts +70 -27
- package/lib/store/selectors/annotation.selectors.d.ts.map +1 -1
- package/lib/store/selectors/bookmark.selectors.d.ts +18 -10
- package/lib/store/selectors/bookmark.selectors.d.ts.map +1 -1
- package/lib/store/selectors/document.selectors.d.ts +13 -11
- package/lib/store/selectors/document.selectors.d.ts.map +1 -1
- package/lib/store/selectors/icp.selectors.d.ts +9 -8
- package/lib/store/selectors/icp.selectors.d.ts.map +1 -1
- package/lib/store/selectors/redaction.selectors.d.ts +17 -11
- package/lib/store/selectors/redaction.selectors.d.ts.map +1 -1
- package/lib/store/selectors/tag.selectors.d.ts +14 -12
- package/lib/store/selectors/tag.selectors.d.ts.map +1 -1
- package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +3 -0
- package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +1 -1
- package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +3 -0
- package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +1 -1
- package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +5 -2
- package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +1 -1
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +3 -0
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +1 -1
- package/lib/toolbar/search-bar/search-bar.component.d.ts +3 -0
- package/lib/toolbar/search-bar/search-bar.component.d.ts.map +1 -1
- package/lib/toolbar/toolbar-button-visibility.service.d.ts +3 -0
- package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +1 -1
- package/lib/toolbar/toolbar-event.service.d.ts +5 -2
- package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
- package/lib/toolbar/toolbar.module.d.ts +13 -0
- package/lib/toolbar/toolbar.module.d.ts.map +1 -1
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +3 -0
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +1 -1
- package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +3 -0
- package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +1 -1
- package/lib/viewers/grab-n-drag.directive.d.ts +3 -0
- package/lib/viewers/grab-n-drag.directive.d.ts.map +1 -1
- package/lib/viewers/image-viewer/image-viewer.component.d.ts +3 -0
- package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +1 -1
- package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +3 -0
- package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +3 -0
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +3 -0
- package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +5 -2
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +3 -0
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +1 -1
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +3 -0
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +1 -1
- package/lib/viewers/rotation-persist/rotation-api.service.d.ts +3 -0
- package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +1 -1
- package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +3 -0
- package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +1 -1
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +3 -0
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +1 -1
- package/lib/viewers/viewer-event.service.d.ts +3 -0
- package/lib/viewers/viewer-event.service.d.ts.map +1 -1
- package/lib/viewers/viewer-util.service.d.ts +3 -0
- package/lib/viewers/viewer-util.service.d.ts.map +1 -1
- package/package.json +34 -22
- package/public_api.d.ts +1 -0
- package/public_api.d.ts.map +1 -1
- package/bundles/hmcts-media-viewer.umd.js +0 -7552
- package/bundles/hmcts-media-viewer.umd.js.map +0 -1
- package/bundles/hmcts-media-viewer.umd.min.js +0 -2
- package/bundles/hmcts-media-viewer.umd.min.js.map +0 -1
- package/esm2015/hmcts-media-viewer.js +0 -64
- package/esm2015/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.js +0 -113
- package/esm2015/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.js +0 -111
- package/esm2015/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.js +0 -61
- package/esm2015/lib/annotations/annotation-set/annotation-set.component.js +0 -47
- package/esm2015/lib/annotations/annotation-set/annotation-view/annotation-view.component.js +0 -86
- package/esm2015/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.js +0 -108
- package/esm2015/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.js +0 -107
- package/esm2015/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.js +0 -81
- package/esm2015/lib/annotations/annotations.module.js +0 -103
- package/esm2015/lib/annotations/comment-set/comment/comment.component.js +0 -162
- package/esm2015/lib/annotations/comment-set/comment/comment.service.js +0 -47
- package/esm2015/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.js +0 -48
- package/esm2015/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.js +0 -31
- package/esm2015/lib/annotations/comment-set/comment-navigate/comments-navigate.component.js +0 -95
- package/esm2015/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.js +0 -60
- package/esm2015/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.js +0 -53
- package/esm2015/lib/annotations/comment-set/comment-set-header/comment-set-header.component.js +0 -68
- package/esm2015/lib/annotations/comment-set/comment-set-render.service.js +0 -51
- package/esm2015/lib/annotations/comment-set/comment-set.component.js +0 -110
- package/esm2015/lib/annotations/comments-summary/comments-summary.component.js +0 -106
- package/esm2015/lib/annotations/pipes/date/date.pipe.js +0 -22
- package/esm2015/lib/annotations/pipes/filter/filter.pipe.js +0 -28
- package/esm2015/lib/annotations/pipes/unsnake/unsnake.pipe.js +0 -12
- package/esm2015/lib/annotations/services/annotation-api/annotation-api.service.js +0 -59
- package/esm2015/lib/annotations/services/bookmarks-api/bookmarks-api.service.js +0 -46
- package/esm2015/lib/annotations/services/tags/tags.services.js +0 -36
- package/esm2015/lib/annotations/tags/tags.component.js +0 -52
- package/esm2015/lib/bookmark/components/bookmark-icons.component.js +0 -26
- package/esm2015/lib/icp/confirm-exit/confirm-action-dialog.component.js +0 -25
- package/esm2015/lib/icp/icp-follower.service.js +0 -63
- package/esm2015/lib/icp/icp-presenter.service.js +0 -57
- package/esm2015/lib/icp/icp-session-api.service.js +0 -22
- package/esm2015/lib/icp/icp-update.service.js +0 -56
- package/esm2015/lib/icp/icp.service.js +0 -98
- package/esm2015/lib/icp/participants-list/participants-list.component.js +0 -32
- package/esm2015/lib/icp/socket.service.js +0 -117
- package/esm2015/lib/media-viewer.component.js +0 -210
- package/esm2015/lib/media-viewer.module.js +0 -102
- package/esm2015/lib/redaction/components/redaction.component.js +0 -97
- package/esm2015/lib/redaction/services/redaction-api.service.js +0 -51
- package/esm2015/lib/shared/gov-uk-date/gov-uk-date.component.js +0 -21
- package/esm2015/lib/shared/gov-uk-error-message/gov-uk-error-message.component.js +0 -27
- package/esm2015/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -42
- package/esm2015/lib/shared/gov-uk-label/gov-uk-label.component.js +0 -32
- package/esm2015/lib/shared/shared.module.js +0 -34
- package/esm2015/lib/shared/util/services/number.helper.service.js +0 -23
- package/esm2015/lib/store/effects/annotation.effects.js +0 -58
- package/esm2015/lib/store/effects/bookmarks.effects.js +0 -66
- package/esm2015/lib/store/effects/document.effects.js +0 -59
- package/esm2015/lib/store/effects/icp.effects.js +0 -37
- package/esm2015/lib/store/effects/redaction.effects.js +0 -94
- package/esm2015/lib/store/reducers/annotations.reducer.js +0 -115
- package/esm2015/lib/store/reducers/bookmarks.reducer.js +0 -80
- package/esm2015/lib/store/reducers/document.reducer.js +0 -100
- package/esm2015/lib/store/reducers/icp.reducer.js +0 -40
- package/esm2015/lib/store/reducers/redaction.reducer.js +0 -75
- package/esm2015/lib/store/reducers/tags.reducer.js +0 -67
- package/esm2015/lib/store/selectors/annotation.selectors.js +0 -84
- package/esm2015/lib/store/selectors/bookmark.selectors.js +0 -41
- package/esm2015/lib/store/selectors/icp.selectors.js +0 -18
- package/esm2015/lib/store/store-utils.js +0 -105
- package/esm2015/lib/toolbar/icp-toolbar/icp-toolbar.component.js +0 -43
- package/esm2015/lib/toolbar/main-toolbar/main-toolbar.component.js +0 -175
- package/esm2015/lib/toolbar/redaction-search-bar/redaction-search-bar.component.js +0 -201
- package/esm2015/lib/toolbar/redaction-toolbar/redaction-toolbar.component.js +0 -70
- package/esm2015/lib/toolbar/search-bar/search-bar.component.js +0 -102
- package/esm2015/lib/toolbar/toolbar-button-visibility.service.js +0 -92
- package/esm2015/lib/toolbar/toolbar.module.js +0 -45
- package/esm2015/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.js +0 -72
- package/esm2015/lib/viewers/convertible-content-viewer/document-conversion-api.service.js +0 -23
- package/esm2015/lib/viewers/grab-n-drag.directive.js +0 -51
- package/esm2015/lib/viewers/image-viewer/image-viewer.component.js +0 -164
- package/esm2015/lib/viewers/multimedia-player/multimedia-player.component.js +0 -54
- package/esm2015/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.js +0 -203
- package/esm2015/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.js +0 -43
- package/esm2015/lib/viewers/pdf-viewer/pdf-viewer.component.js +0 -220
- package/esm2015/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.js +0 -179
- package/esm2015/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.js +0 -44
- package/esm2015/lib/viewers/pdf-viewer/side-bar/side-bar.component.js +0 -72
- package/esm2015/lib/viewers/rotation-persist/rotation-api.service.js +0 -28
- package/esm2015/lib/viewers/rotation-persist/rotation-persist.directive.js +0 -67
- package/esm2015/lib/viewers/unsupported-viewer/unsupported-viewer.component.js +0 -47
- package/esm2015/lib/viewers/viewer-event.service.js +0 -30
- package/esm2015/lib/viewers/viewer-util.service.js +0 -23
- package/esm2015/public_api.js +0 -31
- package/fesm2015/hmcts-media-viewer.js +0 -6585
- package/fesm2015/hmcts-media-viewer.js.map +0 -1
- package/hmcts-media-viewer.d.ts +0 -69
- package/hmcts-media-viewer.metadata.json +0 -1
- package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-set.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-view/annotation-view.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/annotations.module.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/comment.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/comment.service.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set-render.service.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comment-set/comment-set.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/comments-summary/comments-summary.component.ngfactory.d.ts.map +0 -1
- package/lib/annotations/pipes/date/date.pipe.ngfactory.d.ts.map +0 -1
- package/lib/annotations/pipes/filter/filter.pipe.ngfactory.d.ts.map +0 -1
- package/lib/annotations/pipes/unsnake/unsnake.pipe.ngfactory.d.ts.map +0 -1
- package/lib/annotations/services/annotation-api/annotation-api.service.ngfactory.d.ts.map +0 -1
- package/lib/annotations/services/bookmarks-api/bookmarks-api.service.ngfactory.d.ts.map +0 -1
- package/lib/annotations/services/tags/tags.services.ngfactory.d.ts.map +0 -1
- package/lib/annotations/tags/tags.component.ngfactory.d.ts.map +0 -1
- package/lib/bookmark/components/bookmark-icons.component.ngfactory.d.ts.map +0 -1
- package/lib/icp/confirm-exit/confirm-action-dialog.component.ngfactory.d.ts.map +0 -1
- package/lib/icp/icp-follower.service.ngfactory.d.ts.map +0 -1
- package/lib/icp/icp-presenter.service.ngfactory.d.ts.map +0 -1
- package/lib/icp/icp-session-api.service.ngfactory.d.ts.map +0 -1
- package/lib/icp/icp-update.service.ngfactory.d.ts.map +0 -1
- package/lib/icp/icp.service.ngfactory.d.ts.map +0 -1
- package/lib/icp/participants-list/participants-list.component.ngfactory.d.ts.map +0 -1
- package/lib/icp/socket.service.ngfactory.d.ts.map +0 -1
- package/lib/media-viewer.component.ngfactory.d.ts.map +0 -1
- package/lib/media-viewer.module.ngfactory.d.ts.map +0 -1
- package/lib/print.service.ngfactory.d.ts.map +0 -1
- package/lib/redaction/components/redaction.component.ngfactory.d.ts.map +0 -1
- package/lib/redaction/services/redaction-api.service.ngfactory.d.ts.map +0 -1
- package/lib/shared/gov-uk-date/gov-uk-date.component.ngfactory.d.ts.map +0 -1
- package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.ngfactory.d.ts.map +0 -1
- package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.ngfactory.d.ts.map +0 -1
- package/lib/shared/gov-uk-label/gov-uk-label.component.ngfactory.d.ts.map +0 -1
- package/lib/shared/shared.module.ngfactory.d.ts.map +0 -1
- package/lib/shared/util/services/number.helper.service.ngfactory.d.ts.map +0 -1
- package/lib/store/effects/annotation.effects.ngfactory.d.ts.map +0 -1
- package/lib/store/effects/bookmarks.effects.ngfactory.d.ts.map +0 -1
- package/lib/store/effects/document.effects.ngfactory.d.ts.map +0 -1
- package/lib/store/effects/icp.effects.ngfactory.d.ts.map +0 -1
- package/lib/store/effects/redaction.effects.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/icp-toolbar/icp-toolbar.component.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/main-toolbar/main-toolbar.component.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/search-bar/search-bar.component.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/toolbar-button-visibility.service.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/toolbar-event.service.ngfactory.d.ts.map +0 -1
- package/lib/toolbar/toolbar.module.ngfactory.d.ts.map +0 -1
- package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/convertible-content-viewer/document-conversion-api.service.ngfactory.d.ts.map +0 -1
- package/lib/viewers/grab-n-drag.directive.ngfactory.d.ts.map +0 -1
- package/lib/viewers/image-viewer/image-viewer.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/multimedia-player/multimedia-player.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.ngfactory.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/pdf-viewer.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/pdf-viewer/side-bar/side-bar.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/rotation-persist/rotation-api.service.ngfactory.d.ts.map +0 -1
- package/lib/viewers/rotation-persist/rotation-persist.directive.ngfactory.d.ts.map +0 -1
- package/lib/viewers/unsupported-viewer/unsupported-viewer.component.ngfactory.d.ts.map +0 -1
- package/lib/viewers/viewer-event.service.ngfactory.d.ts.map +0 -1
- package/lib/viewers/viewer-util.service.ngfactory.d.ts.map +0 -1
- /package/{esm2015/lib/annotations/annotation-set/annotation-set.model.js → esm2020/lib/annotations/annotation-set/annotation-set.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/annotation-set/annotation-view/annotation.model.js → esm2020/lib/annotations/annotation-set/annotation-view/annotation.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.js → esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/comment-set/comment/comment.model.js → esm2020/lib/annotations/comment-set/comment/comment.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/models/api-persisted.model.js → esm2020/lib/annotations/models/api-persisted.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/models/event-select.model.js → esm2020/lib/annotations/models/event-select.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/models/tags.model.js → esm2020/lib/annotations/models/tags.model.mjs} +0 -0
- /package/{esm2015/lib/annotations/models/user.model.js → esm2020/lib/annotations/models/user.model.mjs} +0 -0
- /package/{esm2015/lib/icp/icp.events.js → esm2020/lib/icp/icp.events.mjs} +0 -0
- /package/{esm2015/lib/icp/icp.interfaces.js → esm2020/lib/icp/icp.interfaces.mjs} +0 -0
- /package/{esm2015/lib/redaction/services/redaction.model.js → esm2020/lib/redaction/services/redaction.model.mjs} +0 -0
- /package/{esm2015/lib/shared/util/helpers/html-templates.helper.js → esm2020/lib/shared/util/helpers/html-templates.helper.mjs} +0 -0
- /package/{esm2015/lib/store/actions/annotation.actions.js → esm2020/lib/store/actions/annotation.actions.mjs} +0 -0
- /package/{esm2015/lib/store/actions/bookmark.actions.js → esm2020/lib/store/actions/bookmark.actions.mjs} +0 -0
- /package/{esm2015/lib/store/actions/document.actions.js → esm2020/lib/store/actions/document.actions.mjs} +0 -0
- /package/{esm2015/lib/store/actions/icp.actions.js → esm2020/lib/store/actions/icp.actions.mjs} +0 -0
- /package/{esm2015/lib/store/actions/redaction.actions.js → esm2020/lib/store/actions/redaction.actions.mjs} +0 -0
- /package/{esm2015/lib/store/actions/tag.actions.js → esm2020/lib/store/actions/tag.actions.mjs} +0 -0
- /package/{esm2015/lib/store/effects/index.js → esm2020/lib/store/effects/index.mjs} +0 -0
- /package/{esm2015/lib/store/models/bookmarks.interface.js → esm2020/lib/store/models/bookmarks.interface.mjs} +0 -0
- /package/{esm2015/lib/store/models/filters.interface.js → esm2020/lib/store/models/filters.interface.mjs} +0 -0
- /package/{esm2015/lib/store/reducers/reducers.js → esm2020/lib/store/reducers/reducers.mjs} +0 -0
- /package/{esm2015/lib/toolbar/icp-event.service.js → esm2020/lib/toolbar/icp-event.service.mjs} +0 -0
- /package/{esm2015/lib/toolbar/redaction-search-bar/redaction-search.model.js → esm2020/lib/toolbar/redaction-search-bar/redaction-search.model.mjs} +0 -0
- /package/{esm2015/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.js → esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs} +0 -0
- /package/{esm2015/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.js → esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs} +0 -0
- /package/{esm2015/lib/viewers/rotation-persist/rotation.model.js → esm2020/lib/viewers/rotation-persist/rotation.model.mjs} +0 -0
- /package/{esm2015/lib/viewers/viewer-exception.model.js → esm2020/lib/viewers/viewer-exception.model.mjs} +0 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { distinctUntilChanged } from 'rxjs/operators';
|
|
3
|
+
import * as fromSelector from '../../../store/selectors/annotation.selectors';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ngrx/store";
|
|
6
|
+
import * as i2 from "./comment.service";
|
|
7
|
+
import * as i3 from "../../services/tags/tags.services";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/forms";
|
|
10
|
+
import * as i6 from "./text-highlight/text-highlight.directive";
|
|
11
|
+
import * as i7 from "./textarea-auto-expand/textarea-auto-expand.directive";
|
|
12
|
+
import * as i8 from "../../tags/tags.component";
|
|
13
|
+
import * as i9 from "../../pipes/date/date.pipe";
|
|
14
|
+
export class CommentComponent {
|
|
15
|
+
constructor(store, commentService, tagsServices) {
|
|
16
|
+
this.store = store;
|
|
17
|
+
this.commentService = commentService;
|
|
18
|
+
this.tagsServices = tagsServices;
|
|
19
|
+
this.CHAR_LIMIT = 5000;
|
|
20
|
+
this.totalPrevPagesHeight = 0;
|
|
21
|
+
this.hasUnsavedChanges = false;
|
|
22
|
+
this.commentClick = new EventEmitter();
|
|
23
|
+
this.renderComments = new EventEmitter();
|
|
24
|
+
this.delete = new EventEmitter();
|
|
25
|
+
this.updated = new EventEmitter();
|
|
26
|
+
this.changes = new EventEmitter();
|
|
27
|
+
this.rotate = 0;
|
|
28
|
+
this.zoom = 1;
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
this.subscriptions = this.store.select(fromSelector.getComponentSearchText)
|
|
32
|
+
.pipe(distinctUntilChanged()).subscribe(searchString => this.searchString = searchString);
|
|
33
|
+
this.reRenderComments();
|
|
34
|
+
this.marginToComment$ = this.commentService.marginToCommentEmitter.asObservable();
|
|
35
|
+
}
|
|
36
|
+
ngAfterContentInit() {
|
|
37
|
+
if (this.tagItems && this.tagItems.length) {
|
|
38
|
+
this.tagsServices.updateTagItems(this.tagItems, this._comment.annotationId);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
ngOnDestroy() {
|
|
42
|
+
this.subscriptions.unsubscribe();
|
|
43
|
+
}
|
|
44
|
+
set comment(comment) {
|
|
45
|
+
this._comment = { ...comment };
|
|
46
|
+
this.page = this._comment.page;
|
|
47
|
+
this.lastUpdate = comment.lastModifiedDate ? comment.lastModifiedDate : comment.createdDate;
|
|
48
|
+
this.author = comment.createdByDetails;
|
|
49
|
+
this.createdBy = comment.createdBy;
|
|
50
|
+
this.editor = comment.lastModifiedByDetails;
|
|
51
|
+
this.originalComment = comment.content;
|
|
52
|
+
this.fullComment = this.originalComment;
|
|
53
|
+
this.selected = this._comment.selected;
|
|
54
|
+
this._editable = this._comment.editable;
|
|
55
|
+
this.tagItems = this._comment.tags;
|
|
56
|
+
const pageMarginBottom = 10;
|
|
57
|
+
this.totalPrevPagesHeight = 0;
|
|
58
|
+
for (let i = 0; i < this.page - 1; i++) {
|
|
59
|
+
const height = this._comment.pages[i + 1] ? this._comment.pages[i + 1].styles.height : undefined;
|
|
60
|
+
if (height) {
|
|
61
|
+
this.totalPrevPagesHeight += height + pageMarginBottom;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
get comment() {
|
|
66
|
+
return this._comment;
|
|
67
|
+
}
|
|
68
|
+
set annotation(annotation) {
|
|
69
|
+
this._rectangle = annotation.rectangles
|
|
70
|
+
.reduce((prev, current) => prev.y < current.y ? prev : current);
|
|
71
|
+
const actualHeight = this._comment.pages[this.page].styles.height / this.zoom;
|
|
72
|
+
switch (this.rotate) {
|
|
73
|
+
case 90:
|
|
74
|
+
this.rectTop = this._rectangle.x;
|
|
75
|
+
break;
|
|
76
|
+
case 180:
|
|
77
|
+
this.rectTop = actualHeight - (this._rectangle.y + this._rectangle.height);
|
|
78
|
+
break;
|
|
79
|
+
case 270:
|
|
80
|
+
this.rectTop = actualHeight - (this._rectangle.x + this._rectangle.width);
|
|
81
|
+
break;
|
|
82
|
+
default: this.rectTop = this._rectangle.y;
|
|
83
|
+
}
|
|
84
|
+
this.rectLeft = this._rectangle.x;
|
|
85
|
+
}
|
|
86
|
+
get editable() {
|
|
87
|
+
return this._editable;
|
|
88
|
+
}
|
|
89
|
+
onCommentChange(updatedComment) {
|
|
90
|
+
this.hasUnsavedChanges =
|
|
91
|
+
this.originalComment.substring(0, this.CHAR_LIMIT) !== updatedComment.substring(0, this.CHAR_LIMIT);
|
|
92
|
+
this.commentService.onCommentChange(this.hasUnsavedChanges);
|
|
93
|
+
}
|
|
94
|
+
deleteOrCancel() {
|
|
95
|
+
if (!this.editable) {
|
|
96
|
+
this.delete.emit(this._comment);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.hasUnsavedChanges = false;
|
|
100
|
+
this._editable = false;
|
|
101
|
+
this.fullComment = this.originalComment;
|
|
102
|
+
this.changes.emit(false);
|
|
103
|
+
if (!this.author && !this.fullComment) {
|
|
104
|
+
this.delete.emit(this._comment);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
editOrSave() {
|
|
109
|
+
if (!this.editable) {
|
|
110
|
+
this._editable = true;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this._comment.content = this.fullComment.substring(0, this.CHAR_LIMIT);
|
|
114
|
+
const tags = this.tagsServices.getNewTags(this._comment.annotationId);
|
|
115
|
+
const payload = {
|
|
116
|
+
comment: this._comment,
|
|
117
|
+
tags
|
|
118
|
+
};
|
|
119
|
+
this.updated.emit(payload);
|
|
120
|
+
this.hasUnsavedChanges = false;
|
|
121
|
+
this._editable = false;
|
|
122
|
+
this.changes.emit(false);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
onCommentClick() {
|
|
126
|
+
if (!this.selected) {
|
|
127
|
+
this.selected = true;
|
|
128
|
+
this._editable = false;
|
|
129
|
+
this.commentClick.emit({ annotationId: this._comment.annotationId, editable: this._editable, selected: true });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
reRenderComments() {
|
|
133
|
+
this.renderComments.emit(this._comment);
|
|
134
|
+
}
|
|
135
|
+
get commentTop() {
|
|
136
|
+
return this.totalPrevPagesHeight + (this.rectTop * this.zoom);
|
|
137
|
+
}
|
|
138
|
+
get height() {
|
|
139
|
+
return this.form.nativeElement.getBoundingClientRect().height / this.zoom;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** @nocollapse */ CommentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentComponent, deps: [{ token: i1.Store }, { token: i2.CommentService }, { token: i3.TagsServices }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
/** @nocollapse */ CommentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CommentComponent, selector: "mv-anno-comment", inputs: { rotate: "rotate", zoom: "zoom", index: "index", page: "page", comment: "comment", annotation: "annotation" }, outputs: { commentClick: "commentClick", renderComments: "renderComments", delete: "delete", updated: "updated", changes: "changes" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }, { propertyName: "editableComment", first: true, predicate: ["editableComment"], descendants: true }], ngImport: i0, template: "<div #form (click)=\"onCommentClick()\" class=\"aui-comment\"\n [ngClass]=\"{'stylestoggle' : (marginToComment$ | async ) }\"\n [style.top.px]=\"commentTop\"\n [style.zIndex]=\"selected ? 100 : 0\">\n <div id=\"detailsWrapper {{index}}\" class=\"aui-comment__header\">\n <span *ngIf=\"author && !editor\" class=\"aui-comment__author\">\n {{ author.forename }} {{ author.surname }}\n </span>\n <span *ngIf=\"editor\" class=\"aui-comment__author\">\n {{ editor.forename }} {{ editor.surname }}\n </span>\n <time [hidden]=\"!selected && !this.editable\" class=\"aui-comment__meta\">\n {{ lastUpdate | momentDate: 'd MMMM y h:mm a' }}\n </time>\n </div>\n <mv-tags\n [tagItems]=\"tagItems\"\n [userId]=\"createdBy\"\n [editable]=\"editable\"\n [annoId]=\"_comment.annotationId\">\n </mv-tags>\n <textarea *ngIf=\"selected && editable\"\n #editableComment\n mvTextAreaAutoExpand\n type=\"text\"\n required\n name=\"content\"\n [maxlength]=\"CHAR_LIMIT\"\n class=\"aui-comment__content form-control mimic-focus edit-mode expanded\"\n [(ngModel)]=\"fullComment\"\n (ngModelChange)=\"reRenderComments(); onCommentChange($event);\"\n aria-label=\"comment\">\n </textarea>\n <p *ngIf=\"!editable\"\n mvTextHighlight class=\"commentText\" [textToHighlight]=\"searchString\">\n {{ fullComment }}\n </p>\n <div *ngIf=\"selected || this.editable || (!fullComment.length && (tagItems && !tagItems.length))\"\n class=\"aui-comment__footer commentBtns\">\n <button class=\"govuk-button\"\n type=\"button\" role=\"button\"\n (click)=\"editOrSave()\">\n {{ !editable ? 'Edit' : 'Save' }}\n </button>\n <button type=\"button\" role=\"button\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"deleteOrCancel()\">\n {{ !editable ? 'Delete' : 'Cancel' }}\n </button>\n </div>\n <span class=\"aui-comment__private\">private</span>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.TextHighlightDirective, selector: "[mvTextHighlight]", inputs: ["textToHighlight"] }, { kind: "directive", type: i7.TextareaAutoExpandDirective, selector: "[mvTextAreaAutoExpand]" }, { kind: "component", type: i8.TagsComponent, selector: "mv-tags", inputs: ["tagItems", "userId", "editable", "annoId"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.MomentDatePipe, name: "momentDate" }] });
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{ selector: 'mv-anno-comment', template: "<div #form (click)=\"onCommentClick()\" class=\"aui-comment\"\n [ngClass]=\"{'stylestoggle' : (marginToComment$ | async ) }\"\n [style.top.px]=\"commentTop\"\n [style.zIndex]=\"selected ? 100 : 0\">\n <div id=\"detailsWrapper {{index}}\" class=\"aui-comment__header\">\n <span *ngIf=\"author && !editor\" class=\"aui-comment__author\">\n {{ author.forename }} {{ author.surname }}\n </span>\n <span *ngIf=\"editor\" class=\"aui-comment__author\">\n {{ editor.forename }} {{ editor.surname }}\n </span>\n <time [hidden]=\"!selected && !this.editable\" class=\"aui-comment__meta\">\n {{ lastUpdate | momentDate: 'd MMMM y h:mm a' }}\n </time>\n </div>\n <mv-tags\n [tagItems]=\"tagItems\"\n [userId]=\"createdBy\"\n [editable]=\"editable\"\n [annoId]=\"_comment.annotationId\">\n </mv-tags>\n <textarea *ngIf=\"selected && editable\"\n #editableComment\n mvTextAreaAutoExpand\n type=\"text\"\n required\n name=\"content\"\n [maxlength]=\"CHAR_LIMIT\"\n class=\"aui-comment__content form-control mimic-focus edit-mode expanded\"\n [(ngModel)]=\"fullComment\"\n (ngModelChange)=\"reRenderComments(); onCommentChange($event);\"\n aria-label=\"comment\">\n </textarea>\n <p *ngIf=\"!editable\"\n mvTextHighlight class=\"commentText\" [textToHighlight]=\"searchString\">\n {{ fullComment }}\n </p>\n <div *ngIf=\"selected || this.editable || (!fullComment.length && (tagItems && !tagItems.length))\"\n class=\"aui-comment__footer commentBtns\">\n <button class=\"govuk-button\"\n type=\"button\" role=\"button\"\n (click)=\"editOrSave()\">\n {{ !editable ? 'Edit' : 'Save' }}\n </button>\n <button type=\"button\" role=\"button\"\n class=\"govuk-button govuk-button--secondary\"\n (click)=\"deleteOrCancel()\">\n {{ !editable ? 'Delete' : 'Cancel' }}\n </button>\n </div>\n <span class=\"aui-comment__private\">private</span>\n</div>\n" }]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.CommentService }, { type: i3.TagsServices }]; }, propDecorators: { commentClick: [{
|
|
148
|
+
type: Output
|
|
149
|
+
}], renderComments: [{
|
|
150
|
+
type: Output
|
|
151
|
+
}], delete: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}], updated: [{
|
|
154
|
+
type: Output
|
|
155
|
+
}], changes: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}], rotate: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], zoom: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], index: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], page: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], form: [{
|
|
166
|
+
type: ViewChild,
|
|
167
|
+
args: ['form', { static: false }]
|
|
168
|
+
}], editableComment: [{
|
|
169
|
+
type: ViewChild,
|
|
170
|
+
args: ['editableComment', { static: false }]
|
|
171
|
+
}], comment: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], annotation: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}] } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50L2NvbW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC9jb21tZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBU3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3RELE9BQU8sS0FBSyxZQUFZLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7O0FBUTlFLE1BQU0sT0FBTyxnQkFBZ0I7SUF1QzNCLFlBQ1UsS0FBMEMsRUFDakMsY0FBOEIsRUFDdkMsWUFBMEI7UUFGMUIsVUFBSyxHQUFMLEtBQUssQ0FBcUM7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBeENwQyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBVWxCLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUl6QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFRaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDN0MsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDckMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO1FBQ3BFLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3ZD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LFNBQVM7K0JBQ0UsaUJBQWlCO29KQTJCakIsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0UsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUU4QixJQUFJO3NCQUF2QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ2EsZUFBZTtzQkFBN0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBNkJ6QyxPQUFPO3NCQURWLEtBQUs7Z0JBNkJGLFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tZW50fSBmcm9tICcuL2NvbW1lbnQubW9kZWwnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlci5tb2RlbCc7XG5pbXBvcnQge1JlY3RhbmdsZX0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuaW1wb3J0IHtTZWxlY3Rpb25Bbm5vdGF0aW9ufSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQtc2VsZWN0Lm1vZGVsJztcbmltcG9ydCB7Q29tbWVudFNlcnZpY2V9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7VGFnc01vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFncy5tb2RlbCc7XG5pbXBvcnQge1RhZ3NTZXJ2aWNlc30gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFncy90YWdzLnNlcnZpY2VzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1N0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbVNlbGVjdG9yIGZyb20gJy4uLy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9hbm5vdGF0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uU2V0IH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi1zZXQubW9kZWwnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtYW5uby1jb21tZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvbW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgQ0hBUl9MSU1JVCA9IDUwMDA7XG4gIGxhc3RVcGRhdGU6IHN0cmluZztcbiAgb3JpZ2luYWxDb21tZW50OiBzdHJpbmc7XG4gIGZ1bGxDb21tZW50OiBzdHJpbmc7XG4gIGF1dGhvcjogVXNlcjtcbiAgY3JlYXRlZEJ5OiBzdHJpbmc7XG4gIGVkaXRvcjogVXNlcjtcbiAgX2NvbW1lbnQ6IENvbW1lbnQ7XG4gIF9lZGl0YWJsZTogYm9vbGVhbjtcbiAgX3JlY3RhbmdsZTtcbiAgdG90YWxQcmV2UGFnZXNIZWlnaHQgPSAwO1xuICByZWN0VG9wO1xuICByZWN0TGVmdDtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBoYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgc2VhcmNoU3RyaW5nOiBzdHJpbmc7XG4gIHB1YmxpYyB0YWdJdGVtczogVGFnc01vZGVsW107XG4gIG1hcmdpblRvQ29tbWVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gO1xuXG5cblxuICBAT3V0cHV0KCkgY29tbWVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25Bbm5vdGF0aW9uPigpO1xuICBAT3V0cHV0KCkgcmVuZGVyQ29tbWVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnQ+KCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7Y29tbWVudDogQ29tbWVudCwgdGFnczogVGFnc01vZGVsW119PigpO1xuICBAT3V0cHV0KCkgY2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQElucHV0KCkgcm90YXRlID0gMDtcbiAgQElucHV0KCkgem9vbSA9IDE7XG4gIEBJbnB1dCgpIGluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhZ2U6IG51bWJlcjtcblxuICBAVmlld0NoaWxkKCdmb3JtJywge3N0YXRpYzogZmFsc2V9KSBmb3JtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdlZGl0YWJsZUNvbW1lbnQnLCB7c3RhdGljOiBmYWxzZX0pIGVkaXRhYmxlQ29tbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWdzU2VydmljZXM6IFRhZ3NTZXJ2aWNlc1xuICApIHt9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLnN0b3JlLnNlbGVjdChmcm9tU2VsZWN0b3IuZ2V0Q29tcG9uZW50U2VhcmNoVGV4dClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZShzZWFyY2hTdHJpbmcgPT4gdGhpcy5zZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmcpO1xuICAgIHRoaXMucmVSZW5kZXJDb21tZW50cygpO1xuICAgIHRoaXMubWFyZ2luVG9Db21tZW50JCA9IHRoaXMuY29tbWVudFNlcnZpY2UubWFyZ2luVG9Db21tZW50RW1pdHRlci5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWdJdGVtcyAmJiB0aGlzLnRhZ0l0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy50YWdzU2VydmljZXMudXBkYXRlVGFnSXRlbXModGhpcy50YWdJdGVtcywgdGhpcy5fY29tbWVudC5hbm5vdGF0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGNvbW1lbnQoY29tbWVudDogQ29tbWVudCkge1xuICAgIHRoaXMuX2NvbW1lbnQgPSB7Li4uY29tbWVudH07XG4gICAgdGhpcy5wYWdlID0gdGhpcy5fY29tbWVudC5wYWdlO1xuICAgIHRoaXMubGFzdFVwZGF0ZSA9IGNvbW1lbnQubGFzdE1vZGlmaWVkRGF0ZSA/IGNvbW1lbnQubGFzdE1vZGlmaWVkRGF0ZSA6IGNvbW1lbnQuY3JlYXRlZERhdGU7XG4gICAgdGhpcy5hdXRob3IgPSBjb21tZW50LmNyZWF0ZWRCeURldGFpbHM7XG4gICAgdGhpcy5jcmVhdGVkQnkgPSBjb21tZW50LmNyZWF0ZWRCeTtcbiAgICB0aGlzLmVkaXRvciA9IGNvbW1lbnQubGFzdE1vZGlmaWVkQnlEZXRhaWxzO1xuICAgIHRoaXMub3JpZ2luYWxDb21tZW50ID0gY29tbWVudC5jb250ZW50O1xuICAgIHRoaXMuZnVsbENvbW1lbnQgPSB0aGlzLm9yaWdpbmFsQ29tbWVudDtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5fY29tbWVudC5zZWxlY3RlZDtcbiAgICB0aGlzLl9lZGl0YWJsZSA9IHRoaXMuX2NvbW1lbnQuZWRpdGFibGU7XG4gICAgdGhpcy50YWdJdGVtcyA9IHRoaXMuX2NvbW1lbnQudGFncztcbiAgICBjb25zdCBwYWdlTWFyZ2luQm90dG9tID0gMTA7XG4gICAgdGhpcy50b3RhbFByZXZQYWdlc0hlaWdodCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhZ2UgLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuX2NvbW1lbnQucGFnZXNbaSArIDFdID8gdGhpcy5fY29tbWVudC5wYWdlc1tpICsgMV0uc3R5bGVzLmhlaWdodCA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChoZWlnaHQpIHtcbiAgICAgICAgdGhpcy50b3RhbFByZXZQYWdlc0hlaWdodCArPSBoZWlnaHQgKyBwYWdlTWFyZ2luQm90dG9tO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgZ2V0IGNvbW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbW1lbnQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYW5ub3RhdGlvbihhbm5vdGF0aW9uOiBBbm5vdGF0aW9uKSB7XG4gICAgdGhpcy5fcmVjdGFuZ2xlID0gYW5ub3RhdGlvbi5yZWN0YW5nbGVzXG4gICAgICAucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiBwcmV2LnkgPCBjdXJyZW50LnkgPyBwcmV2IDogY3VycmVudCk7XG4gICAgY29uc3QgYWN0dWFsSGVpZ2h0ID0gdGhpcy5fY29tbWVudC5wYWdlc1t0aGlzLnBhZ2VdLnN0eWxlcy5oZWlnaHQgLyB0aGlzLnpvb207XG4gICAgc3dpdGNoICh0aGlzLnJvdGF0ZSkge1xuICAgICAgY2FzZSA5MDogdGhpcy5yZWN0VG9wID0gdGhpcy5fcmVjdGFuZ2xlLng7XG4gICAgICBicmVhaztcbiAgICAgIGNhc2UgMTgwOiB0aGlzLnJlY3RUb3AgPSBhY3R1YWxIZWlnaHQgLSAodGhpcy5fcmVjdGFuZ2xlLnkgKyB0aGlzLl9yZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNzA6IHRoaXMucmVjdFRvcCA9IGFjdHVhbEhlaWdodCAtICh0aGlzLl9yZWN0YW5nbGUueCArIHRoaXMuX3JlY3RhbmdsZS53aWR0aCk7XG4gICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHRoaXMucmVjdFRvcCA9IHRoaXMuX3JlY3RhbmdsZS55O1xuICAgIH1cbiAgICB0aGlzLnJlY3RMZWZ0ID0gdGhpcy5fcmVjdGFuZ2xlLng7XG4gIH1cblxuICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRhYmxlO1xuICB9XG5cbiAgb25Db21tZW50Q2hhbmdlKHVwZGF0ZWRDb21tZW50KSB7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9XG4gICAgICB0aGlzLm9yaWdpbmFsQ29tbWVudC5zdWJzdHJpbmcoMCwgdGhpcy5DSEFSX0xJTUlUKSAhPT0gdXBkYXRlZENvbW1lbnQuc3Vic3RyaW5nKDAsIHRoaXMuQ0hBUl9MSU1JVCk7XG4gICAgdGhpcy5jb21tZW50U2VydmljZS5vbkNvbW1lbnRDaGFuZ2UodGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyk7XG4gIH1cblxuICBkZWxldGVPckNhbmNlbCgpIHtcbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpIHtcbiAgICAgIHRoaXMuZGVsZXRlLmVtaXQodGhpcy5fY29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2VkaXRhYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLmZ1bGxDb21tZW50ID0gdGhpcy5vcmlnaW5hbENvbW1lbnQ7XG4gICAgICB0aGlzLmNoYW5nZXMuZW1pdChmYWxzZSk7XG4gICAgICBpZiAoIXRoaXMuYXV0aG9yICYmICF0aGlzLmZ1bGxDb21tZW50KSB7XG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQodGhpcy5fY29tbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVkaXRPclNhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKSB7XG4gICAgICB0aGlzLl9lZGl0YWJsZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbW1lbnQuY29udGVudCA9IHRoaXMuZnVsbENvbW1lbnQuc3Vic3RyaW5nKDAsIHRoaXMuQ0hBUl9MSU1JVCk7XG4gICAgICBjb25zdCB0YWdzID0gdGhpcy50YWdzU2VydmljZXMuZ2V0TmV3VGFncyh0aGlzLl9jb21tZW50LmFubm90YXRpb25JZCk7XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBjb21tZW50OiB0aGlzLl9jb21tZW50LFxuICAgICAgICB0YWdzXG4gICAgICB9O1xuICAgICAgdGhpcy51cGRhdGVkLmVtaXQocGF5bG9hZCk7XG4gICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gICAgICB0aGlzLl9lZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VzLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29tbWVudENsaWNrKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9lZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb21tZW50Q2xpY2suZW1pdCh7IGFubm90YXRpb25JZDogdGhpcy5fY29tbWVudC5hbm5vdGF0aW9uSWQsIGVkaXRhYmxlOiB0aGlzLl9lZGl0YWJsZSwgc2VsZWN0ZWQ6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVSZW5kZXJDb21tZW50cygpIHtcbiAgICB0aGlzLnJlbmRlckNvbW1lbnRzLmVtaXQodGhpcy5fY29tbWVudCk7XG4gIH1cblxuICBnZXQgY29tbWVudFRvcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvdGFsUHJldlBhZ2VzSGVpZ2h0ICsgKHRoaXMucmVjdFRvcCAqIHRoaXMuem9vbSk7XG4gIH1cblxuXG4gIGdldCBoZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAvIHRoaXMuem9vbTtcbiAgfVxufVxuIiwiPGRpdiAjZm9ybSAoY2xpY2spPVwib25Db21tZW50Q2xpY2soKVwiIGNsYXNzPVwiYXVpLWNvbW1lbnRcIlxuICAgICAgW25nQ2xhc3NdPVwieydzdHlsZXN0b2dnbGUnIDogKG1hcmdpblRvQ29tbWVudCQgfCBhc3luYyApIH1cIlxuICAgICAgW3N0eWxlLnRvcC5weF09XCJjb21tZW50VG9wXCJcbiAgICAgIFtzdHlsZS56SW5kZXhdPVwic2VsZWN0ZWQgPyAxMDAgOiAwXCI+XG4gIDxkaXYgaWQ9XCJkZXRhaWxzV3JhcHBlciB7e2luZGV4fX1cIiBjbGFzcz1cImF1aS1jb21tZW50X19oZWFkZXJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImF1dGhvciAmJiAhZWRpdG9yXCIgY2xhc3M9XCJhdWktY29tbWVudF9fYXV0aG9yXCI+XG4gICAgICB7eyBhdXRob3IuZm9yZW5hbWUgfX0ge3sgYXV0aG9yLnN1cm5hbWUgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJlZGl0b3JcIiBjbGFzcz1cImF1aS1jb21tZW50X19hdXRob3JcIj5cbiAgICAgIHt7IGVkaXRvci5mb3JlbmFtZSB9fSB7eyBlZGl0b3Iuc3VybmFtZSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8dGltZSBbaGlkZGVuXT1cIiFzZWxlY3RlZCAmJiAhdGhpcy5lZGl0YWJsZVwiIGNsYXNzPVwiYXVpLWNvbW1lbnRfX21ldGFcIj5cbiAgICAgIHt7IGxhc3RVcGRhdGUgfCBtb21lbnREYXRlOiAnZCBNTU1NIHkgaDptbSBhJyB9fVxuICAgIDwvdGltZT5cbiAgPC9kaXY+XG4gIDxtdi10YWdzXG4gICAgW3RhZ0l0ZW1zXT1cInRhZ0l0ZW1zXCJcbiAgICBbdXNlcklkXT1cImNyZWF0ZWRCeVwiXG4gICAgW2VkaXRhYmxlXT1cImVkaXRhYmxlXCJcbiAgICBbYW5ub0lkXT1cIl9jb21tZW50LmFubm90YXRpb25JZFwiPlxuICA8L212LXRhZ3M+XG4gIDx0ZXh0YXJlYSAqbmdJZj1cInNlbGVjdGVkICYmIGVkaXRhYmxlXCJcbiAgICAgICAgICAgICNlZGl0YWJsZUNvbW1lbnRcbiAgICAgICAgICAgIG12VGV4dEFyZWFBdXRvRXhwYW5kXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbmFtZT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJDSEFSX0xJTUlUXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXVpLWNvbW1lbnRfX2NvbnRlbnQgZm9ybS1jb250cm9sIG1pbWljLWZvY3VzIGVkaXQtbW9kZSBleHBhbmRlZFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZ1bGxDb21tZW50XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlUmVuZGVyQ29tbWVudHMoKTsgb25Db21tZW50Q2hhbmdlKCRldmVudCk7XCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJjb21tZW50XCI+XG4gIDwvdGV4dGFyZWE+XG4gIDxwICpuZ0lmPVwiIWVkaXRhYmxlXCJcbiAgICAgbXZUZXh0SGlnaGxpZ2h0IGNsYXNzPVwiY29tbWVudFRleHRcIiBbdGV4dFRvSGlnaGxpZ2h0XT1cInNlYXJjaFN0cmluZ1wiPlxuICAgICAge3sgZnVsbENvbW1lbnQgfX1cbiAgPC9wPlxuICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWQgfHwgdGhpcy5lZGl0YWJsZSB8fCAoIWZ1bGxDb21tZW50Lmxlbmd0aCAmJiAodGFnSXRlbXMgJiYgIXRhZ0l0ZW1zLmxlbmd0aCkpXCJcbiAgICAgICBjbGFzcz1cImF1aS1jb21tZW50X19mb290ZXIgY29tbWVudEJ0bnNcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0T3JTYXZlKClcIj5cbiAgICAgIHt7ICFlZGl0YWJsZSA/ICdFZGl0JyA6ICdTYXZlJyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU9yQ2FuY2VsKClcIj5cbiAgICAgIHt7ICFlZGl0YWJsZSA/ICdEZWxldGUnIDogJ0NhbmNlbCcgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwiYXVpLWNvbW1lbnRfX3ByaXZhdGVcIj5wcml2YXRlPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// TODO: replace by NgRx
|
|
5
|
+
export class CommentService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.unsavedChanges = new Subject();
|
|
8
|
+
this.marginToCommentEmitter = new BehaviorSubject(false);
|
|
9
|
+
}
|
|
10
|
+
setCommentSet(commentSetComponent) {
|
|
11
|
+
this.commentSetComponent = commentSetComponent;
|
|
12
|
+
}
|
|
13
|
+
onCommentChange(changes) {
|
|
14
|
+
this.unsavedChanges.next(changes);
|
|
15
|
+
}
|
|
16
|
+
getUnsavedChanges() {
|
|
17
|
+
return this.unsavedChanges.asObservable();
|
|
18
|
+
}
|
|
19
|
+
hasUnsavedComments(annotation) {
|
|
20
|
+
if (annotation.comments.length > 0) {
|
|
21
|
+
const comment = this.getComment(annotation);
|
|
22
|
+
return comment.hasUnsavedChanges;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
updateUnsavedCommentsStatus(annotation, hasUnsavedChanges) {
|
|
27
|
+
const comment = this.getComment(annotation);
|
|
28
|
+
comment.hasUnsavedChanges = hasUnsavedChanges;
|
|
29
|
+
this.allCommentsSaved();
|
|
30
|
+
}
|
|
31
|
+
getComment(annotation) {
|
|
32
|
+
return this.commentSetComponent.commentComponents
|
|
33
|
+
.find(c => c.comment.annotationId === annotation.comments[0].annotationId);
|
|
34
|
+
}
|
|
35
|
+
resetCommentSet() {
|
|
36
|
+
this.commentSetComponent = null;
|
|
37
|
+
}
|
|
38
|
+
allCommentsSaved() {
|
|
39
|
+
this.onCommentChange(this.commentSetComponent.commentComponents.some(comment => comment.hasUnsavedChanges === true));
|
|
40
|
+
}
|
|
41
|
+
createMarginToCommentEvent(margin) {
|
|
42
|
+
this.marginToCommentEmitter.next(margin);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** @nocollapse */ CommentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
/** @nocollapse */ CommentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentService });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentService, decorators: [{
|
|
48
|
+
type: Injectable
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC9jb21tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLNUQsd0JBQXdCO0FBRXhCLE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBR2tCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN4QywyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztLQTZDOUU7SUExQ0MsYUFBYSxDQUFDLG1CQUFtQjtRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFnQjtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFzQjtRQUN2QyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsMkJBQTJCLENBQUMsVUFBc0IsRUFBRSxpQkFBMEI7UUFDNUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFzQjtRQUMvQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUI7YUFDOUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFlO1FBQ3hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7OEhBL0NVLGNBQWM7a0lBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1lbnRTZXRDb21wb25lbnQgfSBmcm9tICcuLi9jb21tZW50LXNldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLm1vZGVsJztcbmltcG9ydCB0eXBlIHsgQ29tbWVudENvbXBvbmVudCB9IGZyb20gJy4vY29tbWVudC5jb21wb25lbnQnO1xuXG4vLyBUT0RPOiByZXBsYWNlIGJ5IE5nUnhcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tZW50U2VydmljZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHVuc2F2ZWRDaGFuZ2VzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hcmdpblRvQ29tbWVudEVtaXR0ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgY29tbWVudFNldENvbXBvbmVudDogQ29tbWVudFNldENvbXBvbmVudDtcblxuICBzZXRDb21tZW50U2V0KGNvbW1lbnRTZXRDb21wb25lbnQpIHtcbiAgICB0aGlzLmNvbW1lbnRTZXRDb21wb25lbnQgPSBjb21tZW50U2V0Q29tcG9uZW50O1xuICB9XG5cbiAgb25Db21tZW50Q2hhbmdlKGNoYW5nZXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnVuc2F2ZWRDaGFuZ2VzLm5leHQoY2hhbmdlcyk7XG4gIH1cblxuICBnZXRVbnNhdmVkQ2hhbmdlcygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy51bnNhdmVkQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGhhc1Vuc2F2ZWRDb21tZW50cyhhbm5vdGF0aW9uOiBBbm5vdGF0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGFubm90YXRpb24uY29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY29tbWVudCA9IHRoaXMuZ2V0Q29tbWVudChhbm5vdGF0aW9uKTtcbiAgICAgIHJldHVybiBjb21tZW50Lmhhc1Vuc2F2ZWRDaGFuZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVVbnNhdmVkQ29tbWVudHNTdGF0dXMoYW5ub3RhdGlvbjogQW5ub3RhdGlvbiwgaGFzVW5zYXZlZENoYW5nZXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5nZXRDb21tZW50KGFubm90YXRpb24pO1xuICAgIGNvbW1lbnQuaGFzVW5zYXZlZENoYW5nZXMgPSBoYXNVbnNhdmVkQ2hhbmdlcztcbiAgICB0aGlzLmFsbENvbW1lbnRzU2F2ZWQoKTtcbiAgfVxuXG4gIGdldENvbW1lbnQoYW5ub3RhdGlvbjogQW5ub3RhdGlvbik6IENvbW1lbnRDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmNvbW1lbnRTZXRDb21wb25lbnQuY29tbWVudENvbXBvbmVudHNcbiAgICAgIC5maW5kKGMgPT4gYy5jb21tZW50LmFubm90YXRpb25JZCA9PT0gYW5ub3RhdGlvbi5jb21tZW50c1swXS5hbm5vdGF0aW9uSWQpO1xuICB9XG5cbiAgcmVzZXRDb21tZW50U2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY29tbWVudFNldENvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBhbGxDb21tZW50c1NhdmVkKCk6IHZvaWQge1xuICAgIHRoaXMub25Db21tZW50Q2hhbmdlKHRoaXMuY29tbWVudFNldENvbXBvbmVudC5jb21tZW50Q29tcG9uZW50cy5zb21lKGNvbW1lbnQgPT4gY29tbWVudC5oYXNVbnNhdmVkQ2hhbmdlcyA9PT0gdHJ1ZSkpO1xuICB9XG5cbiAgY3JlYXRlTWFyZ2luVG9Db21tZW50RXZlbnQobWFyZ2luOiBib29sZWFuKSB7XG4gICAgdGhpcy5tYXJnaW5Ub0NvbW1lbnRFbWl0dGVyLm5leHQobWFyZ2luKTtcbiAgfVxufVxuIl19
|
package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TextHighlightDirective {
|
|
4
|
+
constructor(element) {
|
|
5
|
+
this.element = element;
|
|
6
|
+
}
|
|
7
|
+
ngAfterViewChecked() {
|
|
8
|
+
if (this.textToHighlight) {
|
|
9
|
+
this.highlightInputText(this.textToHighlight);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
highlightInputText(textToHighlight) {
|
|
13
|
+
this.resetHighlight();
|
|
14
|
+
this.textToHighlight = textToHighlight;
|
|
15
|
+
const searchPattern = new RegExp(textToHighlight, 'gi');
|
|
16
|
+
const hostElement = this.element.nativeElement;
|
|
17
|
+
if (hostElement.innerHTML.match(searchPattern)) {
|
|
18
|
+
hostElement.innerHTML = hostElement.innerHTML
|
|
19
|
+
.replace(searchPattern, this.highlightPattern('$&'));
|
|
20
|
+
}
|
|
21
|
+
this.textToHighlight = undefined;
|
|
22
|
+
}
|
|
23
|
+
resetHighlight() {
|
|
24
|
+
const hostElement = this.element.nativeElement;
|
|
25
|
+
const searchPattern = new RegExp(this.highlightPattern('(.*?)'), 'gi');
|
|
26
|
+
while (hostElement.innerHTML.match(searchPattern)) {
|
|
27
|
+
const matchGroups = searchPattern.exec(hostElement.innerHTML);
|
|
28
|
+
if (matchGroups) {
|
|
29
|
+
hostElement.innerHTML = hostElement.innerHTML.replace(matchGroups[0], matchGroups[1]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
highlightPattern(dynamicText) {
|
|
34
|
+
return '<span class="mvTextHighlight">' + dynamicText + '</span>';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** @nocollapse */ TextHighlightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TextHighlightDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
38
|
+
/** @nocollapse */ TextHighlightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: TextHighlightDirective, selector: "[mvTextHighlight]", inputs: { textToHighlight: "textToHighlight" }, ngImport: i0 });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TextHighlightDirective, decorators: [{
|
|
40
|
+
type: Directive,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: '[mvTextHighlight]'
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { textToHighlight: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC90ZXh0LWhpZ2hsaWdodC90ZXh0LWhpZ2hsaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsvRSxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLFlBQW9CLE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQUcsQ0FBQztJQUV4RCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBdUI7UUFDeEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzlDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVM7aUJBQzFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQy9DLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ2pELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlELElBQUksV0FBVyxFQUFFO2dCQUNmLFdBQVcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsV0FBbUI7UUFDMUMsT0FBTyxnQ0FBZ0MsR0FBRyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ3BFLENBQUM7O3NJQXJDVSxzQkFBc0I7MEhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUhsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCO2lHQUdVLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttdlRleHRIaWdobGlnaHRdJ1xufSlcbmV4cG9ydCBjbGFzcyBUZXh0SGlnaGxpZ2h0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG5cbiAgQElucHV0KCkgdGV4dFRvSGlnaGxpZ2h0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGV4dFRvSGlnaGxpZ2h0KSB7XG4gICAgICB0aGlzLmhpZ2hsaWdodElucHV0VGV4dCh0aGlzLnRleHRUb0hpZ2hsaWdodCk7XG4gICAgfVxuICB9XG5cbiAgaGlnaGxpZ2h0SW5wdXRUZXh0KHRleHRUb0hpZ2hsaWdodDogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNldEhpZ2hsaWdodCgpO1xuICAgIHRoaXMudGV4dFRvSGlnaGxpZ2h0ID0gdGV4dFRvSGlnaGxpZ2h0O1xuICAgIGNvbnN0IHNlYXJjaFBhdHRlcm4gPSBuZXcgUmVnRXhwKHRleHRUb0hpZ2hsaWdodCwgJ2dpJyk7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoaG9zdEVsZW1lbnQuaW5uZXJIVE1MLm1hdGNoKHNlYXJjaFBhdHRlcm4pKSB7XG4gICAgICBob3N0RWxlbWVudC5pbm5lckhUTUwgPSBob3N0RWxlbWVudC5pbm5lckhUTUxcbiAgICAgICAgLnJlcGxhY2Uoc2VhcmNoUGF0dGVybiwgdGhpcy5oaWdobGlnaHRQYXR0ZXJuKCckJicpKTtcbiAgICB9XG4gICAgdGhpcy50ZXh0VG9IaWdobGlnaHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICByZXNldEhpZ2hsaWdodCgpIHtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHNlYXJjaFBhdHRlcm4gPSBuZXcgUmVnRXhwKHRoaXMuaGlnaGxpZ2h0UGF0dGVybignKC4qPyknKSwgJ2dpJyk7XG4gICAgd2hpbGUgKGhvc3RFbGVtZW50LmlubmVySFRNTC5tYXRjaChzZWFyY2hQYXR0ZXJuKSkge1xuICAgICAgY29uc3QgbWF0Y2hHcm91cHMgPSBzZWFyY2hQYXR0ZXJuLmV4ZWMoaG9zdEVsZW1lbnQuaW5uZXJIVE1MKTtcbiAgICAgIGlmIChtYXRjaEdyb3Vwcykge1xuICAgICAgICBob3N0RWxlbWVudC5pbm5lckhUTUwgPSBob3N0RWxlbWVudC5pbm5lckhUTUwucmVwbGFjZShtYXRjaEdyb3Vwc1swXSwgbWF0Y2hHcm91cHNbMV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlnaGxpZ2h0UGF0dGVybihkeW5hbWljVGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cIm12VGV4dEhpZ2hsaWdodFwiPicgKyBkeW5hbWljVGV4dCArICc8L3NwYW4+JztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Directive, HostListener } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TextareaAutoExpandDirective {
|
|
4
|
+
constructor(el) {
|
|
5
|
+
this.el = el;
|
|
6
|
+
}
|
|
7
|
+
ngAfterContentChecked() {
|
|
8
|
+
this.adjustHeight();
|
|
9
|
+
}
|
|
10
|
+
onMouseDown() {
|
|
11
|
+
this.adjustHeight();
|
|
12
|
+
}
|
|
13
|
+
adjustHeight() {
|
|
14
|
+
const nativeElement = this.el.nativeElement;
|
|
15
|
+
nativeElement.style.overflow = 'hidden';
|
|
16
|
+
nativeElement.style.height = 'auto';
|
|
17
|
+
nativeElement.style.height = nativeElement.scrollHeight - 5 + 'px';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** @nocollapse */ TextareaAutoExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TextareaAutoExpandDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21
|
+
/** @nocollapse */ TextareaAutoExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: TextareaAutoExpandDirective, selector: "[mvTextAreaAutoExpand]", host: { listeners: { "input": "onMouseDown()" } }, ngImport: i0 });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TextareaAutoExpandDirective, decorators: [{
|
|
23
|
+
type: Directive,
|
|
24
|
+
args: [{
|
|
25
|
+
selector: '[mvTextAreaAutoExpand]'
|
|
26
|
+
}]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onMouseDown: [{
|
|
28
|
+
type: HostListener,
|
|
29
|
+
args: ['input']
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtYXV0by1leHBhbmQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC90ZXh0YXJlYS1hdXRvLWV4cGFuZC90ZXh0YXJlYS1hdXRvLWV4cGFuZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6RixNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQ2xDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFc0IsV0FBVztRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDeEMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyRSxDQUFDOzsySUFsQlUsMkJBQTJCOytIQUEzQiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQztpR0FVd0IsV0FBVztzQkFBakMsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW212VGV4dEFyZWFBdXRvRXhwYW5kXSdcbn0pXG5leHBvcnQgY2xhc3MgVGV4dGFyZWFBdXRvRXhwYW5kRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRqdXN0SGVpZ2h0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpIG9uTW91c2VEb3duKCkge1xuICAgIHRoaXMuYWRqdXN0SGVpZ2h0KCk7XG4gIH1cblxuICBhZGp1c3RIZWlnaHQoKTogdm9pZCB7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBuYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgbmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgbmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBuYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtIDUgKyAncHgnO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as fromActions from '../../../store/actions/annotation.actions';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ngrx/store";
|
|
5
|
+
import * as i2 from "../../../toolbar/toolbar-event.service";
|
|
6
|
+
import * as i3 from "@angular/router";
|
|
7
|
+
export class CommentsNavigateComponent {
|
|
8
|
+
constructor(store, toolbarEvents) {
|
|
9
|
+
this.store = store;
|
|
10
|
+
this.toolbarEvents = toolbarEvents;
|
|
11
|
+
this.autoSelect = false;
|
|
12
|
+
this.navigationList = [];
|
|
13
|
+
this.index = 0;
|
|
14
|
+
}
|
|
15
|
+
ngOnChanges(changes) {
|
|
16
|
+
if (changes.annotationList) {
|
|
17
|
+
this.initNavigationList();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
initNavigationList() {
|
|
21
|
+
this.index = 0;
|
|
22
|
+
this.navigationList = [...this.annotationList || []]
|
|
23
|
+
.map(annotation => ({
|
|
24
|
+
content: annotation.comments[0].content,
|
|
25
|
+
annotationId: annotation.id,
|
|
26
|
+
page: annotation.page,
|
|
27
|
+
rectangle: this.upperRectangle(annotation.rectangles),
|
|
28
|
+
}))
|
|
29
|
+
.sort(this.sortComments);
|
|
30
|
+
if (this.autoSelect) {
|
|
31
|
+
this.toolbarEvents.setPage(Number.parseInt(this.navigationList[0].page, 0));
|
|
32
|
+
this.store.dispatch(new fromActions.SelectedAnnotation({
|
|
33
|
+
annotationId: this.navigationList[0].annotationId,
|
|
34
|
+
editable: false,
|
|
35
|
+
selected: true
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
sortComments(mappedCommentA, mappedCommentB) {
|
|
40
|
+
if (mappedCommentA.page !== mappedCommentB.page) {
|
|
41
|
+
return mappedCommentA.page - mappedCommentB.page;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const rectA = mappedCommentA.rectangle;
|
|
45
|
+
const rectB = mappedCommentB.rectangle;
|
|
46
|
+
if (rectA.y !== rectB.y) {
|
|
47
|
+
return rectA.y - rectB.y;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return rectA.x - rectB.x;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
nextItem() {
|
|
55
|
+
this.index += 1;
|
|
56
|
+
if (this.index === this.annotationList.length) {
|
|
57
|
+
this.index = 0;
|
|
58
|
+
}
|
|
59
|
+
this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));
|
|
60
|
+
this.store.dispatch(new fromActions.SelectedAnnotation({
|
|
61
|
+
annotationId: this.navigationList[this.index].annotationId, editable: false, selected: true
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
prevItem() {
|
|
65
|
+
this.index -= 1;
|
|
66
|
+
if (this.index < 0) {
|
|
67
|
+
this.index = this.navigationList.length - 1;
|
|
68
|
+
}
|
|
69
|
+
this.toolbarEvents.setPage(Number.parseInt(this.navigationList[this.index].page, 0));
|
|
70
|
+
this.store.dispatch(new fromActions.SelectedAnnotation({
|
|
71
|
+
annotationId: this.navigationList[this.index].annotationId,
|
|
72
|
+
editable: false,
|
|
73
|
+
selected: true
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
upperRectangle(rectangles) {
|
|
77
|
+
[...rectangles].sort((rect1, rect2) => rect1.y - rect2.y);
|
|
78
|
+
return { x: rectangles[0].x, y: rectangles[0].y };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/** @nocollapse */ CommentsNavigateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentsNavigateComponent, deps: [{ token: i1.Store }, { token: i2.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
/** @nocollapse */ CommentsNavigateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CommentsNavigateComponent, selector: "mv-comments-navigate", inputs: { annotationList: "annotationList", autoSelect: "autoSelect" }, usesOnChanges: true, ngImport: i0, template: "<p class=\"comment-search\">\n <span class=\"comment-search__item\">\n Showing {{ index + 1 }} of {{ navigationList.length }}\n </span>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Previous comment\"\n (click)=\"prevItem()\">Prev</a>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Next comment'\"\n (click)=\"nextItem()\">Next</a>\n</p>\n", dependencies: [{ kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentsNavigateComponent, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{ selector: 'mv-comments-navigate', encapsulation: ViewEncapsulation.None, template: "<p class=\"comment-search\">\n <span class=\"comment-search__item\">\n Showing {{ index + 1 }} of {{ navigationList.length }}\n </span>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Previous comment\"\n (click)=\"prevItem()\">Prev</a>\n <a [routerLink]=\"[]\"\n class=\"comment-search__item\"\n title=\"Next comment'\"\n (click)=\"nextItem()\">Next</a>\n</p>\n" }]
|
|
86
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.ToolbarEventService }]; }, propDecorators: { annotationList: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], autoSelect: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMtbmF2aWdhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1uYXZpZ2F0ZS9jb21tZW50cy1uYXZpZ2F0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50LW5hdmlnYXRlL2NvbW1lbnRzLW5hdmlnYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs5RixPQUFPLEtBQUssV0FBVyxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQVF6RSxNQUFNLE9BQU8seUJBQXlCO0lBUXBDLFlBQW9CLEtBQTBDLEVBQWtCLGFBQWtDO1FBQTlGLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBQWtCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUx6RyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTVCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBRyxDQUFDLENBQUM7SUFFMkcsQ0FBQztJQUV0SCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO2FBQ2pELEdBQUcsQ0FBQyxVQUFVLENBQUMs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QVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWTtZQUMxRCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQXVCO1FBQ3BDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxDQUFDOzt5SUFoRlUseUJBQXlCOzZIQUF6Qix5QkFBeUIseUpDYnRDLCtaQWFBOzJGREFhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBRWpCLGlCQUFpQixDQUFDLElBQUk7OEhBSXJCLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4uLy4uL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9yZWN0YW5nbGUvcmVjdGFuZ2xlLm1vZGVsJztcbmltcG9ydCB7IEFubm90YXRpb24gfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvYW5ub3RhdGlvbi5tb2RlbCc7XG5pbXBvcnQge1N0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbUFjdGlvbnMgZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWN0aW9ucy9hbm5vdGF0aW9uLmFjdGlvbnMnO1xuaW1wb3J0IHtUb29sYmFyRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LWNvbW1lbnRzLW5hdmlnYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnRzLW5hdmlnYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDb21tZW50c05hdmlnYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBwdWJsaWMgYW5ub3RhdGlvbkxpc3Q6IEFubm90YXRpb25bXTtcbiAgQElucHV0KCkgYXV0b1NlbGVjdCA9IGZhbHNlO1xuXG4gIG5hdmlnYXRpb25MaXN0OiBhbnlbXSA9IFtdO1xuICBpbmRleCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT4sIHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hbm5vdGF0aW9uTGlzdCkge1xuICAgICAgdGhpcy5pbml0TmF2aWdhdGlvbkxpc3QoKTtcbiAgICB9XG4gIH1cblxuICBpbml0TmF2aWdhdGlvbkxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5pbmRleCA9IDA7XG4gICAgdGhpcy5uYXZpZ2F0aW9uTGlzdCA9IFsuLi50aGlzLmFubm90YXRpb25MaXN0IHx8IFtdXVxuICAgICAgLm1hcChhbm5vdGF0aW9uID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24uY29tbWVudHNbMF0uY29udGVudCxcbiAgICAgICAgYW5ub3RhdGlvbklkOiBhbm5vdGF0aW9uLmlkLFxuICAgICAgICBwYWdlOiBhbm5vdGF0aW9uLnBhZ2UsXG4gICAgICAgIHJlY3RhbmdsZTogdGhpcy51cHBlclJlY3RhbmdsZShhbm5vdGF0aW9uLnJlY3RhbmdsZXMpLFxuICAgICAgfSkpXG4gICAgICAuc29ydCh0aGlzLnNvcnRDb21tZW50cyk7XG5cbiAgICBpZiAodGhpcy5hdXRvU2VsZWN0KSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2V0UGFnZShOdW1iZXIucGFyc2VJbnQodGhpcy5uYXZpZ2F0aW9uTGlzdFswXS5wYWdlLCAwKSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5TZWxlY3RlZEFubm90YXRpb24oe1xuICAgICAgICBhbm5vdGF0aW9uSWQ6IHRoaXMubmF2aWdhdGlvbkxpc3RbMF0uYW5ub3RhdGlvbklkLFxuICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgc29ydENvbW1lbnRzKG1hcHBlZENvbW1lbnRBLCBtYXBwZWRDb21tZW50Qikge1xuICAgIGlmIChtYXBwZWRDb21tZW50QS5wYWdlICE9PSBtYXBwZWRDb21tZW50Qi5wYWdlKSB7XG4gICAgICByZXR1cm4gbWFwcGVkQ29tbWVudEEucGFnZSAtIG1hcHBlZENvbW1lbnRCLnBhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlY3RBID0gbWFwcGVkQ29tbWVudEEucmVjdGFuZ2xlO1xuICAgICAgY29uc3QgcmVjdEIgPSBtYXBwZWRDb21tZW50Qi5yZWN0YW5nbGU7XG4gICAgICBpZiAocmVjdEEueSAhPT0gcmVjdEIueSkge1xuICAgICAgICByZXR1cm4gcmVjdEEueSAtIHJlY3RCLnk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVjdEEueCAtIHJlY3RCLng7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmV4dEl0ZW0oKSB7XG4gICAgdGhpcy5pbmRleCArPSAxO1xuICAgIGlmICh0aGlzLmluZGV4ID09PSB0aGlzLmFubm90YXRpb25MaXN0Lmxlbmd0aCkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnNldFBhZ2UoTnVtYmVyLnBhcnNlSW50KHRoaXMubmF2aWdhdGlvbkxpc3RbdGhpcy5pbmRleF0ucGFnZSwgMCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLlNlbGVjdGVkQW5ub3RhdGlvbih7XG4gICAgICBhbm5vdGF0aW9uSWQ6IHRoaXMubmF2aWdhdGlvbkxpc3RbdGhpcy5pbmRleF0uYW5ub3RhdGlvbklkLCBlZGl0YWJsZTogZmFsc2UsIHNlbGVjdGVkOiB0cnVlXG4gICAgfSkpO1xuICB9XG5cblxuICBwcmV2SXRlbSgpIHtcbiAgICB0aGlzLmluZGV4IC09IDE7XG4gICAgaWYgKHRoaXMuaW5kZXggPCAwKSB7XG4gICAgICB0aGlzLmluZGV4ID0gdGhpcy5uYXZpZ2F0aW9uTGlzdC5sZW5ndGggLSAxO1xuICAgIH1cbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2V0UGFnZShOdW1iZXIucGFyc2VJbnQodGhpcy5uYXZpZ2F0aW9uTGlzdFt0aGlzLmluZGV4XS5wYWdlLCAwKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuU2VsZWN0ZWRBbm5vdGF0aW9uKHtcbiAgICAgIGFubm90YXRpb25JZDogdGhpcy5uYXZpZ2F0aW9uTGlzdFt0aGlzLmluZGV4XS5hbm5vdGF0aW9uSWQsXG4gICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICBzZWxlY3RlZDogdHJ1ZVxuICAgIH0pKTtcbiAgfVxuXG4gIHVwcGVyUmVjdGFuZ2xlKHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdKSB7XG4gICAgWy4uLnJlY3RhbmdsZXNdLnNvcnQoKHJlY3QxLCByZWN0MikgPT4gcmVjdDEueSAtIHJlY3QyLnkpO1xuICAgIHJldHVybiB7IHg6IHJlY3RhbmdsZXNbMF0ueCwgeTogcmVjdGFuZ2xlc1swXS55IH07XG4gIH1cbn1cbiIsIjxwIGNsYXNzPVwiY29tbWVudC1zZWFyY2hcIj5cbiAgPHNwYW4gY2xhc3M9XCJjb21tZW50LXNlYXJjaF9faXRlbVwiPlxuICAgIFNob3dpbmcge3sgaW5kZXggKyAxIH19IG9mIHt7IG5hdmlnYXRpb25MaXN0Lmxlbmd0aCB9fVxuICA8L3NwYW4+XG4gIDxhIFtyb3V0ZXJMaW5rXT1cIltdXCJcbiAgICAgY2xhc3M9XCJjb21tZW50LXNlYXJjaF9faXRlbVwiXG4gICAgIHRpdGxlPVwiUHJldmlvdXMgY29tbWVudFwiXG4gICAgIChjbGljayk9XCJwcmV2SXRlbSgpXCI+UHJldjwvYT5cbiAgPGEgW3JvdXRlckxpbmtdPVwiW11cIlxuICAgICBjbGFzcz1cImNvbW1lbnQtc2VhcmNoX19pdGVtXCJcbiAgICAgdGl0bGU9XCJOZXh0IGNvbW1lbnQnXCJcbiAgICAgKGNsaWNrKT1cIm5leHRJdGVtKClcIj5OZXh0PC9hPlxuPC9wPlxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Component, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import * as fromSelectors from '../../../../store/selectors/tag.selectors';
|
|
4
|
+
import * as fromActions from '../../../../store/actions/tag.actions';
|
|
5
|
+
import { UntypedFormControl } from '@angular/forms';
|
|
6
|
+
import { auditTime, tap } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@ngrx/store";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "@angular/router";
|
|
12
|
+
import * as i5 from "../../../pipes/filter/filter.pipe";
|
|
13
|
+
import * as i6 from "../../../pipes/unsnake/unsnake.pipe";
|
|
14
|
+
export class CommentFilterComponent {
|
|
15
|
+
constructor(store, fb) {
|
|
16
|
+
this.store = store;
|
|
17
|
+
this.fb = fb;
|
|
18
|
+
this.isPreview = false;
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.tagGroup = this.fb.group({
|
|
22
|
+
'tagFilters': this.fb.group({}),
|
|
23
|
+
});
|
|
24
|
+
this.filter$ = this.store.pipe(select(fromSelectors.getTagFilters));
|
|
25
|
+
this.$subscriptions = this.tagGroup.valueChanges.pipe(auditTime(5)).subscribe(value => {
|
|
26
|
+
const tagFilters = value['tagFilters'];
|
|
27
|
+
this.store.dispatch(new fromActions.AddFilterTags(tagFilters));
|
|
28
|
+
});
|
|
29
|
+
this.buildFrom();
|
|
30
|
+
}
|
|
31
|
+
buildFrom() {
|
|
32
|
+
const checkboxes = this.tagGroup.get('tagFilters');
|
|
33
|
+
this.allTags$ = this.store.pipe(select(fromSelectors.getAllTagsArr)).pipe(tap(tags => {
|
|
34
|
+
this.tagGroup.reset();
|
|
35
|
+
tags.forEach((value) => {
|
|
36
|
+
checkboxes.addControl(value.key, new UntypedFormControl(false));
|
|
37
|
+
});
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
onClearFilters() {
|
|
41
|
+
this.tagGroup.reset();
|
|
42
|
+
this.store.dispatch(new fromActions.ClearFilterTags());
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.$subscriptions.unsubscribe();
|
|
46
|
+
}
|
|
47
|
+
onRemoveFilter(tagName) {
|
|
48
|
+
const checkboxes = this.tagGroup.get('tagFilters');
|
|
49
|
+
checkboxes.controls[tagName].setValue(false);
|
|
50
|
+
}
|
|
51
|
+
onToggleFilterView() {
|
|
52
|
+
this.isPreview = !this.isPreview;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** @nocollapse */ CommentFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentFilterComponent, deps: [{ token: i1.Store }, { token: i2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
/** @nocollapse */ CommentFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CommentFilterComponent, selector: "mv-comment-filter", ngImport: i0, template: "<div class=\"comment-filter\">\n <div class=\"hmcts-filter__content\">\n <div class=\"hmcts-filter__toggle-filters\">\n <p class=\"hmcts-filter__toggle-filters-link\"\n [ngClass]=\"{'govuk-accordion__section--expanded': isPreview}\"\n (click)=\"onToggleFilterView()\"><strong >Filter options</strong><span class=\"govuk-accordion__icon\"></span></p>\n </div>\n\n <ng-container *ngIf=\"(filter$ | async) as filters\">\n <div class=\"hmcts-filter__selected-heading\" *ngIf=\"filters.length\">\n <div class=\"hmcts-filter__heading-action\">\n <p><a (click)=\"onClearFilters()\"\n class=\"govuk-link govuk-link--no-visited-state\"\n [routerLink]=\"[]\">Clear filters</a></p>\n </div>\n </div>\n\n <h4 class=\"govuk-heading-s govuk-!-margin-bottom-0\" *ngIf=\"filters.length\">Tag filters</h4>\n\n <ul class=\"hmcts-filter-tags\" *ngIf=\"filters.length\">\n <li *ngFor=\"let tagName of filters\">\n <a class=\"hmcts-filter__tag\" [routerLink]=\"[]\" (click)=\"onRemoveFilter(tagName)\">\n <span class=\"govuk-visually-hidden\">Remove this filter</span>{{tagName | unsnake}}</a>\n </li>\n </ul>\n </ng-container >\n\n <div class=\"hmcts-filter__options\" [ngClass]=\"{'isVisible': isPreview}\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-label--s\" for=\"keywords\">\n Search Tags\n </label>\n <input class=\"govuk-input\" id=\"keywords\" name=\"keywords\" type=\"text\" [(ngModel)]=\"searchValue\">\n </div>\n\n <div class=\"govuk-form-group\">\n <div [formGroup]=\"tagGroup\">\n <fieldset class=\"govuk-fieldset\" formGroupName=\"tagFilters\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s\">\n Tags\n </legend>\n <div class=\"govuk-checkboxes--scroll\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div class=\"govuk-checkboxes__item\" *ngFor=\"let item of (allTags$ | async) | filter: searchValue: 'key'\">\n <input [formControlName]=\"item.key\" [id]=\"item.key\" class=\"govuk-checkboxes__input\" [value]=\"false\"\n [attr.aria-describedby]=\"item.key\" type=\"checkbox\">\n <label class=\"govuk-label govuk-checkboxes__label\" [for]=\"item.key\">\n {{ item.key | unsnake}} ({{item.length}})\n </label>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.FilterPipe, name: "filter" }, { kind: "pipe", type: i6.UnsnakePipe, name: "unsnake" }], encapsulation: i0.ViewEncapsulation.None });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommentFilterComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'mv-comment-filter', encapsulation: ViewEncapsulation.None, template: "<div class=\"comment-filter\">\n <div class=\"hmcts-filter__content\">\n <div class=\"hmcts-filter__toggle-filters\">\n <p class=\"hmcts-filter__toggle-filters-link\"\n [ngClass]=\"{'govuk-accordion__section--expanded': isPreview}\"\n (click)=\"onToggleFilterView()\"><strong >Filter options</strong><span class=\"govuk-accordion__icon\"></span></p>\n </div>\n\n <ng-container *ngIf=\"(filter$ | async) as filters\">\n <div class=\"hmcts-filter__selected-heading\" *ngIf=\"filters.length\">\n <div class=\"hmcts-filter__heading-action\">\n <p><a (click)=\"onClearFilters()\"\n class=\"govuk-link govuk-link--no-visited-state\"\n [routerLink]=\"[]\">Clear filters</a></p>\n </div>\n </div>\n\n <h4 class=\"govuk-heading-s govuk-!-margin-bottom-0\" *ngIf=\"filters.length\">Tag filters</h4>\n\n <ul class=\"hmcts-filter-tags\" *ngIf=\"filters.length\">\n <li *ngFor=\"let tagName of filters\">\n <a class=\"hmcts-filter__tag\" [routerLink]=\"[]\" (click)=\"onRemoveFilter(tagName)\">\n <span class=\"govuk-visually-hidden\">Remove this filter</span>{{tagName | unsnake}}</a>\n </li>\n </ul>\n </ng-container >\n\n <div class=\"hmcts-filter__options\" [ngClass]=\"{'isVisible': isPreview}\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-label--s\" for=\"keywords\">\n Search Tags\n </label>\n <input class=\"govuk-input\" id=\"keywords\" name=\"keywords\" type=\"text\" [(ngModel)]=\"searchValue\">\n </div>\n\n <div class=\"govuk-form-group\">\n <div [formGroup]=\"tagGroup\">\n <fieldset class=\"govuk-fieldset\" formGroupName=\"tagFilters\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s\">\n Tags\n </legend>\n <div class=\"govuk-checkboxes--scroll\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\">\n <div class=\"govuk-checkboxes__item\" *ngFor=\"let item of (allTags$ | async) | filter: searchValue: 'key'\">\n <input [formControlName]=\"item.key\" [id]=\"item.key\" class=\"govuk-checkboxes__input\" [value]=\"false\"\n [attr.aria-describedby]=\"item.key\" type=\"checkbox\">\n <label class=\"govuk-label govuk-checkboxes__label\" [for]=\"item.key\">\n {{ item.key | unsnake}} ({{item.length}})\n </label>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n\n </div>\n</div>\n" }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.UntypedFormBuilder }]; } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC1zZXQtaGVhZGVyL2NvbW1lbnQtZmlsdGVyL2NvbW1lbnQtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQtc2V0LWhlYWRlci9jb21tZW50LWZpbHRlci9jb21tZW50LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFxQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUMsTUFBTSxFQUFRLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxhQUFhLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxLQUFLLFdBQVcsTUFBTSx1Q0FBdUMsQ0FBQztBQUVyRSxPQUFPLEVBQXVDLGtCQUFrQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLHNCQUFzQjtJQU9qQyxZQUNVLEtBQTZCLEVBQzdCLEVBQXNCO1FBRHRCLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQzdCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBSGhDLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFHaUIsQ0FBQztJQUVwQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ2hDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFFbkIsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLFVBQVUsR0FBcUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDckIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sVUFBVSxHQUFxQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRSxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7O3NJQWxEVSxzQkFBc0I7MEhBQXRCLHNCQUFzQix5RENoQm5DLGtuRkE0REE7MkZENUNhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUIsaUJBRWQsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge3NlbGVjdCwgU3RvcmV9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tU2VsZWN0b3JzIGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL3NlbGVjdG9ycy90YWcuc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21BY3Rpb25zIGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL2FjdGlvbnMvdGFnLmFjdGlvbnMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHthdWRpdFRpbWUsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LWNvbW1lbnQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDb21tZW50RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICB0YWdHcm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgJHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcbiAgZmlsdGVyJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGFsbFRhZ3MkOiBPYnNlcnZhYmxlPGFueT47XG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG4gIGlzUHJldmlldyA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuU3RhdGU+LFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhZ0dyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAndGFnRmlsdGVycyc6IHRoaXMuZmIuZ3JvdXAoe30pLFxuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbVNlbGVjdG9ycy5nZXRUYWdGaWx0ZXJzKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucyA9IHRoaXMudGFnR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUoYXVkaXRUaW1lKDUpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGFnRmlsdGVycyA9IHZhbHVlWyd0YWdGaWx0ZXJzJ107XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5BZGRGaWx0ZXJUYWdzKHRhZ0ZpbHRlcnMpKTtcbiAgICB9KTtcbiAgICB0aGlzLmJ1aWxkRnJvbSgpO1xuXG4gIH1cblxuICBidWlsZEZyb20oKSB7XG4gICAgY29uc3QgY2hlY2tib3hlcyA9IDxVbnR5cGVkRm9ybUdyb3VwPnRoaXMudGFnR3JvdXAuZ2V0KCd0YWdGaWx0ZXJzJyk7XG4gICAgdGhpcy5hbGxUYWdzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbVNlbGVjdG9ycy5nZXRBbGxUYWdzQXJyKSkucGlwZSh0YXAodGFncyA9PiB7XG4gICAgICB0aGlzLnRhZ0dyb3VwLnJlc2V0KCk7XG4gICAgICB0YWdzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgIGNoZWNrYm94ZXMuYWRkQ29udHJvbCh2YWx1ZS5rZXksIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpKTtcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIG9uQ2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMudGFnR3JvdXAucmVzZXQoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5DbGVhckZpbHRlclRhZ3MoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvblJlbW92ZUZpbHRlcih0YWdOYW1lKSB7XG4gICAgY29uc3QgY2hlY2tib3hlcyA9IDxVbnR5cGVkRm9ybUdyb3VwPnRoaXMudGFnR3JvdXAuZ2V0KCd0YWdGaWx0ZXJzJyk7XG4gICAgY2hlY2tib3hlcy5jb250cm9sc1t0YWdOYW1lXS5zZXRWYWx1ZShmYWxzZSk7XG4gIH1cblxuICBvblRvZ2dsZUZpbHRlclZpZXcoKSB7XG4gICAgdGhpcy5pc1ByZXZpZXcgPSAhdGhpcy5pc1ByZXZpZXc7XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY29tbWVudC1maWx0ZXJcIj5cbiAgPGRpdiBjbGFzcz1cImhtY3RzLWZpbHRlcl9fY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJobWN0cy1maWx0ZXJfX3RvZ2dsZS1maWx0ZXJzXCI+XG4gICAgICA8cCBjbGFzcz1cImhtY3RzLWZpbHRlcl9fdG9nZ2xlLWZpbHRlcnMtbGlua1wiXG4gICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWFjY29yZGlvbl9fc2VjdGlvbi0tZXhwYW5kZWQnOiBpc1ByZXZpZXd9XCJcbiAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZUZpbHRlclZpZXcoKVwiPjxzdHJvbmcgPkZpbHRlciBvcHRpb25zPC9zdHJvbmc+PHNwYW4gY2xhc3M9XCJnb3Z1ay1hY2NvcmRpb25fX2ljb25cIj48L3NwYW4+PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWx0ZXIkIHwgYXN5bmMpIGFzIGZpbHRlcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaG1jdHMtZmlsdGVyX19zZWxlY3RlZC1oZWFkaW5nXCIgKm5nSWY9XCJmaWx0ZXJzLmxlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhtY3RzLWZpbHRlcl9faGVhZGluZy1hY3Rpb25cIj5cbiAgICAgICAgPHA+PGEgKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstbGluay0tbm8tdmlzaXRlZC1zdGF0ZVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltdXCI+Q2xlYXIgZmlsdGVyczwvYT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxoNCBjbGFzcz1cImdvdnVrLWhlYWRpbmctcyBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiICpuZ0lmPVwiZmlsdGVycy5sZW5ndGhcIj5UYWcgZmlsdGVyczwvaDQ+XG5cbiAgICA8dWwgY2xhc3M9XCJobWN0cy1maWx0ZXItdGFnc1wiICpuZ0lmPVwiZmlsdGVycy5sZW5ndGhcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdGFnTmFtZSBvZiBmaWx0ZXJzXCI+XG4gICAgICAgIDxhIGNsYXNzPVwiaG1jdHMtZmlsdGVyX190YWdcIiBbcm91dGVyTGlua109XCJbXVwiIChjbGljayk9XCJvblJlbW92ZUZpbHRlcih0YWdOYW1lKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+UmVtb3ZlIHRoaXMgZmlsdGVyPC9zcGFuPnt7dGFnTmFtZSB8IHVuc25ha2V9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8L25nLWNvbnRhaW5lciA+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaG1jdHMtZmlsdGVyX19vcHRpb25zXCIgW25nQ2xhc3NdPVwieydpc1Zpc2libGUnOiBpc1ByZXZpZXd9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tc1wiIGZvcj1cImtleXdvcmRzXCI+XG4gICAgICAgICAgU2VhcmNoIFRhZ3NcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstaW5wdXRcIiBpZD1cImtleXdvcmRzXCIgbmFtZT1cImtleXdvcmRzXCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cInRhZ0dyb3VwXCI+XG4gICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBmb3JtR3JvdXBOYW1lPVwidGFnRmlsdGVyc1wiPlxuICAgICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmQgZ292dWstZmllbGRzZXRfX2xlZ2VuZC0tc1wiPlxuICAgICAgICAgICAgICBUYWdzXG4gICAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzLS1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXMgZ292dWstY2hlY2tib3hlcy0tc21hbGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIChhbGxUYWdzJCB8IGFzeW5jKSB8IGZpbHRlcjogc2VhcmNoVmFsdWU6ICdrZXknXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtpZF09XCJpdGVtLmtleVwiIGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBbdmFsdWVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbS5rZXlcIiB0eXBlPVwiY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgW2Zvcl09XCJpdGVtLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmtleSB8IHVuc25ha2V9fSAoe3tpdGVtLmxlbmd0aH19KVxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|