@hmcts/media-viewer 4.1.6-angular-20 → 4.1.7-exui-2986

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 (369) hide show
  1. package/assets/all.scss +1 -0
  2. package/assets/sass/tooltip.scss +43 -0
  3. package/esm2022/hmcts-media-viewer.mjs +5 -0
  4. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +122 -0
  5. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +120 -0
  6. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +101 -0
  7. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
  8. package/esm2022/lib/annotations/annotation-set/annotation-set.model.mjs +2 -0
  9. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
  10. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +2 -0
  11. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
  12. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +2 -0
  13. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +119 -0
  14. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
  15. package/esm2022/lib/annotations/annotations.module.mjs +162 -0
  16. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +178 -0
  17. package/esm2022/lib/annotations/comment-set/comment/comment.model.mjs +2 -0
  18. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
  19. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
  20. package/esm2022/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +31 -0
  21. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
  22. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +62 -0
  23. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
  24. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +72 -0
  25. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +55 -0
  26. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +123 -0
  27. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
  28. package/esm2022/lib/annotations/models/api-persisted.model.mjs +2 -0
  29. package/esm2022/lib/annotations/models/event-select.model.mjs +2 -0
  30. package/esm2022/lib/annotations/models/tags.model.mjs +2 -0
  31. package/esm2022/lib/annotations/models/user.model.mjs +2 -0
  32. package/esm2022/lib/annotations/pipes/date/date.pipe.mjs +26 -0
  33. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
  34. package/esm2022/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +16 -0
  35. package/esm2022/lib/annotations/services/annotation-api/annotation-api.service.mjs +58 -0
  36. package/esm2022/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +45 -0
  37. package/esm2022/lib/annotations/services/tags/tags.services.mjs +41 -0
  38. package/esm2022/lib/annotations/tags/tags.component.mjs +53 -0
  39. package/esm2022/lib/bookmark/components/bookmark-icons.component.mjs +25 -0
  40. package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +22 -0
  41. package/esm2022/lib/icp/icp-follower.service.mjs +65 -0
  42. package/esm2022/lib/icp/icp-presenter.service.mjs +56 -0
  43. package/esm2022/lib/icp/icp-session-api.service.mjs +28 -0
  44. package/esm2022/lib/icp/icp-update.service.mjs +73 -0
  45. package/esm2022/lib/icp/icp.events.mjs +15 -0
  46. package/esm2022/lib/icp/icp.interfaces.mjs +2 -0
  47. package/esm2022/lib/icp/icp.service.mjs +98 -0
  48. package/esm2022/lib/icp/participants-list/participants-list.component.mjs +32 -0
  49. package/esm2022/lib/icp/socket.service.mjs +128 -0
  50. package/esm2022/lib/media-viewer.component.mjs +247 -0
  51. package/esm2022/lib/media-viewer.module.mjs +139 -0
  52. package/esm2022/lib/print.service.mjs +32 -0
  53. package/esm2022/lib/redaction/components/redaction.component.mjs +91 -0
  54. package/esm2022/lib/redaction/services/redaction-api.service.mjs +50 -0
  55. package/esm2022/lib/redaction/services/redaction.model.mjs +2 -0
  56. package/esm2022/lib/shared/gov-uk-date/gov-uk-date.component.mjs +28 -0
  57. package/esm2022/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +34 -0
  58. package/esm2022/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +63 -0
  59. package/esm2022/lib/shared/gov-uk-label/gov-uk-label.component.mjs +44 -0
  60. package/esm2022/lib/shared/shared.module.mjs +53 -0
  61. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +29 -0
  62. package/esm2022/lib/shared/util/services/number.helper.service.mjs +23 -0
  63. package/esm2022/lib/store/actions/annotation.actions.mjs +119 -0
  64. package/esm2022/lib/store/actions/bookmark.actions.mjs +112 -0
  65. package/esm2022/lib/store/actions/document.actions.mjs +91 -0
  66. package/esm2022/lib/store/actions/icp.actions.mjs +56 -0
  67. package/esm2022/lib/store/actions/redaction.actions.mjs +132 -0
  68. package/esm2022/lib/store/actions/tag.actions.mjs +21 -0
  69. package/esm2022/lib/store/bookmarks-store-utils.mjs +49 -0
  70. package/esm2022/lib/store/effects/annotation.effects.mjs +51 -0
  71. package/esm2022/lib/store/effects/bookmarks.effects.mjs +44 -0
  72. package/esm2022/lib/store/effects/document.effects.mjs +44 -0
  73. package/esm2022/lib/store/effects/icp.effects.mjs +26 -0
  74. package/esm2022/lib/store/effects/index.mjs +7 -0
  75. package/esm2022/lib/store/effects/redaction.effects.mjs +67 -0
  76. package/esm2022/lib/store/models/bookmarks.interface.mjs +2 -0
  77. package/esm2022/lib/store/models/filters.interface.mjs +2 -0
  78. package/esm2022/lib/store/reducers/annotations.reducer.mjs +208 -0
  79. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +125 -0
  80. package/esm2022/lib/store/reducers/document.reducer.mjs +158 -0
  81. package/esm2022/lib/store/reducers/icp.reducer.mjs +56 -0
  82. package/esm2022/lib/store/reducers/redaction.reducer.mjs +116 -0
  83. package/esm2022/lib/store/reducers/reducers.mjs +23 -0
  84. package/esm2022/lib/store/reducers/tags.reducer.mjs +93 -0
  85. package/esm2022/lib/store/selectors/annotation.selectors.mjs +81 -0
  86. package/esm2022/lib/store/selectors/bookmark.selectors.mjs +37 -0
  87. package/esm2022/lib/store/selectors/document.selectors.mjs +13 -0
  88. package/esm2022/lib/store/selectors/icp.selectors.mjs +13 -0
  89. package/esm2022/lib/store/selectors/redaction.selectors.mjs +26 -0
  90. package/esm2022/lib/store/selectors/tag.selectors.mjs +15 -0
  91. package/esm2022/lib/store/store-utils.mjs +131 -0
  92. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
  93. package/esm2022/lib/toolbar/icp-event.service.mjs +44 -0
  94. package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +43 -0
  95. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +206 -0
  96. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +237 -0
  97. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +2 -0
  98. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
  99. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
  100. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
  101. package/esm2022/lib/toolbar/toolbar-event.service.mjs +178 -0
  102. package/esm2022/lib/toolbar/toolbar.module.mjs +72 -0
  103. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
  104. package/esm2022/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +22 -0
  105. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +57 -0
  106. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
  107. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
  108. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +266 -0
  109. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +40 -0
  110. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +242 -0
  111. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +379 -0
  112. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +2 -0
  113. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
  114. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +2 -0
  115. package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +99 -0
  116. package/esm2022/lib/viewers/rotation-persist/rotation-api.service.mjs +27 -0
  117. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
  118. package/esm2022/lib/viewers/rotation-persist/rotation.model.mjs +2 -0
  119. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
  120. package/esm2022/lib/viewers/viewer-event.service.mjs +34 -0
  121. package/esm2022/lib/viewers/viewer-exception.model.mjs +13 -0
  122. package/esm2022/lib/viewers/viewer-util.service.mjs +20 -0
  123. package/esm2022/public_api.mjs +33 -0
  124. package/fesm2022/hmcts-media-viewer.mjs +302 -303
  125. package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
  126. package/hmcts-media-viewer.d.ts.map +1 -0
  127. package/index.d.ts +4 -2304
  128. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +48 -0
  129. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +1 -0
  130. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +32 -0
  131. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +1 -0
  132. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +18 -0
  133. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +1 -0
  134. package/lib/annotations/annotation-set/annotation-set.component.d.ts +27 -0
  135. package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +1 -0
  136. package/lib/annotations/annotation-set/annotation-set.model.d.ts +7 -0
  137. package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +1 -0
  138. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +34 -0
  139. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +1 -0
  140. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +16 -0
  141. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +1 -0
  142. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +41 -0
  143. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +1 -0
  144. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +9 -0
  145. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +1 -0
  146. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +37 -0
  147. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +1 -0
  148. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +37 -0
  149. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +1 -0
  150. package/lib/annotations/annotations.module.d.ts +36 -0
  151. package/lib/annotations/annotations.module.d.ts.map +1 -0
  152. package/lib/annotations/comment-set/comment/comment.component.d.ts +69 -0
  153. package/lib/annotations/comment-set/comment/comment.component.d.ts.map +1 -0
  154. package/lib/annotations/comment-set/comment/comment.model.d.ts +13 -0
  155. package/lib/annotations/comment-set/comment/comment.model.d.ts.map +1 -0
  156. package/lib/annotations/comment-set/comment/comment.service.d.ts +22 -0
  157. package/lib/annotations/comment-set/comment/comment.service.d.ts.map +1 -0
  158. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +14 -0
  159. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +1 -0
  160. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +12 -0
  161. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +1 -0
  162. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +28 -0
  163. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +1 -0
  164. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +26 -0
  165. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +1 -0
  166. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +21 -0
  167. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +1 -0
  168. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +36 -0
  169. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +1 -0
  170. package/lib/annotations/comment-set/comment-set-render.service.d.ts +15 -0
  171. package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +1 -0
  172. package/lib/annotations/comment-set/comment-set.component.d.ts +56 -0
  173. package/lib/annotations/comment-set/comment-set.component.d.ts.map +1 -0
  174. package/lib/annotations/comments-summary/comments-summary.component.d.ts +42 -0
  175. package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +1 -0
  176. package/lib/annotations/models/api-persisted.model.d.ts +11 -0
  177. package/lib/annotations/models/api-persisted.model.d.ts.map +1 -0
  178. package/lib/annotations/models/event-select.model.d.ts +6 -0
  179. package/lib/annotations/models/event-select.model.d.ts.map +1 -0
  180. package/lib/annotations/models/tags.model.d.ts +7 -0
  181. package/lib/annotations/models/tags.model.d.ts.map +1 -0
  182. package/lib/annotations/models/user.model.d.ts +6 -0
  183. package/lib/annotations/models/user.model.d.ts.map +1 -0
  184. package/lib/annotations/pipes/date/date.pipe.d.ts +16 -0
  185. package/lib/annotations/pipes/date/date.pipe.d.ts.map +1 -0
  186. package/lib/annotations/pipes/filter/filter.pipe.d.ts +8 -0
  187. package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +1 -0
  188. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +8 -0
  189. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +1 -0
  190. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +28 -0
  191. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +1 -0
  192. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +21 -0
  193. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +1 -0
  194. package/lib/annotations/services/tags/tags.services.d.ts +18 -0
  195. package/lib/annotations/services/tags/tags.services.d.ts.map +1 -0
  196. package/lib/annotations/tags/tags.component.d.ts +28 -0
  197. package/lib/annotations/tags/tags.component.d.ts.map +1 -0
  198. package/lib/bookmark/components/bookmark-icons.component.d.ts +19 -0
  199. package/lib/bookmark/components/bookmark-icons.component.d.ts.map +1 -0
  200. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +11 -0
  201. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +1 -0
  202. package/lib/icp/icp-follower.service.d.ts +26 -0
  203. package/lib/icp/icp-follower.service.d.ts.map +1 -0
  204. package/lib/icp/icp-presenter.service.d.ts +25 -0
  205. package/lib/icp/icp-presenter.service.d.ts.map +1 -0
  206. package/lib/icp/icp-session-api.service.d.ts +15 -0
  207. package/lib/icp/icp-session-api.service.d.ts.map +1 -0
  208. package/lib/icp/icp-update.service.d.ts +22 -0
  209. package/lib/icp/icp-update.service.d.ts.map +1 -0
  210. package/lib/icp/icp.events.d.ts +14 -0
  211. package/lib/icp/icp.events.d.ts.map +1 -0
  212. package/lib/icp/icp.interfaces.d.ts +23 -0
  213. package/lib/icp/icp.interfaces.d.ts.map +1 -0
  214. package/lib/icp/icp.service.d.ts +40 -0
  215. package/lib/icp/icp.service.d.ts.map +1 -0
  216. package/lib/icp/participants-list/participants-list.component.d.ts +23 -0
  217. package/lib/icp/participants-list/participants-list.component.d.ts.map +1 -0
  218. package/lib/icp/socket.service.d.ts +29 -0
  219. package/lib/icp/socket.service.d.ts.map +1 -0
  220. package/lib/media-viewer.component.d.ts +72 -0
  221. package/lib/media-viewer.component.d.ts.map +1 -0
  222. package/lib/media-viewer.module.d.ts +36 -0
  223. package/lib/media-viewer.module.d.ts.map +1 -0
  224. package/lib/print.service.d.ts +8 -0
  225. package/lib/print.service.d.ts.map +1 -0
  226. package/lib/redaction/components/redaction.component.d.ts +42 -0
  227. package/lib/redaction/components/redaction.component.d.ts.map +1 -0
  228. package/lib/redaction/services/redaction-api.service.d.ts +20 -0
  229. package/lib/redaction/services/redaction-api.service.d.ts.map +1 -0
  230. package/lib/redaction/services/redaction.model.d.ts +11 -0
  231. package/lib/redaction/services/redaction.model.d.ts.map +1 -0
  232. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +15 -0
  233. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +1 -0
  234. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +11 -0
  235. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +1 -0
  236. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +16 -0
  237. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +1 -0
  238. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +14 -0
  239. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +1 -0
  240. package/lib/shared/shared.module.d.ts +14 -0
  241. package/lib/shared/shared.module.d.ts.map +1 -0
  242. package/lib/shared/util/helpers/html-templates.helper.d.ts +9 -0
  243. package/lib/shared/util/helpers/html-templates.helper.d.ts.map +1 -0
  244. package/lib/shared/util/services/number.helper.service.d.ts +11 -0
  245. package/lib/shared/util/services/number.helper.service.d.ts.map +1 -0
  246. package/lib/store/actions/annotation.actions.d.ts +126 -0
  247. package/lib/store/actions/annotation.actions.d.ts.map +1 -0
  248. package/lib/store/actions/bookmark.actions.d.ts +117 -0
  249. package/lib/store/actions/bookmark.actions.d.ts.map +1 -0
  250. package/lib/store/actions/document.actions.d.ts +90 -0
  251. package/lib/store/actions/document.actions.d.ts.map +1 -0
  252. package/lib/store/actions/icp.actions.d.ts +75 -0
  253. package/lib/store/actions/icp.actions.d.ts.map +1 -0
  254. package/lib/store/actions/redaction.actions.d.ts +127 -0
  255. package/lib/store/actions/redaction.actions.d.ts.map +1 -0
  256. package/lib/store/actions/tag.actions.d.ts +30 -0
  257. package/lib/store/actions/tag.actions.d.ts.map +1 -0
  258. package/lib/store/bookmarks-store-utils.d.ts +9 -0
  259. package/lib/store/bookmarks-store-utils.d.ts.map +1 -0
  260. package/lib/store/effects/annotation.effects.d.ts +16 -0
  261. package/lib/store/effects/annotation.effects.d.ts.map +1 -0
  262. package/lib/store/effects/bookmarks.effects.d.ts +21 -0
  263. package/lib/store/effects/bookmarks.effects.d.ts.map +1 -0
  264. package/lib/store/effects/document.effects.d.ts +17 -0
  265. package/lib/store/effects/document.effects.d.ts.map +1 -0
  266. package/lib/store/effects/icp.effects.d.ts +16 -0
  267. package/lib/store/effects/icp.effects.d.ts.map +1 -0
  268. package/lib/store/effects/index.d.ts +2 -0
  269. package/lib/store/effects/index.d.ts.map +1 -0
  270. package/lib/store/effects/redaction.effects.d.ts +20 -0
  271. package/lib/store/effects/redaction.effects.d.ts.map +1 -0
  272. package/lib/store/models/bookmarks.interface.d.ts +31 -0
  273. package/lib/store/models/bookmarks.interface.d.ts.map +1 -0
  274. package/lib/store/models/filters.interface.d.ts +8 -0
  275. package/lib/store/models/filters.interface.d.ts.map +1 -0
  276. package/lib/store/reducers/annotations.reducer.d.ts +48 -0
  277. package/lib/store/reducers/annotations.reducer.d.ts.map +1 -0
  278. package/lib/store/reducers/bookmarks.reducer.d.ts +27 -0
  279. package/lib/store/reducers/bookmarks.reducer.d.ts.map +1 -0
  280. package/lib/store/reducers/document.reducer.d.ts +52 -0
  281. package/lib/store/reducers/document.reducer.d.ts.map +1 -0
  282. package/lib/store/reducers/icp.reducer.d.ts +9 -0
  283. package/lib/store/reducers/icp.reducer.d.ts.map +1 -0
  284. package/lib/store/reducers/redaction.reducer.d.ts +32 -0
  285. package/lib/store/reducers/redaction.reducer.d.ts.map +1 -0
  286. package/lib/store/reducers/reducers.d.ts +24 -0
  287. package/lib/store/reducers/reducers.d.ts.map +1 -0
  288. package/lib/store/reducers/tags.reducer.d.ts +32 -0
  289. package/lib/store/reducers/tags.reducer.d.ts.map +1 -0
  290. package/lib/store/selectors/annotation.selectors.d.ts +136 -0
  291. package/lib/store/selectors/annotation.selectors.d.ts.map +1 -0
  292. package/lib/store/selectors/bookmark.selectors.d.ts +38 -0
  293. package/lib/store/selectors/bookmark.selectors.d.ts.map +1 -0
  294. package/lib/store/selectors/document.selectors.d.ts +23 -0
  295. package/lib/store/selectors/document.selectors.d.ts.map +1 -0
  296. package/lib/store/selectors/icp.selectors.d.ts +10 -0
  297. package/lib/store/selectors/icp.selectors.d.ts.map +1 -0
  298. package/lib/store/selectors/redaction.selectors.d.ts +35 -0
  299. package/lib/store/selectors/redaction.selectors.d.ts.map +1 -0
  300. package/lib/store/selectors/tag.selectors.d.ts +28 -0
  301. package/lib/store/selectors/tag.selectors.d.ts.map +1 -0
  302. package/lib/store/store-utils.d.ts +25 -0
  303. package/lib/store/store-utils.d.ts.map +1 -0
  304. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts +20 -0
  305. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts.map +1 -0
  306. package/lib/toolbar/icp-event.service.d.ts +21 -0
  307. package/lib/toolbar/icp-event.service.d.ts.map +1 -0
  308. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +24 -0
  309. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +1 -0
  310. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +69 -0
  311. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +1 -0
  312. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +60 -0
  313. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +1 -0
  314. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts +12 -0
  315. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts.map +1 -0
  316. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +30 -0
  317. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +1 -0
  318. package/lib/toolbar/search-bar/search-bar.component.d.ts +34 -0
  319. package/lib/toolbar/search-bar/search-bar.component.d.ts.map +1 -0
  320. package/lib/toolbar/toolbar-button-visibility.service.d.ts +67 -0
  321. package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +1 -0
  322. package/lib/toolbar/toolbar-event.service.d.ts +96 -0
  323. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -0
  324. package/lib/toolbar/toolbar.module.d.ts +19 -0
  325. package/lib/toolbar/toolbar.module.d.ts.map +1 -0
  326. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +31 -0
  327. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +1 -0
  328. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +12 -0
  329. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +1 -0
  330. package/lib/viewers/grab-n-drag.directive.d.ts +19 -0
  331. package/lib/viewers/grab-n-drag.directive.d.ts.map +1 -0
  332. package/lib/viewers/image-viewer/image-viewer.component.d.ts +57 -0
  333. package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +1 -0
  334. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +25 -0
  335. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +1 -0
  336. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +69 -0
  337. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -0
  338. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +17 -0
  339. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +1 -0
  340. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +82 -0
  341. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +1 -0
  342. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +82 -0
  343. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +1 -0
  344. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +22 -0
  345. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +1 -0
  346. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +20 -0
  347. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +1 -0
  348. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +14 -0
  349. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +1 -0
  350. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +42 -0
  351. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +1 -0
  352. package/lib/viewers/rotation-persist/rotation-api.service.d.ts +14 -0
  353. package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +1 -0
  354. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +27 -0
  355. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +1 -0
  356. package/lib/viewers/rotation-persist/rotation.model.d.ts +5 -0
  357. package/lib/viewers/rotation-persist/rotation.model.d.ts.map +1 -0
  358. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +23 -0
  359. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +1 -0
  360. package/lib/viewers/viewer-event.service.d.ts +23 -0
  361. package/lib/viewers/viewer-event.service.d.ts.map +1 -0
  362. package/lib/viewers/viewer-exception.model.d.ts +15 -0
  363. package/lib/viewers/viewer-exception.model.d.ts.map +1 -0
  364. package/lib/viewers/viewer-util.service.d.ts +10 -0
  365. package/lib/viewers/viewer-util.service.d.ts.map +1 -0
  366. package/package.json +12 -10
  367. package/public_api.d.ts +30 -0
  368. package/public_api.d.ts.map +1 -0
  369. package/index.d.ts.map +0 -1
