@gloww/gloww 0.9.0-beta.10

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 (308) hide show
  1. package/README.md +24 -0
  2. package/compute-version.js +117 -0
  3. package/esm2020/gloww-gloww.mjs +5 -0
  4. package/esm2020/lib/Components/code-editor/code-editor.component.mjs +59 -0
  5. package/esm2020/lib/Components/confirmation/confirmation.component.mjs +43 -0
  6. package/esm2020/lib/Components/display-objects/display-objects.component.mjs +499 -0
  7. package/esm2020/lib/Components/display-objects-configuration.mjs +2 -0
  8. package/esm2020/lib/Components/download-progress/download-progress.component.mjs +119 -0
  9. package/esm2020/lib/Components/folders/file-edit/file-edit.component.mjs +71 -0
  10. package/esm2020/lib/Components/folders/folders/folders.component.mjs +180 -0
  11. package/esm2020/lib/Components/header/header.component.mjs +14 -0
  12. package/esm2020/lib/Components/html-editor/html-editor.component.mjs +175 -0
  13. package/esm2020/lib/Components/menu-list-item/menu-list-item.component.mjs +101 -0
  14. package/esm2020/lib/Components/prompt/prompt.component.mjs +52 -0
  15. package/esm2020/lib/Components/result-table/result-table.component.mjs +21 -0
  16. package/esm2020/lib/Components/search-form/search-form.component.mjs +14 -0
  17. package/esm2020/lib/Components/secure-a/secure-a.component.mjs +31 -0
  18. package/esm2020/lib/Components/secure-img/secure-img.component.mjs +45 -0
  19. package/esm2020/lib/Components/upload-doc/upload-doc.component.mjs +95 -0
  20. package/esm2020/lib/Components/upload-file/upload-file.component.mjs +138 -0
  21. package/esm2020/lib/Directives/file-sink.directive.mjs +52 -0
  22. package/esm2020/lib/Models/nav-item.mjs +2 -0
  23. package/esm2020/lib/Pipes/html-format.pipe.mjs +23 -0
  24. package/esm2020/lib/Pipes/retry-with-delay.mjs +12 -0
  25. package/esm2020/lib/Pipes/safe-html.pipe.mjs +22 -0
  26. package/esm2020/lib/Pipes/secure.pipe.mjs +34 -0
  27. package/esm2020/lib/Services/dialog.service.mjs +29 -0
  28. package/esm2020/lib/Services/folder-service-config.mjs +21 -0
  29. package/esm2020/lib/Services/folder.service.mjs +50 -0
  30. package/esm2020/lib/Services/gloww.service.mjs +66 -0
  31. package/esm2020/lib/Services/nav.service.mjs +28 -0
  32. package/esm2020/lib/Services/version-check.service.mjs +81 -0
  33. package/esm2020/lib/Services/voice-recognition.service.mjs +55 -0
  34. package/esm2020/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.mjs +67 -0
  35. package/esm2020/lib/gloww-security/Components/login/login.component.mjs +173 -0
  36. package/esm2020/lib/gloww-security/Components/social-network/social-network.component.mjs +46 -0
  37. package/esm2020/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.mjs +52 -0
  38. package/esm2020/lib/gloww-security/Components/user-menu/user-menu.component.mjs +73 -0
  39. package/esm2020/lib/gloww-security/Helpers/administrator.guard.mjs +27 -0
  40. package/esm2020/lib/gloww-security/Helpers/auth.guard.mjs +57 -0
  41. package/esm2020/lib/gloww-security/Helpers/error.interceptor.mjs +29 -0
  42. package/esm2020/lib/gloww-security/Helpers/index.mjs +5 -0
  43. package/esm2020/lib/gloww-security/Helpers/jwt.interceptor.mjs +31 -0
  44. package/esm2020/lib/gloww-security/Helpers/staging.interceptor.mjs +24 -0
  45. package/esm2020/lib/gloww-security/Models/oauthassociation.mjs +6 -0
  46. package/esm2020/lib/gloww-security/Models/user.mjs +3 -0
  47. package/esm2020/lib/gloww-security/Services/authentication-service-config.mjs +25 -0
  48. package/esm2020/lib/gloww-security/Services/authentication.service.mjs +205 -0
  49. package/esm2020/lib/gloww-security/Services/gloww-security.service.mjs +14 -0
  50. package/esm2020/lib/gloww-security/gloww-security.module.mjs +171 -0
  51. package/esm2020/lib/gloww.module.mjs +220 -0
  52. package/esm2020/lib/injection-token.mjs +3 -0
  53. package/esm2020/public-api.mjs +32 -0
  54. package/fesm2015/gloww-gloww.mjs +3104 -0
  55. package/fesm2015/gloww-gloww.mjs.map +1 -0
  56. package/fesm2020/gloww-gloww.mjs +3065 -0
  57. package/fesm2020/gloww-gloww.mjs.map +1 -0
  58. package/gloww-assets/.gitkeep +0 -0
  59. package/gloww-assets/7SS_logo.svg +1 -0
  60. package/gloww-assets/7SS_wobl.svg +1 -0
  61. package/gloww-assets/7stars.png +0 -0
  62. package/gloww-assets/gloww.svg +316 -0
  63. package/gloww-assets/images/google_signin_buttons/Google_signin_button.sketch +0 -0
  64. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_disabled_hdpi.9.png +0 -0
  65. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_focus_hdpi.9.png +0 -0
  66. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_normal_hdpi.9.png +0 -0
  67. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_pressed_hdpi.9.png +0 -0
  68. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_disabled_hdpi.9.png +0 -0
  69. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_focus_hdpi.9.png +0 -0
  70. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_normal_hdpi.9.png +0 -0
  71. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_pressed_hdpi.9.png +0 -0
  72. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_disabled_hdpi.9.png +0 -0
  73. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_focus_hdpi.9.png +0 -0
  74. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_normal_hdpi.9.png +0 -0
  75. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_pressed_hdpi.9.png +0 -0
  76. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_disabled_hdpi.9.png +0 -0
  77. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_focus_hdpi.9.png +0 -0
  78. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_normal_hdpi.9.png +0 -0
  79. package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_pressed_hdpi.9.png +0 -0
  80. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_disabled_ldpi.9.png +0 -0
  81. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_focus_ldpi.9.png +0 -0
  82. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_normal_ldpi.9.png +0 -0
  83. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_pressed_ldpi.9.png +0 -0
  84. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_disabled_ldpi.9.png +0 -0
  85. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_focus_ldpi.9.png +0 -0
  86. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_normal_ldpi.9.png +0 -0
  87. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_pressed_ldpi.9.png +0 -0
  88. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_disabled_ldpi.9.png +0 -0
  89. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_focus_ldpi.9.png +0 -0
  90. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_normal_ldpi.9.png +0 -0
  91. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_pressed_ldpi.9.png +0 -0
  92. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_disabled_ldpi.9.png +0 -0
  93. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_focus_ldpi.9.png +0 -0
  94. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_normal_ldpi.9.png +0 -0
  95. package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_pressed_ldpi.9.png +0 -0
  96. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_disabled_mdpi.9.png +0 -0
  97. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_focus_mdpi.9.png +0 -0
  98. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_normal_mdpi.9.png +0 -0
  99. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_pressed_mdpi.9.png +0 -0
  100. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_disabled_mdpi.9.png +0 -0
  101. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_focus_mdpi.9.png +0 -0
  102. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_normal_mdpi.9.png +0 -0
  103. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_pressed_mdpi.9.png +0 -0
  104. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_disabled_mdpi.9.png +0 -0
  105. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_focus_mdpi.9.png +0 -0
  106. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_normal_mdpi.9.png +0 -0
  107. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_pressed_mdpi.9.png +0 -0
  108. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_disabled_mdpi.9.png +0 -0
  109. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_focus_mdpi.9.png +0 -0
  110. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_normal_mdpi.9.png +0 -0
  111. package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_pressed_mdpi.9.png +0 -0
  112. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_disabled_tvdpi.9.png +0 -0
  113. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_focus_tvdpi.9.png +0 -0
  114. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_normal_tvdpi.9.png +0 -0
  115. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_pressed_tvdpi.9.png +0 -0
  116. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_disabled_tvdpi.9.png +0 -0
  117. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_focus_tvdpi.9.png +0 -0
  118. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_normal_tvdpi.9.png +0 -0
  119. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_pressed_tvdpi.9.png +0 -0
  120. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_disabled_tvdpi.9.png +0 -0
  121. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_focus_tvdpi.9.png +0 -0
  122. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_normal_tvdpi.9.png +0 -0
  123. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_pressed_tvdpi.9.png +0 -0
  124. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_disabled_tvdpi.9.png +0 -0
  125. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_focus_tvdpi.9.png +0 -0
  126. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_normal_tvdpi.9.png +0 -0
  127. package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_pressed_tvdpi.9.png +0 -0
  128. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_disabled_xhdpi.9.png +0 -0
  129. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_focus_xhdpi.9.png +0 -0
  130. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_normal_xhdpi.9.png +0 -0
  131. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_pressed_xhdpi.9.png +0 -0
  132. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_disabled_xhdpi.9.png +0 -0
  133. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_focus_xhdpi.9.png +0 -0
  134. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_normal_xhdpi.9.png +0 -0
  135. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_pressed_xhdpi.9.png +0 -0
  136. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_disabled_xhdpi.9.png +0 -0
  137. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_focus_xhdpi.9.png +0 -0
  138. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_normal_xhdpi.9.png +0 -0
  139. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_pressed_xhdpi.9.png +0 -0
  140. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_disabled_xhdpi.9.png +0 -0
  141. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_focus_xhdpi.9.png +0 -0
  142. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_normal_xhdpi.9.png +0 -0
  143. package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_pressed_xhdpi.9.png +0 -0
  144. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_disabled_xxhdpi.9.png +0 -0
  145. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_focus_xxhdpi.9.png +0 -0
  146. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_normal_xxhdpi.9.png +0 -0
  147. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_pressed_xxhdpi.9.png +0 -0
  148. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_disabled_xxhdpi.9.png +0 -0
  149. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_focus_xxhdpi.9.png +0 -0
  150. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_normal_xxhdpi.9.png +0 -0
  151. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_pressed_xxhdpi.9.png +0 -0
  152. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_disabled_xxhdpi.9.png +0 -0
  153. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_focus_xxhdpi.9.png +0 -0
  154. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_normal_xxhdpi.9.png +0 -0
  155. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_pressed_xxhdpi.9.png +0 -0
  156. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_disabled_xxhdpi.9.png +0 -0
  157. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_focus_xxhdpi.9.png +0 -0
  158. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_normal_xxhdpi.9.png +0 -0
  159. package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_pressed_xxhdpi.9.png +0 -0
  160. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_disabled_xxxhdpi.9.png +0 -0
  161. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_focus_xxxhdpi.9.png +0 -0
  162. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_normal_xxxhdpi.9.png +0 -0
  163. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_pressed_xxxhdpi.9.png +0 -0
  164. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_disabled_xxxhdpi.9.png +0 -0
  165. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_focus_xxxhdpi.9.png +0 -0
  166. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_normal_xxxhdpi.9.png +0 -0
  167. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_pressed_xxxhdpi.9.png +0 -0
  168. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_disabled_xxxhdpi.9.png +0 -0
  169. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_focus_xxxhdpi.9.png +0 -0
  170. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_normal_xxxhdpi.9.png +0 -0
  171. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_pressed_xxxhdpi.9.png +0 -0
  172. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_disabled_xxxhdpi.9.png +0 -0
  173. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_focus_xxxhdpi.9.png +0 -0
  174. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_normal_xxxhdpi.9.png +0 -0
  175. package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_pressed_xxxhdpi.9.png +0 -0
  176. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_disabled_ios.png +0 -0
  177. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_focus_ios.png +0 -0
  178. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_normal_ios.png +0 -0
  179. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_pressed_ios.png +0 -0
  180. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_disabled_ios.png +0 -0
  181. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_focus_ios.png +0 -0
  182. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_normal_ios.png +0 -0
  183. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_pressed_ios.png +0 -0
  184. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_disabled_ios.png +0 -0
  185. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_focus_ios.png +0 -0
  186. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_normal_ios.png +0 -0
  187. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_pressed_ios.png +0 -0
  188. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_disabled_ios.png +0 -0
  189. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_focus_ios.png +0 -0
  190. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_normal_ios.png +0 -0
  191. package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_pressed_ios.png +0 -0
  192. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_disabled_ios@2x.png +0 -0
  193. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_focus_ios@2x.png +0 -0
  194. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_normal_ios@2x.png +0 -0
  195. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_pressed_ios@2x.png +0 -0
  196. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_disabled_ios@2x.png +0 -0
  197. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_focus_ios@2x.png +0 -0
  198. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_normal_ios@2x.png +0 -0
  199. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_pressed_ios@2x.png +0 -0
  200. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_disabled_ios@2x.png +0 -0
  201. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_focus_ios@2x.png +0 -0
  202. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_normal_ios@2x.png +0 -0
  203. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_pressed_ios@2x.png +0 -0
  204. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_disabled_ios@2x.png +0 -0
  205. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_focus_ios@2x.png +0 -0
  206. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_normal_ios@2x.png +0 -0
  207. package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_pressed_ios@2x.png +0 -0
  208. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_disabled_ios@3x.png +0 -0
  209. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_focus_ios@3x.png +0 -0
  210. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_normal_ios@3x.png +0 -0
  211. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_pressed_ios@3x.png +0 -0
  212. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_disabled_ios@3x.png +0 -0
  213. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_focus_ios@3x.png +0 -0
  214. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_normal_ios@3x.png +0 -0
  215. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_pressed_ios@3x.png +0 -0
  216. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_disabled_ios@3x.png +0 -0
  217. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_focus_ios@3x.png +0 -0
  218. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_normal_ios@3x.png +0 -0
  219. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_pressed_ios@3x.png +0 -0
  220. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_disabled_ios@3x.png +0 -0
  221. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_focus_ios@3x.png +0 -0
  222. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_normal_ios@3x.png +0 -0
  223. package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_pressed_ios@3x.png +0 -0
  224. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_disabled_web.png +0 -0
  225. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_focus_web.png +0 -0
  226. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_normal_web.png +0 -0
  227. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_pressed_web.png +0 -0
  228. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_disabled_web.png +0 -0
  229. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_focus_web.png +0 -0
  230. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_normal_web.png +0 -0
  231. package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_pressed_web.png +0 -0
  232. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_disabled_web@2x.png +0 -0
  233. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_focus_web@2x.png +0 -0
  234. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_normal_web@2x.png +0 -0
  235. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_pressed_web@2x.png +0 -0
  236. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_disabled_web@2x.png +0 -0
  237. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_focus_web@2x.png +0 -0
  238. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_normal_web@2x.png +0 -0
  239. package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_pressed_web@2x.png +0 -0
  240. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_disabled_ios.eps +814 -0
  241. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_disabled_ios.svg +24 -0
  242. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_focus_ios.eps +1866 -0
  243. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_focus_ios.svg +51 -0
  244. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_normal_ios.eps +1031 -0
  245. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_normal_ios.svg +50 -0
  246. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_pressed_ios.eps +1031 -0
  247. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_pressed_ios.svg +50 -0
  248. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_disabled_ios.eps +814 -0
  249. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_disabled_ios.svg +24 -0
  250. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_focus_ios.eps +1837 -0
  251. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_focus_ios.svg +44 -0
  252. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_normal_ios.eps +1002 -0
  253. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_normal_ios.svg +43 -0
  254. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_pressed_ios.eps +1002 -0
  255. package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_pressed_ios.svg +43 -0
  256. package/gloww-assets/swagger.svg +1 -0
  257. package/gloww-gloww.d.ts +5 -0
  258. package/lib/Components/code-editor/code-editor.component.d.ts +16 -0
  259. package/lib/Components/confirmation/confirmation.component.d.ts +20 -0
  260. package/lib/Components/display-objects/display-objects.component.d.ts +93 -0
  261. package/lib/Components/display-objects-configuration.d.ts +5 -0
  262. package/lib/Components/download-progress/download-progress.component.d.ts +30 -0
  263. package/lib/Components/folders/file-edit/file-edit.component.d.ts +31 -0
  264. package/lib/Components/folders/folders/folders.component.d.ts +33 -0
  265. package/lib/Components/header/header.component.d.ts +8 -0
  266. package/lib/Components/html-editor/html-editor.component.d.ts +36 -0
  267. package/lib/Components/menu-list-item/menu-list-item.component.d.ts +22 -0
  268. package/lib/Components/prompt/prompt.component.d.ts +25 -0
  269. package/lib/Components/result-table/result-table.component.d.ts +11 -0
  270. package/lib/Components/search-form/search-form.component.d.ts +8 -0
  271. package/lib/Components/secure-a/secure-a.component.d.ts +13 -0
  272. package/lib/Components/secure-img/secure-img.component.d.ts +17 -0
  273. package/lib/Components/upload-doc/upload-doc.component.d.ts +19 -0
  274. package/lib/Components/upload-file/upload-file.component.d.ts +34 -0
  275. package/lib/Directives/file-sink.directive.d.ts +11 -0
  276. package/lib/Models/nav-item.d.ts +8 -0
  277. package/lib/Pipes/html-format.pipe.d.ts +10 -0
  278. package/lib/Pipes/retry-with-delay.d.ts +2 -0
  279. package/lib/Pipes/safe-html.pipe.d.ts +10 -0
  280. package/lib/Pipes/secure.pipe.d.ts +13 -0
  281. package/lib/Services/dialog.service.d.ts +11 -0
  282. package/lib/Services/folder-service-config.d.ts +7 -0
  283. package/lib/Services/folder.service.d.ts +19 -0
  284. package/lib/Services/gloww.service.d.ts +23 -0
  285. package/lib/Services/nav.service.d.ts +13 -0
  286. package/lib/Services/version-check.service.d.ts +30 -0
  287. package/lib/Services/voice-recognition.service.d.ts +14 -0
  288. package/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.d.ts +19 -0
  289. package/lib/gloww-security/Components/login/login.component.d.ts +43 -0
  290. package/lib/gloww-security/Components/social-network/social-network.component.d.ts +25 -0
  291. package/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.d.ts +21 -0
  292. package/lib/gloww-security/Components/user-menu/user-menu.component.d.ts +24 -0
  293. package/lib/gloww-security/Helpers/administrator.guard.d.ts +14 -0
  294. package/lib/gloww-security/Helpers/auth.guard.d.ts +14 -0
  295. package/lib/gloww-security/Helpers/error.interceptor.d.ts +11 -0
  296. package/lib/gloww-security/Helpers/index.d.ts +4 -0
  297. package/lib/gloww-security/Helpers/jwt.interceptor.d.ts +11 -0
  298. package/lib/gloww-security/Helpers/staging.interceptor.d.ts +9 -0
  299. package/lib/gloww-security/Models/oauthassociation.d.ts +7 -0
  300. package/lib/gloww-security/Models/user.d.ts +9 -0
  301. package/lib/gloww-security/Services/authentication-service-config.d.ts +17 -0
  302. package/lib/gloww-security/Services/authentication.service.d.ts +40 -0
  303. package/lib/gloww-security/Services/gloww-security.service.d.ts +6 -0
  304. package/lib/gloww-security/gloww-security.module.d.ts +35 -0
  305. package/lib/gloww.module.d.ts +59 -0
  306. package/lib/injection-token.d.ts +2 -0
  307. package/package.json +40 -0
  308. package/public-api.d.ts +28 -0
