@cleavelandprice/ngx-lib 3.7.2 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/active-directory/active-directory.module.d.ts +11 -11
  2. package/active-directory/gui/components/user-chooser/user-chooser.component.d.ts +58 -58
  3. package/active-directory/gui/components/user-form-field/user-form-field.component.d.ts +29 -29
  4. package/active-directory/gui/gui.module.d.ts +25 -25
  5. package/active-directory/gui/index.d.ts +5 -5
  6. package/active-directory/gui/model/selectable-user.d.ts +5 -5
  7. package/active-directory/gui/model/user-chooser-data.d.ts +22 -22
  8. package/active-directory/gui/model/user-chooser-filter-options.d.ts +7 -7
  9. package/active-directory/gui/model/user-chooser-mode.d.ts +4 -4
  10. package/active-directory/gui/model/user-chooser-pre-processing-group.d.ts +6 -6
  11. package/active-directory/gui/public_api.d.ts +8 -8
  12. package/active-directory/index.d.ts +5 -5
  13. package/active-directory/model/ad-object-with-children.d.ts +4 -4
  14. package/active-directory/model/ad-object.d.ts +13 -13
  15. package/active-directory/model/cache-object.d.ts +4 -4
  16. package/active-directory/model/caching-config.d.ts +4 -4
  17. package/active-directory/model/cleaveland-price-user.d.ts +17 -17
  18. package/active-directory/model/group.d.ts +7 -7
  19. package/active-directory/model/logging-config.d.ts +6 -6
  20. package/active-directory/model/service-config.d.ts +8 -8
  21. package/active-directory/model/user-or-group.d.ts +7 -7
  22. package/active-directory/model/user.d.ts +23 -23
  23. package/active-directory/public_api.d.ts +11 -11
  24. package/active-directory/services/active-directory.service.d.ts +32 -32
  25. package/authentication/authentication.base.module.d.ts +7 -7
  26. package/authentication/index.d.ts +5 -5
  27. package/authentication/model/abstract-authentication-service.d.ts +16 -16
  28. package/authentication/model/authenticated-user.d.ts +9 -9
  29. package/authentication/model/authentication-request.d.ts +8 -6
  30. package/authentication/model/service-config.d.ts +8 -7
  31. package/authentication/object/index.d.ts +5 -5
  32. package/authentication/object/model/service-config.d.ts +4 -4
  33. package/authentication/object/object.module.d.ts +11 -11
  34. package/authentication/object/public_api.d.ts +3 -3
  35. package/authentication/object/services/authentication.service.d.ts +25 -25
  36. package/authentication/public_api.d.ts +5 -5
  37. package/authentication/token/gui/components/login/login.component.d.ts +14 -13
  38. package/authentication/token/gui/components/login-form/login-form.component.d.ts +29 -28
  39. package/authentication/token/gui/index.d.ts +5 -5
  40. package/authentication/token/gui/model/login-form-data.d.ts +4 -3
  41. package/authentication/token/gui/model/service-config.d.ts +5 -5
  42. package/authentication/token/gui/public_api.d.ts +6 -6
  43. package/authentication/token/gui/services/authentication.service.d.ts +15 -15
  44. package/authentication/token/gui/token-gui.module.d.ts +21 -21
  45. package/authentication/token/index.d.ts +5 -5
  46. package/authentication/token/model/authentication-token.d.ts +17 -17
  47. package/authentication/token/model/service-config.d.ts +5 -5
  48. package/authentication/token/public_api.d.ts +4 -4
  49. package/authentication/token/services/authentication.service.d.ts +24 -24
  50. package/authentication/token/token.module.d.ts +11 -11
  51. package/dialog/components/base/base.component.d.ts +22 -22
  52. package/dialog/components/choice/choice.component.d.ts +12 -12
  53. package/dialog/components/confirmation/confirmation.component.d.ts +12 -12
  54. package/dialog/components/input/input.component.d.ts +12 -12
  55. package/dialog/components/message/message.component.d.ts +12 -12
  56. package/dialog/dialog.module.d.ts +18 -18
  57. package/dialog/index.d.ts +5 -5
  58. package/dialog/model/confirmation-dialog-mode.d.ts +6 -6
  59. package/dialog/model/dialog-base-data.d.ts +10 -10
  60. package/dialog/model/dialog-choice-data.d.ts +4 -4
  61. package/dialog/model/dialog-type.d.ts +6 -6
  62. package/dialog/public_api.d.ts +9 -9
  63. package/esm2022/active-directory/active-directory.module.mjs +40 -0
  64. package/{esm2020 → esm2022}/active-directory/cleavelandprice-ngx-lib-active-directory.mjs +4 -4
  65. package/{esm2020 → esm2022}/active-directory/gui/cleavelandprice-ngx-lib-active-directory-gui.mjs +4 -4
  66. package/esm2022/active-directory/gui/components/user-chooser/user-chooser.component.mjs +375 -0
  67. package/esm2022/active-directory/gui/components/user-form-field/user-form-field.component.mjs +130 -0
  68. package/esm2022/active-directory/gui/gui.module.mjs +97 -0
  69. package/{esm2020 → esm2022}/active-directory/gui/model/selectable-user.mjs +1 -1
  70. package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-data.mjs +32 -32
  71. package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-filter-options.mjs +9 -9
  72. package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-mode.mjs +5 -5
  73. package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-pre-processing-group.mjs +8 -8
  74. package/{esm2020 → esm2022}/active-directory/gui/public_api.mjs +8 -8
  75. package/{esm2020 → esm2022}/active-directory/model/ad-object-with-children.mjs +1 -1
  76. package/{esm2020 → esm2022}/active-directory/model/ad-object.mjs +1 -1
  77. package/{esm2020 → esm2022}/active-directory/model/cache-object.mjs +2 -2
  78. package/{esm2020 → esm2022}/active-directory/model/caching-config.mjs +6 -6
  79. package/{esm2020 → esm2022}/active-directory/model/cleaveland-price-user.mjs +1 -1
  80. package/{esm2020 → esm2022}/active-directory/model/group.mjs +1 -1
  81. package/{esm2020 → esm2022}/active-directory/model/logging-config.mjs +8 -8
  82. package/{esm2020 → esm2022}/active-directory/model/service-config.mjs +11 -11
  83. package/{esm2020 → esm2022}/active-directory/model/user-or-group.mjs +1 -1
  84. package/{esm2020 → esm2022}/active-directory/model/user.mjs +1 -1
  85. package/{esm2020 → esm2022}/active-directory/public_api.mjs +11 -11
  86. package/esm2022/active-directory/services/active-directory.service.mjs +112 -0
  87. package/esm2022/authentication/authentication.base.module.mjs +20 -0
  88. package/{esm2020 → esm2022}/authentication/cleavelandprice-ngx-lib-authentication.mjs +4 -4
  89. package/{esm2020 → esm2022}/authentication/model/abstract-authentication-service.mjs +1 -1
  90. package/{esm2020 → esm2022}/authentication/model/authenticated-user.mjs +1 -1
  91. package/{esm2020 → esm2022}/authentication/model/authentication-request.mjs +2 -2
  92. package/esm2022/authentication/model/service-config.mjs +12 -0
  93. package/{esm2020 → esm2022}/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs +4 -4
  94. package/esm2022/authentication/object/model/service-config.mjs +9 -0
  95. package/esm2022/authentication/object/object.module.mjs +40 -0
  96. package/{esm2020 → esm2022}/authentication/object/public_api.mjs +3 -3
  97. package/esm2022/authentication/object/services/authentication.service.mjs +109 -0
  98. package/{esm2020 → esm2022}/authentication/public_api.mjs +5 -5
  99. package/{esm2020 → esm2022}/authentication/token/cleavelandprice-ngx-lib-authentication-token.mjs +4 -4
  100. package/{esm2020 → esm2022}/authentication/token/gui/cleavelandprice-ngx-lib-authentication-token-gui.mjs +4 -4
  101. package/esm2022/authentication/token/gui/components/login/login.component.mjs +45 -0
  102. package/esm2022/authentication/token/gui/components/login-form/login-form.component.mjs +74 -0
  103. package/{esm2020 → esm2022}/authentication/token/gui/model/login-form-data.mjs +2 -2
  104. package/esm2022/authentication/token/gui/model/service-config.mjs +10 -0
  105. package/{esm2020 → esm2022}/authentication/token/gui/public_api.mjs +6 -6
  106. package/esm2022/authentication/token/gui/services/authentication.service.mjs +79 -0
  107. package/esm2022/authentication/token/gui/token-gui.module.mjs +82 -0
  108. package/{esm2020 → esm2022}/authentication/token/model/authentication-token.mjs +1 -1
  109. package/esm2022/authentication/token/model/service-config.mjs +10 -0
  110. package/{esm2020 → esm2022}/authentication/token/public_api.mjs +4 -4
  111. package/esm2022/authentication/token/services/authentication.service.mjs +120 -0
  112. package/esm2022/authentication/token/token.module.mjs +40 -0
  113. package/{esm2020 → esm2022}/cleavelandprice-ngx-lib.mjs +4 -4
  114. package/{esm2020 → esm2022}/dialog/cleavelandprice-ngx-lib-dialog.mjs +4 -4
  115. package/esm2022/dialog/components/base/base.component.mjs +93 -0
  116. package/esm2022/dialog/components/choice/choice.component.mjs +24 -0
  117. package/esm2022/dialog/components/confirmation/confirmation.component.mjs +24 -0
  118. package/esm2022/dialog/components/input/input.component.mjs +24 -0
  119. package/esm2022/dialog/components/message/message.component.mjs +24 -0
  120. package/esm2022/dialog/dialog.module.mjs +69 -0
  121. package/{esm2020 → esm2022}/dialog/model/confirmation-dialog-mode.mjs +7 -7
  122. package/{esm2020 → esm2022}/dialog/model/dialog-base-data.mjs +1 -1
  123. package/{esm2020 → esm2022}/dialog/model/dialog-choice-data.mjs +1 -1
  124. package/{esm2020 → esm2022}/dialog/model/dialog-type.mjs +7 -7
  125. package/{esm2020 → esm2022}/dialog/public_api.mjs +9 -9
  126. package/{esm2020 → esm2022}/lib/model/app-path-config.mjs +1 -1
  127. package/{esm2020 → esm2022}/lib/model/app-type.mjs +1 -1
  128. package/{esm2020 → esm2022}/lib/model/app.mjs +1 -1
  129. package/esm2022/lib/model/service-config.mjs +21 -0
  130. package/esm2022/lib/ngx-lib.module.mjs +37 -0
  131. package/esm2022/lib/services/app-path-config.service.mjs +46 -0
  132. package/{esm2020 → esm2022}/msgraph/cleavelandprice-ngx-lib-msgraph.mjs +4 -4
  133. package/{esm2020 → esm2022}/msgraph/model/address.mjs +1 -1
  134. package/{esm2020 → esm2022}/msgraph/model/attendee.mjs +1 -1
  135. package/{esm2020 → esm2022}/msgraph/model/bulk-calendar-events.mjs +1 -1
  136. package/{esm2020 → esm2022}/msgraph/model/bulk-calendar-request.mjs +1 -1
  137. package/{esm2020 → esm2022}/msgraph/model/calendar-event.mjs +1 -1
  138. package/{esm2020 → esm2022}/msgraph/model/coordinates.mjs +1 -1
  139. package/{esm2020 → esm2022}/msgraph/model/email-address.mjs +1 -1
  140. package/{esm2020 → esm2022}/msgraph/model/location.mjs +1 -1
  141. package/{esm2020 → esm2022}/msgraph/model/online-meeting-info.mjs +1 -1
  142. package/{esm2020 → esm2022}/msgraph/model/patterned-recurrence.mjs +1 -1
  143. package/{esm2020 → esm2022}/msgraph/model/phone.mjs +1 -1
  144. package/{esm2020 → esm2022}/msgraph/model/recipient.mjs +1 -1
  145. package/{esm2020 → esm2022}/msgraph/model/recurrence-pattern.mjs +1 -1
  146. package/{esm2020 → esm2022}/msgraph/model/recurrence-range.mjs +1 -1
  147. package/{esm2020 → esm2022}/msgraph/model/response-status.mjs +1 -1
  148. package/{esm2020 → esm2022}/msgraph/model/room.mjs +5 -5
  149. package/{esm2020 → esm2022}/msgraph/model/user.mjs +131 -131
  150. package/esm2022/msgraph/msgraph.module.mjs +33 -0
  151. package/{esm2020 → esm2022}/msgraph/public_api.mjs +18 -18
  152. package/{esm2020 → esm2022}/public_api.mjs +9 -9
  153. package/{esm2020 → esm2022}/quill/cleavelandprice-ngx-lib-quill.mjs +4 -4
  154. package/esm2022/quill/components/editor/editor.component.mjs +297 -0
  155. package/esm2022/quill/components/raw/raw.component.mjs +25 -0
  156. package/{esm2020 → esm2022}/quill/mention/cleavelandprice-ngx-lib-quill-mention.mjs +4 -4
  157. package/esm2022/quill/mention/components/editor/editor.component.mjs +156 -0
  158. package/{esm2020 → esm2022}/quill/mention/model/buttons.mjs +3 -3
  159. package/{esm2020 → esm2022}/quill/mention/model/config.mjs +3 -3
  160. package/{esm2020 → esm2022}/quill/mention/model/dialog-data.mjs +1 -1
  161. package/{esm2020 → esm2022}/quill/mention/model/icons.mjs +3 -3
  162. package/{esm2020 → esm2022}/quill/mention/model/tooltips.mjs +3 -3
  163. package/{esm2020 → esm2022}/quill/mention/public_api.mjs +7 -7
  164. package/esm2022/quill/mention/quill-mention.module.mjs +66 -0
  165. package/{esm2020 → esm2022}/quill/model/buttons.mjs +51 -51
  166. package/{esm2020 → esm2022}/quill/model/config.mjs +39 -39
  167. package/{esm2020 → esm2022}/quill/model/dialog-data.mjs +1 -1
  168. package/{esm2020 → esm2022}/quill/model/icons.mjs +8 -8
  169. package/{esm2020 → esm2022}/quill/model/tooltips.mjs +54 -54
  170. package/{esm2020 → esm2022}/quill/public_api.mjs +8 -8
  171. package/esm2022/quill/quill.module.mjs +79 -0
  172. package/{esm2020 → esm2022}/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs +4 -4
  173. package/esm2022/sharepoint/components/employee-photo/employee-photo.component.mjs +38 -0
  174. package/{esm2020 → esm2022}/sharepoint/model/base-item.mjs +1 -1
  175. package/{esm2020 → esm2022}/sharepoint/model/base-request-credential.mjs +1 -1
  176. package/{esm2020 → esm2022}/sharepoint/model/base-request.mjs +1 -1
  177. package/{esm2020 → esm2022}/sharepoint/model/cache-object.mjs +2 -2
  178. package/{esm2020 → esm2022}/sharepoint/model/file-request.mjs +1 -1
  179. package/{esm2020 → esm2022}/sharepoint/model/folder-request.mjs +1 -1
  180. package/{esm2020 → esm2022}/sharepoint/model/list-item.mjs +1 -1
  181. package/{esm2020 → esm2022}/sharepoint/model/list-items-request.mjs +1 -1
  182. package/{esm2020 → esm2022}/sharepoint/model/photo-item.mjs +1 -1
  183. package/{esm2020 → esm2022}/sharepoint/model/service-config.mjs +28 -28
  184. package/{esm2020 → esm2022}/sharepoint/model/uri-request.mjs +1 -1
  185. package/{esm2020 → esm2022}/sharepoint/model/user-request.mjs +1 -1
  186. package/{esm2020 → esm2022}/sharepoint/model/user.mjs +1 -1
  187. package/esm2022/sharepoint/pipes/employee-photo-url.pipe.mjs +39 -0
  188. package/{esm2020 → esm2022}/sharepoint/public_api.mjs +16 -16
  189. package/esm2022/sharepoint/services/sharepoint.service.mjs +149 -0
  190. package/esm2022/sharepoint/sharepoint.module.mjs +50 -0
  191. package/{esm2020 → esm2022}/upload/cleavelandprice-ngx-lib-upload.mjs +4 -4
  192. package/esm2022/upload/components/upload/upload.component.mjs +35 -0
  193. package/esm2022/upload/components/upload-dialog/upload-dialog.component.mjs +87 -0
  194. package/{esm2020 → esm2022}/upload/model/database-file-info.mjs +1 -1
  195. package/{esm2020 → esm2022}/upload/model/file-upload-request.mjs +1 -1
  196. package/{esm2020 → esm2022}/upload/model/filesystem-file-info.mjs +1 -1
  197. package/{esm2020 → esm2022}/upload/model/service-config.mjs +15 -15
  198. package/{esm2020 → esm2022}/upload/public_api.mjs +8 -8
  199. package/esm2022/upload/services/upload.service.mjs +92 -0
  200. package/esm2022/upload/upload.module.mjs +66 -0
  201. package/{esm2020 → esm2022}/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs +4 -4
  202. package/esm2022/url-utilities/pipes/safe-resource-url.pipe.mjs +21 -0
  203. package/esm2022/url-utilities/pipes/safe-url.pipe.mjs +21 -0
  204. package/esm2022/url-utilities/pipes/uri-scheme.pipe.mjs +106 -0
  205. package/{esm2020 → esm2022}/url-utilities/public_api.mjs +4 -4
  206. package/esm2022/url-utilities/url-utilities.module.mjs +35 -0
  207. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory-gui.mjs +586 -587
  208. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory-gui.mjs.map +1 -1
  209. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory.mjs +155 -156
  210. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -1
  211. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-authentication-object.mjs +141 -140
  212. package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -0
  213. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-authentication-token-gui.mjs +232 -226
  214. package/fesm2022/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -0
  215. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-authentication-token.mjs +152 -151
  216. package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -0
  217. package/{fesm2015 → fesm2022}/cleavelandprice-ngx-lib-authentication.mjs +25 -25
  218. package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs.map +1 -0
  219. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-dialog.mjs +205 -205
  220. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
  221. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-msgraph.mjs +161 -162
  222. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-msgraph.mjs.map +1 -1
  223. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill-mention.mjs +188 -189
  224. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill-mention.mjs.map +1 -1
  225. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill.mjs +492 -493
  226. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill.mjs.map +1 -1
  227. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-sharepoint.mjs +269 -270
  228. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -1
  229. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-upload.mjs +250 -251
  230. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
  231. package/{fesm2015 → fesm2022}/cleavelandprice-ngx-lib-url-utilities.mjs +159 -160
  232. package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -0
  233. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib.mjs +91 -92
  234. package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib.mjs.map +1 -1
  235. package/index.d.ts +5 -5
  236. package/lib/model/app-path-config.d.ts +10 -10
  237. package/lib/model/app-type.d.ts +5 -5
  238. package/lib/model/app.d.ts +16 -16
  239. package/lib/model/service-config.d.ts +6 -6
  240. package/lib/ngx-lib.module.d.ts +10 -10
  241. package/lib/services/app-path-config.service.d.ts +20 -20
  242. package/msgraph/index.d.ts +5 -5
  243. package/msgraph/model/address.d.ts +7 -7
  244. package/msgraph/model/attendee.d.ts +13 -13
  245. package/msgraph/model/bulk-calendar-events.d.ts +5 -5
  246. package/msgraph/model/bulk-calendar-request.d.ts +3 -3
  247. package/msgraph/model/calendar-event.d.ts +53 -53
  248. package/msgraph/model/coordinates.d.ts +7 -7
  249. package/msgraph/model/email-address.d.ts +4 -4
  250. package/msgraph/model/location.d.ts +12 -12
  251. package/msgraph/model/online-meeting-info.d.ts +9 -9
  252. package/msgraph/model/patterned-recurrence.d.ts +6 -6
  253. package/msgraph/model/phone.d.ts +4 -4
  254. package/msgraph/model/recipient.d.ts +4 -4
  255. package/msgraph/model/recurrence-pattern.d.ts +9 -9
  256. package/msgraph/model/recurrence-range.d.ts +7 -7
  257. package/msgraph/model/response-status.d.ts +4 -4
  258. package/msgraph/model/room.d.ts +22 -22
  259. package/msgraph/model/user.d.ts +29 -29
  260. package/msgraph/msgraph.module.d.ts +10 -10
  261. package/msgraph/public_api.d.ts +18 -18
  262. package/package.json +61 -93
  263. package/public_api.d.ts +6 -6
  264. package/quill/components/editor/editor.component.d.ts +53 -53
  265. package/quill/components/raw/raw.component.d.ts +7 -7
  266. package/quill/index.d.ts +5 -5
  267. package/quill/mention/components/editor/editor.component.d.ts +20 -20
  268. package/quill/mention/index.d.ts +5 -5
  269. package/quill/mention/model/buttons.d.ts +3 -3
  270. package/quill/mention/model/config.d.ts +3 -3
  271. package/quill/mention/model/dialog-data.d.ts +5 -5
  272. package/quill/mention/model/icons.d.ts +3 -3
  273. package/quill/mention/model/tooltips.d.ts +3 -3
  274. package/quill/mention/public_api.d.ts +7 -7
  275. package/quill/mention/quill-mention.module.d.ts +17 -17
  276. package/quill/model/buttons.d.ts +29 -29
  277. package/quill/model/config.d.ts +30 -30
  278. package/quill/model/dialog-data.d.ts +21 -21
  279. package/quill/model/icons.d.ts +6 -6
  280. package/quill/model/tooltips.d.ts +32 -32
  281. package/quill/public_api.d.ts +8 -8
  282. package/quill/quill.module.d.ts +20 -20
  283. package/sharepoint/components/employee-photo/employee-photo.component.d.ts +16 -16
  284. package/sharepoint/index.d.ts +5 -5
  285. package/sharepoint/model/base-item.d.ts +4 -4
  286. package/sharepoint/model/base-request-credential.d.ts +4 -4
  287. package/sharepoint/model/base-request.d.ts +8 -8
  288. package/sharepoint/model/cache-object.d.ts +4 -4
  289. package/sharepoint/model/file-request.d.ts +4 -4
  290. package/sharepoint/model/folder-request.d.ts +4 -4
  291. package/sharepoint/model/list-item.d.ts +10 -10
  292. package/sharepoint/model/list-items-request.d.ts +5 -5
  293. package/sharepoint/model/photo-item.d.ts +11 -11
  294. package/sharepoint/model/service-config.d.ts +23 -23
  295. package/sharepoint/model/uri-request.d.ts +4 -4
  296. package/sharepoint/model/user-request.d.ts +4 -4
  297. package/sharepoint/model/user.d.ts +12 -12
  298. package/sharepoint/pipes/employee-photo-url.pipe.d.ts +12 -12
  299. package/sharepoint/public_api.d.ts +16 -16
  300. package/sharepoint/services/sharepoint.service.d.ts +25 -25
  301. package/sharepoint/sharepoint.module.d.ts +13 -13
  302. package/upload/components/upload/upload.component.d.ts +15 -15
  303. package/upload/components/upload-dialog/upload-dialog.component.d.ts +24 -24
  304. package/upload/index.d.ts +5 -5
  305. package/upload/model/database-file-info.d.ts +7 -7
  306. package/upload/model/file-upload-request.d.ts +6 -6
  307. package/upload/model/filesystem-file-info.d.ts +12 -12
  308. package/upload/model/service-config.d.ts +15 -15
  309. package/upload/public_api.d.ts +8 -8
  310. package/upload/services/upload.service.d.ts +18 -18
  311. package/upload/upload.module.d.ts +17 -17
  312. package/url-utilities/index.d.ts +5 -5
  313. package/url-utilities/pipes/safe-resource-url.pipe.d.ts +10 -10
  314. package/url-utilities/pipes/safe-url.pipe.d.ts +10 -10
  315. package/url-utilities/pipes/uri-scheme.pipe.d.ts +9 -9
  316. package/url-utilities/public_api.d.ts +4 -4
  317. package/url-utilities/url-utilities.module.d.ts +10 -10
  318. package/esm2020/active-directory/active-directory.module.mjs +0 -39
  319. package/esm2020/active-directory/gui/components/user-chooser/user-chooser.component.mjs +0 -374
  320. package/esm2020/active-directory/gui/components/user-form-field/user-form-field.component.mjs +0 -129
  321. package/esm2020/active-directory/gui/gui.module.mjs +0 -96
  322. package/esm2020/active-directory/services/active-directory.service.mjs +0 -111
  323. package/esm2020/authentication/authentication.base.module.mjs +0 -19
  324. package/esm2020/authentication/model/service-config.mjs +0 -11
  325. package/esm2020/authentication/object/model/service-config.mjs +0 -9
  326. package/esm2020/authentication/object/object.module.mjs +0 -39
  327. package/esm2020/authentication/object/services/authentication.service.mjs +0 -106
  328. package/esm2020/authentication/token/gui/components/login/login.component.mjs +0 -39
  329. package/esm2020/authentication/token/gui/components/login-form/login-form.component.mjs +0 -71
  330. package/esm2020/authentication/token/gui/model/service-config.mjs +0 -10
  331. package/esm2020/authentication/token/gui/services/authentication.service.mjs +0 -78
  332. package/esm2020/authentication/token/gui/token-gui.module.mjs +0 -81
  333. package/esm2020/authentication/token/model/service-config.mjs +0 -10
  334. package/esm2020/authentication/token/services/authentication.service.mjs +0 -117
  335. package/esm2020/authentication/token/token.module.mjs +0 -39
  336. package/esm2020/dialog/components/base/base.component.mjs +0 -92
  337. package/esm2020/dialog/components/choice/choice.component.mjs +0 -23
  338. package/esm2020/dialog/components/confirmation/confirmation.component.mjs +0 -23
  339. package/esm2020/dialog/components/input/input.component.mjs +0 -23
  340. package/esm2020/dialog/components/message/message.component.mjs +0 -23
  341. package/esm2020/dialog/dialog.module.mjs +0 -68
  342. package/esm2020/lib/model/service-config.mjs +0 -21
  343. package/esm2020/lib/ngx-lib.module.mjs +0 -36
  344. package/esm2020/lib/services/app-path-config.service.mjs +0 -45
  345. package/esm2020/msgraph/msgraph.module.mjs +0 -32
  346. package/esm2020/quill/components/editor/editor.component.mjs +0 -296
  347. package/esm2020/quill/components/raw/raw.component.mjs +0 -24
  348. package/esm2020/quill/mention/components/editor/editor.component.mjs +0 -155
  349. package/esm2020/quill/mention/quill-mention.module.mjs +0 -65
  350. package/esm2020/quill/quill.module.mjs +0 -78
  351. package/esm2020/sharepoint/components/employee-photo/employee-photo.component.mjs +0 -37
  352. package/esm2020/sharepoint/pipes/employee-photo-url.pipe.mjs +0 -38
  353. package/esm2020/sharepoint/services/sharepoint.service.mjs +0 -148
  354. package/esm2020/sharepoint/sharepoint.module.mjs +0 -49
  355. package/esm2020/upload/components/upload/upload.component.mjs +0 -34
  356. package/esm2020/upload/components/upload-dialog/upload-dialog.component.mjs +0 -86
  357. package/esm2020/upload/services/upload.service.mjs +0 -91
  358. package/esm2020/upload/upload.module.mjs +0 -65
  359. package/esm2020/url-utilities/pipes/safe-resource-url.pipe.mjs +0 -20
  360. package/esm2020/url-utilities/pipes/safe-url.pipe.mjs +0 -20
  361. package/esm2020/url-utilities/pipes/uri-scheme.pipe.mjs +0 -105
  362. package/esm2020/url-utilities/url-utilities.module.mjs +0 -34
  363. package/fesm2015/cleavelandprice-ngx-lib-active-directory-gui.mjs +0 -652
  364. package/fesm2015/cleavelandprice-ngx-lib-active-directory-gui.mjs.map +0 -1
  365. package/fesm2015/cleavelandprice-ngx-lib-active-directory.mjs +0 -187
  366. package/fesm2015/cleavelandprice-ngx-lib-active-directory.mjs.map +0 -1
  367. package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs +0 -161
  368. package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs.map +0 -1
  369. package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs +0 -274
  370. package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +0 -1
  371. package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs +0 -173
  372. package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs.map +0 -1
  373. package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs.map +0 -1
  374. package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs +0 -250
  375. package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs.map +0 -1
  376. package/fesm2015/cleavelandprice-ngx-lib-msgraph.mjs +0 -178
  377. package/fesm2015/cleavelandprice-ngx-lib-msgraph.mjs.map +0 -1
  378. package/fesm2015/cleavelandprice-ngx-lib-quill-mention.mjs +0 -230
  379. package/fesm2015/cleavelandprice-ngx-lib-quill-mention.mjs.map +0 -1
  380. package/fesm2015/cleavelandprice-ngx-lib-quill.mjs +0 -539
  381. package/fesm2015/cleavelandprice-ngx-lib-quill.mjs.map +0 -1
  382. package/fesm2015/cleavelandprice-ngx-lib-sharepoint.mjs +0 -310
  383. package/fesm2015/cleavelandprice-ngx-lib-sharepoint.mjs.map +0 -1
  384. package/fesm2015/cleavelandprice-ngx-lib-upload.mjs +0 -288
  385. package/fesm2015/cleavelandprice-ngx-lib-upload.mjs.map +0 -1
  386. package/fesm2015/cleavelandprice-ngx-lib-url-utilities.mjs.map +0 -1
  387. package/fesm2015/cleavelandprice-ngx-lib.mjs +0 -113
  388. package/fesm2015/cleavelandprice-ngx-lib.mjs.map +0 -1
  389. package/fesm2020/cleavelandprice-ngx-lib-authentication-object.mjs.map +0 -1
  390. package/fesm2020/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +0 -1
  391. package/fesm2020/cleavelandprice-ngx-lib-authentication-token.mjs.map +0 -1
  392. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs +0 -38
  393. package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs.map +0 -1
  394. package/fesm2020/cleavelandprice-ngx-lib-url-utilities.mjs +0 -177
  395. package/fesm2020/cleavelandprice-ngx-lib-url-utilities.mjs.map +0 -1