@@ -0,0 +1,208 @@
1
+ import { v4 as uuid } from 'uuid';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2Fubm90YXRpb25zLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxLQUFLLGVBQWUsTUFBTSwrQkFBK0IsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFnQjVDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBdUI7SUFDOUMsYUFBYSxFQUFFLEVBQUU7SUFDakIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixlQUFlLEVBQUUsRUFBRTtJQUNuQixzQkFBc0IsRUFBRSxFQUFFO0lBQzFCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO0lBQzNDLHFCQUFxQixFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0lBQ3hELE9BQU8sRUFBRSxLQUFLO0lBQ2QsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFDO0FBRUYsTUFBTSxVQUFVLE9BQU8sQ0FDckIsS0FBSyxHQUFHLFlBQVksRUFDcEIsTUFBMEM7SUFFMUMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFcEIsS0FBSyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sYUFBYSxHQUFHO2dCQUNwQixHQUFHLEtBQUssQ0FBQyxhQUFhO2dCQUN0QixVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDM0IsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLGFBQWE7Z0JBQ2IsT0FBTyxFQUFFLElBQUk7YUFD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QUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCAqIGFzIGZyb21Bbm5vdGF0aW9ucyBmcm9tICcuLi9hY3Rpb25zL2Fubm90YXRpb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L2Fubm90YXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudCB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQvY29tbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBTdG9yZVV0aWxzIH0gZnJvbSAnLi4vc3RvcmUtdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL21vZGVscy9ldmVudC1zZWxlY3QubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVycyB9IGZyb20gJy4uL21vZGVscy9maWx0ZXJzLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvblNldFN0YXRlIHtcbiAgYW5ub3RhdGlvblNldDogYW55O1xuICBhbm5vdGF0aW9uRW50aXRpZXM6IHsgW2lkOiBzdHJpbmddOiBhbnkgfTtcbiAgYW5ub3RhdGlvblBhZ2VFbnRpdGllczogeyBbaWQ6IHN0cmluZ106IEFubm90YXRpb25bXSB9O1xuICBjb21tZW50RW50aXRpZXM6IHsgW2lkOiBzdHJpbmddOiBDb21tZW50IH07XG4gIHNlbGVjdGVkQW5ub3RhdGlvbjogU2VsZWN0aW9uQW5ub3RhdGlvbjtcbiAgY29tbWVudFNlYXJjaFF1ZXJpZXM6IHsgY29tbWVudFNlYXJjaDogc3RyaW5nIH07XG4gIGNvbW1lbnRTdW1tYXJ5RmlsdGVyczogeyBoYXNGaWx0ZXI6IGJvb2xlYW47IGZpbHRlcnM6IEZpbHRlcnMgfTtcbiAgbG9hZGVkOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlOiBBbm5vdGF0aW9uU2V0U3RhdGUgPSB7XG4gIGFubm90YXRpb25TZXQ6IHt9LFxuICBhbm5vdGF0aW9uRW50aXRpZXM6IHt9LFxuICBjb21tZW50RW50aXRpZXM6IHt9LFxuICBhbm5vdGF0aW9uUGFnZUVudGl0aWVzOiB7fSxcbiAgc2VsZWN0ZWRBbm5vdGF0aW9uOiBudWxsLFxuICBjb21tZW50U2VhcmNoUXVlcmllczogeyBjb21tZW50U2VhcmNoOiAnJyB9LFxuICBjb21tZW50U3VtbWFyeUZpbHRlcnM6IHsgaGFzRmlsdGVyOiBmYWxzZSwgZmlsdGVyczoge30gfSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGxvYWRlZDogZmFsc2UsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlcihcbiAgc3RhdGUgPSBpbml0aWFsU3RhdGUsXG4gIGFjdGlvbjogZnJvbUFubm90YXRpb25zLkFubm90YXRpb25zQWN0aW9uc1xuKTogQW5ub3RhdGlvblNldFN0YXRlIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuXG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuTE9BRF9BTk5PVEFUSU9OX1NFVDoge1xuICAgICAgY29uc3QgYW5ub3RhdGlvblNldCA9IHtcbiAgICAgICAgLi4uc3RhdGUuYW5ub3RhdGlvblNldCxcbiAgICAgICAgZG9jdW1lbnRJZDogYWN0aW9uLnBheWxvYWRcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgICAgIGFubm90YXRpb25TZXQsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLkxPQURfQU5OT1RBVElPTl9TRVRfU1VDQ0VTUzpcbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5MT0FEX0FOTk9UQVRJT05fU0VUX0ZBSUw6IHtcbiAgICAgIGNvbnN0IGFubm90YXRpb25TZXQgPSBhY3Rpb24ucGF5bG9hZC5zdGF0dXMgPT09IDIwMCA/IGFjdGlvbi5wYXlsb2FkLmJvZHkgOlxuICAgICAgICB7XG4gICAgICAgICAgLi4uc3RhdGUuYW5ub3RhdGlvblNldCxcbiAgICAgICAgICBhbm5vdGF0aW9uczogW10sXG4gICAgICAgICAgaWQ6IHV1aWQoKVxuICAgICAgICB9O1xuICAgICAgY29uc3QgYW5ub3RhdGlvbkVudGl0aWVzID0gU3RvcmVVdGlscy5nZW5lcmF0ZUFubm90YXRpb25FbnRpdGllcyhhbm5vdGF0aW9uU2V0LmFubm90YXRpb25zKTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25QYWdlRW50aXRpZXMgPSBTdG9yZVV0aWxzLmdyb3VwQnlLZXlFbnRpdGllcyhhbm5vdGF0aW9uU2V0LmFubm90YXRpb25zLCAncGFnZScpO1xuICAgICAgY29uc3QgY29tbWVudEVudGl0aWVzID0gU3RvcmVVdGlscy5nZW5lcmF0ZUNvbW1lbnRzRW50aXRpZXMoYW5ub3RhdGlvblNldC5hbm5vdGF0aW9ucyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYW5ub3RhdGlvblNldCxcbiAgICAgICAgYW5ub3RhdGlvbkVudGl0aWVzLFxuICAgICAgICBhbm5vdGF0aW9uUGFnZUVudGl0aWVzLFxuICAgICAgICBjb21tZW50RW50aXRpZXMsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuU0FWRV9BTk5PVEFUSU9OX1NFVF9TVUNDRVNTOiB7XG4gICAgICBjb25zdCBhbm5vID0gYWN0aW9uLnBheWxvYWQuYW5ub3RhdGlvbnM7XG4gICAgICBjb25zdCBhbm5FbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuYW5ub3RhdGlvbkVudGl0aWVzLFxuICAgICAgICAuLi5hbm5vXG4gICAgICB9O1xuICAgICAgY29uc3QgYW5ub3RBcnJheSA9IE9iamVjdC5rZXlzKGFubkVudGl0aWVzKS5tYXAoa2V5ID0+IGFubkVudGl0aWVzW2tleV0pO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbkVudGl0aWVzID0gU3RvcmVVdGlscy5nZW5lcmF0ZUFubm90YXRpb25FbnRpdGllcyhhbm5vdEFycmF5KTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25QYWdlRW50aXRpZXMgPSBTdG9yZVV0aWxzLmdyb3VwQnlLZXlFbnRpdGllcyhhbm5vdEFycmF5LCAncGFnZScpO1xuICAgICAgY29uc3QgY29tbWVudEVudGl0aWVzID0gU3RvcmVVdGlscy5nZW5lcmF0ZUNvbW1lbnRzRW50aXRpZXMoYW5ub3RBcnJheSk7XG4gICAgICBjb25zdCBzZWxlY3RlZEFubm90YXRpb24gPSB7XG4gICAgICAgIC4uLnN0YXRlLnNlbGVjdGVkQW5ub3RhdGlvbixcbiAgICAgICAgLi4uYW5ubyxcbiAgICAgICAgZWRpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGFubm90YXRpb25FbnRpdGllcyxcbiAgICAgICAgYW5ub3RhdGlvblBhZ2VFbnRpdGllcyxcbiAgICAgICAgY29tbWVudEVudGl0aWVzLFxuICAgICAgICBzZWxlY3RlZEFubm90YXRpb24sXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG5cbiAgICB9XG5cbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5TQVZFX0FOTk9UQVRJT05fU1VDQ0VTUzoge1xuICAgICAgY29uc3QgYW5ubyA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgYW5uRW50aXRpZXMgPSB7XG4gICAgICAgIC4uLnN0YXRlLmFubm90YXRpb25FbnRpdGllcyxcbiAgICAgICAgW2Fubm8uaWRdOiBhbm5vXG4gICAgICB9O1xuICAgICAgY29uc3QgYW5ub3RBcnJheSA9IE9iamVjdC5rZXlzKGFubkVudGl0aWVzKS5tYXAoa2V5ID0+IGFubkVudGl0aWVzW2tleV0pO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbkVudGl0aWVzID0gU3RvcmVVdGlscy5nZW5lcmF0ZUFubm90YXRpb25FbnRpdGllcyhhbm5vdEFycmF5KTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25QYWdlRW50aXRpZXMgPSBTdG9yZVV0aWxzLmdyb3VwQnlLZXlFbnRpdGllcyhhbm5vdEFycmF5LCAncGFnZScpO1xuICAgICAgY29uc3QgY29tbWVudEVudGl0aWVzID0gU3RvcmVVdGlscy5nZW5lcmF0ZUNvbW1lbnRzRW50aXRpZXMoYW5ub3RBcnJheSk7XG4gICAgICBjb25zdCBzZWxlY3RlZEFubm90YXRpb24gPSB7XG4gICAgICAgIC4uLnN0YXRlLnNlbGVjdGVkQW5ub3RhdGlvbixcbiAgICAgICAgYW5ub3RhdGlvbklkOiBhbm5vLmlkLFxuICAgICAgICBlZGl0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYW5ub3RhdGlvbkVudGl0aWVzLFxuICAgICAgICBhbm5vdGF0aW9uUGFnZUVudGl0aWVzLFxuICAgICAgICBjb21tZW50RW50aXRpZXMsXG4gICAgICAgIHNlbGVjdGVkQW5ub3RhdGlvbixcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGxvYWRlZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5ERUxFVEVfQU5OT1RBVElPTl9TVUNDRVNTOiB7XG4gICAgICBjb25zdCBpZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgcGFnZSA9IHN0YXRlLmFubm90YXRpb25FbnRpdGllc1tpZF0ucGFnZTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25FbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuYW5ub3RhdGlvbkVudGl0aWVzXG4gICAgICB9O1xuICAgICAgZGVsZXRlIGFubm90YXRpb25FbnRpdGllc1tpZF07XG4gICAgICBjb25zdCBwYWdlQW5ub3RhdGlvbnNSZW1vdmVkID0gW1xuICAgICAgICAuLi5zdGF0ZS5hbm5vdGF0aW9uUGFnZUVudGl0aWVzW3BhZ2VdLmZpbHRlcihhbm5vID0+IGFubm8uaWQgIT09IGlkKVxuICAgICAgXTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25QYWdlRW50aXRpZXMgPSB7XG4gICAgICAgIC4uLnN0YXRlLmFubm90YXRpb25QYWdlRW50aXRpZXMsXG4gICAgICAgIFtwYWdlXTogcGFnZUFubm90YXRpb25zUmVtb3ZlZFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNvbW1lbnRFbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuY29tbWVudEVudGl0aWVzXG4gICAgICB9O1xuICAgICAgaWYgKHN0YXRlLmNvbW1lbnRFbnRpdGllc1tpZF0pIHtcbiAgICAgICAgZGVsZXRlIGNvbW1lbnRFbnRpdGllc1tpZF07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYW5ub3RhdGlvbkVudGl0aWVzLFxuICAgICAgICBhbm5vdGF0aW9uUGFnZUVudGl0aWVzLFxuICAgICAgICBjb21tZW50RW50aXRpZXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQW5ub3RhdGlvbnMuQUREX09SX0VESVRfQ09NTUVOVDoge1xuICAgICAgY29uc3QgY29tbWVudCA9IHtcbiAgICAgICAgW2FjdGlvbi5wYXlsb2FkLmFubm90YXRpb25JZF06IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9O1xuICAgICAgY29uc3QgY29tbWVudHMgPSB7XG4gICAgICAgIC4uLnN0YXRlLmNvbW1lbnRFbnRpdGllcyxcbiAgICAgICAgLi4uY29tbWVudFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50RW50aXRpZXM6IGNvbW1lbnRzXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLlNFTEVDVF9BTk5PVEFUSU9OOiB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCBjb21tZW50RW50aXR5ID0ge1xuICAgICAgICAuLi5zdGF0ZS5jb21tZW50RW50aXRpZXNbcGF5bG9hZC5hbm5vdGF0aW9uSWRdLFxuICAgICAgICBlZGl0YWJsZTogcGF5bG9hZC5lZGl0YWJsZSxcbiAgICAgICAgc2VsZWN0ZWQ6IHBheWxvYWQuc2VsZWN0ZWRcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc2V0Q29tbWVudEVudFNlbGVjdCA9IFN0b3JlVXRpbHMucmVzZXRDb21tZW50RW50U2VsZWN0KHsgLi4uc3RhdGUuY29tbWVudEVudGl0aWVzIH0pO1xuXG4gICAgICBjb25zdCBjb21tZW50RW50aXRpZXMgPSBwYXlsb2FkLmFubm90YXRpb25JZCAmJiBzdGF0ZS5jb21tZW50RW50aXRpZXNbcGF5bG9hZC5hbm5vdGF0aW9uSWRdID8ge1xuICAgICAgICAuLi5yZXNldENvbW1lbnRFbnRTZWxlY3QsXG4gICAgICAgIFtwYXlsb2FkLmFubm90YXRpb25JZF06IGNvbW1lbnRFbnRpdHlcbiAgICAgIH0gOiB7IC4uLnJlc2V0Q29tbWVudEVudFNlbGVjdCB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY29tbWVudEVudGl0aWVzLFxuICAgICAgICBzZWxlY3RlZEFubm90YXRpb246IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLlNFQVJDSF9DT01NRU5UOiB7XG4gICAgICBjb25zdCBjb21tZW50U2VhcmNoUXVlcmllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuY29tbWVudFNlYXJjaFF1ZXJpZXMsXG4gICAgICAgIGNvbW1lbnRTZWFyY2g6IGFjdGlvbi5wYXlsb2FkXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb21tZW50RW50aXRpZXMgPSBTdG9yZVV0aWxzLnJlc2V0Q29tbWVudEVudFNlbGVjdCh7IC4uLnN0YXRlLmNvbW1lbnRFbnRpdGllcyB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50RW50aXRpZXMsXG4gICAgICAgIGNvbW1lbnRTZWFyY2hRdWVyaWVzXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFubm90YXRpb25zLkFQUExZX0NPTU1FTlRfU1VNTUFSWV9GSUxURVI6IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGhhc1RhZ0ZpbHRlciA9ICgpID0+IHtcbiAgICAgICAgbGV0IGlzRmlsdGVyZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHBheWxvYWQudGFnRmlsdGVycykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBheWxvYWQudGFnRmlsdGVycykubWFwKGZpbHRlciA9PiB7XG4gICAgICAgICAgICBpZiAocGF5bG9hZC50YWdGaWx0ZXJzW2ZpbHRlcl0gJiYgIWlzRmlsdGVyZWQpIHtcbiAgICAgICAgICAgICAgaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRmlsdGVyZWQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFzRmlsdGVyID0gKGhhc1RhZ0ZpbHRlcigpIHx8ICEhcGF5bG9hZC5kYXRlUmFuZ2VGcm9tIHx8ICEhcGF5bG9hZC5kYXRlUmFuZ2VUbyk7XG4gICAgICBjb25zdCBjb21tZW50U3VtbWFyeUZpbHRlcnMgPSB7XG4gICAgICAgIGhhc0ZpbHRlcixcbiAgICAgICAgZmlsdGVyczogcGF5bG9hZFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50U3VtbWFyeUZpbHRlcnM6IGNvbW1lbnRTdW1tYXJ5RmlsdGVyc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Bbm5vdGF0aW9ucy5DTEVBUl9DT01NRU5UX1NVTU1BUllfRklMVEVSOiB7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb21tZW50U3VtbWFyeUZpbHRlcnM6IHsgLi4uaW5pdGlhbFN0YXRlLmNvbW1lbnRTdW1tYXJ5RmlsdGVycyB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0QW5ub1NldCA9IChzdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlKSA9PiBzdGF0ZS5hbm5vdGF0aW9uU2V0O1xuZXhwb3J0IGNvbnN0IGdldENvbW1lbnRFbnRzID0gKHN0YXRlOiBBbm5vdGF0aW9uU2V0U3RhdGUpID0+IHN0YXRlLmNvbW1lbnRFbnRpdGllcztcbmV4cG9ydCBjb25zdCBnZXRBbm5vUGFnZUVudCA9IChzdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlKSA9PiBzdGF0ZS5hbm5vdGF0aW9uUGFnZUVudGl0aWVzO1xuZXhwb3J0IGNvbnN0IGdldEFubm9FbnQgPSAoc3RhdGU6IEFubm90YXRpb25TZXRTdGF0ZSkgPT4gc3RhdGUuYW5ub3RhdGlvbkVudGl0aWVzO1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkQW5ubyA9IChzdGF0ZTogQW5ub3RhdGlvblNldFN0YXRlKSA9PiBzdGF0ZS5zZWxlY3RlZEFubm90YXRpb247XG5leHBvcnQgY29uc3QgY29tbWVudFNlYXJjaFEgPSAoc3RhdGU6IEFubm90YXRpb25TZXRTdGF0ZSkgPT4gc3RhdGUuY29tbWVudFNlYXJjaFF1ZXJpZXM7XG5leHBvcnQgY29uc3QgZ2V0U3VtbWFyeUZpbHRlcnMgPSAoc3RhdGU6IEFubm90YXRpb25TZXRTdGF0ZSkgPT4gc3RhdGUuY29tbWVudFN1bW1hcnlGaWx0ZXJzO1xuIl19
@@ -0,0 +1,125 @@
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
+ scrollTop: null,
12
+ };
13
+ export function bookmarksReducer(state = initialBookmarksState, action) {
14
+ switch (action.type) {
15
+ case fromBookmarks.LOAD_BOOKMARKS: {
16
+ return {
17
+ ...state,
18
+ loading: true
19
+ };
20
+ }
21
+ case fromBookmarks.LOAD_BOOKMARKS_SUCCESS:
22
+ case fromBookmarks.LOAD_BOOKMARKS_FAIL: {
23
+ const bookmarks = action.payload.status === 200 ? action.payload.body : [];
24
+ const bookmarkEntities = generateBookmarkEntities(bookmarks);
25
+ const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarks, 'pageNumber');
26
+ return {
27
+ ...state,
28
+ bookmarks,
29
+ bookmarkEntities,
30
+ bookmarkPageEntities,
31
+ loaded: true
32
+ };
33
+ }
34
+ case fromBookmarks.CREATE_BOOKMARK_SUCCESS: {
35
+ const bookmark = action.payload;
36
+ const bookmarkEntities = {
37
+ ...state.bookmarkEntities,
38
+ [bookmark.id]: bookmark,
39
+ };
40
+ const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);
41
+ const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');
42
+ const editableBookmark = bookmark.id;
43
+ return {
44
+ ...state,
45
+ bookmarkEntities,
46
+ editableBookmark,
47
+ bookmarkPageEntities,
48
+ loading: false,
49
+ loaded: true
50
+ };
51
+ }
52
+ case fromBookmarks.MOVE_BOOKMARK_SUCCESS: {
53
+ const movedBookmarks = generateBookmarkEntities(action.payload);
54
+ const bookmarkEntities = {
55
+ ...state.bookmarkEntities,
56
+ ...movedBookmarks
57
+ };
58
+ return {
59
+ ...state,
60
+ bookmarkEntities,
61
+ loading: false,
62
+ loaded: true
63
+ };
64
+ }
65
+ case fromBookmarks.DELETE_BOOKMARK_SUCCESS: {
66
+ const bookmarkIds = action.payload;
67
+ const bookmarkEntities = { ...state.bookmarkEntities };
68
+ const bookmarkPageEntities = { ...state.bookmarkPageEntities };
69
+ const removeBookmarksByPage = {};
70
+ bookmarkIds.forEach(bookmarkId => {
71
+ if (removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] !== undefined &&
72
+ removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].length > 0) {
73
+ removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber].push(bookmarkId);
74
+ }
75
+ else {
76
+ removeBookmarksByPage[bookmarkEntities[bookmarkId].pageNumber] = [bookmarkId];
77
+ }
78
+ delete bookmarkEntities[bookmarkId];
79
+ });
80
+ Object.entries(removeBookmarksByPage).forEach(([pageNumber, bmrkIds]) => {
81
+ bookmarkPageEntities[pageNumber]
82
+ = bookmarkPageEntities[pageNumber].filter(bookmark => !bmrkIds.includes(bookmark.id));
83
+ });
84
+ return {
85
+ ...state,
86
+ bookmarkEntities,
87
+ bookmarkPageEntities,
88
+ loading: false,
89
+ loaded: true
90
+ };
91
+ }
92
+ case fromBookmarks.UPDATE_BOOKMARK_SUCCESS: {
93
+ const bookmark = action.payload;
94
+ const bookmarkEntities = {
95
+ ...state.bookmarkEntities,
96
+ [bookmark.id]: { ...bookmark }
97
+ };
98
+ const bookmarkArray = Object.keys(bookmarkEntities).map(key => bookmarkEntities[key]);
99
+ const bookmarkPageEntities = StoreUtils.groupByKeyEntities(bookmarkArray, 'pageNumber');
100
+ const editableBookmark = undefined;
101
+ return {
102
+ ...state,
103
+ bookmarkEntities,
104
+ editableBookmark,
105
+ bookmarkPageEntities,
106
+ loading: false,
107
+ loaded: true
108
+ };
109
+ }
110
+ case fromBookmarks.UPDATE_BOOKMARK_SCROLL_TOP: {
111
+ const scrollTop = action.payload;
112
+ return {
113
+ ...state,
114
+ scrollTop: scrollTop
115
+ };
116
+ }
117
+ }
118
+ return state;
119
+ }
120
+ export const getBookmarks = (state) => state.bookmarks;
121
+ export const getBookmarkEnts = (state) => state.bookmarkEntities;
122
+ export const getBookmarkPageEnt = (state) => state.bookmarkPageEntities;
123
+ export const getEditBookmark = (state) => state.editableBookmark;
124
+ export const getScrollTop = (state) => state.scrollTop;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9zdG9yZS9yZWR1Y2Vycy9ib29rbWFya3MucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssYUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVlwRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBbUI7SUFDbkQsU0FBUyxFQUFFLEVBQUU7SUFDYixnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLG9CQUFvQixFQUFFLEVBQUU7SUFDeEIsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQixNQUFNLEVBQUUsS0FBSztJQUNiLE9BQU8sRUFBRSxLQUFLO0lBQ2QsU0FBUyxFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcscUJBQXFCLEVBQzVELE1BQXNDO0lBRXRDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXBCLEtBQUssYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssYUFBYSxDQUFDLHNCQUFzQixDQUFDO1FBQzFDLEtBQUssYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFD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LENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFXLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDekMsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsU0FBUyxFQUFFLFNBQVM7YUFDckIsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7QUFDakYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQXFCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcm9tQm9va21hcmtzIGZyb20gJy4uL2FjdGlvbnMvYm9va21hcmsuYWN0aW9ucyc7XG5pbXBvcnQgeyBCb29rbWFyayB9IGZyb20gJy4uLy4uL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9ib29rbWFya3MvYm9va21hcmtzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3RvcmVVdGlscyB9IGZyb20gJy4uL3N0b3JlLXV0aWxzJztcbmltcG9ydCB7IGdlbmVyYXRlQm9va21hcmtFbnRpdGllcyB9IGZyb20gJy4uL2Jvb2ttYXJrcy1zdG9yZS11dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9va21hcmtzU3RhdGUge1xuICBib29rbWFya3M6IEJvb2ttYXJrW107XG4gIGJvb2ttYXJrRW50aXRpZXM6IHsgW2lkOiBzdHJpbmddOiBCb29rbWFyayB9O1xuICBib29rbWFya1BhZ2VFbnRpdGllczogeyBbaWQ6IHN0cmluZ106IGFueSB9O1xuICBlZGl0YWJsZUJvb2ttYXJrOiBzdHJpbmc7XG4gIGxvYWRlZDogYm9vbGVhbjtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgc2Nyb2xsVG9wPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgaW5pdGlhbEJvb2ttYXJrc1N0YXRlOiBCb29rbWFya3NTdGF0ZSA9IHtcbiAgYm9va21hcmtzOiBbXSxcbiAgYm9va21hcmtFbnRpdGllczoge30sXG4gIGJvb2ttYXJrUGFnZUVudGl0aWVzOiB7fSxcbiAgZWRpdGFibGVCb29rbWFyazogdW5kZWZpbmVkLFxuICBsb2FkZWQ6IGZhbHNlLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgc2Nyb2xsVG9wOiBudWxsLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJvb2ttYXJrc1JlZHVjZXIoc3RhdGUgPSBpbml0aWFsQm9va21hcmtzU3RhdGUsXG4gIGFjdGlvbjogZnJvbUJvb2ttYXJrcy5Cb29rbWFya3NBY3Rpb25zKTogQm9va21hcmtzU3RhdGUge1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblxuICAgIGNhc2UgZnJvbUJvb2ttYXJrcy5MT0FEX0JPT0tNQVJLUzoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQm9va21hcmtzLkxPQURfQk9PS01BUktTX1NVQ0NFU1M6XG4gICAgY2FzZSBmcm9tQm9va21hcmtzLkxPQURfQk9PS01BUktTX0ZBSUw6IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrcyA9IGFjdGlvbi5wYXlsb2FkLnN0YXR1cyA9PT0gMjAwID8gYWN0aW9uLnBheWxvYWQuYm9keSA6IFtdO1xuICAgICAgY29uc3QgYm9va21hcmtFbnRpdGllcyA9IGdlbmVyYXRlQm9va21hcmtFbnRpdGllcyhib29rbWFya3MpO1xuICAgICAgY29uc3QgYm9va21hcmtQYWdlRW50aXRpZXMgPSBTdG9yZVV0aWxzLmdyb3VwQnlLZXlFbnRpdGllcyhib29rbWFya3MsICdwYWdlTnVtYmVyJyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBib29rbWFya3MsXG4gICAgICAgIGJvb2ttYXJrRW50aXRpZXMsXG4gICAgICAgIGJvb2ttYXJrUGFnZUVudGl0aWVzLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQm9va21hcmtzLkNSRUFURV9CT09LTUFSS19TVUNDRVNTOiB7XG4gICAgICBjb25zdCBib29rbWFyazogQm9va21hcmsgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGJvb2ttYXJrRW50aXRpZXMgPSB7XG4gICAgICAgIC4uLnN0YXRlLmJvb2ttYXJrRW50aXRpZXMsXG4gICAgICAgIFtib29rbWFyay5pZF06IGJvb2ttYXJrLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrQXJyYXkgPSBPYmplY3Qua2V5cyhib29rbWFya0VudGl0aWVzKS5tYXAoa2V5ID0+IGJvb2ttYXJrRW50aXRpZXNba2V5XSk7XG4gICAgICBjb25zdCBib29rbWFya1BhZ2VFbnRpdGllcyA9IFN0b3JlVXRpbHMuZ3JvdXBCeUtleUVudGl0aWVzKGJvb2ttYXJrQXJyYXksICdwYWdlTnVtYmVyJyk7XG4gICAgICBjb25zdCBlZGl0YWJsZUJvb2ttYXJrID0gYm9va21hcmsuaWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgZWRpdGFibGVCb29rbWFyayxcbiAgICAgICAgYm9va21hcmtQYWdlRW50aXRpZXMsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQm9va21hcmtzLk1PVkVfQk9PS01BUktfU1VDQ0VTUzoge1xuICAgICAgY29uc3QgbW92ZWRCb29rbWFya3MgPSBnZW5lcmF0ZUJvb2ttYXJrRW50aXRpZXMoYWN0aW9uLnBheWxvYWQpO1xuICAgICAgY29uc3QgYm9va21hcmtFbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgLi4ubW92ZWRCb29rbWFya3NcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGxvYWRlZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Cb29rbWFya3MuREVMRVRFX0JPT0tNQVJLX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrSWRzOiBzdHJpbmdbXSA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgYm9va21hcmtFbnRpdGllcyA9IHsgLi4uc3RhdGUuYm9va21hcmtFbnRpdGllcyB9O1xuICAgICAgY29uc3QgYm9va21hcmtQYWdlRW50aXRpZXMgPSB7IC4uLnN0YXRlLmJvb2ttYXJrUGFnZUVudGl0aWVzIH07XG4gICAgICBjb25zdCByZW1vdmVCb29rbWFya3NCeVBhZ2U6IHsgW3BhZ2VOdW1iZXI6IG51bWJlcl06IHN0cmluZ1tdIH0gPSB7fTtcbiAgICAgIGJvb2ttYXJrSWRzLmZvckVhY2goYm9va21hcmtJZCA9PiB7XG4gICAgICAgIGlmIChyZW1vdmVCb29rbWFya3NCeVBhZ2VbYm9va21hcmtFbnRpdGllc1tib29rbWFya0lkXS5wYWdlTnVtYmVyXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcmVtb3ZlQm9va21hcmtzQnlQYWdlW2Jvb2ttYXJrRW50aXRpZXNbYm9va21hcmtJZF0ucGFnZU51bWJlcl0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlbW92ZUJvb2ttYXJrc0J5UGFnZVtib29rbWFya0VudGl0aWVzW2Jvb2ttYXJrSWRdLnBhZ2VOdW1iZXJdLnB1c2goYm9va21hcmtJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtb3ZlQm9va21hcmtzQnlQYWdlW2Jvb2ttYXJrRW50aXRpZXNbYm9va21hcmtJZF0ucGFnZU51bWJlcl0gPSBbYm9va21hcmtJZF07XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIGJvb2ttYXJrRW50aXRpZXNbYm9va21hcmtJZF07XG4gICAgICB9KTtcblxuICAgICAgT2JqZWN0LmVudHJpZXMocmVtb3ZlQm9va21hcmtzQnlQYWdlKS5mb3JFYWNoKFxuICAgICAgICAoW3BhZ2VOdW1iZXIsIGJtcmtJZHNdKSA9PiB7XG4gICAgICAgICAgYm9va21hcmtQYWdlRW50aXRpZXNbcGFnZU51bWJlcl1cbiAgICAgICAgICAgID0gYm9va21hcmtQYWdlRW50aXRpZXNbcGFnZU51bWJlcl0uZmlsdGVyKGJvb2ttYXJrID0+ICFibXJrSWRzLmluY2x1ZGVzKGJvb2ttYXJrLmlkKSk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBib29rbWFya0VudGl0aWVzLFxuICAgICAgICBib29rbWFya1BhZ2VFbnRpdGllcyxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGxvYWRlZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21Cb29rbWFya3MuVVBEQVRFX0JPT0tNQVJLX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrOiBCb29rbWFyayA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgYm9va21hcmtFbnRpdGllcyA9IHtcbiAgICAgICAgLi4uc3RhdGUuYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgW2Jvb2ttYXJrLmlkXTogeyAuLi5ib29rbWFyayB9XG4gICAgICB9O1xuICAgICAgY29uc3QgYm9va21hcmtBcnJheSA9IE9iamVjdC5rZXlzKGJvb2ttYXJrRW50aXRpZXMpLm1hcChrZXkgPT4gYm9va21hcmtFbnRpdGllc1trZXldKTtcbiAgICAgIGNvbnN0IGJvb2ttYXJrUGFnZUVudGl0aWVzID0gU3RvcmVVdGlscy5ncm91cEJ5S2V5RW50aXRpZXMoYm9va21hcmtBcnJheSwgJ3BhZ2VOdW1iZXInKTtcbiAgICAgIGNvbnN0IGVkaXRhYmxlQm9va21hcmsgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYm9va21hcmtFbnRpdGllcyxcbiAgICAgICAgZWRpdGFibGVCb29rbWFyayxcbiAgICAgICAgYm9va21hcmtQYWdlRW50aXRpZXMsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgZnJvbUJvb2ttYXJrcy5VUERBVEVfQk9PS01BUktfU0NST0xMX1RPUDoge1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wOiBudW1iZXIgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRCb29rbWFya3MgPSAoc3RhdGU6IEJvb2ttYXJrc1N0YXRlKSA9PiBzdGF0ZS5ib29rbWFya3M7XG5leHBvcnQgY29uc3QgZ2V0Qm9va21hcmtFbnRzID0gKHN0YXRlOiBCb29rbWFya3NTdGF0ZSkgPT4gc3RhdGUuYm9va21hcmtFbnRpdGllcztcbmV4cG9ydCBjb25zdCBnZXRCb29rbWFya1BhZ2VFbnQgPSAoc3RhdGU6IEJvb2ttYXJrc1N0YXRlKSA9PiBzdGF0ZS5ib29rbWFya1BhZ2VFbnRpdGllcztcbmV4cG9ydCBjb25zdCBnZXRFZGl0Qm9va21hcmsgPSAoc3RhdGU6IEJvb2ttYXJrc1N0YXRlKSA9PiBzdGF0ZS5lZGl0YWJsZUJvb2ttYXJrO1xuZXhwb3J0IGNvbnN0IGdldFNjcm9sbFRvcCA9IChzdGF0ZTogQm9va21hcmtzU3RhdGUpID0+IHN0YXRlLnNjcm9sbFRvcDsiXX0=
@@ -0,0 +1,158 @@
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
+ const pageNumberInput = document.getElementById('pageNumber');
85
+ const pageIndex = pageNumberInput?.value ? parseInt(pageNumberInput.value, 10) - 1 : 0;
86
+ const loadedPage = payload[pageIndex]?.div['attributes']?.style?.value ?? '';
87
+ payload.forEach(page => {
88
+ const sizingValue = page.div?.['attributes']?.style?.value ?? '';
89
+ const widthMatch = sizingValue.match(/width:\s*round\(down,\s*var\(--scale-factor\)\s*\*\s*([\d.]+)([a-z%]+)?,.*var\(--scale-round-x, ([\d.]+)([a-z%]+)?\)\)/);
90
+ const heightMatch = sizingValue.match(/height:\s*round\(down,\s*var\(--scale-factor\)\s*\*\s*([\d.]+)([a-z%]+)?,.*var\(--scale-round-y, ([\d.]+)([a-z%]+)?\)\)/);
91
+ const scaleRoundXMatch = loadedPage.match(/--scale-round-x:\s*([\d.]+)([a-z%]+)?/);
92
+ const scaleRoundYMatch = loadedPage.match(/--scale-round-y:\s*([\d.]+)([a-z%]+)?/);
93
+ // You can now use widthUnit, heightUnit, scaleRoundXUnit, scaleRoundYUnit as needed
94
+ const scaleFactor = page.viewportScale ?? 1;
95
+ const scaleRoundX = scaleRoundXMatch ? parseFloat(scaleRoundXMatch[1]) : 1;
96
+ const scaleRoundY = scaleRoundYMatch ? parseFloat(scaleRoundYMatch[1]) : 1;
97
+ const baseWidth = widthMatch ? parseFloat(widthMatch[1]) : undefined;
98
+ const baseHeight = heightMatch ? parseFloat(heightMatch[1]) : undefined;
99
+ function roundDown(value, step) {
100
+ return Math.floor(value / step) * step;
101
+ }
102
+ const computedWidth = baseWidth !== undefined
103
+ ? roundDown(scaleFactor * baseWidth, scaleRoundX)
104
+ : page.div['clientWidth'];
105
+ const computedHeight = baseHeight !== undefined
106
+ ? roundDown(scaleFactor * baseHeight, scaleRoundY)
107
+ : page.div['clientHeight'];
108
+ if (!hasDifferentPageSize && pageHeight && pageWidth &&
109
+ (pageHeight !== computedHeight || pageWidth !== computedWidth)) {
110
+ hasDifferentPageSize = true;
111
+ }
112
+ else {
113
+ pageHeight = computedHeight;
114
+ pageWidth = computedWidth;
115
+ }
116
+ const styles = {
117
+ left: page.div['offsetLeft'],
118
+ height: computedHeight,
119
+ width: computedWidth
120
+ };
121
+ const scaleRotation = {
122
+ scale: page.scale,
123
+ rotation: page.rotation
124
+ };
125
+ const p = {
126
+ styles,
127
+ scaleRotation,
128
+ viewportScale: page.viewportScale
129
+ };
130
+ pages = {
131
+ ...pages,
132
+ [page.id]: p
133
+ };
134
+ });
135
+ return {
136
+ ...state,
137
+ pages,
138
+ hasDifferentPageSize
139
+ };
140
+ }
141
+ case fromActions.POSITION_UPDATED: {
142
+ const pdfPosition = action.payload;
143
+ return {
144
+ ...state,
145
+ pdfPosition
146
+ };
147
+ }
148
+ }
149
+ return state;
150
+ }
151
+ export const getDocPages = (state) => state.pages;
152
+ export const getDocId = (state) => state.documentId;
153
+ export const getPdfPos = (state) => state.pdfPosition;
154
+ export const getHasDifferentPageSizes = (state) => state.hasDifferentPageSize;
155
+ export const getRotation = (state) => state.rotation;
156
+ export const rotationLoaded = (state) => state.rotationLoaded;
157
+ export const getConvertedDocument = (state) => state.convertedDocument;
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2RvY3VtZW50LnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQWdDM0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtCO0lBQ2pELGlCQUFpQixFQUFFLFNBQVM7SUFDNUIsVUFBVSxFQUFFLFNBQVM7SUFDckIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsS0FBSyxFQUFFLEVBQUU7SUFDVCxvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLE9BQU8sRUFBRSxLQUFLO0lBQ2QsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFDO0FBRUYsTUFBTSxVQUFVLFVBQVUsQ0FBRSxLQUFLLEdBQUcsb0JBQW9CLEVBQzVCLE1BQW1DO0lBRTdELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXBCLEtBQUssV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxpQkFBaUIsR0FBRztnQkFDeEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUNuQixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFDO1lBQ0YsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsaUJBQWlCO2FBQ2xCLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLGlCQUFpQixHQUFHO2dCQUN4QixHQUFHLEVBQUUsU0FBUztnQkFDZCxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDdEIsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGlCQUFpQjthQUNs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QyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztBQUM3RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7QUFDN0UsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcm9tQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50U3RhdGUge1xuICBjb252ZXJ0ZWREb2N1bWVudDoge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGVycm9yOiBzdHJpbmc7XG4gIH07XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcGRmUG9zaXRpb246IFBkZlBvc2l0aW9uO1xuICBwYWdlczoge1tpZDogc3RyaW5nXTogRG9jdW1lbnRQYWdlc307XG4gIGhhc0RpZmZlcmVudFBhZ2VTaXplOiBib29sZWFuO1xuICByb3RhdGlvbjogbnVtYmVyO1xuICByb3RhdGlvbkxvYWRlZDogYm9vbGVhbjtcbiAgbG9hZGVkOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50UGFnZXMge1xuIG51bWJlck9mUGFnZXM6IG51bWJlcjtcbiBzdHlsZXM6IHsgbGVmdDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgd2lkdGg6IG51bWJlciB9O1xuIHNjYWxlUm90YXRpb246IHsgc2NhbGU6IHN0cmluZzsgcm90YXRpb246IHN0cmluZyB9O1xuIHZpZXdwb3J0U2NhbGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZGZQb3NpdGlvbiB7XG4gIHBhZ2VOdW1iZXI6IG51bWJlcjtcbiAgc2NhbGU6IG51bWJlcjtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgcm90YXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxEb2N1bWVudFN0YXRlOiBEb2N1bWVudFN0YXRlID0ge1xuICBjb252ZXJ0ZWREb2N1bWVudDogdW5kZWZpbmVkLFxuICBkb2N1bWVudElkOiB1bmRlZmluZWQsXG4gIHBkZlBvc2l0aW9uOiB1bmRlZmluZWQsXG4gIHBhZ2VzOiB7fSxcbiAgaGFzRGlmZmVyZW50UGFnZVNpemU6IGZhbHNlLFxuICByb3RhdGlvbjogdW5kZWZpbmVkLFxuICByb3RhdGlvbkxvYWRlZDogZmFsc2UsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBsb2FkZWQ6IGZhbHNlXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZG9jUmVkdWNlciAoc3RhdGUgPSBpbml0aWFsRG9jdW1lbnRTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGZyb21BY3Rpb25zLkRvY3VtZW50QWN0aW9ucyk6IERvY3VtZW50U3RhdGUge1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuQ09OVkVSVF9TVUNDRVNTOiB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWREb2N1bWVudCA9IHtcbiAgICAgICAgdXJsOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgZXJyb3I6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjb252ZXJ0ZWREb2N1bWVudFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21BY3Rpb25zLkNPTlZFUlRfRkFJTDoge1xuICAgICAgY29uc3QgY29udmVydGVkRG9jdW1lbnQgPSB7XG4gICAgICAgIHVybDogdW5kZWZpbmVkLFxuICAgICAgICBlcnJvcjogYWN0aW9uLnBheWxvYWRcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY29udmVydGVkRG9jdW1lbnRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5DTEVBUl9DT05WRVJUX0RPQ19VUkw6IHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZERvY3VtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGNvbnZlcnRlZERvY3VtZW50XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNhc2UgZnJvbUFjdGlvbnMuTE9BRF9ST1RBVElPTjoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJvdGF0aW9uTG9hZGVkOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21BY3Rpb25zLkxPQURfUk9UQVRJT05fU1VDQ0VTUzoge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IHJvdGF0aW9uID0gbWV0YWRhdGEgPyBtZXRhZGF0YS5yb3RhdGlvbkFuZ2xlIDogMDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICByb3RhdGlvbixcbiAgICAgICAgcm90YXRpb25Mb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5MT0FEX1JPVEFUSU9OX0ZBSUw6IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgcm90YXRpb25Mb2FkZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5TQVZFX1JPVEFUSU9OX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBjb25zdCByb3RhdGlvbiA9IG1ldGFkYXRhLnJvdGF0aW9uQW5nbGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcm90YXRpb25cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5TRVRfRE9DVU1FTlRfSUQgOiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZG9jdW1lbnRJZDogYWN0aW9uLnBheWxvYWRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSBmcm9tQWN0aW9ucy5BRERfUEFHRVM6IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGxldCBwYWdlcyA9IHt9O1xuICAgICAgbGV0IHBhZ2VIZWlnaHQ7XG4gICAgICBsZXQgcGFnZVdpZHRoO1xuICAgICAgbGV0IGhhc0RpZmZlcmVudFBhZ2VTaXplID0gc3RhdGUuaGFzRGlmZmVyZW50UGFnZVNpemU7XG4gICAgICBjb25zdCBwYWdlTnVtYmVySW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZU51bWJlcicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBjb25zdCBwYWdlSW5kZXggPSBwYWdlTnVtYmVySW5wdXQ/LnZhbHVlID8gcGFyc2VJbnQocGFnZU51bWJlcklucHV0LnZhbHVlLCAxMCkgLSAxIDogMDtcbiAgICAgIGNvbnN0IGxvYWRlZFBhZ2UgPSBwYXlsb2FkW3BhZ2VJbmRleF0/LmRpdlsnYXR0cmlidXRlcyddPy5zdHlsZT8udmFsdWUgPz8gJyc7XG4gICAgICBwYXlsb2FkLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICAgIGNvbnN0IHNpemluZ1ZhbHVlID0gcGFnZS5kaXY/LlsnYXR0cmlidXRlcyddPy5zdHlsZT8udmFsdWUgPz8gJyc7XG4gICAgICAgIGNvbnN0IHdpZHRoTWF0Y2ggID0gc2l6aW5nVmFsdWUubWF0Y2goL3dpZHRoOlxccypyb3VuZFxcKGRvd24sXFxzKnZhclxcKC0tc2NhbGUtZmFjdG9yXFwpXFxzKlxcKlxccyooW1xcZC5dKykoW2EteiVdKyk/LC4qdmFyXFwoLS1zY2FsZS1yb3VuZC14LCAoW1xcZC5dKykoW2EteiVdKyk/XFwpXFwpLyk7XG4gICAgICAgIGNvbnN0IGhlaWdodE1hdGNoID0gc2l6aW5nVmFsdWUubWF0Y2goL2hlaWdodDpcXHMqcm91bmRcXChkb3duLFxccyp2YXJcXCgtLXNjYWxlLWZhY3RvclxcKVxccypcXCpcXHMqKFtcXGQuXSspKFthLXolXSspPywuKnZhclxcKC0tc2NhbGUtcm91bmQteSwgKFtcXGQuXSspKFthLXolXSspP1xcKVxcKS8pO1xuICAgICAgICBjb25zdCBzY2FsZVJvdW5kWE1hdGNoID0gbG9hZGVkUGFnZS5tYXRjaCgvLS1zY2FsZS1yb3VuZC14OlxccyooW1xcZC5dKykoW2EteiVdKyk/Lyk7XG4gICAgICAgIGNvbnN0IHNjYWxlUm91bmRZTWF0Y2ggPSBsb2FkZWRQYWdlLm1hdGNoKC8tLXNjYWxlLXJvdW5kLXk6XFxzKihbXFxkLl0rKShbYS16JV0rKT8vKTtcbiAgICAgICAgLy8gWW91IGNhbiBub3cgdXNlIHdpZHRoVW5pdCwgaGVpZ2h0VW5pdCwgc2NhbGVSb3VuZFhVbml0LCBzY2FsZVJvdW5kWVVuaXQgYXMgbmVlZGVkXG4gICAgICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gcGFnZS52aWV3cG9ydFNjYWxlID8/IDE7XG4gICAgICAgIGNvbnN0IHNjYWxlUm91bmRYID0gc2NhbGVSb3VuZFhNYXRjaCA/IHBhcnNlRmxvYXQoc2NhbGVSb3VuZFhNYXRjaFsxXSkgOiAxO1xuICAgICAgICBjb25zdCBzY2FsZVJvdW5kWSA9IHNjYWxlUm91bmRZTWF0Y2ggPyBwYXJzZUZsb2F0KHNjYWxlUm91bmRZTWF0Y2hbMV0pIDogMTtcbiAgICAgICAgY29uc3QgYmFzZVdpZHRoID0gd2lkdGhNYXRjaCA/IHBhcnNlRmxvYXQod2lkdGhNYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGJhc2VIZWlnaHQgPSBoZWlnaHRNYXRjaCA/IHBhcnNlRmxvYXQoaGVpZ2h0TWF0Y2hbMV0pIDogdW5kZWZpbmVkO1xuICAgICAgICBmdW5jdGlvbiByb3VuZERvd24odmFsdWU6IG51bWJlciwgc3RlcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih2YWx1ZSAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdXRlZFdpZHRoID0gYmFzZVdpZHRoICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHJvdW5kRG93bihzY2FsZUZhY3RvciAqIGJhc2VXaWR0aCwgc2NhbGVSb3VuZFgpXG4gICAgICAgICAgOiBwYWdlLmRpdlsnY2xpZW50V2lkdGgnXTtcbiAgICAgICAgY29uc3QgY29tcHV0ZWRIZWlnaHQgPSBiYXNlSGVpZ2h0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHJvdW5kRG93bihzY2FsZUZhY3RvciAqIGJhc2VIZWlnaHQsIHNjYWxlUm91bmRZKVxuICAgICAgICAgIDogcGFnZS5kaXZbJ2NsaWVudEhlaWdodCddO1xuXG4gICAgICAgIGlmICghaGFzRGlmZmVyZW50UGFnZVNpemUgJiYgcGFnZUhlaWdodCAmJiBwYWdlV2lkdGggJiZcbiAgICAgICAgICAocGFnZUhlaWdodCAhPT0gY29tcHV0ZWRIZWlnaHQgfHwgcGFnZVdpZHRoICE9PSBjb21wdXRlZFdpZHRoKSkge1xuICAgICAgICAgIGhhc0RpZmZlcmVudFBhZ2VTaXplID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYWdlSGVpZ2h0ID0gY29tcHV0ZWRIZWlnaHQ7XG4gICAgICAgICAgcGFnZVdpZHRoID0gY29tcHV0ZWRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgICAgbGVmdDogcGFnZS5kaXZbJ29mZnNldExlZnQnXSxcbiAgICAgICAgICBoZWlnaHQ6IGNvbXB1dGVkSGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiBjb21wdXRlZFdpZHRoXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2NhbGVSb3RhdGlvbiA9IHtcbiAgICAgICAgICBzY2FsZTogcGFnZS5zY2FsZSxcbiAgICAgICAgICByb3RhdGlvbjogcGFnZS5yb3RhdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHAgPSB7XG4gICAgICAgICAgc3R5bGVzLFxuICAgICAgICAgIHNjYWxlUm90YXRpb24sXG4gICAgICAgICAgdmlld3BvcnRTY2FsZTogcGFnZS52aWV3cG9ydFNjYWxlXG4gICAgICAgIH07XG5cbiAgICAgICAgcGFnZXMgPSB7XG4gICAgICAgICAgLi4ucGFnZXMsXG4gICAgICAgICAgW3BhZ2UuaWRdOiBwXG4gICAgICAgIH07XG5cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhZ2VzLFxuICAgICAgICBoYXNEaWZmZXJlbnRQYWdlU2l6ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlIGZyb21BY3Rpb25zLlBPU0lUSU9OX1VQREFURUQ6IHtcbiAgICAgIGNvbnN0IHBkZlBvc2l0aW9uID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGRmUG9zaXRpb25cbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cbmV4cG9ydCBjb25zdCBnZXREb2NQYWdlcyA9IChzdGF0ZTogRG9jdW1lbnRTdGF0ZSkgPT4gc3RhdGUucGFnZXM7XG5leHBvcnQgY29uc3QgZ2V0RG9jSWQgPSAoc3RhdGU6IERvY3VtZW50U3RhdGUpID0+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