@hmcts/media-viewer 4.0.2 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
  2. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
  3. package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +5 -5
  4. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
  5. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
  6. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
  7. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
  8. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
  9. package/{esm2020 → esm2022}/lib/annotations/annotations.module.mjs +61 -61
  10. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +177 -0
  11. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
  12. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
  13. package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +5 -5
  14. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
  15. package/{esm2020 → esm2022}/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +5 -5
  16. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
  17. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
  18. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
  19. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +123 -0
  20. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
  21. package/{esm2020 → esm2022}/lib/annotations/pipes/date/date.pipe.mjs +4 -4
  22. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
  23. package/{esm2020 → esm2022}/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/annotations/services/annotation-api/annotation-api.service.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/annotations/services/tags/tags.services.mjs +5 -5
  27. package/esm2022/lib/annotations/tags/tags.component.mjs +53 -0
  28. package/{esm2020 → esm2022}/lib/bookmark/components/bookmark-icons.component.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +5 -5
  30. package/esm2022/lib/icp/icp-follower.service.mjs +60 -0
  31. package/esm2022/lib/icp/icp-presenter.service.mjs +55 -0
  32. package/{esm2020 → esm2022}/lib/icp/icp-session-api.service.mjs +5 -5
  33. package/esm2022/lib/icp/icp-update.service.mjs +65 -0
  34. package/esm2022/lib/icp/icp.service.mjs +95 -0
  35. package/{esm2020 → esm2022}/lib/icp/participants-list/participants-list.component.mjs +5 -5
  36. package/esm2022/lib/icp/socket.service.mjs +118 -0
  37. package/esm2022/lib/media-viewer.component.mjs +244 -0
  38. package/{esm2020 → esm2022}/lib/media-viewer.module.mjs +55 -55
  39. package/{esm2020 → esm2022}/lib/print.service.mjs +4 -4
  40. package/esm2022/lib/redaction/components/redaction.component.mjs +91 -0
  41. package/{esm2020 → esm2022}/lib/redaction/services/redaction-api.service.mjs +5 -5
  42. package/{esm2020 → esm2022}/lib/shared/gov-uk-date/gov-uk-date.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +7 -7
  44. package/{esm2020 → esm2022}/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +6 -6
  45. package/{esm2020 → esm2022}/lib/shared/gov-uk-label/gov-uk-label.component.mjs +7 -7
  46. package/{esm2020 → esm2022}/lib/shared/shared.module.mjs +19 -19
  47. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +18 -0
  48. package/{esm2020 → esm2022}/lib/shared/util/services/number.helper.service.mjs +5 -5
  49. package/esm2022/lib/store/bookmarks-store-utils.mjs +49 -0
  50. package/esm2022/lib/store/effects/annotation.effects.mjs +51 -0
  51. package/{esm2020 → esm2022}/lib/store/effects/bookmarks.effects.mjs +5 -5
  52. package/{esm2020 → esm2022}/lib/store/effects/document.effects.mjs +5 -5
  53. package/{esm2020 → esm2022}/lib/store/effects/icp.effects.mjs +5 -5
  54. package/{esm2020 → esm2022}/lib/store/effects/redaction.effects.mjs +5 -5
  55. package/esm2022/lib/store/reducers/annotations.reducer.mjs +208 -0
  56. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +116 -0
  57. package/esm2022/lib/store/reducers/document.reducer.mjs +135 -0
  58. package/esm2022/lib/store/reducers/icp.reducer.mjs +56 -0
  59. package/esm2022/lib/store/reducers/redaction.reducer.mjs +116 -0
  60. package/esm2022/lib/store/reducers/tags.reducer.mjs +93 -0
  61. package/esm2022/lib/store/selectors/annotation.selectors.mjs +81 -0
  62. package/{esm2020 → esm2022}/lib/store/selectors/bookmark.selectors.mjs +1 -1
  63. package/{esm2020 → esm2022}/lib/store/selectors/redaction.selectors.mjs +1 -1
  64. package/esm2022/lib/store/store-utils.mjs +131 -0
  65. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
  66. package/{esm2020 → esm2022}/lib/toolbar/icp-event.service.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +5 -5
  68. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +189 -0
  69. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +236 -0
  70. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
  71. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
  72. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
  73. package/esm2022/lib/toolbar/toolbar-event.service.mjs +178 -0
  74. package/{esm2020 → esm2022}/lib/toolbar/toolbar.module.mjs +25 -25
  75. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
  76. package/{esm2020 → esm2022}/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +5 -5
  77. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +57 -0
  78. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
  79. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
  80. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +210 -0
  81. package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +5 -5
  82. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +236 -0
  83. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +352 -0
  84. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
  85. package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +5 -5
  86. package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation-api.service.mjs +5 -5
  87. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
  88. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
  89. package/{esm2020 → esm2022}/lib/viewers/viewer-event.service.mjs +5 -5
  90. package/{esm2020 → esm2022}/lib/viewers/viewer-util.service.mjs +5 -5
  91. package/{fesm2020 → fesm2022}/hmcts-media-viewer.mjs +445 -445
  92. package/fesm2022/hmcts-media-viewer.mjs.map +1 -0
  93. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +1 -1
  94. package/lib/annotations/annotation-set/annotation-set.component.d.ts +1 -1
  95. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +1 -1
  96. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +1 -1
  97. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +1 -1
  98. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +1 -1
  99. package/lib/annotations/comment-set/comment/comment.component.d.ts +1 -1
  100. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +1 -1
  101. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +1 -1
  102. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +1 -1
  103. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +1 -1
  104. package/lib/annotations/comment-set/comment-set.component.d.ts +1 -1
  105. package/lib/annotations/comments-summary/comments-summary.component.d.ts +1 -1
  106. package/lib/annotations/tags/tags.component.d.ts +1 -1
  107. package/lib/bookmark/components/bookmark-icons.component.d.ts +1 -1
  108. package/lib/icp/socket.service.d.ts +6 -6
  109. package/lib/icp/socket.service.d.ts.map +1 -1
  110. package/lib/media-viewer.component.d.ts +1 -2
  111. package/lib/media-viewer.component.d.ts.map +1 -1
  112. package/lib/redaction/components/redaction.component.d.ts +1 -1
  113. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +1 -1
  114. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
  115. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
  116. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +1 -1
  117. package/lib/store/bookmarks-store-utils.d.ts.map +1 -1
  118. package/lib/toolbar/icp-event.service.d.ts +4 -4
  119. package/lib/toolbar/icp-event.service.d.ts.map +1 -1
  120. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +1 -1
  121. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +1 -1
  122. package/lib/toolbar/toolbar-event.service.d.ts +6 -6
  123. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
  124. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +1 -1
  125. package/lib/viewers/grab-n-drag.directive.d.ts +1 -1
  126. package/lib/viewers/image-viewer/image-viewer.component.d.ts +1 -1
  127. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +1 -1
  128. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -1
  129. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +1 -1
  130. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +1 -1
  131. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +1 -1
  132. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +1 -1
  133. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +1 -1
  134. package/lib/viewers/viewer-event.service.d.ts +1 -1
  135. package/lib/viewers/viewer-event.service.d.ts.map +1 -1
  136. package/package.json +16 -23
  137. package/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -116
  138. package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -109
  139. package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
  140. package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
  141. package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
  142. package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -118
  143. package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
  144. package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +0 -177
  145. package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
  146. package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
  147. package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
  148. package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
  149. package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -68
  150. package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +0 -54
  151. package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +0 -123
  152. package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
  153. package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
  154. package/esm2020/lib/annotations/tags/tags.component.mjs +0 -53
  155. package/esm2020/lib/icp/icp-follower.service.mjs +0 -60
  156. package/esm2020/lib/icp/icp-presenter.service.mjs +0 -55
  157. package/esm2020/lib/icp/icp-update.service.mjs +0 -65
  158. package/esm2020/lib/icp/icp.service.mjs +0 -95
  159. package/esm2020/lib/icp/socket.service.mjs +0 -118
  160. package/esm2020/lib/media-viewer.component.mjs +0 -245
  161. package/esm2020/lib/redaction/components/redaction.component.mjs +0 -91
  162. package/esm2020/lib/shared/util/helpers/html-templates.helper.mjs +0 -18
  163. package/esm2020/lib/store/bookmarks-store-utils.mjs +0 -49
  164. package/esm2020/lib/store/effects/annotation.effects.mjs +0 -51
  165. package/esm2020/lib/store/reducers/annotations.reducer.mjs +0 -208
  166. package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +0 -116
  167. package/esm2020/lib/store/reducers/document.reducer.mjs +0 -135
  168. package/esm2020/lib/store/reducers/icp.reducer.mjs +0 -56
  169. package/esm2020/lib/store/reducers/redaction.reducer.mjs +0 -116
  170. package/esm2020/lib/store/reducers/tags.reducer.mjs +0 -93
  171. package/esm2020/lib/store/selectors/annotation.selectors.mjs +0 -81
  172. package/esm2020/lib/store/store-utils.mjs +0 -131
  173. package/esm2020/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
  174. package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -189
  175. package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -236
  176. package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
  177. package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
  178. package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
  179. package/esm2020/lib/toolbar/toolbar-event.service.mjs +0 -178
  180. package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
  181. package/esm2020/lib/viewers/grab-n-drag.directive.mjs +0 -57
  182. package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
  183. package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
  184. package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -209
  185. package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -236
  186. package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -352
  187. package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
  188. package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
  189. package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
  190. package/fesm2015/hmcts-media-viewer.mjs +0 -6953
  191. package/fesm2015/hmcts-media-viewer.mjs.map +0 -1
  192. package/fesm2020/hmcts-media-viewer.mjs.map +0 -1
  193. /package/{esm2020 → esm2022}/hmcts-media-viewer.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-set.model.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/comment.model.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/annotations/models/api-persisted.model.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/annotations/models/event-select.model.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/annotations/models/tags.model.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/annotations/models/user.model.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/icp/icp.events.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/icp/icp.interfaces.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/redaction/services/redaction.model.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/store/actions/annotation.actions.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/store/actions/bookmark.actions.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/store/actions/document.actions.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/store/actions/icp.actions.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/store/actions/redaction.actions.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/store/actions/tag.actions.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/store/effects/index.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/store/models/bookmarks.interface.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/store/models/filters.interface.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/store/reducers/reducers.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/store/selectors/document.selectors.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/store/selectors/icp.selectors.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/store/selectors/tag.selectors.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation.model.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/viewers/viewer-exception.model.mjs +0 -0
  223. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -0,0 +1,208 @@
