@hmcts/media-viewer 2.9.4-RC.8 → 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/assets/sass/toolbar/main-toolbar.scss +7 -6
- 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/esm2020/lib/print.service.mjs +30 -0
- 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 +4 -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 -7539
- 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/print.service.js +0 -25
- 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 -55
- 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 -39
- 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 -170
- 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 -6572
- 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,199 @@
|
|
|
1
|
+
import { Component, HostListener, ViewChild } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import * as fromDocument from '../../store/selectors/document.selectors';
|
|
4
|
+
import * as fromRedactionActions from '../../store/actions/redaction.actions';
|
|
5
|
+
import uuid from 'uuid';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@ngrx/store";
|
|
8
|
+
import * as i2 from "../toolbar-button-visibility.service";
|
|
9
|
+
import * as i3 from "../toolbar-event.service";
|
|
10
|
+
import * as i4 from "../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.service";
|
|
11
|
+
import * as i5 from "@angular/common";
|
|
12
|
+
import * as i6 from "@angular/forms";
|
|
13
|
+
export class RedactionSearchBarComponent {
|
|
14
|
+
constructor(store, toolbarButtons, toolbarEvents, highlightService) {
|
|
15
|
+
this.store = store;
|
|
16
|
+
this.toolbarButtons = toolbarButtons;
|
|
17
|
+
this.toolbarEvents = toolbarEvents;
|
|
18
|
+
this.highlightService = highlightService;
|
|
19
|
+
this.highlightAll = true;
|
|
20
|
+
this.matchCase = false;
|
|
21
|
+
this.wholeWord = false;
|
|
22
|
+
this.resultsText = '';
|
|
23
|
+
this.searchText = '';
|
|
24
|
+
this.resultCount = 0;
|
|
25
|
+
this.redactElements = [];
|
|
26
|
+
this.advancedSearchVisible = false;
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
this.subscription = this.toolbarEvents.redactionSerachSubject.subscribe((results) => this.redactAllSearched(results));
|
|
30
|
+
this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));
|
|
31
|
+
this.subscription.add(this.store.pipe(select(fromDocument.getPages)).subscribe((pages) => {
|
|
32
|
+
if (pages[1]) {
|
|
33
|
+
this.allPages = pages;
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
this.subscription.add(this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results)));
|
|
37
|
+
this.subscription.add(this.toolbarEvents.openRedactionSearch.subscribe(isOpen => this.openSearchModal = isOpen));
|
|
38
|
+
this.subscription.add(this.toolbarEvents.redactAllInProgressSubject
|
|
39
|
+
.subscribe(inProgress => this.redactAllInProgress = inProgress));
|
|
40
|
+
}
|
|
41
|
+
ngOnDestroy() {
|
|
42
|
+
this.subscription.unsubscribe();
|
|
43
|
+
}
|
|
44
|
+
onWindowKeyDown(e) {
|
|
45
|
+
if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
this.toolbarEvents.searchBarHidden.next(false);
|
|
48
|
+
setTimeout(() => this.findInput.nativeElement.focus(), 200);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
search(reset = true) {
|
|
52
|
+
this.redactAll = !reset;
|
|
53
|
+
if (this.redactAll) {
|
|
54
|
+
this.toolbarEvents.redactAllInProgressSubject.next(true);
|
|
55
|
+
}
|
|
56
|
+
if (reset) {
|
|
57
|
+
this.redactElements = [];
|
|
58
|
+
}
|
|
59
|
+
this.toolbarEvents.search({
|
|
60
|
+
searchTerm: this.searchText,
|
|
61
|
+
highlightAll: this.highlightAll,
|
|
62
|
+
matchCase: this.matchCase,
|
|
63
|
+
wholeWord: this.wholeWord,
|
|
64
|
+
previous: false,
|
|
65
|
+
reset
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
saveRedaction(redactRectangle) {
|
|
69
|
+
const redaction = redactRectangle.map(ele => {
|
|
70
|
+
return { page: ele.page, rectangles: ele.rectangles, redactionId: uuid(), documentId: this.documentId };
|
|
71
|
+
});
|
|
72
|
+
this.store.dispatch(new fromRedactionActions.SaveBulkRedaction({ searchRedactions: redaction }));
|
|
73
|
+
}
|
|
74
|
+
existInRedactElements(pageNumber, matechedIndex, rectangles) {
|
|
75
|
+
if (this.redactElements && this.redactElements.length > 0) {
|
|
76
|
+
const pagesFound = this.redactElements.find(re => re.page === pageNumber && re.matchedIndex === matechedIndex);
|
|
77
|
+
const pageRectangles = pagesFound?.rectangles;
|
|
78
|
+
if (!pageRectangles || pageRectangles.length <= 0) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
let matchesRectangles = 0;
|
|
82
|
+
for (let rectIndx = 0; rectIndx < pageRectangles.length; rectIndx++) {
|
|
83
|
+
const rectangle = pageRectangles[rectIndx];
|
|
84
|
+
const foundRectangle = rectangles.find(re => re.width === rectangle.width &&
|
|
85
|
+
re.height === rectangle.height && re.x === rectangle.x && re.y === rectangle.y);
|
|
86
|
+
if (foundRectangle) {
|
|
87
|
+
matchesRectangles++;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return pageRectangles.length === matchesRectangles;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
onCloseSearchModal() {
|
|
95
|
+
this.toolbarEvents.openRedactionSearch.next(false);
|
|
96
|
+
}
|
|
97
|
+
setSearchResultsCount(results) {
|
|
98
|
+
this.resultCount = results.total;
|
|
99
|
+
this.resultsText = this.resultCount > 0
|
|
100
|
+
? `${results.total} results founds`
|
|
101
|
+
: 'No results found';
|
|
102
|
+
}
|
|
103
|
+
redactAllSearched(results) {
|
|
104
|
+
const $this = this;
|
|
105
|
+
const intervalId = setInterval(() => {
|
|
106
|
+
const highlightElement = document.getElementsByClassName('highlight selected');
|
|
107
|
+
if (highlightElement && highlightElement.length > 0) {
|
|
108
|
+
clearInterval(intervalId);
|
|
109
|
+
$this.redactAllSearchedTick(results);
|
|
110
|
+
}
|
|
111
|
+
}, 100);
|
|
112
|
+
}
|
|
113
|
+
redactAllSearchedTick(results) {
|
|
114
|
+
const highlightElement = document.getElementsByClassName('highlight selected');
|
|
115
|
+
if (highlightElement && highlightElement.length > 0) {
|
|
116
|
+
this.resultCount = results.matchesCount;
|
|
117
|
+
const pageNumber = results.page + 1;
|
|
118
|
+
const rectangles = this.getRectangles(pageNumber);
|
|
119
|
+
if (rectangles && this.redactElements.length <= this.resultCount
|
|
120
|
+
&& !this.existInRedactElements(pageNumber, results.matchedIndex, rectangles)) {
|
|
121
|
+
this.redactElements.push({ page: pageNumber, matchedIndex: results?.matchedIndex, rectangles });
|
|
122
|
+
this.CreateRedactAllText();
|
|
123
|
+
}
|
|
124
|
+
if (this.redactAll && this.resultCount && this.resultCount > 0
|
|
125
|
+
&& rectangles && this.redactElements.length < this.resultCount) {
|
|
126
|
+
this.search(false);
|
|
127
|
+
}
|
|
128
|
+
if (this.redactAll && this.resultCount && this.redactElements.length === this.resultCount) {
|
|
129
|
+
this.redactAll = false;
|
|
130
|
+
this.redactAllText = null;
|
|
131
|
+
this.saveRedaction(this.redactElements);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
CreateRedactAllText() {
|
|
136
|
+
this.redactAllText = `${this.redactElements.length} of ${this.resultCount}`;
|
|
137
|
+
}
|
|
138
|
+
onEscapeKeyPress(e) {
|
|
139
|
+
this.toolbarEvents.searchBarHidden.next(true);
|
|
140
|
+
}
|
|
141
|
+
onEnterKeyPress(e) {
|
|
142
|
+
this.search();
|
|
143
|
+
}
|
|
144
|
+
toggleSearchBar() {
|
|
145
|
+
this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());
|
|
146
|
+
}
|
|
147
|
+
getRectangles(page) {
|
|
148
|
+
this.pageHeight = this.allPages[page].styles.height;
|
|
149
|
+
this.pageWidth = this.allPages[page].styles.width;
|
|
150
|
+
this.zoom = parseFloat(this.allPages[page].scaleRotation.scale);
|
|
151
|
+
this.rotate = parseInt(this.allPages[page].scaleRotation.rotation, 10);
|
|
152
|
+
const selectedHighLightedElements = document.getElementsByClassName('highlight selected');
|
|
153
|
+
if (selectedHighLightedElements && selectedHighLightedElements.length > 0) {
|
|
154
|
+
const docRange = document.createRange();
|
|
155
|
+
docRange.selectNodeContents(selectedHighLightedElements[0]);
|
|
156
|
+
const selection = window.getSelection();
|
|
157
|
+
selection?.removeAllRanges();
|
|
158
|
+
selection?.addRange(docRange);
|
|
159
|
+
if (selection.rangeCount && !selection.isCollapsed) {
|
|
160
|
+
const range = selection.getRangeAt(0).cloneRange();
|
|
161
|
+
const clientRects = range.getClientRects();
|
|
162
|
+
if (clientRects) {
|
|
163
|
+
const parentRect = selectedHighLightedElements[0].parentElement.parentElement.getBoundingClientRect();
|
|
164
|
+
const selectionRectangles = [];
|
|
165
|
+
for (let i = 0; i < clientRects.length; i++) {
|
|
166
|
+
const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);
|
|
167
|
+
const findSelecttionRectangle = selectionRectangles.find((rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x);
|
|
168
|
+
if (!findSelecttionRectangle) {
|
|
169
|
+
selectionRectangles.push(selectionRectangle);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return selectionRectangles;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
createTextRectangle(rect, parentRect) {
|
|
178
|
+
const height = rect.bottom - rect.top;
|
|
179
|
+
const width = rect.right - rect.left;
|
|
180
|
+
const top = rect.top - parentRect.top;
|
|
181
|
+
const left = rect.left - parentRect.left;
|
|
182
|
+
let rectangle = this.highlightService.applyRotation(this.pageHeight, this.pageWidth, height, width, top, left, this.rotate, this.zoom);
|
|
183
|
+
rectangle = { id: uuid(), ...rectangle };
|
|
184
|
+
return rectangle;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/** @nocollapse */ RedactionSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedactionSearchBarComponent, deps: [{ token: i1.Store }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.ToolbarEventService }, { token: i4.HighlightCreateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
188
|
+
/** @nocollapse */ RedactionSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RedactionSearchBarComponent, selector: "mv-redaction-search-bar", host: { listeners: { "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "findInput", first: true, predicate: ["findInput"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Find in document\"\n #findInput\n title=\"Find in document\"\n placeholder=\"Redact from search...\"\n tabindex=\"0\"\n data-l10n-id=\"search_input\"\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n Search\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress\"\n >\n Redact all\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n Redacting in progress\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".redaction-search-buttons-area{display:flex;flex-direction:row;padding-top:.5rem}.redaction-search-bar{width:20rem;left:73%;top:2%}.redaction-status-text{height:2.6rem}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedactionSearchBarComponent, decorators: [{
|
|
190
|
+
type: Component,
|
|
191
|
+
args: [{ selector: 'mv-redaction-search-bar', template: "<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Find in document\"\n #findInput\n title=\"Find in document\"\n placeholder=\"Redact from search...\"\n tabindex=\"0\"\n data-l10n-id=\"search_input\"\n [(ngModel)]=\"searchText\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n Search\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress\"\n >\n Redact all\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n Redacting in progress\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".redaction-search-buttons-area{display:flex;flex-direction:row;padding-top:.5rem}.redaction-search-bar{width:20rem;left:73%;top:2%}.redaction-status-text{height:2.6rem}\n"] }]
|
|
192
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.ToolbarEventService }, { type: i4.HighlightCreateService }]; }, propDecorators: { findInput: [{
|
|
193
|
+
type: ViewChild,
|
|
194
|
+
args: ['findInput', { static: true }]
|
|
195
|
+
}], onWindowKeyDown: [{
|
|
196
|
+
type: HostListener,
|
|
197
|
+
args: ['window:keydown', ['$event']]
|
|
198
|
+
}] } });
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXNlYXJjaC1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3JlZGFjdGlvbi1zZWFyY2gtYmFyL3JlZGFjdGlvbi1zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUE2QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUcsT0FBTyxFQUFTLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc1QyxPQUFPLEtBQUssWUFBWSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUXhCLE1BQU0sT0FBTywyQkFBMkI7SUEwQnRDLFlBQ1UsS0FBNkIsRUFDckIsY0FBOEMsRUFDOUMsYUFBa0MsRUFDbEMsZ0JBQXdDO1FBSGhELFVBQUssR0FBTCxLQUFLLENBQXdCO1FBQ3JCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQTFCMUQsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxDQUFD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U0FBUyxFQUFFLENBQUM7UUFFekMsT0FBTyxTQUFzQixDQUFDO0lBQ2hDLENBQUM7OzJJQWxPVSwyQkFBMkI7K0hBQTNCLDJCQUEyQiwyUENwQnhDLHNsRkE0RUE7MkZEeERhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUI7Z05BTU8sU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9EakMsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1bGtSZWRhY3Rpb24sIFJlZGFjdGlvbiB9IGZyb20gJy4vLi4vLi4vcmVkYWN0aW9uL3NlcnZpY2VzL3JlZGFjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRzQ291bnQgfSBmcm9tICcuLy4uL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZWRhY3Rpb25TZWFyY2gsIFJlZGFjdFJlY3RhbmdsZSB9IGZyb20gJy4vcmVkYWN0aW9uLXNlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItYnV0dG9uLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JlLCBzZWxlY3QgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuaW1wb3J0ICogYXMgZnJvbURvY3VtZW50IGZyb20gJy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9kb2N1bWVudC5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbVJlZGFjdGlvbkFjdGlvbnMgZnJvbSAnLi4vLi4vc3RvcmUvYWN0aW9ucy9yZWRhY3Rpb24uYWN0aW9ucyc7XG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJztcbmltcG9ydCB7IEhpZ2hsaWdodENyZWF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLWNyZWF0ZS9oaWdobGlnaHQtY3JlYXRlL2hpZ2hsaWdodC1jcmVhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LXJlZGFjdGlvbi1zZWFyY2gtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZGFjdGlvbi1zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVkYWN0aW9uLXNlYXJjaC1iYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWRhY3Rpb25TZWFyY2hCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnZmluZElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgZmluZElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIGhpZ2hsaWdodEFsbCA9IHRydWU7XG4gIG1hdGNoQ2FzZSA9IGZhbHNlO1xuICB3aG9sZVdvcmQgPSBmYWxzZTtcbiAgcmVzdWx0c1RleHQgPSAnJztcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICByZXN1bHRDb3VudCA9IDA7XG4gIHJlZGFjdEVsZW1lbnRzOiBSZWRhY3RSZWN0YW5nbGVbXSA9IFtdO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7XG4gIHJvdGF0ZTogbnVtYmVyO1xuICBhbGxQYWdlczogb2JqZWN0O1xuICByZWRhY3RBbGw6IGJvb2xlYW47XG4gIG9wZW5TZWFyY2hNb2RhbDogYm9vbGVhbjtcbiAgcmVkYWN0QWxsSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgcmVkYWN0QWxsVGV4dD86IHN0cmluZztcblxuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBwdWJsaWMgYWR2YW5jZWRTZWFyY2hWaXNpYmxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLlN0YXRlPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGlnaGxpZ2h0U2VydmljZTogSGlnaGxpZ2h0Q3JlYXRlU2VydmljZSxcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0aW9uU2VyYWNoU3ViamVjdC5zdWJzY3JpYmUoKHJlc3VsdHM6IFJlZGFjdGlvblNlYXJjaCkgPT4gdGhpcy5yZWRhY3RBbGxTZWFyY2hlZChyZXN1bHRzKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbURvY3VtZW50LmdldERvY3VtZW50SWQpKS5zdWJzY3JpYmUoZG9jSWQgPT4gdGhpcy5kb2N1bWVudElkID0gZG9jSWQpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tRG9jdW1lbnQuZ2V0UGFnZXMpKS5zdWJzY3JpYmUoKHBhZ2VzKSA9PiB7XG4gICAgICBpZiAocGFnZXNbMV0pIHtcbiAgICAgICAgdGhpcy5hbGxQYWdlcyA9IHBhZ2VzO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5zdWJzY3JpYmUocmVzdWx0cyA9PiB0aGlzLnNldFNlYXJjaFJlc3VsdHNDb3VudChyZXN1bHRzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMub3BlblJlZGFjdGlvblNlYXJjaC5zdWJzY3JpYmUoaXNPcGVuID0+IHRoaXMub3BlblNlYXJjaE1vZGFsID0gaXNPcGVuKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5yZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdFxuICAgICAgLnN1YnNjcmliZShpblByb2dyZXNzID0+IHRoaXMucmVkYWN0QWxsSW5Qcm9ncmVzcyA9IGluUHJvZ3Jlc3MpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbldpbmRvd0tleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChlLmNvZGUgPT09ICdGMycgfHwgKGUuY3RybEtleSAmJiBlLmNvZGUgPT09ICdLZXlGJykpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dChmYWxzZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZmluZElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2gocmVzZXQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5yZWRhY3RBbGwgPSAhcmVzZXQ7XG4gICAgaWYgKHRoaXMucmVkYWN0QWxsKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0QWxsSW5Qcm9ncmVzc1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHJlc2V0KSB7XG4gICAgICB0aGlzLnJlZGFjdEVsZW1lbnRzID0gW107XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXRcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZVJlZGFjdGlvbihyZWRhY3RSZWN0YW5nbGU6IFJlZGFjdFJlY3RhbmdsZVtdKSB7XG4gICAgY29uc3QgcmVkYWN0aW9uID0gcmVkYWN0UmVjdGFuZ2xlLm1hcChlbGUgPT4ge1xuICAgICAgcmV0dXJuIHsgcGFnZTogZWxlLnBhZ2UsIHJlY3RhbmdsZXM6IGVsZS5yZWN0YW5nbGVzLCByZWRhY3Rpb25JZDogdXVpZCgpLCBkb2N1bWVudElkOiB0aGlzLmRvY3VtZW50SWQgfSBhcyBSZWRhY3Rpb247XG4gICAgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbVJlZGFjdGlvbkFjdGlvbnMuU2F2ZUJ1bGtSZWRhY3Rpb24oeyBzZWFyY2hSZWRhY3Rpb25zOiByZWRhY3Rpb24gfSBhcyBCdWxrUmVkYWN0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGV4aXN0SW5SZWRhY3RFbGVtZW50cyhwYWdlTnVtYmVyOiBudW1iZXIsIG1hdGVjaGVkSW5kZXg6IG51bWJlciwgcmVjdGFuZ2xlczogUmVjdGFuZ2xlW10pOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5yZWRhY3RFbGVtZW50cyAmJiB0aGlzLnJlZGFjdEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHBhZ2VzRm91bmQgPSB0aGlzLnJlZGFjdEVsZW1lbnRzLmZpbmQocmUgPT4gcmUucGFnZSA9PT0gcGFnZU51bWJlciAmJiByZS5tYXRjaGVkSW5kZXggPT09IG1hdGVjaGVkSW5kZXgpO1xuICAgICAgY29uc3QgcGFnZVJlY3RhbmdsZXMgPSBwYWdlc0ZvdW5kPy5yZWN0YW5nbGVzO1xuICAgICAgaWYgKCFwYWdlUmVjdGFuZ2xlcyB8fCBwYWdlUmVjdGFuZ2xlcy5sZW5ndGggPD0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBsZXQgbWF0Y2hlc1JlY3RhbmdsZXMgPSAwO1xuICAgICAgZm9yIChsZXQgcmVjdEluZHggPSAwOyByZWN0SW5keCA8IHBhZ2VSZWN0YW5nbGVzLmxlbmd0aDsgcmVjdEluZHgrKykge1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBwYWdlUmVjdGFuZ2xlc1tyZWN0SW5keF07XG4gICAgICAgIGNvbnN0IGZvdW5kUmVjdGFuZ2xlID0gcmVjdGFuZ2xlcy5maW5kKHJlID0+IHJlLndpZHRoID09PSByZWN0YW5nbGUud2lkdGggJiZcbiAgICAgICAgICByZS5oZWlnaHQgPT09IHJlY3RhbmdsZS5oZWlnaHQgJiYgcmUueCA9PT0gcmVjdGFuZ2xlLnggJiYgcmUueSA9PT0gcmVjdGFuZ2xlLnkpO1xuICAgICAgICBpZiAoZm91bmRSZWN0YW5nbGUpIHtcbiAgICAgICAgICBtYXRjaGVzUmVjdGFuZ2xlcysrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFnZVJlY3RhbmdsZXMubGVuZ3RoID09PSBtYXRjaGVzUmVjdGFuZ2xlcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25DbG9zZVNlYXJjaE1vZGFsKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5vcGVuUmVkYWN0aW9uU2VhcmNoLm5leHQoZmFsc2UpO1xuICB9XG5cblxuICBwcml2YXRlIHNldFNlYXJjaFJlc3VsdHNDb3VudChyZXN1bHRzOiBTZWFyY2hSZXN1bHRzQ291bnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdENvdW50ID0gcmVzdWx0cy50b3RhbDtcbiAgICB0aGlzLnJlc3VsdHNUZXh0ID0gdGhpcy5yZXN1bHRDb3VudCA+IDBcbiAgICAgID8gYCR7cmVzdWx0cy50b3RhbH0gcmVzdWx0cyBmb3VuZHNgXG4gICAgICA6ICdObyByZXN1bHRzIGZvdW5kJztcbiAgfVxuXG4gIHByaXZhdGUgcmVkYWN0QWxsU2VhcmNoZWQocmVzdWx0czogUmVkYWN0aW9uU2VhcmNoKTogdm9pZCB7XG4gICAgY29uc3QgJHRoaXMgPSB0aGlzO1xuICAgIGNvbnN0IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlnaGxpZ2h0IHNlbGVjdGVkJyk7XG4gICAgICBpZiAoaGlnaGxpZ2h0RWxlbWVudCAmJiBoaWdobGlnaHRFbGVtZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgJHRoaXMucmVkYWN0QWxsU2VhcmNoZWRUaWNrKHJlc3VsdHMpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuXG4gIHByaXZhdGUgcmVkYWN0QWxsU2VhcmNoZWRUaWNrKHJlc3VsdHM6IFJlZGFjdGlvblNlYXJjaCk6IHZvaWQge1xuICAgIGNvbnN0IGhpZ2hsaWdodEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoaWdobGlnaHQgc2VsZWN0ZWQnKTtcbiAgICBpZiAoaGlnaGxpZ2h0RWxlbWVudCAmJiBoaWdobGlnaHRFbGVtZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzdWx0Q291bnQgPSByZXN1bHRzLm1hdGNoZXNDb3VudDtcbiAgICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSByZXN1bHRzLnBhZ2UgKyAxO1xuICAgICAgY29uc3QgcmVjdGFuZ2xlcyA9IHRoaXMuZ2V0UmVjdGFuZ2xlcyhwYWdlTnVtYmVyKTtcbiAgICAgIGlmIChyZWN0YW5nbGVzICYmIHRoaXMucmVkYWN0RWxlbWVudHMubGVuZ3RoIDw9IHRoaXMucmVzdWx0Q291bnRcbiAgICAgICAgJiYgIXRoaXMuZXhpc3RJblJlZGFjdEVsZW1lbnRzKHBhZ2VOdW1iZXIsIHJlc3VsdHMubWF0Y2hlZEluZGV4LCByZWN0YW5nbGVzKSkge1xuICAgICAgICB0aGlzLnJlZGFjdEVsZW1lbnRzLnB1c2goeyBwYWdlOiBwYWdlTnVtYmVyLCBtYXRjaGVkSW5kZXg6IHJlc3VsdHM/Lm1hdGNoZWRJbmRleCwgcmVjdGFuZ2xlcyB9IGFzIFJlZGFjdFJlY3RhbmdsZSk7XG4gICAgICAgIHRoaXMuQ3JlYXRlUmVkYWN0QWxsVGV4dCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmVkYWN0QWxsICYmIHRoaXMucmVzdWx0Q291bnQgJiYgdGhpcy5yZXN1bHRDb3VudCA+IDBcbiAgICAgICAgJiYgcmVjdGFuZ2xlcyAmJiB0aGlzLnJlZGFjdEVsZW1lbnRzLmxlbmd0aCA8IHRoaXMucmVzdWx0Q291bnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2goZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yZWRhY3RBbGwgJiYgdGhpcy5yZXN1bHRDb3VudCAmJiB0aGlzLnJlZGFjdEVsZW1lbnRzLmxlbmd0aCA9PT0gdGhpcy5yZXN1bHRDb3VudCkge1xuICAgICAgICB0aGlzLnJlZGFjdEFsbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZGFjdEFsbFRleHQgPSBudWxsO1xuICAgICAgICB0aGlzLnNhdmVSZWRhY3Rpb24odGhpcy5yZWRhY3RFbGVtZW50cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBDcmVhdGVSZWRhY3RBbGxUZXh0KCkge1xuICAgIHRoaXMucmVkYWN0QWxsVGV4dCA9IGAke3RoaXMucmVkYWN0RWxlbWVudHMubGVuZ3RofSBvZiAke3RoaXMucmVzdWx0Q291bnR9YDtcbiAgfVxuXG4gIHB1YmxpYyBvbkVzY2FwZUtleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25FbnRlcktleVByZXNzKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQoIXRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4uZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlY3RhbmdsZXMocGFnZTogbnVtYmVyKTogUmVjdGFuZ2xlW10ge1xuICAgIHRoaXMucGFnZUhlaWdodCA9IHRoaXMuYWxsUGFnZXNbcGFnZV0uc3R5bGVzLmhlaWdodDtcbiAgICB0aGlzLnBhZ2VXaWR0aCA9IHRoaXMuYWxsUGFnZXNbcGFnZV0uc3R5bGVzLndpZHRoO1xuICAgIHRoaXMuem9vbSA9IHBhcnNlRmxvYXQodGhpcy5hbGxQYWdlc1twYWdlXS5zY2FsZVJvdGF0aW9uLnNjYWxlKTtcbiAgICB0aGlzLnJvdGF0ZSA9IHBhcnNlSW50KHRoaXMuYWxsUGFnZXNbcGFnZV0uc2NhbGVSb3RhdGlvbi5yb3RhdGlvbiwgMTApO1xuICAgIGNvbnN0IHNlbGVjdGVkSGlnaExpZ2h0ZWRFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hpZ2hsaWdodCBzZWxlY3RlZCcpO1xuICAgIGlmIChzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHMgJiYgc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRvY1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIGRvY1JhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHNbMF0gYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UoZG9jUmFuZ2UpO1xuICAgICAgaWYgKHNlbGVjdGlvbi5yYW5nZUNvdW50ICYmICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcblxuICAgICAgICBpZiAoY2xpZW50UmVjdHMpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzWzBdLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25SZWN0YW5nbGVzOiBSZWN0YW5nbGVbXSA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2xpZW50UmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IHRoaXMuY3JlYXRlVGV4dFJlY3RhbmdsZShjbGllbnRSZWN0c1tpXSwgcGFyZW50UmVjdCk7XG4gICAgICAgICAgICBjb25zdCBmaW5kU2VsZWN0dGlvblJlY3RhbmdsZSA9IHNlbGVjdGlvblJlY3RhbmdsZXMuZmluZChcbiAgICAgICAgICAgICAgKHJlY3QpID0+IHJlY3Qud2lkdGggPT09IHNlbGVjdGlvblJlY3RhbmdsZS53aWR0aCAmJiByZWN0LnggPT09IHNlbGVjdGlvblJlY3RhbmdsZS54XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFmaW5kU2VsZWN0dGlvblJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVzLnB1c2goc2VsZWN0aW9uUmVjdGFuZ2xlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uUmVjdGFuZ2xlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGV4dFJlY3RhbmdsZShyZWN0OiBET01SZWN0LCBwYXJlbnRSZWN0OiBhbnkpOiBSZWN0YW5nbGUge1xuICAgIGNvbnN0IGhlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7XG4gICAgY29uc3Qgd2lkdGggPSByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IHRvcCA9IHJlY3QudG9wIC0gcGFyZW50UmVjdC50b3A7XG4gICAgY29uc3QgbGVmdCA9IHJlY3QubGVmdCAtIHBhcmVudFJlY3QubGVmdDtcblxuICAgIGxldCByZWN0YW5nbGUgPSB0aGlzLmhpZ2hsaWdodFNlcnZpY2UuYXBwbHlSb3RhdGlvbihcbiAgICAgIHRoaXMucGFnZUhlaWdodCxcbiAgICAgIHRoaXMucGFnZVdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgd2lkdGgsXG4gICAgICB0b3AsXG4gICAgICBsZWZ0LFxuICAgICAgdGhpcy5yb3RhdGUsXG4gICAgICB0aGlzLnpvb21cbiAgICApO1xuICAgIHJlY3RhbmdsZSA9IHsgaWQ6IHV1aWQoKSwgLi4ucmVjdGFuZ2xlIH07XG5cbiAgICByZXR1cm4gcmVjdGFuZ2xlIGFzIFJlY3RhbmdsZTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cIm9wZW5TZWFyY2hNb2RhbFwiXG4gIGNsYXNzPVwic2VhcmNoYmFyIHJlZGFjdGlvbi1zZWFyY2gtYmFyIGdvdnVrLSEtcGFkZGluZy0zXCJcbj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwgZ292dWstIS1wYWRkaW5nLXJpZ2h0LTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWRhY3Rpb24tc2VhcmNoLWJ1dHRvbnMtYXJlYVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgaWQ9XCJtdkNsb3NlQnRuXCJcbiAgICAgICAgICAjbXZDbG9zZUJ0blxuICAgICAgICAgIGNsYXNzPVwibXYtYnV0dG9uIHNlYXJjaGJhci1idXR0b24tLWNsb3NlXCJcbiAgICAgICAgICB0aXRsZT1cIkNsb3NlIFNlYXJjaFwiXG4gICAgICAgICAgZGF0YS1sMTBuLWlkPVwibXZSZWRhY3RCdG5cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlU2VhcmNoTW9kYWwoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIGlkPVwic2VhcmNoX2lucHV0XCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1pbnB1dCBnb3Z1ay0hLXdpZHRoLXRocmVlLXF1YXJ0ZXJzIGdvdnVrLSEtZGlzcGxheS1pbmxpbmUtYmxvY2sgZ292dWstIS1tYXJnaW4tdG9wLTVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJGaW5kIGluIGRvY3VtZW50XCJcbiAgICAgICAgI2ZpbmRJbnB1dFxuICAgICAgICB0aXRsZT1cIkZpbmQgaW4gZG9jdW1lbnRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlJlZGFjdCBmcm9tIHNlYXJjaC4uLlwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cInNlYXJjaF9pbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJvbkVzY2FwZUtleVByZXNzKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzcz1cInJlZGFjdGlvbi1zZWFyY2gtYnV0dG9ucy1hcmVhXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBpZD1cIm12U2VhcmNoQWxsQnRuXCJcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiXG4gICAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICA+XG4gICAgICAgICAgU2VhcmNoXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgaWQ9XCJtdlJlZGFjdEFsbEJ0blwiXG4gICAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstIS1tYXJnaW4tbGVmdC0yIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCJcbiAgICAgICAgICBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlYXJjaChmYWxzZSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgPlxuICAgICAgICAgIFJlZGFjdCBhbGxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10aHJlZS1xdWFydGVycyBnb3Z1ay0hLXBhZGRpbmctbGVmdC0wIGdvdnVrLSEtcGFkZGluZy10b3AtMiByZWRhY3Rpb24tc3RhdHVzLXRleHRcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGlkPVwiZmluZFJlZGFjdFJlc3VsdHNDb3VudFwiXG4gICAgICAgICAgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTQgZ292dWstIS1tYXJnaW4tbGVmdC0wIGdvdnVrLSEtcGFkZGluZy1sZWZ0LTBcIlxuICAgICAgICAgID48aDRcbiAgICAgICAgICAgIGNsYXNzPVwiZ292dWstIS1kaXNwbGF5LWlubGluZS1ibG9jayBnb3Z1ay0hLW1hcmdpbi10b3AtMCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMVwiXG4gICAgICAgICAgICAqbmdJZj1cInJlZGFjdEFsbEluUHJvZ3Jlc3NcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFJlZGFjdGluZyBpbiBwcm9ncmVzc1xuICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAge3sgcmVkYWN0QWxsSW5Qcm9ncmVzcyA/IFwiXCIgOiByZXN1bHRzVGV4dCB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIDxoNVxuICAgICAgICAgICAgaWQ9XCJyZWRhY3RBbGxJblByb2dyZXNzQ291bnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtbWFyZ2luLXRvcC0wIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyByZWRhY3RBbGxJblByb2dyZXNzID8gcmVkYWN0QWxsVGV4dCA6IFwiXCIgfX1cbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import * as fromRedactSelectors from '../../store/selectors/redaction.selectors';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../toolbar-event.service";
|
|
6
|
+
import * as i2 from "../toolbar-button-visibility.service";
|
|
7
|
+
import * as i3 from "@ngrx/store";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
export class RedactionToolbarComponent {
|
|
10
|
+
constructor(toolbarEventService, toolbarButtons, store) {
|
|
11
|
+
this.toolbarEventService = toolbarEventService;
|
|
12
|
+
this.toolbarButtons = toolbarButtons;
|
|
13
|
+
this.store = store;
|
|
14
|
+
this.preview = false;
|
|
15
|
+
this.hasRedactions = false;
|
|
16
|
+
this.subscriptions = [];
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.subscriptions.push(this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {
|
|
20
|
+
this.hasRedactions = !!redactions.redactions.length;
|
|
21
|
+
}));
|
|
22
|
+
this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {
|
|
23
|
+
this.redactionAllInProgress = inprogress;
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
onRedactAllSearch() {
|
|
27
|
+
this.toolbarEventService.openRedactionSearch.next(true);
|
|
28
|
+
}
|
|
29
|
+
toggleTextRedactionMode() {
|
|
30
|
+
this.toolbarEventService.highlightModeSubject.next(true);
|
|
31
|
+
}
|
|
32
|
+
toggleDrawMode() {
|
|
33
|
+
this.toolbarEventService.drawModeSubject.next(true);
|
|
34
|
+
}
|
|
35
|
+
togglePreview() {
|
|
36
|
+
this.preview = !this.preview;
|
|
37
|
+
this.toolbarEventService.toggleRedactionPreview(this.preview);
|
|
38
|
+
}
|
|
39
|
+
unmarkAll() {
|
|
40
|
+
this.toolbarEventService.unmarkAll();
|
|
41
|
+
}
|
|
42
|
+
redact() {
|
|
43
|
+
this.toolbarEventService.applyRedactionToDocument();
|
|
44
|
+
}
|
|
45
|
+
toggleRedactBar() {
|
|
46
|
+
this.toolbarEventService.toggleRedactionMode();
|
|
47
|
+
}
|
|
48
|
+
redactPage() {
|
|
49
|
+
this.toolbarEventService.drawModeSubject.next(true);
|
|
50
|
+
this.toolbarEventService.redactPage();
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
for (const subscription of this.subscriptions) {
|
|
54
|
+
subscription.unsubscribe();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** @nocollapse */ RedactionToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedactionToolbarComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
/** @nocollapse */ RedactionToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RedactionToolbarComponent, selector: "mv-redaction-toolbar", inputs: { showRedactSearch: "showRedactSearch" }, ngImport: i0, template: "<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\"\n >Redaction options</label\n >\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"Draw a box\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">Draw a box</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"Redact Page\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">Redact page</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"From search\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\"\n >From search</span\n >\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"Redact text\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">Redact text</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"Clear all\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">Clear all</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"Preview\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">Preview</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\"\n >Hide preview</span\n >\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"Redact\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">Save document</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"Close Redaction\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">Close Redaction</span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedactionToolbarComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'mv-redaction-toolbar', template: "<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\"\n >Redaction options</label\n >\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"Draw a box\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">Draw a box</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"Redact Page\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">Redact page</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"From search\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\"\n >From search</span\n >\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"Redact text\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">Redact text</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"Clear all\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">Clear all</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"Preview\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">Preview</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\"\n >Hide preview</span\n >\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"Redact\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">Save document</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"Close Redaction\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">Close Redaction</span>\n </button>\n</div>\n" }]
|
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.ToolbarEventService }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.Store }]; }, propDecorators: { showRedactSearch: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}] } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci9yZWRhY3Rpb24tdG9vbGJhci9yZWRhY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3JlZGFjdGlvbi10b29sYmFyL3JlZGFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7O0FBVWpGLE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFBNEIsbUJBQXdDLEVBQ2xELGNBQThDLEVBQ3RELEtBQTBDO1FBRnhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQ3RELFVBQUssR0FBTCxLQUFLLENBQXFDO1FBUnBELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFLYSxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNqRyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzdDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7O3lJQTdEVSx5QkFBeUI7NkhBQXpCLHlCQUF5Qiw4R0NidEMsNnJHQTJHQTsyRkQ5RmEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHNCQUFzQjsyS0FLdkIsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21SZWRhY3RTZWxlY3RvcnMgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL3JlZGFjdGlvbi5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFRoaXNSZWNlaXZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtcmVkYWN0aW9uLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVkYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlZGFjdGlvblRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgc2hvd1JlZGFjdFNlYXJjaDogYm9vbGVhbjtcblxuICBwcmV2aWV3ID0gZmFsc2U7XG4gIGhhc1JlZGFjdGlvbnMgPSBmYWxzZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHJlZGFjdGlvbkFsbEluUHJvZ3Jlc3M6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHRvb2xiYXJFdmVudFNlcnZpY2U6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJCdXR0b25zOiBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT4pIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbVJlZGFjdFNlbGVjdG9ycy5nZXRSZWRhY3Rpb25BcnJheSkpLnN1YnNjcmliZShyZWRhY3Rpb25zID0+IHtcbiAgICAgIHRoaXMuaGFzUmVkYWN0aW9ucyA9ICEhcmVkYWN0aW9ucy5yZWRhY3Rpb25zLmxlbmd0aDtcbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLnJlZGFjdEFsbEluUHJvZ3Jlc3NTdWJqZWN0LnN1YnNjcmliZShpbnByb2dyZXNzID0+IHtcbiAgICAgIHRoaXMucmVkYWN0aW9uQWxsSW5Qcm9ncmVzcyA9IGlucHJvZ3Jlc3M7XG4gICAgfSkpO1xuICB9XG5cbiAgb25SZWRhY3RBbGxTZWFyY2goKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLm9wZW5SZWRhY3Rpb25TZWFyY2gubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHRvZ2dsZVRleHRSZWRhY3Rpb25Nb2RlKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlRHJhd01vZGUoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLmRyYXdNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlUHJldmlldygpIHtcbiAgICB0aGlzLnByZXZpZXcgPSAhdGhpcy5wcmV2aWV3O1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS50b2dnbGVSZWRhY3Rpb25QcmV2aWV3KHRoaXMucHJldmlldyk7XG4gIH1cblxuICB1bm1hcmtBbGwoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLnVubWFya0FsbCgpO1xuICB9XG5cbiAgcmVkYWN0KCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5hcHBseVJlZGFjdGlvblRvRG9jdW1lbnQoKTtcbiAgfVxuXG4gIHRvZ2dsZVJlZGFjdEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UudG9nZ2xlUmVkYWN0aW9uTW9kZSgpO1xuICB9XG5cbiAgcmVkYWN0UGFnZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UuZHJhd01vZGVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLnJlZGFjdFBhZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmVkYWN0aW9uXCI+XG4gIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIHJlZGFjdGlvbi10aXRsZVwiIGRhdGEtbDEwbi1pZD1cInJlZGFjdGlvbl9vcHRpb25zXCJcbiAgICA+UmVkYWN0aW9uIG9wdGlvbnM8L2xhYmVsXG4gID5cbiAgPGJ1dHRvblxuICAgIGlkPVwidG9nZ2xlRHJhd0J1dHRvblwiXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tZHJhd1wiXG4gICAgdGl0bGU9XCJEcmF3IGEgYm94XCJcbiAgICBkYXRhLWwxMG4taWQ9XCJ0b2dnbGVEcmF3QnV0dG9uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJhd01vZGUoKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICA+XG4gICAgPHNwYW4gZGF0YS1sMTBuLWlkPVwidG9nZ2xlRHJhd0J1dHRvbl9sYWJlbFwiPkRyYXcgYSBib3g8L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBpZD1cInJlZGFjdFBhZ2VCdXR0b25cIlxuICAgIGNsYXNzPVwibXYtYnV0dG9uIHJlZGFjdGlvbi1idXR0b24tLXJlZGFjdC1wYWdlXCJcbiAgICB0aXRsZT1cIlJlZGFjdCBQYWdlXCJcbiAgICBkYXRhLWwxMG4taWQ9XCJyZWRhY3RQYWdlQnV0dG9uXCJcbiAgICAoY2xpY2spPVwicmVkYWN0UGFnZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJyZWRhY3RQYWdlQnV0dG9uX2xhYmVsXCI+UmVkYWN0IHBhZ2U8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJzaG93UmVkYWN0U2VhcmNoXCJcbiAgICBpZD1cIm12UmVkYWN0RnJvbVNlYXJjaEJ0blwiXG4gICAgdGl0bGU9XCJGcm9tIHNlYXJjaFwiXG4gICAgZGF0YS1sMTBuLWlkPVwiZnJvbVNlYXJjaEJ1dHRvblwiXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tc2VhcmNoXCJcbiAgICAoY2xpY2spPVwib25SZWRhY3RBbGxTZWFyY2goKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICA+XG4gICAgPHNwYW4gc3R5bGU9XCJ3aWR0aDogNXJlbVwiIGRhdGEtbDEwbi1pZD1cImZyb21TZWFyY2hCdXR0b25fbGFiZWxcIlxuICAgICAgPkZyb20gc2VhcmNoPC9zcGFuXG4gICAgPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJ0b29sYmFyQnV0dG9ucy5zaG93SGlnaGxpZ2h0QnV0dG9uXCJcbiAgICBpZD1cInRvZ2dsZUhpZ2hsaWdodEJ1dHRvblwiXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tcmVkYWN0XCJcbiAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgdGl0bGU9XCJSZWRhY3QgdGV4dFwiXG4gICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlVGV4dFJlZGFjdGlvbkJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVRleHRSZWRhY3Rpb25Nb2RlKClcIlxuICAgIFtkaXNhYmxlZF09XCJyZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgPlxuICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cInRvZ2dsZVRleHRSZWRhY3Rpb25CdXR0b25fbGFiZWxcIj5SZWRhY3QgdGV4dDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCIhaGFzUmVkYWN0aW9ucyB8fCByZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgICBpZD1cIm12Q2xlYXJCdG5cIlxuICAgICNtdkNsZWFyQnRuXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tY2xlYXJcIlxuICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICB0aXRsZT1cIkNsZWFyIGFsbFwiXG4gICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlQ2xlYXJBbGxCdXR0b25cIlxuICAgIChjbGljayk9XCJ1bm1hcmtBbGwoKVwiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJDbGVhciBhbGxcIj5DbGVhciBhbGw8L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBbZGlzYWJsZWRdPVwiIWhhc1JlZGFjdGlvbnMgfHwgcmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gICAgaWQ9XCJtdlByZXZpZXdCdG5cIlxuICAgIGNsYXNzPVwibXYtYnV0dG9uXCJcbiAgICBbY2xhc3MucmVkYWN0aW9uLWJ1dHRvbi0tcHJldmlld109XCIhcHJldmlld1wiXG4gICAgW2NsYXNzLnJlZGFjdGlvbi1idXR0b24tLWhpZGUtcHJldmlld109XCJwcmV2aWV3XCJcbiAgICByZWRhY3Rpb24tYnV0dG9uLS1wcmV2aWV3XG4gICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgIHRpdGxlPVwiUHJldmlld1wiXG4gICAgZGF0YS1sMTBuLWlkPVwidG9nZ2xlUHJldmlld0J1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVByZXZpZXcoKVwiXG4gID5cbiAgICA8c3BhbiAqbmdJZj1cIiFwcmV2aWV3XCIgZGF0YS1sMTBuLWlkPVwicmVkYWN0aW9uLXByZXZpZXdfbGFiZWxcIj5QcmV2aWV3PC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwicHJldmlld1wiIGRhdGEtbDEwbi1pZD1cInJlZGFjdGlvbi1oaWRlLXByZXZpZXdfbGFiZWxcIlxuICAgICAgPkhpZGUgcHJldmlldzwvc3BhblxuICAgID5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCIhaGFzUmVkYWN0aW9ucyB8fCByZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgICBpZD1cIm12UmVkYWN0QnRuXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1kb3dubG9hZFwiXG4gICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgIHRpdGxlPVwiUmVkYWN0XCJcbiAgICBkYXRhLWwxMG4taWQ9XCJtdlJlZGFjdEJ0blwiXG4gICAgKGNsaWNrKT1cInJlZGFjdCgpXCJcbiAgPlxuICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cIlNhdmUgRG9jdW1lbnRcIj5TYXZlIGRvY3VtZW50PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgaWQ9XCJtdkNsb3NlQnRuXCJcbiAgICAjbXZDbG9zZUJ0blxuICAgIGNsYXNzPVwibXYtYnV0dG9uIHJlZGFjdGlvbi1idXR0b24tLWNsb3NlXCJcbiAgICB0aXRsZT1cIkNsb3NlIFJlZGFjdGlvblwiXG4gICAgZGF0YS1sMTBuLWlkPVwibXZSZWRhY3RCdG5cIlxuICAgIChjbGljayk9XCJ0b2dnbGVSZWRhY3RCYXIoKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICA+XG4gICAgPHNwYW4gZGF0YS1sMTBuLWlkPVwiQ2xvc2UgUmVkYWN0aW9uXCI+Q2xvc2UgUmVkYWN0aW9uPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Component, HostListener, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../toolbar-button-visibility.service";
|
|
4
|
+
import * as i2 from "../toolbar-event.service";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "@angular/forms";
|
|
7
|
+
import * as i5 from "@angular/router";
|
|
8
|
+
export class SearchBarComponent {
|
|
9
|
+
constructor(toolbarButtons, toolbarEvents) {
|
|
10
|
+
this.toolbarButtons = toolbarButtons;
|
|
11
|
+
this.toolbarEvents = toolbarEvents;
|
|
12
|
+
this.highlightAll = true;
|
|
13
|
+
this.matchCase = false;
|
|
14
|
+
this.wholeWord = false;
|
|
15
|
+
this.resultsText = '';
|
|
16
|
+
this.searchText = '';
|
|
17
|
+
this.resultCount = 0;
|
|
18
|
+
this.subscriptions = [];
|
|
19
|
+
this.advancedSearchVisible = false;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
this.subscriptions.push(this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results)));
|
|
23
|
+
}
|
|
24
|
+
ngOnDestroy() {
|
|
25
|
+
for (const subscription of this.subscriptions) {
|
|
26
|
+
subscription.unsubscribe();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onWindowKeyDown(e) {
|
|
30
|
+
if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {
|
|
31
|
+
e.preventDefault();
|
|
32
|
+
this.toolbarEvents.searchBarHidden.next(false);
|
|
33
|
+
setTimeout(() => this.findInput.nativeElement.focus(), 200);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
searchNext() {
|
|
37
|
+
this.toolbarEvents.search({
|
|
38
|
+
searchTerm: this.searchText,
|
|
39
|
+
highlightAll: this.highlightAll,
|
|
40
|
+
matchCase: this.matchCase,
|
|
41
|
+
wholeWord: this.wholeWord,
|
|
42
|
+
previous: false,
|
|
43
|
+
reset: false
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
searchPrev() {
|
|
47
|
+
this.toolbarEvents.search({
|
|
48
|
+
searchTerm: this.searchText,
|
|
49
|
+
highlightAll: this.highlightAll,
|
|
50
|
+
matchCase: this.matchCase,
|
|
51
|
+
wholeWord: this.wholeWord,
|
|
52
|
+
previous: true,
|
|
53
|
+
reset: false
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
search() {
|
|
57
|
+
this.toolbarEvents.search({
|
|
58
|
+
searchTerm: this.searchText,
|
|
59
|
+
highlightAll: this.highlightAll,
|
|
60
|
+
matchCase: this.matchCase,
|
|
61
|
+
wholeWord: this.wholeWord,
|
|
62
|
+
previous: false,
|
|
63
|
+
reset: true
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
setSearchResultsCount(results) {
|
|
67
|
+
this.resultCount = results.total;
|
|
68
|
+
this.resultsText = this.resultCount > 0
|
|
69
|
+
? `Found ${results.current} of ${results.total}`
|
|
70
|
+
: 'No results found';
|
|
71
|
+
if (this.resultCount && this.resultCount > 0) {
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
this.findNext.nativeElement.focus();
|
|
74
|
+
}, 1000);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
onEscapeKeyPress(e) {
|
|
78
|
+
this.toolbarEvents.searchBarHidden.next(true);
|
|
79
|
+
}
|
|
80
|
+
onEnterKeyPress(e) {
|
|
81
|
+
this.search();
|
|
82
|
+
}
|
|
83
|
+
toggleAdvancedSearch() {
|
|
84
|
+
this.advancedSearchVisible = !this.advancedSearchVisible;
|
|
85
|
+
}
|
|
86
|
+
toggleSearchBar() {
|
|
87
|
+
this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** @nocollapse */ SearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.ToolbarButtonVisibilityService }, { token: i2.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
/** @nocollapse */ SearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SearchBarComponent, selector: "mv-search-bar", host: { listeners: { "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "findInput", first: true, predicate: ["findInput"], descendants: true, static: true }, { propertyName: "findNext", first: true, predicate: ["findNext"], descendants: true }], ngImport: i0, template: "<div class=\"searchbar govuk-!-padding-3\" [hidden]=\"toolbarEvents.searchBarHidden | async\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\" aria-label=\"Find in document\" #findInput [(ngModel)]=\"searchText\" (keydown.escape)=\"onEscapeKeyPress($event)\" (keydown.enter)=\"onEnterKeyPress($event)\" title=\"Find in document\"\n placeholder=\"Find in document\u2026\" tabindex=\"0\" data-l10n-id=\"find_input\" />\n <button class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\" data-module=\"govuk-button\"\n (click)=\"search()\" style=\" position: absolute; top: 40px; right: 10px; \">\n Search\n </button>\n <button id=\"mvCloseBtn\" #mvCloseBtn class=\"mv-button searchbar-button--close\" title=\"Close Search\" data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\">\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span id=\"findResultsCount\" class=\"govuk-!-display-inline-block govuk-!-margin-right-4\">{{resultsText}}</span>\n <a *ngIf=\"resultCount > 0\" [routerLink]=\"[]\" class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\" title=\"Find the previous occurrence of the phrase\" data-l10n-id=\"find_previous\">Prev</a>\n <a *ngIf=\"resultCount > 0\" [routerLink]=\"[]\" #findNext class=\"govuk-link govuk-link--no-visited-state\" (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\" data-l10n-id=\"find_next\">Next</a>\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a [routerLink]=\"[]\" class=\"govuk-link govuk-link--no-visited-state\" (click)=\"toggleAdvancedSearch()\" title=\"Advanced\"\n data-l10n-id=\"find_advanced\" style=\" position: absolute; top: 95px; right: 15px; \">Advanced</a>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\" *ngIf=\"advancedSearchVisible\">\n <div class=\"govuk-grid-column-full\">\n <div class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"findHighlightAll\" name=\"findHighlightAll\" type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\" [checked]=\"highlightAll\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"findHighlightAll\" data-l10n-id=\"find_highlight\">\n Highlight all\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"findMatchCase\" name=\"findMatchCase\" type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\" [checked]=\"matchCase\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\">\n Match text (exact case)\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"findEntireWord\" name=\"findMatchCase\" type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\" [checked]=\"wholeWord\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\">\n Match whole words or sentences\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SearchBarComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ selector: 'mv-search-bar', template: "<div class=\"searchbar govuk-!-padding-3\" [hidden]=\"toolbarEvents.searchBarHidden | async\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\" aria-label=\"Find in document\" #findInput [(ngModel)]=\"searchText\" (keydown.escape)=\"onEscapeKeyPress($event)\" (keydown.enter)=\"onEnterKeyPress($event)\" title=\"Find in document\"\n placeholder=\"Find in document\u2026\" tabindex=\"0\" data-l10n-id=\"find_input\" />\n <button class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\" data-module=\"govuk-button\"\n (click)=\"search()\" style=\" position: absolute; top: 40px; right: 10px; \">\n Search\n </button>\n <button id=\"mvCloseBtn\" #mvCloseBtn class=\"mv-button searchbar-button--close\" title=\"Close Search\" data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\">\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span id=\"findResultsCount\" class=\"govuk-!-display-inline-block govuk-!-margin-right-4\">{{resultsText}}</span>\n <a *ngIf=\"resultCount > 0\" [routerLink]=\"[]\" class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\" title=\"Find the previous occurrence of the phrase\" data-l10n-id=\"find_previous\">Prev</a>\n <a *ngIf=\"resultCount > 0\" [routerLink]=\"[]\" #findNext class=\"govuk-link govuk-link--no-visited-state\" (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\" data-l10n-id=\"find_next\">Next</a>\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a [routerLink]=\"[]\" class=\"govuk-link govuk-link--no-visited-state\" (click)=\"toggleAdvancedSearch()\" title=\"Advanced\"\n data-l10n-id=\"find_advanced\" style=\" position: absolute; top: 95px; right: 15px; \">Advanced</a>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\" *ngIf=\"advancedSearchVisible\">\n <div class=\"govuk-grid-column-full\">\n <div class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"findHighlightAll\" name=\"findHighlightAll\" type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\" [checked]=\"highlightAll\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"findHighlightAll\" data-l10n-id=\"find_highlight\">\n Highlight all\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"findMatchCase\" name=\"findMatchCase\" type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\" [checked]=\"matchCase\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\">\n Match text (exact case)\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"findEntireWord\" name=\"findMatchCase\" type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\" [checked]=\"wholeWord\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\">\n Match whole words or sentences\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
95
|
+
}], ctorParameters: function () { return [{ type: i1.ToolbarButtonVisibilityService }, { type: i2.ToolbarEventService }]; }, propDecorators: { findInput: [{
|
|
96
|
+
type: ViewChild,
|
|
97
|
+
args: ['findInput', { static: true }]
|
|
98
|
+
}], findNext: [{
|
|
99
|
+
type: ViewChild,
|
|
100
|
+
args: ['findNext', { static: false }]
|
|
101
|
+
}], onWindowKeyDown: [{
|
|
102
|
+
type: HostListener,
|
|
103
|
+
args: ['window:keydown', ['$event']]
|
|
104
|
+
}] } });
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFTbEcsTUFBTSxPQUFPLGtCQUFrQjtJQWdCN0IsWUFDa0IsY0FBOEMsRUFDOUMsYUFBa0M7UUFEbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQzlDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQWJwRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVSLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVwQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFLakMsQ0FBQztJQUVFLFFBQVE7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDdkcsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzdDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFHTSxlQUFlLENBQUMsQ0FBZ0I7UUFDckMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFBRTtZQUN2RCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDeEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN4QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLEtBQUs7WUFDZixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxPQUEyQjtRQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUM7WUFDckMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE9BQU8sT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2hELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDNUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDVjtJQUNILENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxDQUFnQjtRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxDQUFnQjtRQUNyQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUdNLG9CQUFvQjtRQUN6QixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDM0QsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDOztrSUF2R1Usa0JBQWtCO3NIQUFsQixrQkFBa0Isd1VDVC9CLHE0SEFnRUE7MkZEdkRhLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDRSxlQUFlO3VKQUtpQixTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQStCakMsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWJ1dHRvbi12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0c0NvdW50LCBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1zZWFyY2gtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdmaW5kSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaW5kSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2ZpbmROZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGZpbmROZXh0OiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PjtcblxuICBoaWdobGlnaHRBbGwgPSB0cnVlO1xuICBtYXRjaENhc2UgPSBmYWxzZTtcbiAgd2hvbGVXb3JkID0gZmFsc2U7XG4gIHJlc3VsdHNUZXh0ID0gJyc7XG4gIHNlYXJjaFRleHQgPSAnJztcbiAgcmVzdWx0Q291bnQgPSAwO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwdWJsaWMgYWR2YW5jZWRTZWFyY2hWaXNpYmxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJCdXR0b25zOiBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5zdWJzY3JpYmUocmVzdWx0cyA9PiB0aGlzLnNldFNlYXJjaFJlc3VsdHNDb3VudChyZXN1bHRzKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbldpbmRvd0tleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChlLmNvZGUgPT09ICdGMycgfHwgKGUuY3RybEtleSAmJiBlLmNvZGUgPT09ICdLZXlGJykpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5uZXh0KGZhbHNlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maW5kSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hOZXh0KCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXQ6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoUHJldigpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoKHtcbiAgICAgIHNlYXJjaFRlcm06IHRoaXMuc2VhcmNoVGV4dCxcbiAgICAgIGhpZ2hsaWdodEFsbDogdGhpcy5oaWdobGlnaHRBbGwsXG4gICAgICBtYXRjaENhc2U6IHRoaXMubWF0Y2hDYXNlLFxuICAgICAgd2hvbGVXb3JkOiB0aGlzLndob2xlV29yZCxcbiAgICAgIHByZXZpb3VzOiB0cnVlLFxuICAgICAgcmVzZXQ6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VhcmNoUmVzdWx0c0NvdW50KHJlc3VsdHM6IFNlYXJjaFJlc3VsdHNDb3VudCk6IHZvaWQge1xuICAgIHRoaXMucmVzdWx0Q291bnQgPSByZXN1bHRzLnRvdGFsO1xuICAgIHRoaXMucmVzdWx0c1RleHQgPSB0aGlzLnJlc3VsdENvdW50ID4gMFxuICAgICAgPyBgRm91bmQgJHtyZXN1bHRzLmN1cnJlbnR9IG9mICR7cmVzdWx0cy50b3RhbH1gXG4gICAgICA6ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBpZiAodGhpcy5yZXN1bHRDb3VudCAmJiB0aGlzLnJlc3VsdENvdW50ID4gMCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmluZE5leHQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRXNjYXBlS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGVyS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuXG4gIHB1YmxpYyB0b2dnbGVBZHZhbmNlZFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkdmFuY2VkU2VhcmNoVmlzaWJsZSA9ICF0aGlzLmFkdmFuY2VkU2VhcmNoVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTZWFyY2hCYXIoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5uZXh0KCF0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLmdldFZhbHVlKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2VhcmNoYmFyIGdvdnVrLSEtcGFkZGluZy0zXCIgW2hpZGRlbl09XCJ0b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbiB8IGFzeW5jXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1pbnB1dCBnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtd2lkdGgtdGhyZWUtcXVhcnRlcnMgZ292dWstIS1tYXJnaW4tYm90dG9tLTUgZ292dWstIS1tYXJnaW4tdG9wLTVcIlxuICAgICAgICB0eXBlPVwidGV4dFwiIGFyaWEtbGFiZWw9XCJGaW5kIGluIGRvY3VtZW50XCIgI2ZpbmRJbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiAoa2V5ZG93bi5lc2NhcGUpPVwib25Fc2NhcGVLZXlQcmVzcygkZXZlbnQpXCIgKGtleWRvd24uZW50ZXIpPVwib25FbnRlcktleVByZXNzKCRldmVudClcIiB0aXRsZT1cIkZpbmQgaW4gZG9jdW1lbnRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbmQgaW4gZG9jdW1lbnTigKZcIiB0YWJpbmRleD1cIjBcIiBkYXRhLWwxMG4taWQ9XCJmaW5kX2lucHV0XCIgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstIS1kaXNwbGF5LWlubGluZS1ibG9jayBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaCgpXCIgc3R5bGU9XCIgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDQwcHg7IHJpZ2h0OiAxMHB4OyBcIj5cbiAgICAgICAgU2VhcmNoXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gaWQ9XCJtdkNsb3NlQnRuXCIgI212Q2xvc2VCdG4gY2xhc3M9XCJtdi1idXR0b24gc2VhcmNoYmFyLWJ1dHRvbi0tY2xvc2VcIiB0aXRsZT1cIkNsb3NlIFNlYXJjaFwiIGRhdGEtbDEwbi1pZD1cIm12UmVkYWN0QnRuXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEJhcigpXCI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXRocmVlLXF1YXJ0ZXJzXCI+XG4gICAgICA8c3BhbiBpZD1cImZpbmRSZXN1bHRzQ291bnRcIiBjbGFzcz1cImdvdnVrLSEtZGlzcGxheS1pbmxpbmUtYmxvY2sgZ292dWstIS1tYXJnaW4tcmlnaHQtNFwiPnt7cmVzdWx0c1RleHR9fTwvc3Bhbj5cbiAgICAgIDxhICpuZ0lmPVwicmVzdWx0Q291bnQgPiAwXCIgW3JvdXRlckxpbmtdPVwiW11cIiBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstbGluay0tbm8tdmlzaXRlZC1zdGF0ZSBnb3Z1ay0hLW1hcmdpbi1yaWdodC0yXCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaFByZXYoKVwiIHRpdGxlPVwiRmluZCB0aGUgcHJldmlvdXMgb2NjdXJyZW5jZSBvZiB0aGUgcGhyYXNlXCIgZGF0YS1sMTBuLWlkPVwiZmluZF9wcmV2aW91c1wiPlByZXY8L2E+XG4gICAgICA8YSAqbmdJZj1cInJlc3VsdENvdW50ID4gMFwiIFtyb3V0ZXJMaW5rXT1cIltdXCIgI2ZpbmROZXh0IGNsYXNzPVwiZ292dWstbGluayBnb3Z1ay1saW5rLS1uby12aXNpdGVkLXN0YXRlXCIgKGNsaWNrKT1cInNlYXJjaE5leHQoKVwiXG4gICAgICAgIHRpdGxlPVwiRmluZCB0aGUgbmV4dCBvY2N1cnJlbmNlIG9mIHRoZSBwaHJhc2VcIiBkYXRhLWwxMG4taWQ9XCJmaW5kX25leHRcIj5OZXh0PC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtcXVhcnRlclwiPlxuICAgICAgPGEgW3JvdXRlckxpbmtdPVwiW11cIiBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstbGluay0tbm8tdmlzaXRlZC1zdGF0ZVwiIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZFNlYXJjaCgpXCIgdGl0bGU9XCJBZHZhbmNlZFwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfYWR2YW5jZWRcIiBzdHlsZT1cIiBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogOTVweDsgcmlnaHQ6IDE1cHg7IFwiPkFkdmFuY2VkPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIiAqbmdJZj1cImFkdmFuY2VkU2VhcmNoVmlzaWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cCBnb3Z1ay0hLW1hcmdpbi10b3AtMyBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMVwiPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJhZHZhbmNlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwiZmluZEhpZ2hsaWdodEFsbFwiIG5hbWU9XCJmaW5kSGlnaGxpZ2h0QWxsXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhpZ2hsaWdodEFsbCA9ICFoaWdobGlnaHRBbGw7IHNlYXJjaCgpXCIgW2NoZWNrZWRdPVwiaGlnaGxpZ2h0QWxsXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwiZmluZEhpZ2hsaWdodEFsbFwiIGRhdGEtbDEwbi1pZD1cImZpbmRfaGlnaGxpZ2h0XCI+XG4gICAgICAgICAgICAgICAgSGlnaGxpZ2h0IGFsbFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwiZmluZE1hdGNoQ2FzZVwiIG5hbWU9XCJmaW5kTWF0Y2hDYXNlXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1hdGNoQ2FzZSA9ICFtYXRjaENhc2U7IHNlYXJjaCgpXCIgW2NoZWNrZWRdPVwibWF0Y2hDYXNlXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9tYXRjaF9jYXNlX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgTWF0Y2ggdGV4dCAoZXhhY3QgY2FzZSlcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBpZD1cImZpbmRFbnRpcmVXb3JkXCIgbmFtZT1cImZpbmRNYXRjaENhc2VcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwid2hvbGVXb3JkID0gIXdob2xlV29yZDsgc2VhcmNoKClcIiBbY2hlY2tlZF09XCJ3aG9sZVdvcmRcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIiBmb3I9XCJmaW5kRW50aXJlV29yZFwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9lbnRpcmVfd29yZF9sYWJlbFwiPlxuICAgICAgICAgICAgICAgIE1hdGNoIHdob2xlIHdvcmRzIG9yIHNlbnRlbmNlc1xuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|