@@ -0,0 +1,149 @@
1
+ import { Injectable, Optional } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import moment from 'moment';
4
+ import { ServiceConfig } from '../model/service-config';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../model/service-config";
7
+ import * as i2 from "@angular/common/http";
8
+ class SharePointService {
9
+ //#region Utilities
10
+ cacheExpired(cache) {
11
+ if (!cache) {
12
+ return true;
13
+ }
14
+ const lifeMinutes = this.config.caching?.lifeMinutes ?? this.defaultCacheLifeMinutes;
15
+ const expiration = moment(cache.lastUpdate)
16
+ .add(lifeMinutes, 'minutes');
17
+ return moment().isAfter(expiration);
18
+ }
19
+ //#endregion
20
+ //#region Initialization
21
+ constructor(config, http) {
22
+ this.config = config;
23
+ this.http = http;
24
+ this.defaultCacheLifeMinutes = 720;
25
+ this.config = this.config ?? new ServiceConfig();
26
+ this.configureCaching();
27
+ this.configureLogging();
28
+ }
29
+ configureCaching() {
30
+ // If caching config is missing entirely, give it a default
31
+ this.config.caching = this.config.caching ?? {
32
+ enabled: false,
33
+ lifeMinutes: this.defaultCacheLifeMinutes
34
+ };
35
+ this.cache = {
36
+ photos: undefined,
37
+ users: undefined
38
+ };
39
+ }
40
+ configureLogging() {
41
+ // If logging config is missing entirely, give it a default
42
+ this.config.logging = this.config.logging ?? {
43
+ dataCached: false,
44
+ cachedDataReturned: false,
45
+ freshDataReturned: false,
46
+ cacheCleared: false
47
+ };
48
+ }
49
+ //#endregion
50
+ getListItems(request) {
51
+ const apiUrl = this.config.apiUrl;
52
+ const endpoint = this.config.listItemsEndpoint;
53
+ return this.http.post(`${apiUrl}${endpoint}`, request);
54
+ }
55
+ getPhotos() {
56
+ const request = {
57
+ username: this.config.username,
58
+ password: this.config.password,
59
+ site: this.config.photos.site,
60
+ list: this.config.photos.list,
61
+ additionalPropertiesToRetrieve: this.config.photos.additionalPropertiesToRetrieve
62
+ };
63
+ const observable$ = this.getListItems(request);
64
+ if (this.config.caching?.enabled) {
65
+ if (this.cacheExpired(this.cache?.photos)) {
66
+ // Get the data and cache it
67
+ observable$.subscribe(data => {
68
+ this.cache.photos = {
69
+ data,
70
+ lastUpdate: moment()
71
+ };
72
+ if (this.config.logging?.dataCached) {
73
+ const lifeMinutes = this.config.caching?.lifeMinutes ?? this.defaultCacheLifeMinutes;
74
+ console.log(`Photos cached for ${lifeMinutes} minutes`);
75
+ }
76
+ });
77
+ }
78
+ else {
79
+ // Cache exists and hasn't expired yet
80
+ if (this.config.logging?.cachedDataReturned) {
81
+ console.log('Returning cached photos');
82
+ }
83
+ return of(this.cache.photos.data);
84
+ }
85
+ }
86
+ // Cache is either disabled or expired, return data from API
87
+ if (this.config.logging?.freshDataReturned) {
88
+ console.log('Returning fresh photos');
89
+ }
90
+ return observable$;
91
+ }
92
+ getUsers(request, id) {
93
+ const apiUrl = this.config.apiUrl;
94
+ const endpoint = this.config.usersEndpoint;
95
+ const observable$ = this.http.post(`${apiUrl}${endpoint}/${id ?? ''}`, request);
96
+ //#region Single user
97
+ if (id) {
98
+ return observable$;
99
+ }
100
+ //#endregion
101
+ //#region Multiple users
102
+ if (this.config.caching?.enabled) {
103
+ if (this.cacheExpired(this.cache.users)) {
104
+ // Get the data and cache it
105
+ observable$.subscribe(data => {
106
+ this.cache.users = {
107
+ data: data,
108
+ lastUpdate: moment()
109
+ };
110
+ if (this.config.logging?.dataCached) {
111
+ const lifeMinutes = this.config.caching?.lifeMinutes ?? this.defaultCacheLifeMinutes;
112
+ console.log(`Users cached for ${lifeMinutes} minutes`);
113
+ }
114
+ });
115
+ }
116
+ else {
117
+ // Cache exists and hasn't expired yet
118
+ if (this.config.logging?.cachedDataReturned) {
119
+ console.log('Returning cached users');
120
+ }
121
+ return of(this.cache.users.data);
122
+ }
123
+ }
124
+ // Cache is either disabled or expired, return data from API
125
+ if (this.config.logging?.freshDataReturned) {
126
+ console.log('Returning fresh users');
127
+ }
128
+ return observable$;
129
+ //#endregion
130
+ }
131
+ clearCache() {
132
+ this.cache = undefined;
133
+ if (this.config.logging?.cacheCleared) {
134
+ console.log('Cache cleared');
135
+ }
136
+ }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointService, deps: [{ token: i1.ServiceConfig, optional: true }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
138
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointService, providedIn: 'root' }); }
139
+ }
140
+ export { SharePointService };
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointService, decorators: [{
142
+ type: Injectable,
143
+ args: [{
144
+ providedIn: 'root'
145
+ }]
146
+ }], ctorParameters: function () { return [{ type: i1.ServiceConfig, decorators: [{
147
+ type: Optional
148
+ }] }, { type: i2.HttpClient }]; } });
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVwb2ludC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvc2hhcmVwb2ludC9zcmMvc2VydmljZXMvc2hhcmVwb2ludC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBTTVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUl4RCxNQUdhLGlCQUFpQjtJQVE1QixtQkFBbUI7SUFDWCxZQUFZLENBQUksS0FBcUI7UUFDM0MsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3JGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFL0IsT0FBTyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFlBQVk7SUFFWix3QkFBd0I7SUFDdEIsWUFBZ0MsTUFBcUIsRUFDbkMsSUFBZ0I7UUFERixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ25DLFNBQUksR0FBSixJQUFJLENBQVk7UUFsQjVCLDRCQUF1QixHQUFHLEdBQUcsQ0FBQztRQW9CeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7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QUMsQ0FBQztxQkFDeEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxzQ0FBc0M7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7b0JBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpQkFDdkM7Z0JBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxLQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEM7U0FDRjtRQUVELDREQUE0RDtRQUM1RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUN0QztRQUVELE9BQU8sV0FBVyxDQUFDO1FBQ25CLFlBQVk7SUFDZCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOzhHQTlKVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOztTQUVQLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBd0JnQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IHsgQ2FjaGVPYmplY3QgfSBmcm9tICcuLi9tb2RlbC9jYWNoZS1vYmplY3QnO1xyXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uL21vZGVsL2xpc3QtaXRlbSc7XHJcbmltcG9ydCB7IExpc3RJdGVtc1JlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC9saXN0LWl0ZW1zLXJlcXVlc3QnO1xyXG5pbXBvcnQgeyBQaG90b0l0ZW0gfSBmcm9tICcuLi9tb2RlbC9waG90by1pdGVtJztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgVXNlclJlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC91c2VyLXJlcXVlc3QnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vbW9kZWwvdXNlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZVBvaW50U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjYWNoZToge1xyXG4gICAgdXNlcnM6IENhY2hlT2JqZWN0PFVzZXI+IHwgdW5kZWZpbmVkLFxyXG4gICAgcGhvdG9zOiBDYWNoZU9iamVjdDxQaG90b0l0ZW0+IHwgdW5kZWZpbmVkXHJcbiAgfSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0Q2FjaGVMaWZlTWludXRlcyA9IDcyMDtcclxuXHJcbiAgLy8jcmVnaW9uIFV0aWxpdGllc1xyXG4gIHByaXZhdGUgY2FjaGVFeHBpcmVkPFQ+KGNhY2hlOiBDYWNoZU9iamVjdDxUPik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjYWNoZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsaWZlTWludXRlcyA9IHRoaXMuY29uZmlnLmNhY2hpbmc/LmxpZmVNaW51dGVzID8/IHRoaXMuZGVmYXVsdENhY2hlTGlmZU1pbnV0ZXM7XHJcbiAgICBjb25zdCBleHBpcmF0aW9uID0gbW9tZW50KGNhY2hlLmxhc3RVcGRhdGUpXHJcbiAgICAgIC5hZGQobGlmZU1pbnV0ZXMsICdtaW51dGVzJyk7XHJcblxyXG4gICAgcmV0dXJuIG1vbWVudCgpLmlzQWZ0ZXIoZXhwaXJhdGlvbik7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5pdGlhbGl6YXRpb25cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBTZXJ2aWNlQ29uZmlnLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcgPz8gbmV3IFNlcnZpY2VDb25maWcoKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVDYWNoaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUxvZ2dpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlndXJlQ2FjaGluZygpOiB2b2lkIHtcclxuICAgIC8vIElmIGNhY2hpbmcgY29uZmlnIGlzIG1pc3NpbmcgZW50aXJlbHksIGdpdmUgaXQgYSBkZWZhdWx0XHJcbiAgICB0aGlzLmNvbmZpZy5jYWNoaW5nID0gdGhpcy5jb25maWcuY2FjaGluZyA/PyB7XHJcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBsaWZlTWludXRlczogdGhpcy5kZWZhdWx0Q2FjaGVMaWZlTWludXRlc1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmNhY2hlID0ge1xyXG4gICAgICBwaG90b3M6IHVuZGVmaW5lZCxcclxuICAgICAgdXNlcnM6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlndXJlTG9nZ2luZygpOiB2b2lkIHtcclxuICAgIC8vIElmIGxvZ2dpbmcgY29uZmlnIGlzIG1pc3NpbmcgZW50aXJlbHksIGdpdmUgaXQgYSBkZWZhdWx0XHJcbiAgICB0aGlzLmNvbmZpZy5sb2dnaW5nID0gdGhpcy5jb25maWcubG9nZ2luZyA/PyB7XHJcbiAgICAgIGRhdGFDYWNoZWQ6IGZhbHNlLFxyXG4gICAgICBjYWNoZWREYXRhUmV0dXJuZWQ6IGZhbHNlLFxyXG4gICAgICBmcmVzaERhdGFSZXR1cm5lZDogZmFsc2UsXHJcbiAgICAgIGNhY2hlQ2xlYXJlZDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGdldExpc3RJdGVtcyhyZXF1ZXN0OiBMaXN0SXRlbXNSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMaXN0SXRlbVtdPiB7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmNvbmZpZy5hcGlVcmw7XHJcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuY29uZmlnLmxpc3RJdGVtc0VuZHBvaW50O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0SXRlbVtdPihgJHthcGlVcmx9JHtlbmRwb2ludH1gLCByZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIGdldFBob3RvcygpOiBPYnNlcnZhYmxlPFBob3RvSXRlbVtdPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBMaXN0SXRlbXNSZXF1ZXN0ID0ge1xyXG4gICAgICB1c2VybmFtZTogdGhpcy5jb25maWcudXNlcm5hbWUsXHJcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmNvbmZpZy5wYXNzd29yZCxcclxuICAgICAgc2l0ZTogdGhpcy5jb25maWcucGhvdG9zLnNpdGUsXHJcbiAgICAgIGxpc3Q6IHRoaXMuY29uZmlnLnBob3Rvcy5saXN0LFxyXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllc1RvUmV0cmlldmU6IHRoaXMuY29uZmlnLnBob3Rvcy5hZGRpdGlvbmFsUHJvcGVydGllc1RvUmV0cmlldmVcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSQgPSB0aGlzLmdldExpc3RJdGVtcyhyZXF1ZXN0KSBhcyBPYnNlcnZhYmxlPFBob3RvSXRlbVtdPjtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuY2FjaGluZz8uZW5hYmxlZCkge1xyXG4gICAgICBpZiAodGhpcy5jYWNoZUV4cGlyZWQ8UGhvdG9JdGVtPih0aGlzLmNhY2hlPy5waG90b3MhKSkge1xyXG4gICAgICAgIC8vIEdldCB0aGUgZGF0YSBhbmQgY2FjaGUgaXRcclxuICAgICAgICBvYnNlcnZhYmxlJC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlIS5waG90b3MgPSB7XHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGxhc3RVcGRhdGU6IG1vbWVudCgpXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5kYXRhQ2FjaGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpZmVNaW51dGVzID0gdGhpcy5jb25maWcuY2FjaGluZz8ubGlmZU1pbnV0ZXMgPz8gdGhpcy5kZWZhdWx0Q2FjaGVMaWZlTWludXRlcztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFBob3RvcyBjYWNoZWQgZm9yICR7bGlmZU1pbnV0ZXN9IG1pbnV0ZXNgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBDYWNoZSBleGlzdHMgYW5kIGhhc24ndCBleHBpcmVkIHlldFxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5jYWNoZWREYXRhUmV0dXJuZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZXR1cm5pbmcgY2FjaGVkIHBob3RvcycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuY2FjaGUhLnBob3RvcyEuZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDYWNoZSBpcyBlaXRoZXIgZGlzYWJsZWQgb3IgZXhwaXJlZCwgcmV0dXJuIGRhdGEgZnJvbSBBUElcclxuICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5mcmVzaERhdGFSZXR1cm5lZCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnUmV0dXJuaW5nIGZyZXNoIHBob3RvcycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvYnNlcnZhYmxlJDtcclxuICB9XHJcblxyXG4gIGdldFVzZXJzKHJlcXVlc3Q6IFVzZXJSZXF1ZXN0LCBpZD86IG51bWJlcik6IE9ic2VydmFibGU8VXNlciB8IFVzZXJbXT4ge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5jb25maWcuYXBpVXJsO1xyXG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmNvbmZpZy51c2Vyc0VuZHBvaW50O1xyXG4gICAgXHJcbiAgICBjb25zdCBvYnNlcnZhYmxlJCA9IHRoaXMuaHR0cC5wb3N0PFVzZXIgfCBVc2VyW10+KGAke2FwaVVybH0ke2VuZHBvaW50fS8ke2lkID8/ICcnfWAsIHJlcXVlc3QpO1xyXG5cclxuICAgIC8vI3JlZ2lvbiBTaW5nbGUgdXNlclxyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlJDtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBNdWx0aXBsZSB1c2Vyc1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmNhY2hpbmc/LmVuYWJsZWQpIHtcclxuICAgICAgaWYgKHRoaXMuY2FjaGVFeHBpcmVkPFVzZXI+KHRoaXMuY2FjaGUhLnVzZXJzISkpIHtcclxuICAgICAgICAvLyBHZXQgdGhlIGRhdGEgYW5kIGNhY2hlIGl0XHJcbiAgICAgICAgb2JzZXJ2YWJsZSQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZSEudXNlcnMgPSB7XHJcbiAgICAgICAgICAgIGRhdGE6IGRhdGEgYXMgVXNlcltdLFxyXG4gICAgICAgICAgICBsYXN0VXBkYXRlOiBtb21lbnQoKVxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcubG9nZ2luZz8uZGF0YUNhY2hlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBsaWZlTWludXRlcyA9IHRoaXMuY29uZmlnLmNhY2hpbmc/LmxpZmVNaW51dGVzID8/IHRoaXMuZGVmYXVsdENhY2hlTGlmZU1pbnV0ZXM7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBVc2VycyBjYWNoZWQgZm9yICR7bGlmZU1pbnV0ZXN9IG1pbnV0ZXNgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBDYWNoZSBleGlzdHMgYW5kIGhhc24ndCBleHBpcmVkIHlldFxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5jYWNoZWREYXRhUmV0dXJuZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZXR1cm5pbmcgY2FjaGVkIHVzZXJzJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YodGhpcy5jYWNoZSEudXNlcnMhLmRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FjaGUgaXMgZWl0aGVyIGRpc2FibGVkIG9yIGV4cGlyZWQsIHJldHVybiBkYXRhIGZyb20gQVBJXHJcbiAgICBpZiAodGhpcy5jb25maWcubG9nZ2luZz8uZnJlc2hEYXRhUmV0dXJuZWQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1JldHVybmluZyBmcmVzaCB1c2VycycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvYnNlcnZhYmxlJDtcclxuICAgIC8vI2VuZHJlZ2lvblxyXG4gIH1cclxuXHJcbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FjaGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmxvZ2dpbmc/LmNhY2hlQ2xlYXJlZCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnQ2FjaGUgY2xlYXJlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
@@ -0,0 +1,50 @@
1
+ import { NgModule, Optional, SkipSelf } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ServiceConfig } from './model/service-config';
4
+ import { SharePointService } from './services/sharepoint.service';
5
+ import { EmployeePhotoUrlPipe } from './pipes/employee-photo-url.pipe';
6
+ import { EmployeePhotoComponent } from './components/employee-photo/employee-photo.component';
7
+ import * as i0 from "@angular/core";
8
+ class SharePointModule {
9
+ static forRoot(config) {
10
+ return {
11
+ ngModule: SharePointModule,
12
+ providers: [
13
+ SharePointService,
14
+ { provide: ServiceConfig, useValue: config }
15
+ ]
16
+ };
17
+ }
18
+ constructor(parentModule) {
19
+ if (parentModule) {
20
+ throw new Error('SharePointModule is already loaded. Import it in the AppModule only');
21
+ }
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, deps: [{ token: SharePointModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
24
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, declarations: [EmployeePhotoUrlPipe,
25
+ EmployeePhotoComponent], imports: [CommonModule], exports: [EmployeePhotoUrlPipe,
26
+ EmployeePhotoComponent] }); }
27
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, imports: [CommonModule] }); }
28
+ }
29
+ export { SharePointModule };
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, decorators: [{
31
+ type: NgModule,
32
+ args: [{
33
+ declarations: [
34
+ EmployeePhotoUrlPipe,
35
+ EmployeePhotoComponent
36
+ ],
37
+ imports: [
38
+ CommonModule
39
+ ],
40
+ exports: [
41
+ EmployeePhotoUrlPipe,
42
+ EmployeePhotoComponent
43
+ ]
44
+ }]
45
+ }], ctorParameters: function () { return [{ type: SharePointModule, decorators: [{
46
+ type: Optional
47
+ }, {
48
+ type: SkipSelf
49
+ }] }]; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVwb2ludC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9zaGFyZXBvaW50L3NyYy9zaGFyZXBvaW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0FBRTlGLE1BYWEsZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBcUI7UUFDbEMsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNULGlCQUFpQjtnQkFDakIsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDN0M7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQW9DLFlBQThCO1FBQ2hFLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IscUVBQXFFLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7OEdBaEJVLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQVh6QixvQkFBb0I7WUFDcEIsc0JBQXNCLGFBR3RCLFlBQVksYUFHWixvQkFBb0I7WUFDcEIsc0JBQXNCOytHQUdiLGdCQUFnQixZQVB6QixZQUFZOztTQU9ILGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQWI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLHNCQUFzQjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN2QjtpQkFDRjs7MEJBWWMsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IFNlcnZpY2VDb25maWcgfSBmcm9tICcuL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgU2hhcmVQb2ludFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NoYXJlcG9pbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVtcGxveWVlUGhvdG9VcmxQaXBlIH0gZnJvbSAnLi9waXBlcy9lbXBsb3llZS1waG90by11cmwucGlwZSc7XHJcbmltcG9ydCB7IEVtcGxveWVlUGhvdG9Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wbG95ZWUtcGhvdG8vZW1wbG95ZWUtcGhvdG8uY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBFbXBsb3llZVBob3RvVXJsUGlwZSxcclxuICAgIEVtcGxveWVlUGhvdG9Db21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRW1wbG95ZWVQaG90b1VybFBpcGUsXHJcbiAgICBFbXBsb3llZVBob3RvQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hhcmVQb2ludE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBTZXJ2aWNlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGFyZVBvaW50TW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogU2hhcmVQb2ludE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgU2hhcmVQb2ludFNlcnZpY2UsXHJcbiAgICAgICAgeyBwcm92aWRlOiBTZXJ2aWNlQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHBhcmVudE1vZHVsZTogU2hhcmVQb2ludE1vZHVsZSkge1xyXG4gICAgaWYgKHBhcmVudE1vZHVsZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ1NoYXJlUG9pbnRNb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpdCBpbiB0aGUgQXBwTW9kdWxlIG9ubHknKTtcclxuICAgIH1cclxuICB9XHJcbn0iXX0=
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXZlbGFuZHByaWNlLW5neC1saWItdXBsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9jbGVhdmVsYW5kcHJpY2Utbmd4LWxpYi11cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { Component, Output, EventEmitter } from '@angular/core';
2
+ import { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "./../../services/upload.service";
6
+ import * as i3 from "@angular/material/button";
7
+ class UploadComponent {
8
+ constructor(dialog, uploadService) {
9
+ this.dialog = dialog;
10
+ this.uploadService = uploadService;
11
+ this.dialogClosed = new EventEmitter();
12
+ }
13
+ ngOnInit() {
14
+ this.uploadButtonText = this.uploadService.config.uploadButtonText ?
15
+ this.uploadService.config.uploadButtonText :
16
+ 'Upload';
17
+ }
18
+ openUploadDialog() {
19
+ this.dialog.open(UploadDialogComponent, { width: '50%' })
20
+ .afterClosed().subscribe(() => this.dialogClosed.emit());
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.UploadService }], target: i0.ɵɵFactoryTarget.Component }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: UploadComponent, selector: "cp-upload", outputs: { dialogClosed: "dialogClosed" }, ngImport: i0, template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadButtonText }}</button>', isInline: true, dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
24
+ }
25
+ export { UploadComponent };
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'cp-upload',
30
+ template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadButtonText }}</button>'
31
+ }]
32
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.UploadService }]; }, propDecorators: { dialogClosed: [{
33
+ type: Output
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBR25GLE1BSWEsZUFBZTtJQUl4QixZQUFtQixNQUFpQixFQUFTLGFBQTRCO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQVc7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUgvRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFHaUMsQ0FBQztJQUU5RSxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVNLGdCQUFnQjtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUNwRCxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OEdBZlEsZUFBZTtrR0FBZixlQUFlLDRGQUZkLHdGQUF3Rjs7U0FFekYsZUFBZTsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsd0ZBQXdGO2lCQUNyRzs0SEFFYSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBVcGxvYWREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLy4uL3VwbG9hZC1kaWFsb2cvdXBsb2FkLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy91cGxvYWQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY3AtdXBsb2FkJyxcclxuICAgIHRlbXBsYXRlOiAnPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib3BlblVwbG9hZERpYWxvZygpXCI+e3sgdXBsb2FkQnV0dG9uVGV4dCB9fTwvYnV0dG9uPidcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAT3V0cHV0KCkgZGlhbG9nQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdXBsb2FkQnV0dG9uVGV4dCE6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIHB1YmxpYyB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVwbG9hZEJ1dHRvblRleHQgPSB0aGlzLnVwbG9hZFNlcnZpY2UuY29uZmlnLnVwbG9hZEJ1dHRvblRleHQgP1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29uZmlnLnVwbG9hZEJ1dHRvblRleHQgOlxyXG4gICAgICAgICAgICAnVXBsb2FkJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblVwbG9hZERpYWxvZygpIHtcclxuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKFVwbG9hZERpYWxvZ0NvbXBvbmVudCwgeyB3aWR0aDogJzUwJScgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlhbG9nQ2xvc2VkLmVtaXQoKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,87 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { forkJoin } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "./../../services/upload.service";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/material/button";
8
+ import * as i5 from "@angular/material/list";
9
+ import * as i6 from "@angular/material/progress-bar";
10
+ class UploadDialogComponent {
11
+ constructor(dialogRef, uploadService) {
12
+ this.dialogRef = dialogRef;
13
+ this.uploadService = uploadService;
14
+ this.files = new Set();
15
+ this.canBeClosed = true;
16
+ this.showCancelButton = true;
17
+ this.uploading = false;
18
+ this.uploadSuccessful = false;
19
+ }
20
+ ngOnInit() {
21
+ this.primaryButtonText = this.uploadService.config.uploadDialogUploadButtonText;
22
+ }
23
+ addFiles() {
24
+ this.file.nativeElement.click();
25
+ }
26
+ onFilesAdded() {
27
+ const files = this.file.nativeElement.files;
28
+ for (const key in files) {
29
+ if (!isNaN(parseInt(key))) {
30
+ // See if the file already exists
31
+ this.uploadService.exists(files[key].name)
32
+ .subscribe(exists => {
33
+ if (exists) {
34
+ this.existingFileConflict = files[key].name;
35
+ }
36
+ if (!exists) {
37
+ this.files.add(files[key]);
38
+ }
39
+ });
40
+ }
41
+ }
42
+ }
43
+ closeDialog() {
44
+ // if everything was uploaded already, just close the dialog
45
+ if (this.uploadSuccessful) {
46
+ return this.dialogRef.close();
47
+ }
48
+ // set the component state to "uploading"
49
+ this.uploading = true;
50
+ // start the upload and save the progress map
51
+ this.progress = this.uploadService.upload(this.files);
52
+ // convert the progress map into an array
53
+ const allProgressObservables = [];
54
+ for (let key in this.progress) {
55
+ allProgressObservables.push(this.progress[key].progress);
56
+ }
57
+ // Adjust the state variables
58
+ // The OK-button should have the text "Finish" now
59
+ this.primaryButtonText = this.uploadService.config.uploadDialogFinishButtonText;
60
+ // The dialog should not be closed while uploading
61
+ this.canBeClosed = false;
62
+ this.dialogRef.disableClose = true;
63
+ // Hide the cancel-button
64
+ this.showCancelButton = false;
65
+ // When all progress-observables are completed...
66
+ forkJoin(allProgressObservables).subscribe(end => {
67
+ // ... the dialog can be closed again...
68
+ this.canBeClosed = true;
69
+ this.dialogRef.disableClose = false;
70
+ // ... the upload was successful...
71
+ this.uploadSuccessful = true;
72
+ // ... and the component is no longer uploading
73
+ this.uploading = false;
74
+ });
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UploadService }], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: UploadDialogComponent, selector: "ng-component", viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, static: true }], ngImport: i0, template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n", styles: ["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{font-size:.8em;color:red;margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
78
+ }
79
+ export { UploadDialogComponent };
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadDialogComponent, decorators: [{
81
+ type: Component,
82
+ args: [{ template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n", styles: ["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{font-size:.8em;color:red;margin-top:.5em}\n"] }]
83
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.UploadService }]; }, propDecorators: { file: [{
84
+ type: ViewChild,
85
+ args: ['file', { static: true }]
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL2NvbXBvbmVudHMvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBSWhDLE1BSWEscUJBQXFCO0lBYWhDLFlBQW1CLFNBQThDLEVBQVMsYUFBNEI7UUFBbkYsY0FBUyxHQUFULFNBQVMsQ0FBcUM7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVgvRixVQUFLLEdBQWMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUtwQyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFaUYsQ0FBQztJQUUzRyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDO0lBQ2xGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEtBQUssR0FBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3JFLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLGlDQUFpQztnQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztxQkFDdkMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNsQixJQUFJLE1BQU0sRUFBRTt3QkFDVixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztxQkFDN0M7b0JBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDNUI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCw0REFBNEQ7UUFDNUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0RCx5Q0FBeUM7UUFDekMsTUFBTSxzQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFFekMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsNkJBQTZCO1FBRTdCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUM7UUFFaEYsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUVuQyx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixpREFBaUQ7UUFDakQsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLHdDQUF3QztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFFcEMsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFFN0IsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FyRlUscUJBQXFCO2tHQUFyQixxQkFBcUIsZ0tDVmxDLHN0Q0EwQkE7O1NEaEJhLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUpqQyxTQUFTOzsrSEFLNkIsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWxlITogRWxlbWVudFJlZjtcclxuICBwdWJsaWMgZmlsZXM6IFNldDxGaWxlPiA9IG5ldyBTZXQoKTtcclxuICBleGlzdGluZ0ZpbGVDb25mbGljdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBTdGF0ZVxyXG4gIHByb2dyZXNzOiBhbnk7XHJcbiAgY2FuQmVDbG9zZWQgPSB0cnVlO1xyXG4gIHByaW1hcnlCdXR0b25UZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWU7XHJcbiAgdXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgdXBsb2FkU3VjY2Vzc2Z1bCA9IGZhbHNlO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxVcGxvYWREaWFsb2dDb21wb25lbnQ+LCBwdWJsaWMgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVGV4dCA9IHRoaXMudXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nVXBsb2FkQnV0dG9uVGV4dDtcclxuICB9XHJcblxyXG4gIGFkZEZpbGVzKCkge1xyXG4gICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9uRmlsZXNBZGRlZCgpIHtcclxuICAgIGNvbnN0IGZpbGVzOiB7IFtrZXk6IHN0cmluZ106IEZpbGUgfSA9IHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LmZpbGVzO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmlsZXMpIHtcclxuICAgICAgaWYgKCFpc05hTihwYXJzZUludChrZXkpKSkge1xyXG4gICAgICAgIC8vIFNlZSBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5leGlzdHMoZmlsZXNba2V5XS5uYW1lKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShleGlzdHMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGlzdGluZ0ZpbGVDb25mbGljdCA9IGZpbGVzW2tleV0ubmFtZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVzLmFkZChmaWxlc1trZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRGlhbG9nKCkge1xyXG4gICAgLy8gaWYgZXZlcnl0aGluZyB3YXMgdXBsb2FkZWQgYWxyZWFkeSwganVzdCBjbG9zZSB0aGUgZGlhbG9nXHJcbiAgICBpZiAodGhpcy51cGxvYWRTdWNjZXNzZnVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCB0aGUgY29tcG9uZW50IHN0YXRlIHRvIFwidXBsb2FkaW5nXCJcclxuICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBzdGFydCB0aGUgdXBsb2FkIGFuZCBzYXZlIHRoZSBwcm9ncmVzcyBtYXBcclxuICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkKHRoaXMuZmlsZXMpO1xyXG5cclxuICAgIC8vIGNvbnZlcnQgdGhlIHByb2dyZXNzIG1hcCBpbnRvIGFuIGFycmF5XHJcbiAgICBjb25zdCBhbGxQcm9ncmVzc09ic2VydmFibGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnByb2dyZXNzKSB7XHJcbiAgICAgIGFsbFByb2dyZXNzT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnByb2dyZXNzW2tleV0ucHJvZ3Jlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkanVzdCB0aGUgc3RhdGUgdmFyaWFibGVzXHJcblxyXG4gICAgLy8gVGhlIE9LLWJ1dHRvbiBzaG91bGQgaGF2ZSB0aGUgdGV4dCBcIkZpbmlzaFwiIG5vd1xyXG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVGV4dCA9IHRoaXMudXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nRmluaXNoQnV0dG9uVGV4dDtcclxuXHJcbiAgICAvLyBUaGUgZGlhbG9nIHNob3VsZCBub3QgYmUgY2xvc2VkIHdoaWxlIHVwbG9hZGluZ1xyXG4gICAgdGhpcy5jYW5CZUNsb3NlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBjYW5jZWwtYnV0dG9uXHJcbiAgICB0aGlzLnNob3dDYW5jZWxCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBXaGVuIGFsbCBwcm9ncmVzcy1vYnNlcnZhYmxlcyBhcmUgY29tcGxldGVkLi4uXHJcbiAgICBmb3JrSm9pbihhbGxQcm9ncmVzc09ic2VydmFibGVzKS5zdWJzY3JpYmUoZW5kID0+IHtcclxuICAgICAgLy8gLi4uIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZCBhZ2Fpbi4uLlxyXG4gICAgICB0aGlzLmNhbkJlQ2xvc2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gZmFsc2U7XHJcblxyXG4gICAgICAvLyAuLi4gdGhlIHVwbG9hZCB3YXMgc3VjY2Vzc2Z1bC4uLlxyXG4gICAgICB0aGlzLnVwbG9hZFN1Y2Nlc3NmdWwgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gLi4uIGFuZCB0aGUgY29tcG9uZW50IGlzIG5vIGxvbmdlciB1cGxvYWRpbmdcclxuICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cIm9uRmlsZXNBZGRlZCgpXCIgbXVsdGlwbGUgLz5cblxuPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGlkPVwidGl0bGVcIj5cbiAgPGRpdj57eyB1cGxvYWRTZXJ2aWNlLmNvbmZpZy51cGxvYWREaWFsb2dUaXRsZSB9fTwvZGl2PlxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ1cGxvYWRpbmcgfHwgdXBsb2FkU3VjY2Vzc2Z1bFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYWRkLWZpbGVzLWJ0blwiIChjbGljayk9XCJhZGRGaWxlcygpXCI+XG4gICAge3sgdXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nQWRkRmlsZXNCdXR0b25UZXh0IH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxkaXYgaWQ9XCJjb25mbGljdFwiICpuZ0lmPVwiZXhpc3RpbmdGaWxlQ29uZmxpY3RcIj5cbiAge3sgZXhpc3RpbmdGaWxlQ29uZmxpY3QgfX0gYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIG92ZXJ3cml0dGVuXG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1saXN0PlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICA8aDQgbWF0LWxpbmU+e3tmaWxlLm5hbWV9fTwvaDQ+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cInByb2dyZXNzXCIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cInByb2dyZXNzW2ZpbGUubmFtZV0ucHJvZ3Jlc3MgfCBhc3luY1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG4gIDwvbWF0LWxpc3Q+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBpZD1cImFjdGlvbnNcIj5cbiAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+e3sgdXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nQ2FuY2VsQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuICA8YnV0dG9uICpuZ0lmPVwiZmlsZXMuc2l6ZSA+IDBcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWNhbkJlQ2xvc2VkXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj57eyBwcmltYXJ5QnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZmlsZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9tb2RlbC9kYXRhYmFzZS1maWxlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0aW1lc3RhbXA6IERhdGU7XHJcbiAgICBkYkFwcElkOiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkPzogbnVtYmVyO1xyXG4gICAgY29tbWVudD86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvZmlsZS11cGxvYWQtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkUmVxdWVzdCB7XHJcbiAgICBhcHBJZD86IHN0cmluZztcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkPzogbnVtYmVyO1xyXG4gICAgZm9sZGVyPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS1maWxlLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL21vZGVsL2ZpbGVzeXN0ZW0tZmlsZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVzeXN0ZW1GaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBhdHRyaWJ1dGVzPzogbnVtYmVyO1xyXG4gICAgY3JlYXRpb25UaW1lOiBEYXRlO1xyXG4gICAgZGlyZWN0b3J5OiBzdHJpbmc7XHJcbiAgICBleHRlbnNpb246IHN0cmluZztcclxuICAgIGZ1bGxuYW1lOiBzdHJpbmc7XHJcbiAgICBsYXN0QWNjZXNzVGltZTogRGF0ZTtcclxuICAgIGxhc3RXcml0ZVRpbWU6IERhdGU7XHJcbiAgICByZWFkT25seTogYm9vbGVhbjtcclxuICAgIHNpemU6IG51bWJlcjtcclxufVxyXG4iXX0=
@@ -1,16 +1,16 @@
1
- import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
2
- export class ServiceConfig extends NgxLibServiceConfig {
3
- // See the comment in the library's main service-config.ts file for an explanation
4
- constructor(useSsl_or_customApiUrl = false) {
5
- super(useSsl_or_customApiUrl);
6
- this.databaseEndpoint = '/upload/database';
7
- this.uploadDialogTitle = 'Upload Files';
8
- // UI configuration
9
- this.uploadButtonText = 'Upload';
10
- this.uploadDialogCancelButtonText = 'Cancel';
11
- this.uploadDialogFinishButtonText = 'Finish';
12
- this.uploadDialogUploadButtonText = 'Upload';
13
- this.uploadDialogAddFilesButtonText = 'Add Files';
14
- }
15
- }
1
+ import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
2
+ export class ServiceConfig extends NgxLibServiceConfig {
3
+ // See the comment in the library's main service-config.ts file for an explanation
4
+ constructor(useSsl_or_customApiUrl = false) {
5
+ super(useSsl_or_customApiUrl);
6
+ this.databaseEndpoint = '/upload/database';
7
+ this.uploadDialogTitle = 'Upload Files';
8
+ // UI configuration
9
+ this.uploadButtonText = 'Upload';
10
+ this.uploadDialogCancelButtonText = 'Cancel';
11
+ this.uploadDialogFinishButtonText = 'Finish';
12
+ this.uploadDialogUploadButtonText = 'Upload';
13
+ this.uploadDialogAddFilesButtonText = 'Add Files';
14
+ }
15
+ }
16
16
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL21vZGVsL3NlcnZpY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLElBQUksbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRixNQUFNLE9BQU8sYUFBYyxTQUFRLG1CQUFtQjtJQWVsRCxrRkFBa0Y7SUFDbEYsWUFBWSx5QkFBMkMsS0FBSztRQUN4RCxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQWhCbEMscUJBQWdCLEdBQUcsa0JBQWtCLENBQUM7UUFDdEMsc0JBQWlCLEdBQUcsY0FBYyxDQUFDO1FBTW5DLG1CQUFtQjtRQUNuQixxQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDNUIsaUNBQTRCLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLGlDQUE0QixHQUFHLFFBQVEsQ0FBQztRQUN4QyxpQ0FBNEIsR0FBRyxRQUFRLENBQUM7UUFDeEMsbUNBQThCLEdBQUcsV0FBVyxDQUFDO0lBSzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZpY2VDb25maWcgYXMgTmd4TGliU2VydmljZUNvbmZpZyB9IGZyb20gJ0BjbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYic7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VydmljZUNvbmZpZyBleHRlbmRzIE5neExpYlNlcnZpY2VDb25maWcge1xyXG4gICAgZGF0YWJhc2VFbmRwb2ludCA9ICcvdXBsb2FkL2RhdGFiYXNlJztcclxuICAgIHVwbG9hZERpYWxvZ1RpdGxlID0gJ1VwbG9hZCBGaWxlcyc7XHJcbiAgICB1cGxvYWRQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBjb21tZW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBkYkFwcElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBcclxuICAgIC8vIFVJIGNvbmZpZ3VyYXRpb25cclxuICAgIHVwbG9hZEJ1dHRvblRleHQgPSAnVXBsb2FkJztcclxuICAgIHVwbG9hZERpYWxvZ0NhbmNlbEJ1dHRvblRleHQgPSAnQ2FuY2VsJztcclxuICAgIHVwbG9hZERpYWxvZ0ZpbmlzaEJ1dHRvblRleHQgPSAnRmluaXNoJztcclxuICAgIHVwbG9hZERpYWxvZ1VwbG9hZEJ1dHRvblRleHQgPSAnVXBsb2FkJztcclxuICAgIHVwbG9hZERpYWxvZ0FkZEZpbGVzQnV0dG9uVGV4dCA9ICdBZGQgRmlsZXMnO1xyXG5cclxuICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgbGlicmFyeSdzIG1haW4gc2VydmljZS1jb25maWcudHMgZmlsZSBmb3IgYW4gZXhwbGFuYXRpb25cclxuICAgIGNvbnN0cnVjdG9yKHVzZVNzbF9vcl9jdXN0b21BcGlVcmw6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZSkge1xyXG4gICAgICAgIHN1cGVyKHVzZVNzbF9vcl9jdXN0b21BcGlVcmwpO1xyXG4gICAgfVxyXG59Il19
@@ -1,9 +1,9 @@
1
- export * from './model/database-file-info';
2
- export * from './model/file-upload-request';
3
- export * from './model/filesystem-file-info';
4
- export * from './model/service-config';
5
- export * from './components/upload/upload.component';
6
- export * from './components/upload-dialog/upload-dialog.component';
7
- export * from './services/upload.service';
8
- export * from './upload.module';
1
+ export * from './model/database-file-info';
2
+ export * from './model/file-upload-request';
3
+ export * from './model/filesystem-file-info';
4
+ export * from './model/service-config';
5
+ export * from './components/upload/upload.component';
6
+ export * from './components/upload-dialog/upload-dialog.component';
7
+ export * from './services/upload.service';
8
+ export * from './upload.module';
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsL2RhdGFiYXNlLWZpbGUtaW5mbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvZmlsZS11cGxvYWQtcmVxdWVzdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvZmlsZXN5c3RlbS1maWxlLWluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQubW9kdWxlJzsiXX0=
@@ -0,0 +1,92 @@
1
+ import { Injectable, Optional } from '@angular/core';
2
+ import { HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';
3
+ import { Subject } from 'rxjs';
4
+ import { ServiceConfig } from '../model/service-config';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ import * as i2 from "../model/service-config";
8
+ // https://malcoded.com/posts/angular-file-upload-component-with-express
9
+ class UploadService {
10
+ constructor(http, config) {
11
+ this.http = http;
12
+ this.config = config;
13
+ this.config = this.config ?? new ServiceConfig();
14
+ }
15
+ upload(files) {
16
+ // this will be the our resulting map
17
+ const status = {};
18
+ files.forEach(file => {
19
+ // create a new multipart-form for every file
20
+ const formData = new FormData();
21
+ formData.append('file', file, file.name);
22
+ // create a http-post request and pass the form
23
+ // tell it to report the upload progress
24
+ // A 'Destination' header is used to optionally configure the file upload destination (filesystem)
25
+ // A 'DbAppId' header is used to configure the unique identifier of database uploads
26
+ let headers = new HttpHeaders();
27
+ if (this.config.uploadPath) {
28
+ headers = headers.set('Destination', this.config.uploadPath);
29
+ }
30
+ if (this.config.dbAppId) {
31
+ headers = headers.set('DbAppId', this.config.dbAppId);
32
+ }
33
+ if (this.config.externalReferenceId) {
34
+ headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);
35
+ }
36
+ if (this.config.comment) {
37
+ headers = headers.set('Comment', this.config.comment);
38
+ }
39
+ const req = new HttpRequest('POST', `${this.config.apiUrl}${this.config.databaseEndpoint}`, formData, {
40
+ reportProgress: true,
41
+ responseType: 'blob',
42
+ headers
43
+ });
44
+ // create a new progress-subject for every file
45
+ const progress = new Subject();
46
+ // send the http-request and subscribe for progress-updates
47
+ this.http.request(req).subscribe(event => {
48
+ if (event.type === HttpEventType.UploadProgress) {
49
+ // calculate the progress percentage
50
+ const percentDone = Math.round(100 * event.loaded / (event.total ?? 1));
51
+ // pass the percentage into the progress-stream
52
+ progress.next(percentDone);
53
+ }
54
+ else if (event instanceof HttpResponse) {
55
+ // Close the progress-stream if we get an answer form the API
56
+ // The upload is complete
57
+ progress.complete();
58
+ }
59
+ });
60
+ // Save every progress-observable in a map of all observables
61
+ status[file.name] = {
62
+ progress: progress.asObservable()
63
+ };
64
+ });
65
+ // return the map of progress.observables
66
+ return status;
67
+ }
68
+ exists(fileName) {
69
+ const query = `${this.config.apiUrl}${this.config.databaseEndpoint}`.toLowerCase().indexOf('filesystem') === -1 ?
70
+ { name: fileName, dbAppId: this.config.dbAppId } :
71
+ { name: fileName, destination: this.config.uploadPath };
72
+ return this.http.post(`${this.config.apiUrl}${this.config.databaseEndpoint}/exists`, query);
73
+ }
74
+ download(request) {
75
+ return this.http.post(`${this.config.apiUrl}${this.config.databaseEndpoint}/stream`, request, { responseType: 'blob' });
76
+ }
77
+ getUploadInfo(request) {
78
+ return this.http.post(`${this.config.apiUrl}${this.config.databaseEndpoint}/info`, request);
79
+ }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }, { token: i2.ServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
81
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadService, providedIn: 'root' }); }
82
+ }
83
+ export { UploadService };
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadService, decorators: [{
85
+ type: Injectable,
86
+ args: [{
87
+ providedIn: 'root'
88
+ }]
89
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ServiceConfig, decorators: [{
90
+ type: Optional
91
+ }] }]; } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUs3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsd0VBQXdFO0FBRXhFLE1BR2EsYUFBYTtJQUN4QixZQUFvQixJQUFnQixFQUNmLE1BQXFCO1FBRHRCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBRXRDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFSSxNQUFNLENBQUMsS0FBZ0I7UUFDNUIscUNBQXFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFvRCxFQUFFLENBQUM7UUFFbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQiw2Q0FBNkM7WUFDN0MsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLCtDQUErQztZQUMvQyx3Q0FBd0M7WUFFeEMsa0dBQWtHO1lBQ2xHLG9GQUFvRjtZQUVwRixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxD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QUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUEwQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFTSxhQUFhLENBQUMsT0FBMEI7UUFFN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQzs4R0F4RlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7U0FFUCxhQUFhOzJGQUFiLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlcXVlc3QsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFN1YmplY3QgLCAgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRGF0YWJhc2VGaWxlSW5mbyB9IGZyb20gJy4uL21vZGVsL2RhdGFiYXNlLWZpbGUtaW5mbyc7XHJcbmltcG9ydCB7IEZpbGVzeXN0ZW1GaWxlSW5mbyB9IGZyb20gJy4uL21vZGVsL2ZpbGVzeXN0ZW0tZmlsZS1pbmZvJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZFJlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC9maWxlLXVwbG9hZC1yZXF1ZXN0JztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbi8vIGh0dHBzOi8vbWFsY29kZWQuY29tL3Bvc3RzL2FuZ3VsYXItZmlsZS11cGxvYWQtY29tcG9uZW50LXdpdGgtZXhwcmVzc1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogU2VydmljZUNvbmZpZykge1xyXG5cclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyA/PyBuZXcgU2VydmljZUNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgdXBsb2FkKGZpbGVzOiBTZXQ8RmlsZT4pOiBhbnkgeyAvLyB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxudW1iZXI+fSB7XHJcbiAgICAvLyB0aGlzIHdpbGwgYmUgdGhlIG91ciByZXN1bHRpbmcgbWFwXHJcbiAgICBjb25zdCBzdGF0dXM6IHtba2V5OiBzdHJpbmddOiB7cHJvZ3Jlc3M6IE9ic2VydmFibGU8bnVtYmVyPn19ID0ge307XHJcblxyXG4gICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgLy8gY3JlYXRlIGEgbmV3IG11bHRpcGFydC1mb3JtIGZvciBldmVyeSBmaWxlXHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG5cclxuICAgICAgLy8gY3JlYXRlIGEgaHR0cC1wb3N0IHJlcXVlc3QgYW5kIHBhc3MgdGhlIGZvcm1cclxuICAgICAgLy8gdGVsbCBpdCB0byByZXBvcnQgdGhlIHVwbG9hZCBwcm9ncmVzc1xyXG5cclxuICAgICAgLy8gQSAnRGVzdGluYXRpb24nIGhlYWRlciBpcyB1c2VkIHRvIG9wdGlvbmFsbHkgY29uZmlndXJlIHRoZSBmaWxlIHVwbG9hZCBkZXN0aW5hdGlvbiAoZmlsZXN5c3RlbSlcclxuICAgICAgLy8gQSAnRGJBcHBJZCcgaGVhZGVyIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiBkYXRhYmFzZSB1cGxvYWRzXHJcbiAgICAgIFxyXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudXBsb2FkUGF0aCkge1xyXG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnRGVzdGluYXRpb24nLCB0aGlzLmNvbmZpZy51cGxvYWRQYXRoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb25maWcuZGJBcHBJZCkge1xyXG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnRGJBcHBJZCcsIHRoaXMuY29uZmlnLmRiQXBwSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5leHRlcm5hbFJlZmVyZW5jZUlkKSB7XHJcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdFeHRlcm5hbFJlZmVyZW5jZUlkJywgdGhpcy5jb25maWcuZXh0ZXJuYWxSZWZlcmVuY2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbW1lbnQpIHtcclxuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbW1lbnQnLCB0aGlzLmNvbmZpZy5jb21tZW50KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgYCR7dGhpcy5jb25maWcuYXBpVXJsfSR7dGhpcy5jb25maWcuZGF0YWJhc2VFbmRwb2ludH1gLCBmb3JtRGF0YSwge1xyXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBjcmVhdGUgYSBuZXcgcHJvZ3Jlc3Mtc3ViamVjdCBmb3IgZXZlcnkgZmlsZVxyXG4gICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuXHJcbiAgICAgIC8vIHNlbmQgdGhlIGh0dHAtcmVxdWVzdCBhbmQgc3Vic2NyaWJlIGZvciBwcm9ncmVzcy11cGRhdGVzXHJcbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG5cclxuICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgcHJvZ3Jlc3MgcGVyY2VudGFnZVxyXG4gICAgICAgICAgY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIChldmVudC50b3RhbCA/PyAxKSk7XHJcblxyXG4gICAgICAgICAgLy8gcGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW1cclxuICAgICAgICAgIHByb2dyZXNzLm5leHQocGVyY2VudERvbmUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuXHJcbiAgICAgICAgICAvLyBDbG9zZSB0aGUgcHJvZ3Jlc3Mtc3RyZWFtIGlmIHdlIGdldCBhbiBhbnN3ZXIgZm9ybSB0aGUgQVBJXHJcbiAgICAgICAgICAvLyBUaGUgdXBsb2FkIGlzIGNvbXBsZXRlXHJcbiAgICAgICAgICBwcm9ncmVzcy5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBTYXZlIGV2ZXJ5IHByb2dyZXNzLW9ic2VydmFibGUgaW4gYSBtYXAgb2YgYWxsIG9ic2VydmFibGVzXHJcbiAgICAgIHN0YXR1c1tmaWxlLm5hbWVdID0ge1xyXG4gICAgICAgIHByb2dyZXNzOiBwcm9ncmVzcy5hc09ic2VydmFibGUoKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gcmV0dXJuIHRoZSBtYXAgb2YgcHJvZ3Jlc3Mub2JzZXJ2YWJsZXNcclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhpc3RzKGZpbGVOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHF1ZXJ5ID0gYCR7dGhpcy5jb25maWcuYXBpVXJsfSR7dGhpcy5jb25maWcuZGF0YWJhc2VFbmRwb2ludH1gLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlsZXN5c3RlbScpID09PSAtMSA/XHJcbiAgICAgIHsgbmFtZTogZmlsZU5hbWUsIGRiQXBwSWQ6IHRoaXMuY29uZmlnLmRiQXBwSWQgfSA6XHJcbiAgICAgIHsgbmFtZTogZmlsZU5hbWUsIGRlc3RpbmF0aW9uOiB0aGlzLmNvbmZpZy51cGxvYWRQYXRoIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmRhdGFiYXNlRW5kcG9pbnR9L2V4aXN0c2AsIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZChyZXF1ZXN0OiBGaWxlVXBsb2FkUmVxdWVzdCk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmRhdGFiYXNlRW5kcG9pbnR9L3N0cmVhbWAsIHJlcXVlc3QsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VXBsb2FkSW5mbyhyZXF1ZXN0OiBGaWxlVXBsb2FkUmVxdWVzdCk6XHJcbiAgICBPYnNlcnZhYmxlPERhdGFiYXNlRmlsZUluZm8gfCBEYXRhYmFzZUZpbGVJbmZvW10gfCBGaWxlc3lzdGVtRmlsZUluZm8gfCBGaWxlc3lzdGVtRmlsZUluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PERhdGFiYXNlRmlsZUluZm8gfCBEYXRhYmFzZUZpbGVJbmZvW10gfCBGaWxlc3lzdGVtRmlsZUluZm8gfCBGaWxlc3lzdGVtRmlsZUluZm9bXT5cclxuICAgICAgKGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmRhdGFiYXNlRW5kcG9pbnR9L2luZm9gLCByZXF1ZXN0KTtcclxuICB9XHJcbn1cclxuIl19