1
+ import uuid from 'uuid/v4';
2
+ import * as fromAnnotations from '../actions/annotation.actions';
3
+ import { StoreUtils } from '../store-utils';
4
+ export const initialState = {
5
+ annotationSet: {},
6
+ annotationEntities: {},
7
+ commentEntities: {},
8
+ annotationPageEntities: {},
9
+ selectedAnnotation: null,
10
+ commentSearchQueries: { commentSearch: '' },
11
+ commentSummaryFilters: { hasFilter: false, filters: {} },
12
+ loading: false,
13
+ loaded: false,
14
+ };
15
+ export function reducer(state = initialState, action) {
16
+ switch (action.type) {
17
+ case fromAnnotations.LOAD_ANNOTATION_SET: {
18
+ const annotationSet = {
19
+ ...state.annotationSet,
20
+ documentId: action.payload
21
+ };
22
+ return {
23
+ ...initialState,
24
+ annotationSet,
25
+ loading: true
26
+ };
27
+ }
28
+ case fromAnnotations.LOAD_ANNOTATION_SET_SUCCESS:
29
+ case fromAnnotations.LOAD_ANNOTATION_SET_FAIL: {
30
+ const annotationSet = action.payload.status === 200 ? action.payload.body :
31
+ {
32
+ ...state.annotationSet,
33
+ annotations: [],
34
+ id: uuid()
35
+ };
36
+ const annotationEntities = StoreUtils.generateAnnotationEntities(annotationSet.annotations);
37
+ const annotationPageEntities = StoreUtils.groupByKeyEntities(annotationSet.annotations, 'page');
38
+ const commentEntities = StoreUtils.generateCommentsEntities(annotationSet.annotations);
39
+ return {
40
+ ...state,
41
+ annotationSet,
42
+ annotationEntities,
43
+ annotationPageEntities,
44
+ commentEntities,
45
+ loading: false,
46
+ loaded: true
47
+ };
48
+ }
49
+ case fromAnnotations.SAVE_ANNOTATION_SET_SUCCESS: {
50
+ const anno = action.payload.annotations;
51
+ const annEntities = {
52
+ ...state.annotationEntities,
53
+ ...anno
54
+ };
55
+ const annotArray = Object.keys(annEntities).map(key => annEntities[key]);
56
+ const annotationEntities = StoreUtils.generateAnnotationEntities(annotArray);
57
+ const annotationPageEntities = StoreUtils.groupByKeyEntities(annotArray, 'page');
58
+ const commentEntities = StoreUtils.generateCommentsEntities(annotArray);
59
+ const selectedAnnotation = {
60
+ ...state.selectedAnnotation,
61
+ ...anno,
62
+ editable: false
63
+ };
64
+ return {
65
+ ...state,
66
+ annotationEntities,
67
+ annotationPageEntities,
68
+ commentEntities,
69
+ selectedAnnotation,
70
+ loading: false,
71
+ loaded: true
72
+ };
73
+ }
74
+ case fromAnnotations.SAVE_ANNOTATION_SUCCESS: {
75
+ const anno = action.payload;
76
+ const annEntities = {
77
+ ...state.annotationEntities,
78
+ [anno.id]: anno
79
+ };
80
+ const annotArray = Object.keys(annEntities).map(key => annEntities[key]);
81
+ const annotationEntities = StoreUtils.generateAnnotationEntities(annotArray);
82
+ const annotationPageEntities = StoreUtils.groupByKeyEntities(annotArray, 'page');
83
+ const commentEntities = StoreUtils.generateCommentsEntities(annotArray);
84
+ const selectedAnnotation = {
85
+ ...state.selectedAnnotation,
86
+ annotationId: anno.id,
87
+ editable: false
88
+ };
89
+ return {
90
+ ...state,
91
+ annotationEntities,
92
+ annotationPageEntities,
93
+ commentEntities,
94
+ selectedAnnotation,
95
+ loading: false,
96
+ loaded: true
97
+ };
98
+ }
99
+ case fromAnnotations.DELETE_ANNOTATION_SUCCESS: {
100
+ const id = action.payload;
101
+ const page = state.annotationEntities[id].page;
102
+ const annotationEntities = {
103
+ ...state.annotationEntities
104
+ };
105
+ delete annotationEntities[id];
106
+ const pageAnnotationsRemoved = [
107
+ ...state.annotationPageEntities[page].filter(anno => anno.id !== id)
108
+ ];
109
+ const annotationPageEntities = {
110
+ ...state.annotationPageEntities,
111
+ [page]: pageAnnotationsRemoved
112
+ };
113
+ const commentEntities = {
114
+ ...state.commentEntities
115
+ };
116
+ if (state.commentEntities[id]) {
117
+ delete commentEntities[id];
118
+ }
119
+ return {
120
+ ...state,
121
+ annotationEntities,
122
+ annotationPageEntities,
123
+ commentEntities
124
+ };
125
+ }
126
+ case fromAnnotations.ADD_OR_EDIT_COMMENT: {
127
+ const comment = {
128
+ [action.payload.annotationId]: action.payload
129
+ };
130
+ const comments = {
131
+ ...state.commentEntities,
132
+ ...comment
133
+ };
134
+ return {
135
+ ...state,
136
+ commentEntities: comments
137
+ };
138
+ }
139
+ case fromAnnotations.SELECT_ANNOTATION: {
140
+ const payload = action.payload;
141
+ const commentEntity = {
142
+ ...state.commentEntities[payload.annotationId],
143
+ editable: payload.editable,
144
+ selected: payload.selected
145
+ };
146
+ const resetCommentEntSelect = StoreUtils.resetCommentEntSelect({ ...state.commentEntities });
147
+ const commentEntities = payload.annotationId && state.commentEntities[payload.annotationId] ? {
148
+ ...resetCommentEntSelect,
149
+ [payload.annotationId]: commentEntity
150
+ } : { ...resetCommentEntSelect };
151
+ return {
152
+ ...state,
153
+ commentEntities,
154
+ selectedAnnotation: action.payload
155
+ };
156
+ }
157
+ case fromAnnotations.SEARCH_COMMENT: {
158
+ const commentSearchQueries = {
159
+ ...state.commentSearchQueries,
160
+ commentSearch: action.payload
161
+ };
162
+ const commentEntities = StoreUtils.resetCommentEntSelect({ ...state.commentEntities });
163
+ return {
164
+ ...state,
165
+ commentEntities,
166
+ commentSearchQueries
167
+ };
168
+ }
169
+ case fromAnnotations.APPLY_COMMENT_SUMMARY_FILTER: {
170
+ const payload = action.payload;
171
+ const hasTagFilter = () => {
172
+ let isFiltered = false;
173
+ if (payload.tagFilters) {
174
+ Object.keys(payload.tagFilters).map(filter => {
175
+ if (payload.tagFilters[filter] && !isFiltered) {
176
+ isFiltered = true;
177
+ }
178
+ });
179
+ }
180
+ return isFiltered;
181
+ };
182
+ const hasFilter = (hasTagFilter() || !!payload.dateRangeFrom || !!payload.dateRangeTo);
183
+ const commentSummaryFilters = {
184
+ hasFilter,
185
+ filters: payload
186
+ };
187
+ return {
188
+ ...state,
189
+ commentSummaryFilters: commentSummaryFilters
190
+ };
191
+ }
192
+ case fromAnnotations.CLEAR_COMMENT_SUMMARY_FILTER: {
193
+ return {
194
+ ...state,
195
+ commentSummaryFilters: { ...initialState.commentSummaryFilters }
196
+ };
197
+ }
198
+ }
199
+ return state;
200
+ }
201
+ export const getAnnoSet = (state) => state.annotationSet;
202
+ export const getCommentEnts = (state) => state.commentEntities;
203
+ export const getAnnoPageEnt = (state) => state.annotationPageEntities;
204
+ export const getAnnoEnt = (state) => state.annotationEntities;
205
+ export const getSelectedAnno = (state) => state.selectedAnnotation;
206
+ export const commentSearchQ = (state) => state.commentSearchQueries;
207
+ export const getSummaryFilters = (state) => state.commentSummaryFilters;
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2Fubm90YXRpb25zLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxlQUFlLE1BQU0sK0JBQStCLENBQUM7QUFHakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBZ0I1QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXVCO0lBQzlDLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGtCQUFrQixFQUFFLEVBQUU7SUFDdEIsZUFBZSxFQUFFLEVBQUU7SUFDbkIsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLEVBQUMsYUFBYSxFQUFFLEVBQUUsRUFBQztJQUN6QyxxQkFBcUIsRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBQztJQUN0RCxPQUFPLEVBQUUsS0FBSztJQUNkLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FBQztBQUVGLE1BQU0sVUFBVSxPQUFPLENBQ3JCLEtBQUssR0FBRyxZQUFZLEVBQ3BCLE1BQTBDO0lBRTFDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXBCLEtBQUssZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLGFBQWEsR0FBRztnQkFDcEIsR0FBRyxLQUFLLENBQUMsYUFBYTtnQkFDdEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPO2FBQzNCLENBQUM7WUFDRixPQUFPO2dCQUNMLEdBQUcsWUFBWTtnQkFDZixhQUFhO2dCQUNiLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztRQUNqRCxLQUFLLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6RTtvQkFDRSxHQUFHLEtBQUssQ0FBQyxhQUFhO29CQUN0QixXQUFXLEVBQUUsRUFBRTtvQkFDZixFQUFFLEVBQUUsSUFBSSxFQUFFO2lCQUNYLENBQUM7WUFDSixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUYsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNoRyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGFBQWE7Z0JBQ2Isa0JBQWtCO2dCQUNsQixzQkFBc0I7Z0JBQ3RCLGVBQWU7Z0JBQ2YsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssZUFBZSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN4QyxNQUFNLFdBQVcsR0FBRztnQkFDbEIsR0FBRyxLQUFLLENBQUMsa0JBQWtCO2dCQUMzQixHQUFHLElBQUk7YUFDUixDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3RSxNQUFNLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakYsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sa0JBQWtCLEdBQUc7Z0JBQ3pCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQjtnQkFDM0IsR0FBRyxJQUFJO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUM7WUFDRixPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixrQkFBa0I7Z0JBQ2xCLHNCQUFzQjtnQkFDdEIsZUFBZTtnQkFDZixrQkFBa0I7Z0JBQ2xCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztRQUVKLENBQUM7UUFFRCxLQUFLLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUM1QixNQUFNLFdBQVcsR0FBRztnQkFDbEIsR0FBRyxLQUFLLENBQUMsa0JBQWtCO2dCQUMzQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJO2FBQ2hCLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqRixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEUsTUFBTSxrQkFBa0IsR0FBRztnQkFDekIsR0FBRyxLQUFLLENBQUMsa0JBQWtCO2dCQUMzQixZQUFZLEVBQUcsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUM7WUFDRixPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixrQkFBa0I7Z0JBQ2xCLHNCQUFzQjtnQkFDdEIsZUFBZTtnQkFDZixrQkFBa0I7Z0JBQ2xCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7WUFDL0MsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQy9DLE1BQU0sa0JBQWtCLEdBQUc7Z0JBQ3pCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQjthQUM1QixDQUFDO1lBQ0YsT0FBTyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixNQUFNLHNCQUFzQixHQUFHO2dCQUM3QixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUNyRSxDQUFDO1lBQ0YsTUFBTSxzQkFBc0IsR0FBRztnQkFDN0IsR0FBRyxLQUFLLENBQUMsc0JBQXNCO2dCQUMvQixDQUFDLElBQUksQ0FBQyxFQUFFLHNCQUFzQjthQUMvQixDQUFDO1lBQ0YsTUFBTSxlQUFlLEdBQUc7Z0JBQ3RCLEdBQUcsS0FBSyxDQUFDLGVBQWU7YUFDekIsQ0FBQztZQUNGLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0QsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1Isa0JBQWtCO2dCQUNsQixzQkFBc0I7Z0JBQ3RCLGVBQWU7YUFDaEIsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2FBQzlDLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRztnQkFDZixHQUFHLEtBQUssQ0FBQyxlQUFlO2dCQUN4QixHQUFHLE9BQU87YUFDWCxDQUFDO1lBQ0YsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsZUFBZSxFQUFFLFFBQVE7YUFDMUIsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQixNQUFNLGFBQWEsR0FBRztnQkFDcEIsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7Z0JBQzlDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2FBQzNCLENBQUM7WUFFRixNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBQyxDQUFDLENBQUM7WUFFM0YsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLEdBQUcscUJBQXFCO2dCQUMxQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxhQUFhO2FBQ3BDLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxxQkFBcUIsRUFBQyxDQUFDO1lBRS9CLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGVBQWU7Z0JBQ2Ysa0JBQWtCLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDbkMsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sb0JBQW9CLEdBQUc7Z0JBQzNCLEdBQUcsS0FBSyxDQUFDLG9CQUFvQjtnQkFDN0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPO2FBQzlCLENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsRUFBQyxHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUMsQ0FBQyxDQUFDO1lBQ3JGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGVBQWU7Z0JBQ2Ysb0JBQW9CO2FBQ3JCLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxlQUFlLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDL0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO2dCQUN4QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQzNDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDOzRCQUM5QyxVQUFVLEdBQUcsSUFBSSxDQUFDO3dCQUNwQixDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0scUJBQXFCLEdBQUc7Z0JBQzVCLFNBQVM7Z0JBQ1QsT0FBTyxFQUFFLE9BQU87YUFDakIsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLHFCQUFxQixFQUFFLHFCQUFxQjthQUM3QyxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztZQUVsRCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixxQkFBcUIsRUFBRyxFQUFDLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixFQUFDO2FBQ2hFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUdELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQXlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7QUFDN0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUF5QixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7QUFDMUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQXlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUF5QixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUF5QixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXVpZCBmcm9tICd1dWlkL3Y0JztcbmltcG9ydCAqIGFzIGZyb21Bbm5vdGF0aW9ucyBmcm9tICcuLi9hY3Rpb25zL2Fubm90YXRpb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L2Fubm90YXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudCB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQvY29tbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yZVV0aWxzIH0gZnJvbSAnLi4vc3RvcmUtdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL21vZGVscy9ldmVudC1zZWxlY3QubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVycyB9IGZyb20gJy4uL21vZGVscy9maWx0ZXJzLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvblNldFN0YXRlIHtcbiAgYW5ub3RhdGlvblNldDogYW55O1xuICBhbm5vdGF0aW9uRW50aXRpZXM6IHtbaWQ6IHN0cmluZ106IGFueX07XG4gIGFubm90YXRpb25QYWdlRW50aXRpZXM6IHtbaWQ6IHN0cmluZ106IEFubm90YXRpb25bXX07XG4gIGNvbW1lbnRFbnRpdGllczoge1tpZDogc3RyaW5nXTogQ29tbWVudH07XG4gIHNlbGVjdGVkQW5ub3RhdGlvbjogU2VsZWN0aW9uQW5ub3RhdGlvbjtcbiAgY29tbWVudFNlYXJjaFF1ZXJpZXM6IHsgY29tbWVudFNlYXJjaDogc3RyaW5nIH07XG4gIGNvbW1lbnRTdW1tYXJ5RmlsdGVyczoge2hhc0ZpbHRlcjogYm9vbGVhbjsgZmlsdGVyczogRmlsdGVyc307XG4gIGxvYWRlZDogYm9vbGVhbjtcbiAgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlID0ge1xuICBhbm5vdGF0aW9uU2V0OiB7fSxcbiAgYW5ub3RhdGlvbkVudGl0aWVzOiB7fSxcbiAgY29tbWVudEVudGl0aWVzOiB7fSxcbiAgYW5ub3RhdGlvblBhZ2VFbnRpdGllczoge30sXG4gIHNlbGVjdGVkQW5ub3RhdGlvbjogbnVsbCxcbiAgY29tbWVudFNlYXJjaFF1ZXJpZXM6IHtjb21tZW50U2VhcmNoOiAnJ30sXG4gIGNvbW1lbnRTdW1tYXJ5RmlsdGVyczoge2hhc0ZpbHRlcjogZmFsc2UsIGZpbHRlcnM6IHt9fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGxvYWRlZDogZmFsc2UsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlciAoXG4gIHN0YXRlID0gaW5pdGlhbFN0YXRlLFxuICBhY3Rpb246IGZyb21Bbm5vdGF0aW9ucy5Bbm5vdGF0aW9uc0FjdGlvbnNcbik6IEFubm90YXRpb25TZXRTdGF0ZSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLkxPQURfQU5OT1RBVElPTl9TRVQ6IHtcbiAgICAgIGNvbnN0IGFubm90YXRpb25TZXQgPSB7XG4gICAgICAgIC4uLnN0YXRlLmFubm90YXRpb25TZXQsXG4gICAgICAgIGRvY3VtZW50SWQ6IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgICAgICBhbm5vdGF0aW9uU2V0LFxuICAgICAgICBsb2FkaW5nOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5MT0FEX0FOTk9UQVRJT05fU0VUX1NVQ0NFU1M6XG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuTE9BRF9BTk5PVEFUSU9OX1NFVF9GQUlMOiB7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uU2V0ID0gYWN0aW9uLnBheWxvYWQuc3RhdHVzID09PSAyMDAgPyBhY3Rpb24ucGF5bG9hZC5ib2R5IDpcbiAgICAgICAge1xuICAgICAgICAgIC4uLnN0YXRlLmFubm90YXRpb25TZXQsXG4gICAgICAgICAgYW5ub3RhdGlvbnM6IFtdLFxuICAgICAgICAgIGlkOiB1dWlkKClcbiAgICAgICAgfTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25FbnRpdGllcyA9IFN0b3JlVXRpbHMuZ2VuZXJhdGVBbm5vdGF0aW9uRW50aXRpZXMoYW5ub3RhdGlvblNldC5hbm5vdGF0aW9ucyk7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uUGFnZUVudGl0aWVzID0gU3RvcmVVdGlscy5ncm91cEJ5S2V5RW50aXRpZXMoYW5ub3RhdGlvblNldC5hbm5vdGF0aW9ucywgJ3BhZ2UnKTtcbiAgICAgIGNvbnN0IGNvbW1lbnRFbnRpdGllcyA9IFN0b3JlVXRpbHMuZ2VuZXJhdGVDb21tZW50c0VudGl0aWVzKGFubm90YXRpb25TZXQuYW5ub3RhdGlvbnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGFubm90YXRpb25TZXQsXG4gICAgICAgIGFubm90YXRpb25FbnRpdGllcyxcbiAgICAgICAgYW5ub3RhdGlvblBhZ2VFbnRpdGllcyxcbiAgICAgICAgY29tbWVudEVudGl0aWVzLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9hZGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLlNBVkVfQU5OT1RBVElPTl9TRVRfU1VDQ0VTUzoge1xuICAgICAgY29uc3QgYW5ubyA9IGFjdGlvbi5wYXlsb2FkLmFubm90YXRpb25zO1xuICAgICAgY29uc3QgYW5uRW50aXRpZXMgPSB7XG4gICAgICAgIC4uLnN0YXRlLmFubm90YXRpb25FbnRpdGllcyxcbiAgICAgICAgLi4uYW5ub1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGFubm90QXJyYXkgPSBPYmplY3Qua2V5cyhhbm5FbnRpdGllcykubWFwKGtleSA9PiBhbm5FbnRpdGllc1trZXldKTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25FbnRpdGllcyA9IFN0b3JlVXRpbHMuZ2VuZXJhdGVBbm5vdGF0aW9uRW50aXRpZXMoYW5ub3RBcnJheSk7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uUGFnZUVudGl0aWVzID0gU3RvcmVVdGlscy5ncm91cEJ5S2V5RW50aXRpZXMoYW5ub3RBcnJheSwgJ3BhZ2UnKTtcbiAgICAgIGNvbnN0IGNvbW1lbnRFbnRpdGllcyA9IFN0b3JlVXRpbHMuZ2VuZXJhdGVDb21tZW50c0VudGl0aWVzKGFubm90QXJyYXkpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRBbm5vdGF0aW9uID0ge1xuICAgICAgICAuLi5zdGF0ZS5zZWxlY3RlZEFubm90YXRpb24sXG4gICAgICAgIC4uLmFubm8sXG4gICAgICAgIGVkaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhbm5vdGF0aW9uRW50aXRpZXMsXG4gICAgICAgIGFubm90YXRpb25QYWdlRW50aXRpZXMsXG4gICAgICAgIGNvbW1lbnRFbnRpdGllcyxcbiAgICAgICAgc2VsZWN0ZWRBbm5vdGF0aW9uLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9hZGVkOiB0cnVlXG4gICAgICB9O1xuXG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuU0FWRV9BTk5PVEFUSU9OX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IGFubm8gPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGFubkVudGl0aWVzID0ge1xuICAgICAgICAuLi5zdGF0ZS5hbm5vdGF0aW9uRW50aXRpZXMsXG4gICAgICAgIFthbm5vLmlkXTogYW5ub1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGFubm90QXJyYXkgPSBPYmplY3Qua2V5cyhhbm5FbnRpdGllcykubWFwKGtleSA9PiBhbm5FbnRpdGllc1trZXldKTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25FbnRpdGllcyA9IFN0b3JlVXRpbHMuZ2VuZXJhdGVBbm5vdGF0aW9uRW50aXRpZXMoYW5ub3RBcnJheSk7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uUGFnZUVudGl0aWVzID0gU3RvcmVVdGlscy5ncm91cEJ5S2V5RW50aXRpZXMoYW5ub3RBcnJheSwgJ3BhZ2UnKTtcbiAgICAgIGNvbnN0IGNvbW1lbnRFbnRpdGllcyA9IFN0b3JlVXRpbHMuZ2VuZXJhdGVDb21tZW50c0VudGl0aWVzKGFubm90QXJyYXkpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRBbm5vdGF0aW9uID0ge1xuICAgICAgICAuLi5zdGF0ZS5zZWxlY3RlZEFubm90YXRpb24sXG4gICAgICAgIGFubm90YXRpb25JZCA6IGFubm8uaWQsXG4gICAgICAgIGVkaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhbm5vdGF0aW9uRW50aXRpZXMsXG4gICAgICAgIGFubm90YXRpb25QYWdlRW50aXRpZXMsXG4gICAgICAgIGNvbW1lbnRFbnRpdGllcyxcbiAgICAgICAgc2VsZWN0ZWRBbm5vdGF0aW9uLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9hZGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLkRFTEVURV9BTk5PVEFUSU9OX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IGlkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCBwYWdlID0gc3RhdGUuYW5ub3RhdGlvbkVudGl0aWVzW2lkXS5wYWdlO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbkVudGl0aWVzID0ge1xuICAgICAgICAuLi5zdGF0ZS5hbm5vdGF0aW9uRW50aXRpZXNcbiAgICAgIH07XG4gICAgICBkZWxldGUgYW5ub3RhdGlvbkVudGl0aWVzW2lkXTtcbiAgICAgIGNvbnN0IHBhZ2VBbm5vdGF0aW9uc1JlbW92ZWQgPSBbXG4gICAgICAgIC4uLnN0YXRlLmFubm90YXRpb25QYWdlRW50aXRpZXNbcGFnZV0uZmlsdGVyKGFubm8gPT4gYW5uby5pZCAhPT0gaWQpXG4gICAgICBdO1xuICAgICAgY29uc3QgYW5ub3RhdGlvblBhZ2VFbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuYW5ub3RhdGlvblBhZ2VFbnRpdGllcyxcbiAgICAgICAgW3BhZ2VdOiBwYWdlQW5ub3RhdGlvbnNSZW1vdmVkXG4gICAgICB9O1xuICAgICAgY29uc3QgY29tbWVudEVudGl0aWVzID0ge1xuICAgICAgICAuLi5zdGF0ZS5jb21tZW50RW50aXRpZXNcbiAgICAgIH07XG4gICAgICBpZiAoc3RhdGUuY29tbWVudEVudGl0aWVzW2lkXSkge1xuICAgICAgICBkZWxldGUgY29tbWVudEVudGl0aWVzW2lkXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhbm5vdGF0aW9uRW50aXRpZXMsXG4gICAgICAgIGFubm90YXRpb25QYWdlRW50aXRpZXMsXG4gICAgICAgIGNvbW1lbnRFbnRpdGllc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5BRERfT1JfRURJVF9DT01NRU5UOiB7XG4gICAgICBjb25zdCBjb21tZW50ID0ge1xuICAgICAgICBbYWN0aW9uLnBheWxvYWQuYW5ub3RhdGlvbklkXTogYWN0aW9uLnBheWxvYWRcbiAgICAgIH07XG4gICAgICBjb25zdCBjb21tZW50cyA9IHtcbiAgICAgICAgLi4uc3RhdGUuY29tbWVudEVudGl0aWVzLFxuICAgICAgICAuLi5jb21tZW50XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGNvbW1lbnRFbnRpdGllczogY29tbWVudHNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuU0VMRUNUX0FOTk9UQVRJT046IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGNvbW1lbnRFbnRpdHkgPSB7XG4gICAgICAgIC4uLnN0YXRlLmNvbW1lbnRFbnRpdGllc1twYXlsb2FkLmFubm90YXRpb25JZF0sXG4gICAgICAgIGVkaXRhYmxlOiBwYXlsb2FkLmVkaXRhYmxlLFxuICAgICAgICBzZWxlY3RlZDogcGF5bG9hZC5zZWxlY3RlZFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzZXRDb21tZW50RW50U2VsZWN0ID0gU3RvcmVVdGlscy5yZXNldENvbW1lbnRFbnRTZWxlY3Qoey4uLnN0YXRlLmNvbW1lbnRFbnRpdGllc30pO1xuXG4gICAgICBjb25zdCBjb21tZW50RW50aXRpZXMgPSBwYXlsb2FkLmFubm90YXRpb25JZCAmJiBzdGF0ZS5jb21tZW50RW50aXRpZXNbcGF5bG9hZC5hbm5vdGF0aW9uSWRdID8ge1xuICAgICAgICAuLi5yZXNldENvbW1lbnRFbnRTZWxlY3QsXG4gICAgICBbcGF5bG9hZC5hbm5vdGF0aW9uSWRdOiBjb21tZW50RW50aXR5XG4gICAgICB9IDogey4uLnJlc2V0Q29tbWVudEVudFNlbGVjdH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50RW50aXRpZXMsXG4gICAgICAgIHNlbGVjdGVkQW5ub3RhdGlvbjogYWN0aW9uLnBheWxvYWRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuU0VBUkNIX0NPTU1FTlQ6IHtcbiAgICAgIGNvbnN0IGNvbW1lbnRTZWFyY2hRdWVyaWVzID0ge1xuICAgICAgICAuLi5zdGF0ZS5jb21tZW50U2VhcmNoUXVlcmllcyxcbiAgICAgICAgY29tbWVudFNlYXJjaDogYWN0aW9uLnBheWxvYWRcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbW1lbnRFbnRpdGllcyA9IFN0b3JlVXRpbHMucmVzZXRDb21tZW50RW50U2VsZWN0KHsuLi5zdGF0ZS5jb21tZW50RW50aXRpZXN9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50RW50aXRpZXMsXG4gICAgICAgIGNvbW1lbnRTZWFyY2hRdWVyaWVzXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLkFQUExZX0NPTU1FTlRfU1VNTUFSWV9GSUxURVI6IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGhhc1RhZ0ZpbHRlciA9ICgpID0+IHtcbiAgICAgICAgbGV0IGlzRmlsdGVyZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHBheWxvYWQudGFnRmlsdGVycykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBheWxvYWQudGFnRmlsdGVycykubWFwKGZpbHRlciA9PiB7XG4gICAgICAgICAgICBpZiAocGF5bG9hZC50YWdGaWx0ZXJzW2ZpbHRlcl0gJiYgIWlzRmlsdGVyZWQpIHtcbiAgICAgICAgICAgICAgaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRmlsdGVyZWQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFzRmlsdGVyID0gKGhhc1RhZ0ZpbHRlcigpIHx8ICEhcGF5bG9hZC5kYXRlUmFuZ2VGcm9tIHx8ICEhcGF5bG9hZC5kYXRlUmFuZ2VUbyk7XG4gICAgICBjb25zdCBjb21tZW50U3VtbWFyeUZpbHRlcnMgPSB7XG4gICAgICAgIGhhc0ZpbHRlcixcbiAgICAgICAgZmlsdGVyczogcGF5bG9hZFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50U3VtbWFyeUZpbHRlcnM6IGNvbW1lbnRTdW1tYXJ5RmlsdGVyc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5DTEVBUl9DT01NRU5UX1NVTU1BUllfRklMVEVSOiB7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50U3VtbWFyeUZpbHRlcnMgOiB7Li4uaW5pdGlhbFN0YXRlLmNvbW1lbnRTdW1tYXJ5RmlsdGVyc31cbiAgICAgIH07XG4gICAgfVxuICB9XG5cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRBbm5vU2V0ID0gKHN0YXRlOiBBbm5vdGF0aW9uU2V0U3RhdGUpID0+IHN0YXRlLmFubm90YXRpb25TZXQ7XG5leHBvcnQgY29uc3QgZ2V0Q29tbWVudEVudHMgPSAoc3RhdGU6IEFubm90YXRpb25TZXRTdGF0ZSkgPT4gc3RhdGUuY29tbWVudEVudGl0aWVzO1xuZXhwb3J0IGNvbnN0IGdldEFubm9QYWdlRW50ID0gKHN0YXRlOiBBbm5vdGF0aW9uU2V0U3RhdGUpID0+IHN0YXRlLmFubm90YXRpb25QYWdlRW50aXRpZXM7XG5leHBvcnQgY29uc3QgZ2V0QW5ub0VudCA9IChzdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlKSA9PiBzdGF0ZS5hbm5vdGF0aW9uRW50aXRpZXM7XG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRBbm5vID0gKHN0YXRlOiBBbm5vdGF0aW9uU2V0U3RhdGUpID0+IHN0YXRlLnNlbGVjdGVkQW5ub3RhdGlvbjtcbmV4cG9ydCBjb25zdCBjb21tZW50U2VhcmNoUSA9IChzdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlKSA9PiBzdGF0ZS5jb21tZW50U2VhcmNoUXVlcmllcztcbmV4cG9ydCBjb25zdCBnZXRTdW1tYXJ5RmlsdGVycyA9IChzdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlKSA9PiBzdGF0ZS5jb21tZW50U3VtbWFyeUZpbHRlcnM7XG4iXX0=
@@ -0,0 +1,116 @@
1
+ import * as fromBookmarks from '../actions/bookmark.actions';
2
+ import { StoreUtils } from '../store-utils';
3
+ import { generateBookmarkEntities } from '../bookmarks-store-utils';
4
+ export const initialBookmarksState = {
5
+ bookmarks: [],
6
+ bookmarkEntities: {},
7
+ bookmarkPageEntities: {},
8
+ editableBookmark: undefined,
9
+ loaded: false,
10
+ loading: false
11
+ };
12
+ export function bookmarksReducer(state = initialBookmarksState, action) {
13
+ switch (action.type) {
14
+ case fromBookmarks.LOAD_BOOKMARKS: {
15
+ return {
16
+ ...state,
17
+ loading: true
18
+ };
19
+ }
20
+ case fromBookmarks.LOAD_BOOKMARKS_SUCCESS:
21
+ case fromBookmarks.LOAD_BOOKMARKS_FAIL: {
22
+ const bookmarks = action.payload.status === 200 ? action.payload.body : [];
23
+ const bookmarkEntities = generateBookmarkEntities(bookmarks);
24
+ const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarks, 'pageNumber');
25
+ return {
26
+ ...state,
27
+ bookmarks,
28
+ bookmarkEntities,
29
+ bookmarkPageEntities,
30
+ loaded: true
31
+ };
32
+ }
33
+ case fromBookmarks.CREATE_BOOKMARK_SUCCESS: {
34
+ const bookmark = action.payload;
35
+ const bookmarkEntities = {
36
+ ...state.bookmarkEntities,
37
+ [bookmark.id]: bookmark,
38
+ };
39
+ const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);
40
+ const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');
41
+ const editableBookmark = bookmark.id;
42
+ return {
43
+ ...state,
44
+ bookmarkEntities,
45
+ editableBookmark,
46
+ bookmarkPageEntities,
47
+ loading: false,
48
+ loaded: true
49
+ };
50
+ }
51
+ case fromBookmarks.MOVE_BOOKMARK_SUCCESS: {
52
+ const movedBookmarks = generateBookmarkEntities(action.payload);
53
+ const bookmarkEntities = {
54
+ ...state.bookmarkEntities,
55
+ ...movedBookmarks
56
+ };
57
+ return {
58
+ ...state,
59
+ bookmarkEntities,
60
+ loading: false,
61
+ loaded: true
62
+ };
63
+ }
64
+ case fromBookmarks.DELETE_BOOKMARK_SUCCESS: {
65
+ const bookmarkIds = action.payload;
66
+ const bookmarkEntities = { ...state.bookmarkEntities };
67
+ const bookmarkPageEntities = { ...state.bookmarkPageEntities };
68
+ const removeBookmarksByPage = {};
69
+ bookmarkIds.forEach(bookmarkId => {
70
+ if (removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] !== undefined &&
71
+ removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].length > 0) {
72
+ removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].push(bookmarkId);
73
+ }
74
+ else {
75
+ removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] = [bookmarkId];
76
+ }
77
+ delete bookmarkEntities[bookmarkId];
78
+ });
79
+ Object.entries(removeBookmarksByPage).forEach(([pageNumber, bmrkIds]) => {
80
+ bookmarkPageEntities[pageNumber]
81
+ = bookmarkPageEntities[pageNumber].filter(bookmark => !bmrkIds.includes(bookmark.id));
82
+ });
83
+ return {
84
+ ...state,
85
+ bookmarkEntities,
86
+ bookmarkPageEntities,
87
+ loading: false,
88
+ loaded: true
89
+ };
90
+ }
91
+ case fromBookmarks.UPDATE_BOOKMARK_SUCCESS: {
92
+ const bookmark = action.payload;
93
+ const bookmarkEntities = {
94
+ ...state.bookmarkEntities,
95
+ [bookmark.id]: { ...bookmark }
96
+ };
97
+ const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);
98
+ const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');
99
+ const editableBookmark = undefined;
100
+ return {
101
+ ...state,
102
+ bookmarkEntities,
103
+ editableBookmark,
104
+ bookmarkPageEntities,
105
+ loading: false,
106
+ loaded: true
107
+ };
108
+ }
109
+ }
110
+ return state;
111
+ }
112
+ export const getBookmarks = (state) => state.bookmarks;
113
+ export const getBookmarkEnts = (state) => state.bookmarkEntities;
114
+ export const getBookmarkPageEnt = (state) => state.bookmarkPageEntities;
115
+ export const getEditBookmark = (state) => state.editableBookmark;
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9zdG9yZS9yZWR1Y2Vycy9ib29rbWFya3MucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssYUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVdwRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBbUI7SUFDbkQsU0FBUyxFQUFFLEVBQUU7SUFDYixnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLG9CQUFvQixFQUFFLEVBQUU7SUFDeEIsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQixNQUFNLEVBQUUsS0FBSztJQUNiLE9BQU8sRUFBRSxLQUFLO0NBQ2YsQ0FBQztBQUVGLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBRSxLQUFLLEdBQUcscUJBQXFCLEVBQzdCLE1BQXNDO0lBRXRFLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXBCLEtBQUssYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssYUFBYSxDQUFDLHNCQUFzQixDQUFDO1FBQzFDLEtBQUssYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0UsTUFBTSxnQkFBZ0IsR0FBRyx3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Q0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQXFCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQXFCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZyb21Cb29rbWFya3MgZnJvbSAnLi4vYWN0aW9ucy9ib29rbWFyay5hY3Rpb25zJztcbmltcG9ydCB7IEJvb2ttYXJrIH0gZnJvbSAnLi4vLi4vdmlld2Vycy9wZGYtdmlld2VyL3NpZGUtYmFyL2Jvb2ttYXJrcy9ib29rbWFya3MuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdG9yZVV0aWxzIH0gZnJvbSAnLi4vc3RvcmUtdXRpbHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVCb29rbWFya0VudGl0aWVzIH0gZnJvbSAnLi4vYm9va21hcmtzLXN0b3JlLXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBCb29rbWFya3NTdGF0ZSB7XG4gIGJvb2ttYXJrczogQm9va21hcmtbXTtcbiAgYm9va21hcmtFbnRpdGllczogeyBbaWQ6IHN0cmluZ106IEJvb2ttYXJrIH07XG4gIGJvb2ttYXJrUGFnZUVudGl0aWVzOiB7W2lkOiBzdHJpbmddOiBhbnl9O1xuICBlZGl0YWJsZUJvb2ttYXJrOiBzdHJpbmc7XG4gIGxvYWRlZDogYm9vbGVhbjtcbiAgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxCb29rbWFya3NTdGF0ZTogQm9va21hcmtzU3RhdGUgPSB7XG4gIGJvb2ttYXJrczogW10sXG4gIGJvb2ttYXJrRW50aXRpZXM6IHt9LFxuICBib29rbWFya1BhZ2VFbnRpdGllczoge30sXG4gIGVkaXRhYmxlQm9va21hcms6IHVuZGVmaW5lZCxcbiAgbG9hZGVkOiBmYWxzZSxcbiAgbG9hZGluZzogZmFsc2Vcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBib29rbWFya3NSZWR1Y2VyIChzdGF0ZSA9IGluaXRpYWxCb29rbWFya3NTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGZyb21Cb29rbWFya3MuQm9va21hcmtzQWN0aW9ucyk6IEJvb2ttYXJrc1N0YXRlIHtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cbiAgICBjYXNlIGZyb21Cb29rbWFya3MuTE9BRF9CT09LTUFSS1M6IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBsb2FkaW5nOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUJvb2ttYXJrcy5MT0FEX0JPT0tNQVJLU19TVUNDRVNTOlxuICAgIGNhc2UgZnJvbUJvb2ttYXJrcy5MT0FEX0JPT0tNQVJLU19GQUlMOiB7XG4gICAgICBjb25zdCBib29rbWFya3MgPSBhY3Rpb24ucGF5bG9hZC5zdGF0dXMgPT09IDIwMCA/IGFjdGlvbi5wYXlsb2FkLmJvZHkgOiBbXTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrRW50aXRpZXMgPSBnZW5lcmF0ZUJvb2ttYXJrRW50aXRpZXMoYm9va21hcmtzKTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrUGFnZUVudGl0aWVzID0gU3RvcmVVdGlscy5ncm91cEJ5S2V5RW50aXRpZXMoYm9va21hcmtzLCAncGFnZU51bWJlcicpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYm9va21hcmtzLFxuICAgICAgICBib29rbWFya0VudGl0aWVzLFxuICAgICAgICBib29rbWFya1BhZ2VFbnRpdGllcyxcbiAgICAgICAgbG9hZGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUJvb2ttYXJrcy5DUkVBVEVfQk9PS01BUktfU1VDQ0VTUzoge1xuICAgICAgY29uc3QgYm9va21hcms6IEJvb2ttYXJrID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCBib29rbWFya0VudGl0aWVzID0ge1xuICAgICAgICAuLi5zdGF0ZS5ib29rbWFya0VudGl0aWVzLFxuICAgICAgICBbYm9va21hcmsuaWRdOiBib29rbWFyayxcbiAgICAgIH07XG4gICAgICBjb25zdCBib29rbWFya0FycmF5ID0gT2JqZWN0LmtleXMoYm9va21hcmtFbnRpdGllcykubWFwKGtleSA9PiBib29rbWFya0VudGl0aWVzW2tleV0pO1xuICAgICAgY29uc3QgYm9va21hcmtQYWdlRW50aXRpZXMgPSBTdG9yZVV0aWxzLmdyb3VwQnlLZXlFbnRpdGllcyhib29rbWFya0FycmF5LCAncGFnZU51bWJlcicpO1xuICAgICAgY29uc3QgZWRpdGFibGVCb29rbWFyayA9IGJvb2ttYXJrLmlkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGJvb2ttYXJrRW50aXRpZXMsXG4gICAgICAgIGVkaXRhYmxlQm9va21hcmssXG4gICAgICAgIGJvb2ttYXJrUGFnZUVudGl0aWVzLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgbG9hZGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUJvb2ttYXJrcy5NT1ZFX0JPT0tNQVJLX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IG1vdmVkQm9va21hcmtzID0gZ2VuZXJhdGVCb29rbWFya0VudGl0aWVzKGFjdGlvbi5wYXlsb2FkKTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrRW50aXRpZXMgPSB7XG4gICAgICAgIC4uLnN0YXRlLmJvb2ttYXJrRW50aXRpZXMsXG4gICAgICAgIC4uLm1vdmVkQm9va21hcmtzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGJvb2ttYXJrRW50aXRpZXMsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQm9va21hcmtzLkRFTEVURV9CT09LTUFSS19TVUNDRVNTOiB7XG4gICAgICBjb25zdCBib29rbWFya0lkczogc3RyaW5nW10gPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGJvb2ttYXJrRW50aXRpZXMgPSB7IC4uLnN0YXRlLmJvb2ttYXJrRW50aXRpZXMgfTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrUGFnZUVudGl0aWVzID0geyAuLi5zdGF0ZS5ib29rbWFya1BhZ2VFbnRpdGllcyB9O1xuICAgICAgY29uc3QgcmVtb3ZlQm9va21hcmtzQnlQYWdlOiB7W3BhZ2VOdW1iZXI6IG51bWJlcl06IHN0cmluZ1tdfSA9IHt9O1xuICAgICAgYm9va21hcmtJZHMuZm9yRWFjaChib29rbWFya0lkID0+IHtcbiAgICAgICAgaWYgKHJlbW92ZUJvb2ttYXJrc0J5UGFnZVtib29rbWFya0VudGl0aWVzW2Jvb2ttYXJrSWRdLnBhZ2VOdW1iZXJdICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICByZW1vdmVCb29rbWFya3NCeVBhZ2VbYm9va21hcmtFbnRpdGllc1tib29rbWFya0lkXS5wYWdlTnVtYmVyXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVtb3ZlQm9va21hcmtzQnlQYWdlW2Jvb2ttYXJrRW50aXRpZXNbYm9va21hcmtJZF0ucGFnZU51bWJlcl0ucHVzaChib29rbWFya0lkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZW1vdmVCb29rbWFya3NCeVBhZ2VbYm9va21hcmtFbnRpdGllc1tib29rbWFya0lkXS5wYWdlTnVtYmVyXSA9IFtib29rbWFya0lkXTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgYm9va21hcmtFbnRpdGllc1tib29rbWFya0lkXTtcbiAgICAgIH0pO1xuXG4gICAgICBPYmplY3QuZW50cmllcyhyZW1vdmVCb29rbWFya3NCeVBhZ2UpLmZvckVhY2goXG4gICAgICAgIChbcGFnZU51bWJlciwgYm1ya0lkc10pID0+IHtcbiAgICAgICAgICBib29rbWFya1BhZ2VFbnRpdGllc1twYWdlTnVtYmVyXVxuICAgICAgICAgID0gYm9va21hcmtQYWdlRW50aXRpZXNbcGFnZU51bWJlcl0uZmlsdGVyKGJvb2ttYXJrID0+ICFibXJrSWRzLmluY2x1ZGVzKGJvb2ttYXJrLmlkKSk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBib29rbWFya0VudGl0aWVzLFxuICAgICAgICBib29rbWFya1BhZ2VFbnRpdGllcyxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGxvYWRlZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Cb29rbWFya3MuVVBEQVRFX0JPT0tNQVJLX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrOiBCb29rbWFyayA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgYm9va21hcmtFbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgW2Jvb2ttYXJrLmlkXTogeyAuLi5ib29rbWFyayB9XG4gICAgICB9O1xuICAgICAgY29uc3QgYm9va21hcmtBcnJheSA9IE9iamVjdC5rZXlzKGJvb2ttYXJrRW50aXRpZXMpLm1hcChrZXkgPT4gYm9va21hcmtFbnRpdGllc1trZXldKTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrUGFnZUVudGl0aWVzID0gU3RvcmVVdGlscy5ncm91cEJ5S2V5RW50aXRpZXMoYm9va21hcmtBcnJheSwgJ3BhZ2VOdW1iZXInKTtcbiAgICAgIGNvbnN0IGVkaXRhYmxlQm9va21hcmsgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgZWRpdGFibGVCb29rbWFyayxcbiAgICAgICAgYm9va21hcmtQYWdlRW50aXRpZXMsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEJvb2ttYXJrcyA9IChzdGF0ZTogQm9va21hcmtzU3RhdGUpID0+IHN0YXRlLmJvb2ttYXJrcztcbmV4cG9ydCBjb25zdCBnZXRCb29rbWFya0VudHMgPSAoc3RhdGU6IEJvb2ttYXJrc1N0YXRlKSA9PiBzdGF0ZS5ib29rbWFya0VudGl0aWVzO1xuZXhwb3J0IGNvbnN0IGdldEJvb2ttYXJrUGFnZUVudCA9IChzdGF0ZTogQm9va21hcmtzU3RhdGUpID0+IHN0YXRlLmJvb2ttYXJrUGFnZUVudGl0aWVzO1xuZXhwb3J0IGNvbnN0IGdldEVkaXRCb29rbWFyayA9IChzdGF0ZTogQm9va21hcmtzU3RhdGUpID0+IHN0YXRlLmVkaXRhYmxlQm9va21hcms7XG4iXX0=
@@ -0,0 +1,135 @@
1
+ import * as fromActions from '../actions/document.actions';
2
+ export const initialDocumentState = {
3
+ convertedDocument: undefined,
4
+ documentId: undefined,
5
+ pdfPosition: undefined,
6
+ pages: {},
7
+ hasDifferentPageSize: false,
8
+ rotation: undefined,
9
+ rotationLoaded: false,
10
+ loading: false,
11
+ loaded: false
12
+ };
13
+ export function docReducer(state = initialDocumentState, action) {
14
+ switch (action.type) {
15
+ case fromActions.CONVERT_SUCCESS: {
16
+ const convertedDocument = {
17
+ url: action.payload,
18
+ error: undefined
19
+ };
20
+ return {
21
+ ...state,
22
+ convertedDocument
23
+ };
24
+ }
25
+ case fromActions.CONVERT_FAIL: {
26
+ const convertedDocument = {
27
+ url: undefined,
28
+ error: action.payload
29
+ };
30
+ return {
31
+ ...state,
32
+ convertedDocument
33
+ };
34
+ }
35
+ case fromActions.CLEAR_CONVERT_DOC_URL: {
36
+ const convertedDocument = undefined;
37
+ return {
38
+ ...state,
39
+ convertedDocument
40
+ };
41
+ }
42
+ case fromActions.LOAD_ROTATION: {
43
+ return {
44
+ ...state,
45
+ rotationLoaded: false
46
+ };
47
+ }
48
+ case fromActions.LOAD_ROTATION_SUCCESS: {
49
+ const metadata = action.payload;
50
+ const rotation = metadata ? metadata.rotationAngle : 0;
51
+ return {
52
+ ...state,
53
+ rotation,
54
+ rotationLoaded: true
55
+ };
56
+ }
57
+ case fromActions.LOAD_ROTATION_FAIL: {
58
+ return {
59
+ ...state,
60
+ rotation: 0,
61
+ rotationLoaded: true
62
+ };
63
+ }
64
+ case fromActions.SAVE_ROTATION_SUCCESS: {
65
+ const metadata = action.payload;
66
+ const rotation = metadata.rotationAngle;
67
+ return {
68
+ ...state,
69
+ rotation
70
+ };
71
+ }
72
+ case fromActions.SET_DOCUMENT_ID: {
73
+ return {
74
+ ...state,
75
+ documentId: action.payload
76
+ };
77
+ }
78
+ case fromActions.ADD_PAGES: {
79
+ const payload = action.payload;
80
+ let pages = {};
81
+ let pageHeight;
82
+ let pageWidth;
83
+ let hasDifferentPageSize = state.hasDifferentPageSize;
84
+ payload.forEach(page => {
85
+ if (!hasDifferentPageSize && pageHeight && pageWidth &&
86
+ (pageHeight !== page.div['scrollHeight'] || pageWidth !== page.div['scrollWidth'])) {
87
+ hasDifferentPageSize = true;
88
+ }
89
+ else {
90
+ pageHeight = page.div['scrollHeight'];
91
+ pageWidth = page.div['scrollWidth'];
92
+ }
93
+ const styles = {
94
+ left: page.div['offsetLeft'],
95
+ height: page.div['scrollHeight'],
96
+ width: page.div['scrollWidth']
97
+ };
98
+ const scaleRotation = {
99
+ scale: page.scale,
100
+ rotation: page.rotation
101
+ };
102
+ const p = {
103
+ styles,
104
+ scaleRotation,
105
+ viewportScale: page.viewportScale
106
+ };
107
+ pages = {
108
+ ...pages,
109
+ [page.id]: p
110
+ };
111
+ });
112
+ return {
113
+ ...state,
114
+ pages,
115
+ hasDifferentPageSize
116
+ };
117
+ }
118
+ case fromActions.POSITION_UPDATED: {
119
+ const pdfPosition = action.payload;
120
+ return {
121
+ ...state,
122
+ pdfPosition
123
+ };
124
+ }
125
+ }
126
+ return state;
127
+ }
128
+ export const getDocPages = (state) => state.pages;
129
+ export const getDocId = (state) => state.documentId;
130
+ export const getPdfPos = (state) => state.pdfPosition;
131
+ export const getHasDifferentPageSizes = (state) => state.hasDifferentPageSize;
132
+ export const getRotation = (state) => state.rotation;
133
+ export const rotationLoaded = (state) => state.rotationLoaded;
134
+ export const getConvertedDocument = (state) => state.convertedDocument;
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2RvY3VtZW50LnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQWdDM0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtCO0lBQ2pELGlCQUFpQixFQUFFLFNBQVM7SUFDNUIsVUFBVSxFQUFFLFNBQVM7SUFDckIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsS0FBSyxFQUFFLEVBQUU7SUFDVCxvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLE9BQU8sRUFBRSxLQUFLO0lBQ2QsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFDO0FBRUYsTUFBTSxVQUFVLFVBQVUsQ0FBRSxLQUFLLEdBQUcsb0JBQW9CLEVBQzVCLE1BQW1DO0lBRTdELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXBCLEtBQUssV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxpQkFBaUIsR0FBRztnQkFDeEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUNuQixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFDO1lBQ0YsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsaUJBQWlCO2FBQ2xCLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLGlCQUFpQixHQUFHO2dCQUN4QixHQUFHLEVBQUUsU0FBUztnQkFDZCxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDdEIsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGlCQUFpQjthQUNs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QUFvQixHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnJvbUFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9kb2N1bWVudC5hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFN0YXRlIHtcbiAgY29udmVydGVkRG9jdW1lbnQ6IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBlcnJvcjogc3RyaW5nO1xuICB9O1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHBkZlBvc2l0aW9uOiBQZGZQb3NpdGlvbjtcbiAgcGFnZXM6IHtbaWQ6IHN0cmluZ106IERvY3VtZW50UGFnZXN9O1xuICBoYXNEaWZmZXJlbnRQYWdlU2l6ZTogYm9vbGVhbjtcbiAgcm90YXRpb246IG51bWJlcjtcbiAgcm90YXRpb25Mb2FkZWQ6IGJvb2xlYW47XG4gIGxvYWRlZDogYm9vbGVhbjtcbiAgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFBhZ2VzIHtcbiBudW1iZXJPZlBhZ2VzOiBudW1iZXI7XG4gc3R5bGVzOiB7IGxlZnQ6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIgfTtcbiBzY2FsZVJvdGF0aW9uOiB7IHNjYWxlOiBzdHJpbmc7IHJvdGF0aW9uOiBzdHJpbmcgfTtcbiB2aWV3cG9ydFNjYWxlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRmUG9zaXRpb24ge1xuICBwYWdlTnVtYmVyOiBudW1iZXI7XG4gIHNjYWxlOiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIHJvdGF0aW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsRG9jdW1lbnRTdGF0ZTogRG9jdW1lbnRTdGF0ZSA9IHtcbiAgY29udmVydGVkRG9jdW1lbnQ6IHVuZGVmaW5lZCxcbiAgZG9jdW1lbnRJZDogdW5kZWZpbmVkLFxuICBwZGZQb3NpdGlvbjogdW5kZWZpbmVkLFxuICBwYWdlczoge30sXG4gIGhhc0RpZmZlcmVudFBhZ2VTaXplOiBmYWxzZSxcbiAgcm90YXRpb246IHVuZGVmaW5lZCxcbiAgcm90YXRpb25Mb2FkZWQ6IGZhbHNlLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgbG9hZGVkOiBmYWxzZVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRvY1JlZHVjZXIgKHN0YXRlID0gaW5pdGlhbERvY3VtZW50U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmcm9tQWN0aW9ucy5Eb2N1bWVudEFjdGlvbnMpOiBEb2N1bWVudFN0YXRlIHtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cbiAgICBjYXNlIGZyb21BY3Rpb25zLkNPTlZFUlRfU1VDQ0VTUzoge1xuICAgICAgY29uc3QgY29udmVydGVkRG9jdW1lbnQgPSB7XG4gICAgICAgIHVybDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgIGVycm9yOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY29udmVydGVkRG9jdW1lbnRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5DT05WRVJUX0ZBSUw6IHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZERvY3VtZW50ID0ge1xuICAgICAgICB1cmw6IHVuZGVmaW5lZCxcbiAgICAgICAgZXJyb3I6IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGNvbnZlcnRlZERvY3VtZW50XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuQ0xFQVJfQ09OVkVSVF9ET0NfVVJMOiB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWREb2N1bWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb252ZXJ0ZWREb2N1bWVudFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21BY3Rpb25zLkxPQURfUk9UQVRJT046IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICByb3RhdGlvbkxvYWRlZDogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5MT0FEX1JPVEFUSU9OX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCByb3RhdGlvbiA9IG1ldGFkYXRhID8gbWV0YWRhdGEucm90YXRpb25BbmdsZSA6IDA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcm90YXRpb24sXG4gICAgICAgIHJvdGF0aW9uTG9hZGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuTE9BRF9ST1RBVElPTl9GQUlMOiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHJvdGF0aW9uTG9hZGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuU0FWRV9ST1RBVElPTl9TVUNDRVNTOiB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3Qgcm90YXRpb24gPSBtZXRhZGF0YS5yb3RhdGlvbkFuZ2xlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJvdGF0aW9uXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuU0VUX0RPQ1VNRU5UX0lEIDoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRvY3VtZW50SWQ6IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuQUREX1BBR0VTOiB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBsZXQgcGFnZXMgPSB7fTtcbiAgICAgIGxldCBwYWdlSGVpZ2h0O1xuICAgICAgbGV0IHBhZ2VXaWR0aDtcbiAgICAgIGxldCBoYXNEaWZmZXJlbnRQYWdlU2l6ZSA9IHN0YXRlLmhhc0RpZmZlcmVudFBhZ2VTaXplO1xuICAgICAgcGF5bG9hZC5mb3JFYWNoKHBhZ2UgPT4ge1xuICAgICAgICBpZiAoIWhhc0RpZmZlcmVudFBhZ2VTaXplICYmIHBhZ2VIZWlnaHQgJiYgcGFnZVdpZHRoICYmXG4gICAgICAgICAgKHBhZ2VIZWlnaHQgIT09IHBhZ2UuZGl2WydzY3JvbGxIZWlnaHQnXSB8fCBwYWdlV2lkdGggIT09IHBhZ2UuZGl2WydzY3JvbGxXaWR0aCddKSkge1xuICAgICAgICAgICAgaGFzRGlmZmVyZW50UGFnZVNpemUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhZ2VIZWlnaHQgPSBwYWdlLmRpdlsnc2Nyb2xsSGVpZ2h0J107XG4gICAgICAgICAgcGFnZVdpZHRoID0gcGFnZS5kaXZbJ3Njcm9sbFdpZHRoJ107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAgIGxlZnQ6IHBhZ2UuZGl2WydvZmZzZXRMZWZ0J10sXG4gICAgICAgICAgaGVpZ2h0OiBwYWdlLmRpdlsnc2Nyb2xsSGVpZ2h0J10sXG4gICAgICAgICAgd2lkdGg6IHBhZ2UuZGl2WydzY3JvbGxXaWR0aCddXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2NhbGVSb3RhdGlvbiA9IHtcbiAgICAgICAgICBzY2FsZTogcGFnZS5zY2FsZSxcbiAgICAgICAgICByb3RhdGlvbjogcGFnZS5yb3RhdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHAgPSB7XG4gICAgICAgICAgc3R5bGVzLFxuICAgICAgICAgIHNjYWxlUm90YXRpb24sXG4gICAgICAgICAgdmlld3BvcnRTY2FsZTogcGFnZS52aWV3cG9ydFNjYWxlXG4gICAgICAgIH07XG5cbiAgICAgICAgcGFnZXMgPSB7XG4gICAgICAgICAgLi4ucGFnZXMsXG4gICAgICAgICAgW3BhZ2UuaWRdOiBwXG4gICAgICAgIH07XG5cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhZ2VzLFxuICAgICAgICBoYXNEaWZmZXJlbnRQYWdlU2l6ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21BY3Rpb25zLlBPU0lUSU9OX1VQREFURUQ6IHtcbiAgICAgIGNvbnN0IHBkZlBvc2l0aW9uID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGRmUG9zaXRpb25cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cbmV4cG9ydCBjb25zdCBnZXREb2NQYWdlcyA9IChzdGF0ZTogRG9jdW1lbnRTdGF0ZSkgPT4gc3RhdGUucGFnZXM7XG5leHBvcnQgY29uc3QgZ2V0RG9jSWQgPSAoc3RhdGU6IERvY3VtZW50U3RhdGUpID0+IHN0YXRlLmRvY3VtZW50SWQ7XG5leHBvcnQgY29uc3QgZ2V0UGRmUG9zID0gKHN0YXRlOiBEb2N1bWVudFN0YXRlKSA9PiBzdGF0ZS5wZGZQb3NpdGlvbjtcbmV4cG9ydCBjb25zdCBnZXRIYXNEaWZmZXJlbnRQYWdlU2l6ZXMgPSAoc3RhdGU6IERvY3VtZW50U3RhdGUpID0+IHN0YXRlLmhhc0RpZmZlcmVudFBhZ2VTaXplO1xuZXhwb3J0IGNvbnN0IGdldFJvdGF0aW9uID0gKHN0YXRlOiBEb2N1bWVudFN0YXRlKSA9PiBzdGF0ZS5yb3RhdGlvbjtcbmV4cG9ydCBjb25zdCByb3RhdGlvbkxvYWRlZCA9IChzdGF0ZTogRG9jdW1lbnRTdGF0ZSkgPT4gc3RhdGUucm90YXRpb25Mb2FkZWQ7XG5leHBvcnQgY29uc3QgZ2V0Q29udmVydGVkRG9jdW1lbnQgPSAoc3RhdGU6IERvY3VtZW50U3RhdGUpID0+IHN0YXRlLmNvbnZlcnRlZERvY3VtZW50O1xuIl19
@@ -0,0 +1,56 @@
1
+ import * as fromIcpActions from '../actions/icp.actions';
2
+ export const initialIcpSessionState = {
3
+ session: null,
4
+ presenter: null,
5
+ client: null,
6
+ participants: []
7
+ };
8
+ export function icpReducer(state = initialIcpSessionState, action) {
9
+ switch (action.type) {
10
+ case fromIcpActions.SET_CASE_ID: {
11
+ const caseId = action.payload;
12
+ const session = { ...state.session, caseId };
13
+ return {
14
+ ...state,
15
+ session
16
+ };
17
+ }
18
+ case fromIcpActions.ICP_SOCKET_SESSION_JOINED: {
19
+ const session = action.payload.session;
20
+ const participantInfo = action.payload.participantInfo;
21
+ return {
22
+ ...state,
23
+ session,
24
+ client: participantInfo.client,
25
+ presenter: participantInfo.presenter,
26
+ };
27
+ }
28
+ case fromIcpActions.ICP_PARTICIPANT_LIST_UPDATED: {
29
+ const updatedParticipants = action.payload;
30
+ const participants = Object.keys(updatedParticipants)
31
+ .map(id => ({ id: id, username: updatedParticipants[id] }));
32
+ return {
33
+ ...state,
34
+ participants
35
+ };
36
+ }
37
+ case fromIcpActions.ICP_PRESENTER_UPDATED: {
38
+ const presenter = action.payload;
39
+ return {
40
+ ...state, presenter
41
+ };
42
+ }
43
+ case fromIcpActions.LEAVE_ICP_SOCKET_SESSION: {
44
+ return {
45
+ ...state,
46
+ ...initialIcpSessionState
47
+ };
48
+ }
49
+ }
50
+ return state;
51
+ }
52
+ export const getIcpSession = (state) => state.session;
53
+ export const getPresenter = (state) => state.presenter;
54
+ export const getClient = (state) => state.client;
55
+ export const getParticipants = (state) => state.participants;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9zdG9yZS9yZWR1Y2Vycy9pY3AucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssY0FBYyxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFhO0lBQzlDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLElBQUk7SUFDZixNQUFNLEVBQUUsSUFBSTtJQUNaLFlBQVksRUFBRSxFQUFFO0NBQ2pCLENBQUM7QUFFRixNQUFNLFVBQVUsVUFBVSxDQUFFLEtBQUssR0FBRyxzQkFBc0IsRUFDeEIsTUFBaUM7SUFFakUsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFcEIsS0FBSyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzlCLE1BQU0sT0FBTyxHQUFHLEVBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDO1lBQzNDLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssY0FBYyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBZSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNuRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN2RCxPQUFPO2dCQUNMLEdBQUcsS0FBSztnQkFDUixPQUFPO2dCQUNQLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDOUIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTO2FBQ3JDLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxjQUFjLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sbUJBQW1CLEdBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNoRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2lCQUNsRCxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsWUFBWTthQUNiLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDakMsT0FBTztnQkFDTCxHQUFHLEtBQUssRUFBRSxTQUFTO2FBQ3BCLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxjQUFjLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLEdBQUcsc0JBQXNCO2FBQzFCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZyb21JY3BBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvaWNwLmFjdGlvbnMnO1xuaW1wb3J0IHsgSWNwU2Vzc2lvbiwgSWNwU3RhdGUgfSBmcm9tICcuLi8uLi9pY3AvaWNwLmludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbEljcFNlc3Npb25TdGF0ZTogSWNwU3RhdGUgPSB7XG4gIHNlc3Npb246IG51bGwsXG4gIHByZXNlbnRlcjogbnVsbCxcbiAgY2xpZW50OiBudWxsLFxuICBwYXJ0aWNpcGFudHM6IFtdXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaWNwUmVkdWNlciAoc3RhdGUgPSBpbml0aWFsSWNwU2Vzc2lvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogZnJvbUljcEFjdGlvbnMuSWNwQWN0aW9ucyk6IEljcFN0YXRlIHtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cbiAgICBjYXNlIGZyb21JY3BBY3Rpb25zLlNFVF9DQVNFX0lEOiB7XG4gICAgICBjb25zdCBjYXNlSWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB7Li4uc3RhdGUuc2Vzc2lvbiwgY2FzZUlkfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZXNzaW9uXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUljcEFjdGlvbnMuSUNQX1NPQ0tFVF9TRVNTSU9OX0pPSU5FRDoge1xuICAgICAgY29uc3Qgc2Vzc2lvbjogSWNwU2Vzc2lvbiA9IGFjdGlvbi5wYXlsb2FkLnNlc3Npb247XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudEluZm8gPSBhY3Rpb24ucGF5bG9hZC5wYXJ0aWNpcGFudEluZm87XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2Vzc2lvbixcbiAgICAgICAgY2xpZW50OiBwYXJ0aWNpcGFudEluZm8uY2xpZW50LFxuICAgICAgICBwcmVzZW50ZXI6IHBhcnRpY2lwYW50SW5mby5wcmVzZW50ZXIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUljcEFjdGlvbnMuSUNQX1BBUlRJQ0lQQU5UX0xJU1RfVVBEQVRFRDoge1xuICAgICAgY29uc3QgdXBkYXRlZFBhcnRpY2lwYW50czogYW55ID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudHMgPSBPYmplY3Qua2V5cyh1cGRhdGVkUGFydGljaXBhbnRzKVxuICAgICAgICAubWFwKGlkID0+ICh7IGlkOiBpZCwgdXNlcm5hbWU6IHVwZGF0ZWRQYXJ0aWNpcGFudHNbaWRdIH0pKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBwYXJ0aWNpcGFudHNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tSWNwQWN0aW9ucy5JQ1BfUFJFU0VOVEVSX1VQREFURUQ6IHtcbiAgICAgIGNvbnN0IHByZXNlbnRlciA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsIHByZXNlbnRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21JY3BBY3Rpb25zLkxFQVZFX0lDUF9TT0NLRVRfU0VTU0lPTjoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIC4uLmluaXRpYWxJY3BTZXNzaW9uU3RhdGVcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEljcFNlc3Npb24gPSAoc3RhdGU6IEljcFN0YXRlKSA9PiBzdGF0ZS5zZXNzaW9uO1xuZXhwb3J0IGNvbnN0IGdldFByZXNlbnRlciA9IChzdGF0ZTogSWNwU3RhdGUpID0+IHN0YXRlLnByZXNlbnRlcjtcbmV4cG9ydCBjb25zdCBnZXRDbGllbnQgPSAoc3RhdGU6IEljcFN0YXRlKSA9PiBzdGF0ZS5jbGllbnQ7XG5leHBvcnQgY29uc3QgZ2V0UGFydGljaXBhbnRzID0gKHN0YXRlOiBJY3BTdGF0ZSkgPT4gc3RhdGUucGFydGljaXBhbnRzO1xuIl19