@@ -0,0 +1,95 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../upload-file/upload-file.component";
7
+ import * as i4 from "@angular/material/button";
8
+ export class UploadDocComponent {
9
+ constructor(dialogRef, data, formBuilder) {
10
+ this.dialogRef = dialogRef;
11
+ this.data = data;
12
+ this.formBuilder = formBuilder;
13
+ this.multiple = false;
14
+ this.allowAltFileName = false;
15
+ this.acceptMime = '*/*';
16
+ this.files = [];
17
+ if (data && data.acceptMime) {
18
+ this.acceptMime = data.acceptMime;
19
+ }
20
+ if (data && data.multiple) {
21
+ this.multiple = data.multiple;
22
+ }
23
+ if (data && data.allowAltFileName) {
24
+ this.allowAltFileName = data.allowAltFileName;
25
+ }
26
+ if (data && data.callback) {
27
+ this.callback = data.callback;
28
+ }
29
+ }
30
+ /*
31
+ get fileNames(): FormArray {
32
+ return this.form.get("fileNames") as FormArray
33
+ }
34
+
35
+ FileName(fn: string): FormGroup {
36
+ return this.formBuilder.group({
37
+ fileName: fn
38
+ })
39
+ }
40
+
41
+ ngOnInit() {
42
+ }
43
+
44
+ onClick() {
45
+ const fileUpload = this.fileUpload.nativeElement; fileUpload.onchange = () => {
46
+ if (this.multiple) {
47
+ this.files = [];
48
+ if (this.allowAltFileName) { this.fileNames.clear(); }
49
+ }
50
+ for (const file of fileUpload.files) {
51
+ this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name });
52
+ if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }
53
+ }
54
+ };
55
+ fileUpload.click();
56
+ }
57
+
58
+ private uploadFiles() {
59
+ this.fileUpload.nativeElement.value = '';
60
+ this.files.forEach(file => {
61
+ alert('upload file');
62
+ // this.uploadFile(file);
63
+ });
64
+ }
65
+ */
66
+ cancel() {
67
+ this.dialogRef.close();
68
+ }
69
+ save() {
70
+ console.log("save UploadDoc");
71
+ console.log(`this.files.length ${this.files.length}`);
72
+ /*if (this.allowAltFileName) {
73
+ for (let i = 0; i < this.files.length; i++) {
74
+ // Comment to be sure new version
75
+ this.files[i].name = this.fileNames.value[i].fileName;
76
+ }
77
+ }*/
78
+ if (this.callback) {
79
+ this.callback(this.files).subscribe(res => this.dialogRef.close(this.files));
80
+ }
81
+ else {
82
+ this.dialogRef.close(this.files);
83
+ }
84
+ }
85
+ }
86
+ UploadDocComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UploadDocComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
87
+ UploadDocComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: UploadDocComponent, selector: "gloww-upload-doc", ngImport: i0, template: "<h2 mat-dialog-title>\r\n Association d'un nouveau document</h2>\r\n\r\n<mat-dialog-content>\r\n\r\n <gloww-upload-file [(ngModel)]=\"files\" [acceptMime]=\"acceptMime\" [multiple]=\"multiple\" [allowAltFileName]=\"allowAltFileName\"></gloww-upload-file>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n</mat-dialog-actions>\r\n", styles: ["ul{list-style:none;padding-left:0}ul li{padding-bottom:10px}\n"], components: [{ type: i3.UploadFileComponent, selector: "gloww-upload-file", inputs: ["multiple", "allowAltFileName", "acceptMime"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UploadDocComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'gloww-upload-doc', template: "<h2 mat-dialog-title>\r\n Association d'un nouveau document</h2>\r\n\r\n<mat-dialog-content>\r\n\r\n <gloww-upload-file [(ngModel)]=\"files\" [acceptMime]=\"acceptMime\" [multiple]=\"multiple\" [allowAltFileName]=\"allowAltFileName\"></gloww-upload-file>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n</mat-dialog-actions>\r\n", styles: ["ul{list-style:none;padding-left:0}ul li{padding-bottom:10px}\n"] }]
91
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
92
+ type: Inject,
93
+ args: [MAT_DIALOG_DATA]
94
+ }] }, { type: i2.FormBuilder }]; } });
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRvYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL0NvbXBvbmVudHMvdXBsb2FkLWRvYy91cGxvYWQtZG9jLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy91cGxvYWQtZG9jL3VwbG9hZC1kb2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUMsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQVF6RSxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCLFlBQW9CLFNBQTJDLEVBQWtDLElBQVMsRUFBVSxXQUF3QjtRQUF4SCxjQUFTLEdBQVQsU0FBUyxDQUFrQztRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFONUksYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR1QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDbkM7UUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMvQjtRQUNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQy9DO1FBQ0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUNFO0lBRUYsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3REOzs7OztXQUtHO1FBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzlFO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDOzsrR0E5RVUsa0JBQWtCLDhDQVE0QyxlQUFlO21HQVI3RSxrQkFBa0Isd0RDVi9CLGlmQVlBOzJGREZhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQVlzQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dsb3d3LXVwbG9hZC1kb2MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZG9jLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZG9jLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRG9jQ29tcG9uZW50IHtcclxuXHJcbiAgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhbGxvd0FsdEZpbGVOYW1lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGFjY2VwdE1pbWUgPSAnKi8qJztcclxuICBmaWxlcyA9IFtdO1xyXG4gIGNhbGxiYWNrOiAoZmlsZXM6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VXBsb2FkRG9jQ29tcG9uZW50PiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmFjY2VwdE1pbWUpIHtcclxuICAgICAgdGhpcy5hY2NlcHRNaW1lID0gZGF0YS5hY2NlcHRNaW1lO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLm11bHRpcGxlID0gZGF0YS5tdWx0aXBsZTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhICYmIGRhdGEuYWxsb3dBbHRGaWxlTmFtZSkge1xyXG4gICAgICB0aGlzLmFsbG93QWx0RmlsZU5hbWUgPSBkYXRhLmFsbG93QWx0RmlsZU5hbWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmNhbGxiYWNrKSB7XHJcbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBkYXRhLmNhbGxiYWNrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLypcclxuICBnZXQgZmlsZU5hbWVzKCk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChcImZpbGVOYW1lc1wiKSBhcyBGb3JtQXJyYXlcclxuICB9XHJcblxyXG4gIEZpbGVOYW1lKGZuOiBzdHJpbmcpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBmaWxlTmFtZTogZm5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICBjb25zdCBmaWxlVXBsb2FkID0gdGhpcy5maWxlVXBsb2FkLm5hdGl2ZUVsZW1lbnQ7IGZpbGVVcGxvYWQub25jaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93QWx0RmlsZU5hbWUpIHsgdGhpcy5maWxlTmFtZXMuY2xlYXIoKTsgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlVXBsb2FkLmZpbGVzKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKHsgZGF0YTogZmlsZSwgaW5Qcm9ncmVzczogZmFsc2UsIHByb2dyZXNzOiAwLCBmaWxlTmFtZTogZmlsZS5uYW1lIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93QWx0RmlsZU5hbWUpIHsgdGhpcy5maWxlTmFtZXMucHVzaCh0aGlzLkZpbGVOYW1lKGZpbGUubmFtZSkpOyB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBmaWxlVXBsb2FkLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZEZpbGVzKCkge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgYWxlcnQoJ3VwbG9hZCBmaWxlJyk7XHJcbiAgICAgIC8vIHRoaXMudXBsb2FkRmlsZShmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAqL1xyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwic2F2ZSBVcGxvYWREb2NcIik7XHJcbiAgICBjb25zb2xlLmxvZyhgdGhpcy5maWxlcy5sZW5ndGggJHt0aGlzLmZpbGVzLmxlbmd0aH1gKTtcclxuICAgIC8qaWYgKHRoaXMuYWxsb3dBbHRGaWxlTmFtZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBDb21tZW50IHRvIGJlIHN1cmUgbmV3IHZlcnNpb25cclxuICAgICAgICB0aGlzLmZpbGVzW2ldLm5hbWUgPSB0aGlzLmZpbGVOYW1lcy52YWx1ZVtpXS5maWxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfSovXHJcbiAgICBpZiAodGhpcy5jYWxsYmFjaykge1xyXG4gICAgICB0aGlzLmNhbGxiYWNrKHRoaXMuZmlsZXMpLnN1YnNjcmliZShyZXMgPT4gdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5maWxlcykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5maWxlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPlxyXG4gICAgQXNzb2NpYXRpb24gZCd1biBub3V2ZWF1IGRvY3VtZW50PC9oMj5cclxuXHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG4gICAgPGdsb3d3LXVwbG9hZC1maWxlIFsobmdNb2RlbCldPVwiZmlsZXNcIiBbYWNjZXB0TWltZV09XCJhY2NlcHRNaW1lXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2FsbG93QWx0RmlsZU5hbWVdPVwiYWxsb3dBbHRGaWxlTmFtZVwiPjwvZ2xvd3ctdXBsb2FkLWZpbGU+XHJcblxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhdmUoKVwiPlNhdmU8L2J1dHRvbj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiJdfQ==
@@ -0,0 +1,138 @@
1
+ import { Component, ViewChild, Input } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/card";
5
+ import * as i2 from "@angular/material/progress-bar";
6
+ import * as i3 from "@angular/material/button";
7
+ import * as i4 from "../../Directives/file-sink.directive";
8
+ import * as i5 from "@angular/common";
9
+ export class UploadFileComponent {
10
+ constructor() {
11
+ this.multiple = false;
12
+ this.allowAltFileName = false;
13
+ this.acceptMime = '*/*';
14
+ this.onChange = () => { };
15
+ this.onTouched = () => { };
16
+ this.files = [];
17
+ }
18
+ ngAfterViewInit() {
19
+ const fileUpload = this.fileUpload.nativeElement;
20
+ fileUpload.onchange = () => {
21
+ if (!this.multiple) {
22
+ this.files = [];
23
+ //if (this.allowAltFileName) { this.fileNames.clear(); }
24
+ }
25
+ for (const file of fileUpload.files) {
26
+ this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });
27
+ //if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }
28
+ }
29
+ this.onChange(this.files);
30
+ this.onTouched();
31
+ };
32
+ }
33
+ get value() {
34
+ return this.files;
35
+ //return this._value;
36
+ }
37
+ set value(val) {
38
+ this.files = val;
39
+ this.onChange(val);
40
+ this.onTouched();
41
+ }
42
+ writeValue(obj) {
43
+ this.value = obj;
44
+ }
45
+ registerOnChange(fn) {
46
+ this.onChange = fn;
47
+ }
48
+ registerOnTouched(fn) {
49
+ this.onTouched = fn;
50
+ }
51
+ setDisabledState(isDisabled) {
52
+ //throw new Error('Method not implemented.');
53
+ }
54
+ SelectFiles() {
55
+ this.fileUpload.nativeElement.click();
56
+ }
57
+ ChangeAltName(i, $event) {
58
+ this.files[i].altFileName = $event.target.value;
59
+ this.onChange(this.files);
60
+ this.onTouched();
61
+ }
62
+ onFileDropped($event) {
63
+ this.prepareFilesList($event);
64
+ }
65
+ prepareFilesList(files) {
66
+ if (files.length > 1 && !this.multiple) {
67
+ alert("You can only drop an only file at once");
68
+ return;
69
+ }
70
+ if (this.files && this.files.length > 0 && !this.multiple) {
71
+ if (confirm("Do you want to replace current file ?")) {
72
+ this.files = [];
73
+ }
74
+ else {
75
+ return;
76
+ }
77
+ }
78
+ if (!this.files)
79
+ this.files = [];
80
+ for (const file of files) {
81
+ this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });
82
+ }
83
+ this.onChange(this.files);
84
+ this.onTouched();
85
+ }
86
+ /**
87
+ * format bytes
88
+ * @param bytes (File size in bytes)
89
+ * @param decimals (Decimals point)
90
+ */
91
+ formatBytes(bytes, decimals = 2) {
92
+ if (bytes === 0) {
93
+ return "0 Bytes";
94
+ }
95
+ const k = 1024;
96
+ const dm = decimals <= 0 ? 0 : decimals;
97
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
98
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
99
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
100
+ }
101
+ deleteFile(index) {
102
+ if (this.files[index].progress && this.files[index].progress < 100) {
103
+ console.log("Upload in progress.");
104
+ return;
105
+ }
106
+ this.files.splice(index, 1);
107
+ this.onChange(this.files);
108
+ this.onTouched();
109
+ }
110
+ }
111
+ UploadFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UploadFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ UploadFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: UploadFileComponent, selector: "gloww-upload-file", inputs: { multiple: "multiple", allowAltFileName: "allowAltFileName", acceptMime: "acceptMime" }, providers: [
113
+ {
114
+ provide: NG_VALUE_ACCESSOR,
115
+ multi: true,
116
+ useExisting: UploadFileComponent
117
+ }
118
+ ], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true }], ngImport: i0, template: "<mat-card glowwFileSink (fileDropped)=\"onFileDropped($event)\" style=\"height:calc(100% - 40px)\">\r\n <mat-card-content style=\"min-height:100px;height:calc(100% - 60px)\">\r\n <div class=\"files-list\" *ngIf=\"files && files.length\" style=\"height:calc(100% - 60px)\">\r\n <div class=\"single-file\" *ngFor=\"let file of files; let i = index\" [ngClass]=\"file.status\">\r\n <i class=\"fa-thin fa-file fa-lg\"></i>\r\n <div class=\"info\">\r\n <h4 class=\"name\">\r\n {{ file?.fileName }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size) }}\r\n </p>\r\n <mat-progress-bar [value]=\"file.progress\"></mat-progress-bar>\r\n </div>\r\n <i class=\"fa-thin fa-trash fa-lg\" (click)=\"deleteFile(i)\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!files || !files.length\" style=\"height:calc(100% - 60px)\">No file(s) selected</div>\r\n <input type=\"file\" #fileUpload id=\"fileUpload\" name=\"fileUpload\" [accept]=\"acceptMime\" style=\"display:none;\" [multiple]=\"multiple\" />\r\n </mat-card-content>\r\n <mat-card-actions style=\"text-align:center\">\r\n <button mat-raised-button color=\"accent\" (click)=\"SelectFiles()\">\r\n <i class=\"fal fa-file-upload\"></i> <span *ngIf=\"!multiple\">Select file or Drop a file</span>\r\n <span *ngIf=\"multiple\">Select file(s) or drop file(s)</span>\r\n </button>\r\n </mat-card-actions>\r\n</mat-card>", styles: ["ul{list-style:none;padding-left:0}ul li{padding-bottom:10px}.fileover{-webkit-animation:shake 1s;animation:shake 1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.files-list{margin-top:1.5rem}.files-list .single-file{padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #979797;margin-bottom:1rem;display:flex;flex-grow:1}.files-list .single-file img.delete{margin-left:.5rem;cursor:pointer;align-self:flex-end}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0;margin-bottom:.25rem}.files-list .single-file .info{width:100%}.Done{background-color:green}.Error{background-color:red}@-webkit-keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}\n"], components: [{ type: i1.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.FileSinkDirective, selector: "[glowwFileSink]", outputs: ["fileDropped"] }, { type: i1.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }] });
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UploadFileComponent, decorators: [{
120
+ type: Component,
121
+ args: [{ selector: 'gloww-upload-file', providers: [
122
+ {
123
+ provide: NG_VALUE_ACCESSOR,
124
+ multi: true,
125
+ useExisting: UploadFileComponent
126
+ }
127
+ ], template: "<mat-card glowwFileSink (fileDropped)=\"onFileDropped($event)\" style=\"height:calc(100% - 40px)\">\r\n <mat-card-content style=\"min-height:100px;height:calc(100% - 60px)\">\r\n <div class=\"files-list\" *ngIf=\"files && files.length\" style=\"height:calc(100% - 60px)\">\r\n <div class=\"single-file\" *ngFor=\"let file of files; let i = index\" [ngClass]=\"file.status\">\r\n <i class=\"fa-thin fa-file fa-lg\"></i>\r\n <div class=\"info\">\r\n <h4 class=\"name\">\r\n {{ file?.fileName }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size) }}\r\n </p>\r\n <mat-progress-bar [value]=\"file.progress\"></mat-progress-bar>\r\n </div>\r\n <i class=\"fa-thin fa-trash fa-lg\" (click)=\"deleteFile(i)\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!files || !files.length\" style=\"height:calc(100% - 60px)\">No file(s) selected</div>\r\n <input type=\"file\" #fileUpload id=\"fileUpload\" name=\"fileUpload\" [accept]=\"acceptMime\" style=\"display:none;\" [multiple]=\"multiple\" />\r\n </mat-card-content>\r\n <mat-card-actions style=\"text-align:center\">\r\n <button mat-raised-button color=\"accent\" (click)=\"SelectFiles()\">\r\n <i class=\"fal fa-file-upload\"></i> <span *ngIf=\"!multiple\">Select file or Drop a file</span>\r\n <span *ngIf=\"multiple\">Select file(s) or drop file(s)</span>\r\n </button>\r\n </mat-card-actions>\r\n</mat-card>", styles: ["ul{list-style:none;padding-left:0}ul li{padding-bottom:10px}.fileover{-webkit-animation:shake 1s;animation:shake 1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.files-list{margin-top:1.5rem}.files-list .single-file{padding:.5rem;justify-content:space-between;align-items:center;border:dashed 1px #979797;margin-bottom:1rem;display:flex;flex-grow:1}.files-list .single-file img.delete{margin-left:.5rem;cursor:pointer;align-self:flex-end}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0;margin-bottom:.25rem}.files-list .single-file .info{width:100%}.Done{background-color:green}.Error{background-color:red}@-webkit-keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}@keyframes shake{0%{transform:translate(1px,1px) rotate(0)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0)}to{transform:translate(1px,-2px) rotate(-1deg)}}\n"] }]
128
+ }], ctorParameters: function () { return []; }, propDecorators: { fileUpload: [{
129
+ type: ViewChild,
130
+ args: ['fileUpload']
131
+ }], multiple: [{
132
+ type: Input
133
+ }], allowAltFileName: [{
134
+ type: Input
135
+ }], acceptMime: [{
136
+ type: Input
137
+ }] } });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL3VwbG9hZC1maWxlL3VwbG9hZC1maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBc0IsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQXFDLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBZ0I1RyxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCO1FBVFMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZUFBVSxHQUFXLEtBQUssQ0FBQztRQUNwQyxhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFHM0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztJQUlYLENBQUM7SUFDRCxlQUFlO1FBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDakQsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNoQix3REFBd0Q7YUFDekQ7WUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkksK0VBQStFO2FBQ2hGO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEIscUJBQXFCO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUdELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyw2Q0FBNkM7SUFDL0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU07UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QyxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUNoRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6RCxJQUFJLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxPQUFPO2FBQ1I7U0FDRjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNwSTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7S0FJQztJQUNELFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDN0IsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2YsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDZixNQUFNLEVBQUUsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7O2dIQWhIVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4SUFSbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsbUJBQW1CO1NBQ2pDO0tBQ0Ysb0lDZkgsaW5EQTBCVzsyRkRURSxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcscUJBQXFCO3lCQUNqQztxQkFDRjswRUFHd0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNkLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEZvcm1BcnJheSwgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2xvd3ctdXBsb2FkLWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWZpbGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogVXBsb2FkRmlsZUNvbXBvbmVudFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcpIGZpbGVVcGxvYWQ6IEVsZW1lbnRSZWY7XHJcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhbGxvd0FsdEZpbGVOYW1lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWNjZXB0TWltZTogc3RyaW5nID0gJyovKic7XHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGZpbGVzID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZVVwbG9hZCA9IHRoaXMuZmlsZVVwbG9hZC5uYXRpdmVFbGVtZW50O1xyXG4gICAgZmlsZVVwbG9hZC5vbmNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgICAgIC8vaWYgKHRoaXMuYWxsb3dBbHRGaWxlTmFtZSkgeyB0aGlzLmZpbGVOYW1lcy5jbGVhcigpOyB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVVcGxvYWQuZmlsZXMpIHtcclxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goeyBkYXRhOiBmaWxlLCBpblByb2dyZXNzOiBmYWxzZSwgcHJvZ3Jlc3M6IDAsIGZpbGVOYW1lOiBmaWxlLm5hbWUsIHNpemU6IGZpbGUuc2l6ZSwgYWx0RmlsZU5hbWU6ICcnLCBzdGF0dXM6ICcnIH0pO1xyXG4gICAgICAgIC8vaWYgKHRoaXMuYWxsb3dBbHRGaWxlTmFtZSkgeyB0aGlzLmZpbGVOYW1lcy5wdXNoKHRoaXMuRmlsZU5hbWUoZmlsZS5uYW1lKSk7IH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZXMpO1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbGVzO1xyXG4gICAgLy9yZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsKSB7XHJcbiAgICB0aGlzLmZpbGVzID0gdmFsO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgLy90aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG5cclxuICBTZWxlY3RGaWxlcygpIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VBbHROYW1lKGksICRldmVudCkge1xyXG4gICAgdGhpcy5maWxlc1tpXS5hbHRGaWxlTmFtZSA9ICRldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZXMpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIG9uRmlsZURyb3BwZWQoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoJGV2ZW50KTtcclxuICB9XHJcbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogQXJyYXk8YW55Pikge1xyXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDEgJiYgIXRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgYWxlcnQoXCJZb3UgY2FuIG9ubHkgZHJvcCBhbiBvbmx5IGZpbGUgYXQgb25jZVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsZXMgJiYgdGhpcy5maWxlcy5sZW5ndGggPiAwICYmICF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmIChjb25maXJtKFwiRG8geW91IHdhbnQgdG8gcmVwbGFjZSBjdXJyZW50IGZpbGUgP1wiKSkge1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5maWxlcykgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMucHVzaCh7IGRhdGE6IGZpbGUsIGluUHJvZ3Jlc3M6IGZhbHNlLCBwcm9ncmVzczogMCwgZmlsZU5hbWU6IGZpbGUubmFtZSwgc2l6ZTogZmlsZS5zaXplLCBhbHRGaWxlTmFtZTogJycsIHN0YXR1czogJycgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZXMpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBmb3JtYXQgYnl0ZXNcclxuICogQHBhcmFtIGJ5dGVzIChGaWxlIHNpemUgaW4gYnl0ZXMpXHJcbiAqIEBwYXJhbSBkZWNpbWFscyAoRGVjaW1hbHMgcG9pbnQpXHJcbiAqL1xyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzLCBkZWNpbWFscyA9IDIpIHtcclxuICAgIGlmIChieXRlcyA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWxlKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmZpbGVzW2luZGV4XS5wcm9ncmVzcyAmJiB0aGlzLmZpbGVzW2luZGV4XS5wcm9ncmVzcyA8IDEwMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlVwbG9hZCBpbiBwcm9ncmVzcy5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5maWxlcyk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPG1hdC1jYXJkIGdsb3d3RmlsZVNpbmsgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiIHN0eWxlPVwiaGVpZ2h0OmNhbGMoMTAwJSAtIDQwcHgpXCI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudCBzdHlsZT1cIm1pbi1oZWlnaHQ6MTAwcHg7aGVpZ2h0OmNhbGMoMTAwJSAtIDYwcHgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVzLWxpc3RcIiAqbmdJZj1cImZpbGVzICYmIGZpbGVzLmxlbmd0aFwiIHN0eWxlPVwiaGVpZ2h0OmNhbGMoMTAwJSAtIDYwcHgpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmlsZVwiICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyBsZXQgaSA9IGluZGV4XCIgW25nQ2xhc3NdPVwiZmlsZS5zdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtdGhpbiBmYS1maWxlIGZhLWxnXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbGU/LmZpbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInNpemVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0Qnl0ZXMoZmlsZT8uc2l6ZSkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgW3ZhbHVlXT1cImZpbGUucHJvZ3Jlc3NcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtdGhpbiBmYS10cmFzaCBmYS1sZ1wiIChjbGljayk9XCJkZWxldGVGaWxlKGkpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGhcIiBzdHlsZT1cImhlaWdodDpjYWxjKDEwMCUgLSA2MHB4KVwiPk5vIGZpbGUocykgc2VsZWN0ZWQ8L2Rpdj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZVVwbG9hZCBpZD1cImZpbGVVcGxvYWRcIiBuYW1lPVwiZmlsZVVwbG9hZFwiIFthY2NlcHRdPVwiYWNjZXB0TWltZVwiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIC8+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtYWN0aW9ucyBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJTZWxlY3RGaWxlcygpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLWZpbGUtdXBsb2FkXCI+PC9pPiA8c3BhbiAqbmdJZj1cIiFtdWx0aXBsZVwiPlNlbGVjdCBmaWxlIG9yIERyb3AgYSBmaWxlPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIm11bHRpcGxlXCI+U2VsZWN0IGZpbGUocykgb3IgZHJvcCBmaWxlKHMpPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbjwvbWF0LWNhcmQ+Il19
@@ -0,0 +1,52 @@
1
+ import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FileSinkDirective {
4
+ constructor() {
5
+ this.fileDropped = new EventEmitter();
6
+ }
7
+ // Dragover listener
8
+ onDragOver(evt) {
9
+ evt.preventDefault();
10
+ evt.stopPropagation();
11
+ this.fileOver = true;
12
+ }
13
+ // Dragleave listener
14
+ onDragLeave(evt) {
15
+ evt.preventDefault();
16
+ evt.stopPropagation();
17
+ this.fileOver = false;
18
+ }
19
+ // Drop listener
20
+ ondrop(evt) {
21
+ evt.preventDefault();
22
+ evt.stopPropagation();
23
+ this.fileOver = false;
24
+ let files = evt.dataTransfer.files;
25
+ if (files.length > 0) {
26
+ this.fileDropped.emit(files);
27
+ }
28
+ }
29
+ }
30
+ FileSinkDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FileSinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
31
+ FileSinkDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: FileSinkDirective, selector: "[glowwFileSink]", outputs: { fileDropped: "fileDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "ondrop($event)" }, properties: { "class.fileover": "this.fileOver" } }, ngImport: i0 });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FileSinkDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ selector: '[glowwFileSink]'
36
+ }]
37
+ }], propDecorators: { fileOver: [{
38
+ type: HostBinding,
39
+ args: ['class.fileover']
40
+ }], fileDropped: [{
41
+ type: Output
42
+ }], onDragOver: [{
43
+ type: HostListener,
44
+ args: ['dragover', ['$event']]
45
+ }], onDragLeave: [{
46
+ type: HostListener,
47
+ args: ['dragleave', ['$event']]
48
+ }], ondrop: [{
49
+ type: HostListener,
50
+ args: ['drop', ['$event']]
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvRGlyZWN0aXZlcy9maWxlLXNpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszRixNQUFNLE9BQU8saUJBQWlCO0lBSDlCO1FBTVksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0tBMEJqRDtJQXhCQyxvQkFBb0I7SUFDa0IsVUFBVSxDQUFDLEdBQUc7UUFDbEQsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQscUJBQXFCO0lBQ3lCLFdBQVcsQ0FBQyxHQUFHO1FBQzNELEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQjtJQUN5QixNQUFNLENBQUMsR0FBRztRQUNqRCxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOzs4R0E1QlUsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs4QkFHZ0MsUUFBUTtzQkFBdEMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ25CLFdBQVc7c0JBQXBCLE1BQU07Z0JBRytCLFVBQVU7c0JBQS9DLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9VLFdBQVc7c0JBQXhELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9JLE1BQU07c0JBQTlDLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZ2xvd3dGaWxlU2lua10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlU2lua0RpcmVjdGl2ZSB7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmlsZW92ZXInKSBmaWxlT3ZlcjogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgZmlsZURyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy8gRHJhZ292ZXIgbGlzdGVuZXJcclxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pIG9uRHJhZ092ZXIoZXZ0KSB7XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZmlsZU92ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gRHJhZ2xlYXZlIGxpc3RlbmVyXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSkgcHVibGljIG9uRHJhZ0xlYXZlKGV2dCkge1xyXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmZpbGVPdmVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBEcm9wIGxpc3RlbmVyXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pIHB1YmxpYyBvbmRyb3AoZXZ0KSB7XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcclxuICAgIGxldCBmaWxlcyA9IGV2dC5kYXRhVHJhbnNmZXIuZmlsZXM7XHJcbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVEcm9wcGVkLmVtaXQoZmlsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL01vZGVscy9uYXYtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBOYXZJdGVtIHtcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICBpY29uU3R5bGU/OiBvYmplY3RcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgcm91dGU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8ICgoKSA9PiBzdHJpbmcgfCBzdHJpbmdbXSk7XHJcbiAgY2hpbGRyZW4/OiBOYXZJdGVtW107XHJcbn1cclxuIl19
@@ -0,0 +1,23 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ export class HtmlFormatPipe {
5
+ constructor(_sanitizer) {
6
+ this._sanitizer = _sanitizer;
7
+ }
8
+ transform(value, ...args) {
9
+ const newval = value.replace(/(^\s*\w|\.\s\w)/g, m => m.toUpperCase()).replace(/\s\./ig, '').replace(/\s*Nouvelle ligne\s*.\s*/ig, '<br/>').trim();
10
+ if (!this._sanitizer)
11
+ return newval;
12
+ return this._sanitizer.bypassSecurityTrustHtml(newval);
13
+ }
14
+ }
15
+ HtmlFormatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlFormatPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
16
+ HtmlFormatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlFormatPipe, name: "htmlFormat" });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlFormatPipe, decorators: [{
18
+ type: Pipe,
19
+ args: [{
20
+ name: 'htmlFormat'
21
+ }]
22
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvUGlwZXMvaHRtbC1mb3JtYXQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBTXBELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLFVBQXlCO1FBQXpCLGVBQVUsR0FBVixVQUFVLENBQWU7SUFBSSxDQUFDO0lBRWxELFNBQVMsQ0FBQyxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFXLENBQUM7SUFDbkUsQ0FBQzs7MkdBUlUsY0FBYzt5R0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBSDFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnaHRtbEZvcm1hdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0bWxGb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nhbml0aXplcj86IERvbVNhbml0aXplcikgeyB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbmV3dmFsID0gdmFsdWUucmVwbGFjZSgvKF5cXHMqXFx3fFxcLlxcc1xcdykvZywgbSA9PiBtLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoL1xcc1xcLi9pZywgJycpLnJlcGxhY2UoL1xccypOb3V2ZWxsZSBsaWduZVxccyouXFxzKi9pZywgJzxici8+JykudHJpbSgpO1xyXG4gICAgaWYgKCF0aGlzLl9zYW5pdGl6ZXIpIHJldHVybiBuZXd2YWw7XHJcbiAgICByZXR1cm4gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKG5ld3ZhbCkgYXMgc3RyaW5nO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,12 @@
1
+ import { delay as delayOperator, retryWhen, scan, tap } from 'rxjs/operators';
2
+ export function retryWithDelay(delay, count = 1) {
3
+ return (input) => input.pipe(retryWhen((errors) => errors.pipe(scan((acc, error) => ({ count: acc.count + 1, error }), {
4
+ count: 0,
5
+ error: undefined,
6
+ }), tap((current) => {
7
+ if (current.count > count) {
8
+ throw current.error;
9
+ }
10
+ }), delayOperator(delay))));
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktd2l0aC1kZWxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvUGlwZXMvcmV0cnktd2l0aC1kZWxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxJQUFJLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlFLE1BQU0sVUFBVSxjQUFjLENBQzVCLEtBQWEsRUFDYixLQUFLLEdBQUcsQ0FBQztJQUVULE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNmLEtBQUssQ0FBQyxJQUFJLENBQ1IsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbkIsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLEVBQUUsU0FBZ0I7S0FDeEIsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2QsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRTtZQUN6QixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDckI7SUFDSCxDQUFDLENBQUMsRUFDRixhQUFhLENBQUMsS0FBSyxDQUFDLENBQ3JCLENBQ0YsQ0FDRixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSBhcyBkZWxheU9wZXJhdG9yLCByZXRyeVdoZW4sIHNjYW4sIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXRyeVdpdGhEZWxheTxUPihcclxuICBkZWxheTogbnVtYmVyLFxyXG4gIGNvdW50ID0gMVxyXG4pOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xyXG4gIHJldHVybiAoaW5wdXQpID0+XHJcbiAgICBpbnB1dC5waXBlKFxyXG4gICAgICByZXRyeVdoZW4oKGVycm9ycykgPT5cclxuICAgICAgICBlcnJvcnMucGlwZShcclxuICAgICAgICAgIHNjYW4oKGFjYywgZXJyb3IpID0+ICh7IGNvdW50OiBhY2MuY291bnQgKyAxLCBlcnJvciB9KSwge1xyXG4gICAgICAgICAgICBjb3VudDogMCxcclxuICAgICAgICAgICAgZXJyb3I6IHVuZGVmaW5lZCBhcyBhbnksXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRhcCgoY3VycmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudC5jb3VudCA+IGNvdW50KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgY3VycmVudC5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBkZWxheU9wZXJhdG9yKGRlbGF5KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxufVxyXG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ export class SafeHtmlPipe {
5
+ constructor(sanitizer) {
6
+ this.sanitizer = sanitizer;
7
+ }
8
+ transform(style) {
9
+ return this.sanitizer.bypassSecurityTrustHtml(style);
10
+ // return this.sanitizer.bypassSecurityTrustStyle(style);
11
+ // return this.sanitizer.bypassSecurityTrustXxx(style); - see docs
12
+ }
13
+ }
14
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
15
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SafeHtmlPipe, name: "safeHtml" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SafeHtmlPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: 'safeHtml'
20
+ }]
21
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL1BpcGVzL3NhZmUtaHRtbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLFlBQVk7SUFFeEIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFJLENBQUM7SUFFaEQsU0FBUyxDQUFDLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQseURBQXlEO1FBQ3pELGtFQUFrRTtJQUNuRSxDQUFDOzt5R0FSVyxZQUFZO3VHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFIeEIsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsVUFBVTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQFBpcGUoe1xyXG5cdG5hbWU6ICdzYWZlSHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhZmVIdG1sUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcblx0dHJhbnNmb3JtKHN0eWxlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3R5bGUpO1xyXG5cdFx0Ly8gcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShzdHlsZSk7XHJcblx0XHQvLyByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFh4eChzdHlsZSk7IC0gc2VlIGRvY3NcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { retryWithDelay } from './retry-with-delay';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "@angular/platform-browser";
7
+ export class SecurePipe {
8
+ constructor(http, domSanitizer) {
9
+ this.http = http;
10
+ this.domSanitizer = domSanitizer;
11
+ }
12
+ transform(url, delayVal, retryVal) {
13
+ if (!delayVal) {
14
+ delayVal = 5000;
15
+ }
16
+ if (!retryVal) {
17
+ retryVal = 0;
18
+ }
19
+ return this.http
20
+ // load the image as a blob
21
+ .get(url, { responseType: 'blob' })
22
+ // create an object url of that blob that we can use in the src attribute
23
+ .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))), retryWithDelay(delayVal, retryVal));
24
+ }
25
+ }
26
+ SecurePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecurePipe, deps: [{ token: i1.HttpClient }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
27
+ SecurePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecurePipe, name: "secure" });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecurePipe, decorators: [{
29
+ type: Pipe,
30
+ args: [{
31
+ name: 'secure'
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DomSanitizer }]; } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL1BpcGVzL3NlY3VyZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXBELE9BQU8sRUFBYSxHQUFHLEVBQTRCLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBS3BELE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQW9CLElBQWdCLEVBQVUsWUFBMEI7UUFBcEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUksQ0FBQztJQUU3RSxTQUFTLENBQUMsR0FBUSxFQUFFLFFBQWMsRUFBRSxRQUFjO1FBQ2hELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQUU7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FBRTtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJO1lBQ2QsMkJBQTJCO2FBQzFCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkMseUVBQXlFO2FBQ3hFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMxRSxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUNuQyxDQUFDO0lBQ04sQ0FBQzs7dUdBZlUsVUFBVTtxR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBSHRCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFFBQVE7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHJldHJ5LCBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgcmV0cnlXaXRoRGVsYXkgfSBmcm9tICcuL3JldHJ5LXdpdGgtZGVsYXknO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdzZWN1cmUnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWN1cmVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XHJcblxyXG4gIHRyYW5zZm9ybSh1cmw6IGFueSwgZGVsYXlWYWw/OiBhbnksIHJldHJ5VmFsPzogYW55KSB7XHJcbiAgICBpZiAoIWRlbGF5VmFsKSB7IGRlbGF5VmFsID0gNTAwMDsgfVxyXG4gICAgaWYgKCFyZXRyeVZhbCkgeyByZXRyeVZhbCA9IDA7IH1cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLy8gbG9hZCB0aGUgaW1hZ2UgYXMgYSBibG9iXHJcbiAgICAgIC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pXHJcbiAgICAgIC8vIGNyZWF0ZSBhbiBvYmplY3QgdXJsIG9mIHRoYXQgYmxvYiB0aGF0IHdlIGNhbiB1c2UgaW4gdGhlIHNyYyBhdHRyaWJ1dGVcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKGUgPT4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKGUpKSksXHJcbiAgICAgICAgcmV0cnlXaXRoRGVsYXkoZGVsYXlWYWwsIHJldHJ5VmFsKVxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ConfirmationComponent, ConfirmationModel } from '../Components/confirmation/confirmation.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ export class DialogService {
6
+ constructor(dialog) {
7
+ this.dialog = dialog;
8
+ }
9
+ createConfirmationDialog(title, message, mode) {
10
+ const dialogData = new ConfirmationModel(title, message, mode);
11
+ return this.dialog.open(ConfirmationComponent, {
12
+ maxWidth: '80%',
13
+ data: dialogData,
14
+ disableClose: true
15
+ });
16
+ }
17
+ openConfirmationDialog(title, message, mode) {
18
+ return this.createConfirmationDialog(title, message, mode).afterClosed();
19
+ }
20
+ }
21
+ DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
22
+ DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DialogService, providedIn: 'root' });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DialogService, decorators: [{
24
+ type: Injectable,
25
+ args: [{
26
+ providedIn: 'root'
27
+ }]
28
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL1NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7OztBQUs3RyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFzQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUksQ0FBQztJQUU1Qyx3QkFBd0IsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFFLElBQWE7UUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0MsUUFBUSxFQUFFLEtBQUs7WUFDZixJQUFJLEVBQUUsVUFBVTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0Qsc0JBQXNCLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxJQUFhO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0UsQ0FBQzs7MEdBaEJVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kZWwgfSBmcm9tICcuLi9Db21wb25lbnRzL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxyXG5cclxuICBjcmVhdGVDb25maXJtYXRpb25EaWFsb2codGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBtb2RlPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dEYXRhID0gbmV3IENvbmZpcm1hdGlvbk1vZGVsKHRpdGxlLCBtZXNzYWdlLCBtb2RlKTtcclxuICAgIHJldHVybiB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBtYXhXaWR0aDogJzgwJScsXHJcbiAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkNvbmZpcm1hdGlvbkRpYWxvZyh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIG1vZGU/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbmZpcm1hdGlvbkRpYWxvZyh0aXRsZSwgbWVzc2FnZSwgbW9kZSkuYWZ0ZXJDbG9zZWQoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,21 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FolderServiceConfig {
4
+ constructor() {
5
+ this.apiPath = '/';
6
+ }
7
+ static Create(t) {
8
+ const res = new FolderServiceConfig();
9
+ if (t) {
10
+ Object.assign(res, t);
11
+ }
12
+ return res;
13
+ }
14
+ }
15
+ FolderServiceConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FolderServiceConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ FolderServiceConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FolderServiceConfig, providedIn: 'root' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FolderServiceConfig, decorators: [{
18
+ type: Injectable,
19
+ args: [{ providedIn: 'root' }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLXNlcnZpY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9TZXJ2aWNlcy9mb2xkZXItc2VydmljZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVFLFlBQU8sR0FBRyxHQUFHLENBQUM7S0FRZjtJQVBDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBTztRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEVBQUU7WUFDTCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7Z0hBUlUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FETixNQUFNOzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEZvbGRlclNlcnZpY2VDb25maWcge1xyXG4gIGFwaVBhdGg/PSAnLyc7XHJcbiAgc3RhdGljIENyZWF0ZSh0PzogYW55KTogRm9sZGVyU2VydmljZUNvbmZpZyB7XHJcbiAgICBjb25zdCByZXMgPSBuZXcgRm9sZGVyU2VydmljZUNvbmZpZygpO1xyXG4gICAgaWYgKHQpIHtcclxuICAgICAgT2JqZWN0LmFzc2lnbihyZXMsIHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,50 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { API_SERVER_URL } from './gloww.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ import * as i2 from "./folder-service-config";
6
+ export class FolderService {
7
+ constructor(http, folderServiceConfig, apiServerUrl) {
8
+ this.http = http;
9
+ this.folderServiceConfig = folderServiceConfig;
10
+ console.log(`folderServiceConfig ${folderServiceConfig.apiPath}`);
11
+ console.log(`apiServierUrl ${apiServerUrl}`);
12
+ }
13
+ getDirectoryContent(path) {
14
+ return this.http.get(`${this.folderServiceConfig.apiPath}Directories/${path ?? ""}`);
15
+ }
16
+ postDirectoryContent(path) {
17
+ const formData = new FormData();
18
+ return this.http.post(`${this.folderServiceConfig.apiPath}Directories/${path}`, formData, {});
19
+ }
20
+ getFileContent(path) {
21
+ return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? "").replace(/[\/\\]/g, '%2F')}`, {
22
+ responseType: 'text'
23
+ });
24
+ }
25
+ getFileContentBlob(path) {
26
+ return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? "").replace(/[\/\\]/g, '%2F')}`, {
27
+ responseType: 'blob'
28
+ });
29
+ }
30
+ postFileContent(path, formData) {
31
+ return this.http.post(`${this.folderServiceConfig.apiPath}Files/${(path ?? "").replace(/[\/\\]/g, '%2F')}`, formData, {
32
+ reportProgress: true,
33
+ observe: 'events'
34
+ });
35
+ }
36
+ }
37
+ FolderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FolderService, deps: [{ token: i1.HttpClient }, { token: i2.FolderServiceConfig }, { token: API_SERVER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ FolderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FolderService, providedIn: 'root' });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FolderService, decorators: [{
40
+ type: Injectable,
41
+ args: [{
42
+ providedIn: 'root'
43
+ }]
44
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.FolderServiceConfig }, { type: undefined, decorators: [{
45
+ type: Optional
46
+ }, {
47
+ type: Inject,
48
+ args: [API_SERVER_URL]
49
+ }] }]; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL1NlcnZpY2VzL2ZvbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFXakQsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsSUFBZ0IsRUFBVSxtQkFBd0MsRUFBc0MsWUFBb0I7UUFBNUgsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDcEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFZO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sZUFBZSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sZUFBZSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUdELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN6RyxZQUFZLEVBQUUsTUFBTTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsSUFBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDekcsWUFBWSxFQUFFLE1BQU07U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZLEVBQUUsUUFBa0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRTtZQUN6SCxjQUFjLEVBQUUsSUFBSTtZQUNwQixPQUFPLEVBQUUsUUFBUTtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDOzswR0FoQ1UsYUFBYSwrRUFFb0YsY0FBYzs4R0FGL0csYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUcwRixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2xkZXJTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9mb2xkZXItc2VydmljZS1jb25maWcnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFQSV9QQVRIIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2VuJztcclxuaW1wb3J0IHsgQVBJX1NFUlZFUl9VUkwgfSBmcm9tICcuL2dsb3d3LnNlcnZpY2UnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Q29udGVudCB7XHJcbiAgZmlsZXM6IHN0cmluZ1tdO1xyXG4gIGRpcmVjdG9yaWVzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9sZGVyU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBmb2xkZXJTZXJ2aWNlQ29uZmlnOiBGb2xkZXJTZXJ2aWNlQ29uZmlnLCBAT3B0aW9uYWwoKSBASW5qZWN0KEFQSV9TRVJWRVJfVVJMKSBhcGlTZXJ2ZXJVcmw6IHN0cmluZykge1xyXG4gICAgY29uc29sZS5sb2coYGZvbGRlclNlcnZpY2VDb25maWcgJHtmb2xkZXJTZXJ2aWNlQ29uZmlnLmFwaVBhdGh9YCk7XHJcbiAgICBjb25zb2xlLmxvZyhgYXBpU2VydmllclVybCAke2FwaVNlcnZlclVybH1gKTtcclxuICB9XHJcblxyXG4gIGdldERpcmVjdG9yeUNvbnRlbnQocGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxEaXJlY3RvcnlDb250ZW50PihgJHt0aGlzLmZvbGRlclNlcnZpY2VDb25maWcuYXBpUGF0aH1EaXJlY3Rvcmllcy8ke3BhdGggPz8gXCJcIn1gKTtcclxuICB9XHJcbiAgcG9zdERpcmVjdG9yeUNvbnRlbnQocGF0aDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PERpcmVjdG9yeUNvbnRlbnQ+KGAke3RoaXMuZm9sZGVyU2VydmljZUNvbmZpZy5hcGlQYXRofURpcmVjdG9yaWVzLyR7cGF0aH1gLCBmb3JtRGF0YSwge30pO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEZpbGVDb250ZW50KHBhdGg6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5mb2xkZXJTZXJ2aWNlQ29uZmlnLmFwaVBhdGh9RmlsZXMvJHsocGF0aCA/PyBcIlwiKS5yZXBsYWNlKC9bXFwvXFxcXF0vZywgJyUyRicpfWAsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRGaWxlQ29udGVudEJsb2IocGF0aDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmZvbGRlclNlcnZpY2VDb25maWcuYXBpUGF0aH1GaWxlcy8keyhwYXRoID8/IFwiXCIpLnJlcGxhY2UoL1tcXC9cXFxcXS9nLCAnJTJGJyl9YCwge1xyXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwb3N0RmlsZUNvbnRlbnQocGF0aDogc3RyaW5nLCBmb3JtRGF0YTogRm9ybURhdGEpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuZm9sZGVyU2VydmljZUNvbmZpZy5hcGlQYXRofUZpbGVzLyR7KHBhdGggPz8gXCJcIikucmVwbGFjZSgvW1xcL1xcXFxdL2csICclMkYnKX1gLCBmb3JtRGF0YSwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cydcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=