@gloww/gloww 0.9.0-beta.2

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 +440 -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 +97 -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 +136 -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 +44 -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 +3018 -0
  55. package/fesm2015/gloww-gloww.mjs.map +1 -0
  56. package/fesm2020/gloww-gloww.mjs +2980 -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 +90 -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 +17 -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 +39 -0
  308. package/public-api.d.ts +28 -0
@@ -0,0 +1,175 @@
1
+ import { Component, Input, SecurityContext, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { HtmlFormatPipe } from '../../Pipes/html-format.pipe';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/platform-browser";
6
+ import * as i2 from "../../gloww-security/gloww-security.module";
7
+ import * as i3 from "../../Services/voice-recognition.service";
8
+ import * as i4 from "@angular/material/dialog";
9
+ import * as i5 from "@gloww/angular-editor";
10
+ import * as i6 from "@angular/forms";
11
+ import * as i7 from "../../Pipes/html-format.pipe";
12
+ export class HtmlEditorComponent {
13
+ constructor(sanitizer, authenticationService, voiceRecognitionService, dialog) {
14
+ this.sanitizer = sanitizer;
15
+ this.authenticationService = authenticationService;
16
+ this.voiceRecognitionService = voiceRecognitionService;
17
+ this.dialog = dialog;
18
+ //@Input() formControlName: string = "";
19
+ this.placeHolder = "";
20
+ this._value = null;
21
+ this.onChange = () => { };
22
+ this.onTouched = () => { };
23
+ this.allowedStyles = ['text-align'];
24
+ this.allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];
25
+ this.editorConfig = {
26
+ editable: true,
27
+ spellcheck: true,
28
+ height: 'auto',
29
+ minHeight: '75px',
30
+ maxHeight: 'auto',
31
+ width: 'auto',
32
+ minWidth: '0',
33
+ translate: 'yes',
34
+ enableToolbar: true,
35
+ showToolbar: true,
36
+ placeholder: 'Enter text here...',
37
+ defaultParagraphSeparator: 'p',
38
+ defaultFontName: '',
39
+ defaultFontSize: '3',
40
+ fonts: [
41
+ { class: 'arial', name: 'Arial' }
42
+ ],
43
+ customClasses: [
44
+ {
45
+ name: 'quote',
46
+ class: 'quote',
47
+ }
48
+ ],
49
+ uploadUrl: 'v1/image',
50
+ uploadWithCredentials: false,
51
+ sanitize: (html) => this.sanitize(html),
52
+ toolbarPosition: 'top',
53
+ toolbarHiddenButtons: [
54
+ ['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',
55
+ 'fontName',
56
+ 'fontSize',
57
+ 'textColor',
58
+ 'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']
59
+ ],
60
+ additionalButtons: [
61
+ {
62
+ title: 'Speech Recognition',
63
+ click: (tb, event) => {
64
+ this.tb = tb;
65
+ tb.focus();
66
+ this.voiceRecognitionService.start();
67
+ this.voiceRecognitionService.text = "";
68
+ this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {
69
+ width: '550px'
70
+ });
71
+ },
72
+ icon: 'fas fa-comment-plus'
73
+ }
74
+ ]
75
+ };
76
+ this.voiceRecognitionService.init();
77
+ }
78
+ cancel() {
79
+ this.voiceRecognitionService.stop();
80
+ this.tb = undefined;
81
+ this.dialogRef?.close();
82
+ }
83
+ paste() {
84
+ this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));
85
+ this.voiceRecognitionService.stop();
86
+ this.tb = undefined;
87
+ this.dialogRef?.close();
88
+ }
89
+ get value() {
90
+ return this._value;
91
+ }
92
+ set value(val) {
93
+ this._value = val;
94
+ this.onChange(val);
95
+ this.onTouched();
96
+ }
97
+ writeValue(obj) {
98
+ if (obj) {
99
+ this.value = obj;
100
+ }
101
+ }
102
+ registerOnChange(fn) {
103
+ this.onChange = fn;
104
+ }
105
+ registerOnTouched(fn) {
106
+ this.onTouched = fn;
107
+ }
108
+ sanitize(html) {
109
+ let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\</?[a-z]+:[a-z]+\\>', 'gi'), '').replace(/class="Mso[a-z]+"/ig, '');
110
+ const matchTags = itres?.match(/<\s*\/?(?<tag>[a-z0-9]+)\s*[^>]*>/ig);
111
+ matchTags?.forEach(m => {
112
+ const matchTag = m.match(/<\s*\/?(?<tag>[a-z0-9]+)\s*[^>]*>/i);
113
+ if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {
114
+ itres = itres?.replace(m, '');
115
+ }
116
+ });
117
+ while (true) {
118
+ const matchStyle = itres?.match(/style\s*=\s*"(?<style>[^"]+)"/i);
119
+ if (!matchStyle || !matchStyle?.groups) {
120
+ break;
121
+ }
122
+ const styles = matchStyle?.groups['style']?.replace(/&quot;/ig, '"');
123
+ const smatches = styles.match(/(?<name>[^;:]+)\s*:\s*(?<value>[^;]+);*/ig);
124
+ const newStyles = [];
125
+ smatches?.forEach((v, i, a) => {
126
+ const ssmatches = v.match(/(?<name>[^;:]+)\s*:\s*(?<value>[^;]+);*/i);
127
+ if (ssmatches?.groups) {
128
+ const name = ssmatches?.groups['name'];
129
+ if (this.allowedStyles.indexOf(name) >= 0) {
130
+ newStyles.push(v);
131
+ }
132
+ const value = ssmatches.groups['value'];
133
+ console.log(`${name}=${value}`);
134
+ }
135
+ });
136
+ let attr = '';
137
+ if (newStyles.length) {
138
+ attr = `stylenew="${newStyles.join(';')}"`;
139
+ }
140
+ itres = itres?.replace(matchStyle[0], attr);
141
+ }
142
+ return itres?.replace(/stylenew=/ig, 'style=') ?? "";
143
+ }
144
+ isAdministrator() {
145
+ const currentUser = this.authenticationService.currentUserValue.UserInfo;
146
+ return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;
147
+ }
148
+ }
149
+ HtmlEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlEditorComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.AuthenticationService }, { token: i3.VoiceRecognitionService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
150
+ HtmlEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HtmlEditorComponent, selector: "gloww-html-editor", inputs: { placeHolder: "placeHolder", _value: ["value", "_value"] }, providers: [
151
+ {
152
+ provide: NG_VALUE_ACCESSOR,
153
+ multi: true,
154
+ useExisting: HtmlEditorComponent
155
+ }
156
+ ], viewQueries: [{ propertyName: "voiceRecognitionTemplate", first: true, predicate: ["voiceRecognitionDlg"], descendants: true }], ngImport: i0, template: "<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activ\u00E9e. Veuillez dicter le texte \u00E0 ins\u00E9rer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n", styles: [""], components: [{ type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }], directives: [{ type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "htmlFormat": i7.HtmlFormatPipe } });
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HtmlEditorComponent, decorators: [{
158
+ type: Component,
159
+ args: [{ selector: 'gloww-html-editor', providers: [
160
+ {
161
+ provide: NG_VALUE_ACCESSOR,
162
+ multi: true,
163
+ useExisting: HtmlEditorComponent
164
+ }
165
+ ], template: "<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activ\u00E9e. Veuillez dicter le texte \u00E0 ins\u00E9rer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n", styles: [""] }]
166
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.AuthenticationService }, { type: i3.VoiceRecognitionService }, { type: i4.MatDialog }]; }, propDecorators: { voiceRecognitionTemplate: [{
167
+ type: ViewChild,
168
+ args: ['voiceRecognitionDlg']
169
+ }], placeHolder: [{
170
+ type: Input
171
+ }], _value: [{
172
+ type: Input,
173
+ args: ['value']
174
+ }] } });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL2h0bWwtZWRpdG9yL2h0bWwtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9odG1sLWVkaXRvci9odG1sLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxlQUFlLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQWtCOUQsTUFBTSxPQUFPLG1CQUFtQjtJQStFOUIsWUFBb0IsU0FBdUIsRUFBVSxxQkFBNEMsRUFBUyx1QkFBZ0QsRUFBUyxNQUFpQjtRQUFoSyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBN0VwTCx3Q0FBd0M7UUFDL0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFRLElBQUksQ0FBQztRQUNuQyxhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLGNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFLM0Isa0JBQWEsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLGdCQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdB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LENBQUMsTUFBTSxFQUFFO2dCQUFFLElBQUksR0FBRyxhQUFhLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUFFO1lBQ3JFLEtBQUssR0FBRyxLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sS0FBSyxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxXQUFXLEdBQVMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUF3QixDQUFDLFFBQVEsQ0FBQztRQUN2RixPQUFPLFdBQVcsQ0FBQyxlQUFlLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O2dIQTdJVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixpSEFSbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsbUJBQW1CO1NBQ2pDO0tBQ0YsMkpDcEJILG92QkFjQTsyRkRRYSxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcscUJBQXFCO3lCQUNqQztxQkFDRjtxTUFHaUMsd0JBQXdCO3NCQUF6RCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFFdkIsV0FBVztzQkFBbkIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFNlY3VyaXR5Q29udGV4dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEh0bWxGb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vUGlwZXMvaHRtbC1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFZvaWNlUmVjb2duaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2VydmljZXMvdm9pY2UtcmVjb2duaXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcsIEFuZ3VsYXJFZGl0b3JUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnQGdsb3d3L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQW5ndWxhckVkaXRvckJ1dHRvbkNvbmZpZyB9IGZyb20gJ0BnbG93dy9hbmd1bGFyLWVkaXRvci9saWIvY29uZmlnJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2xvd3ctc2VjdXJpdHkvZ2xvd3ctc2VjdXJpdHkubW9kdWxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2xvd3ctaHRtbC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaHRtbC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBIdG1sRWRpdG9yQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBAVmlld0NoaWxkKCd2b2ljZVJlY29nbml0aW9uRGxnJykgdm9pY2VSZWNvZ25pdGlvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvL0BJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwbGFjZUhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG4gIHRiPzogQW5ndWxhckVkaXRvclRvb2xiYXJDb21wb25lbnQ7XHJcbiAgZGlhbG9nUmVmPzogTWF0RGlhbG9nUmVmPGFueSwgYW55PjtcclxuXHJcbiAgYWxsb3dlZFN0eWxlcyA9IFsndGV4dC1hbGlnbiddO1xyXG4gIGFsbG93ZWRUYWdzID0gWydwJywgJ3NwYW4nLCAnZGl2JywgJ2hyJywgJ2JyJywgJ2InLCAnaScsICd1JywgJ3N1cCcsICdzdWInLCAnc3RyaWtlJywgJ29sJywgJ3VsJywgJ2xpJ107XHJcbiAgcHVibGljIGVkaXRvckNvbmZpZzogQW5ndWxhckVkaXRvckNvbmZpZyA9IHtcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc3BlbGxjaGVjazogdHJ1ZSxcclxuICAgIGhlaWdodDogJ2F1dG8nLFxyXG4gICAgbWluSGVpZ2h0OiAnNzVweCcsXHJcbiAgICBtYXhIZWlnaHQ6ICdhdXRvJyxcclxuICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICBtaW5XaWR0aDogJzAnLFxyXG4gICAgdHJhbnNsYXRlOiAneWVzJyxcclxuICAgIGVuYWJsZVRvb2xiYXI6IHRydWUsXHJcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGV4dCBoZXJlLi4uJyxcclxuICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICdwJyxcclxuICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICBkZWZhdWx0Rm9udFNpemU6ICczJyxcclxuICAgIGZvbnRzOiBbXHJcbiAgICAgIHsgY2xhc3M6ICdhcmlhbCcsIG5hbWU6ICdBcmlhbCcgfVxyXG4gICAgXSxcclxuICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdxdW90ZScsXHJcbiAgICAgICAgY2xhc3M6ICdxdW90ZScsXHJcbiAgICAgIH1cclxuICAgIF0sXHJcbiAgICB1cGxvYWRVcmw6ICd2MS9pbWFnZScsXHJcbiAgICB1cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgc2FuaXRpemU6IChodG1sOiBzdHJpbmcpID0+IHRoaXMuc2FuaXRpemUoaHRtbCksXHJcbiAgICB0b29sYmFyUG9zaXRpb246ICd0b3AnLFxyXG4gICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgWydpbnNlcnRJbWFnZScsICdpbnNlcnRWaWRlbycsICdjdXN0b21DbGFzc2VzJywgJ2hlYWRpbmcnLCAnaGVhZGluZycsXHJcbiAgICAgICAgJ2ZvbnROYW1lJyxcclxuICAgICAgICAnZm9udFNpemUnLFxyXG4gICAgICAgICd0ZXh0Q29sb3InLFxyXG4gICAgICAgICdiYWNrZ3JvdW5kQ29sb3InLCAhdGhpcy5pc0FkbWluaXN0cmF0b3IoKSA/ICd0b2dnbGVFZGl0b3JNb2RlJyA6ICcnXVxyXG4gICAgXSxcclxuICAgIGFkZGl0aW9uYWxCdXR0b25zOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1NwZWVjaCBSZWNvZ25pdGlvbicsXHJcbiAgICAgICAgY2xpY2s6ICh0YjogQW5ndWxhckVkaXRvclRvb2xiYXJDb21wb25lbnQsIGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRiID0gdGI7XHJcbiAgICAgICAgICB0Yi5mb2N1cygpO1xyXG4gICAgICAgICAgdGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS5zdGFydCgpO1xyXG4gICAgICAgICAgdGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS50ZXh0ID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLnZvaWNlUmVjb2duaXRpb25UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgICB3aWR0aDogJzU1MHB4J1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaWNvbjogJ2ZhcyBmYS1jb21tZW50LXBsdXMnXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9O1xyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLnZvaWNlUmVjb2duaXRpb25TZXJ2aWNlLnN0b3AoKTtcclxuICAgIHRoaXMudGIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHBhc3RlKCkge1xyXG4gICAgdGhpcy50Yj8uaW5zZXJ0SHRtbChuZXcgSHRtbEZvcm1hdFBpcGUoKS50cmFuc2Zvcm0odGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS50ZXh0KSk7XHJcbiAgICB0aGlzLnZvaWNlUmVjb2duaXRpb25TZXJ2aWNlLnN0b3AoKTtcclxuICAgIHRoaXMudGIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsIHB1YmxpYyB2b2ljZVJlY29nbml0aW9uU2VydmljZTogVm9pY2VSZWNvZ25pdGlvblNlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgdGhpcy52b2ljZVJlY29nbml0aW9uU2VydmljZS5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzYW5pdGl6ZShodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGl0cmVzID0gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LlNUWUxFLCBodG1sKT8ucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcPC8/W2Etel0rOlthLXpdK1xcXFw+JywgJ2dpJyksICcnKS5yZXBsYWNlKC9jbGFzcz1cIk1zb1thLXpdK1wiL2lnLCAnJyk7XHJcbiAgICBjb25zdCBtYXRjaFRhZ3MgPSBpdHJlcz8ubWF0Y2goLzxcXHMqXFwvPyg/PHRhZz5bYS16MC05XSspXFxzKltePl0qPi9pZyk7XHJcbiAgICBtYXRjaFRhZ3M/LmZvckVhY2gobSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoVGFnID0gbS5tYXRjaCgvPFxccypcXC8/KD88dGFnPlthLXowLTldKylcXHMqW14+XSo+L2kpO1xyXG4gICAgICBpZiAobWF0Y2hUYWc/Lmdyb3VwcyAmJiB0aGlzLmFsbG93ZWRUYWdzLmluZGV4T2YobWF0Y2hUYWc/Lmdyb3Vwc1sndGFnJ10pIDwgMCkge1xyXG4gICAgICAgIGl0cmVzID0gaXRyZXM/LnJlcGxhY2UobSwgJycpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICBjb25zdCBtYXRjaFN0eWxlID0gaXRyZXM/Lm1hdGNoKC9zdHlsZVxccyo9XFxzKlwiKD88c3R5bGU+W15cIl0rKVwiL2kpO1xyXG4gICAgICBpZiAoIW1hdGNoU3R5bGUgfHwgIW1hdGNoU3R5bGU/Lmdyb3VwcykgeyBicmVhazsgfVxyXG4gICAgICBjb25zdCBzdHlsZXMgPSBtYXRjaFN0eWxlPy5ncm91cHNbJ3N0eWxlJ10/LnJlcGxhY2UoLyZxdW90Oy9pZywgJ1wiJyk7XHJcbiAgICAgIGNvbnN0IHNtYXRjaGVzID0gc3R5bGVzLm1hdGNoKC8oPzxuYW1lPlteOzpdKylcXHMqOlxccyooPzx2YWx1ZT5bXjtdKyk7Ki9pZyk7XHJcbiAgICAgIGNvbnN0IG5ld1N0eWxlczogYW55W10gPSBbXTtcclxuICAgICAgc21hdGNoZXM/LmZvckVhY2goKHYsIGksIGEpID0+IHtcclxuICAgICAgICBjb25zdCBzc21hdGNoZXMgPSB2Lm1hdGNoKC8oPzxuYW1lPlteOzpdKylcXHMqOlxccyooPzx2YWx1ZT5bXjtdKyk7Ki9pKTtcclxuICAgICAgICBpZiAoc3NtYXRjaGVzPy5ncm91cHMpIHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBzc21hdGNoZXM/Lmdyb3Vwc1snbmFtZSddO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dlZFN0eWxlcy5pbmRleE9mKG5hbWUpID49IDApIHtcclxuICAgICAgICAgICAgbmV3U3R5bGVzLnB1c2godik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNzbWF0Y2hlcy5ncm91cHNbJ3ZhbHVlJ107XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfT0ke3ZhbHVlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBhdHRyID0gJyc7XHJcbiAgICAgIGlmIChuZXdTdHlsZXMubGVuZ3RoKSB7IGF0dHIgPSBgc3R5bGVuZXc9XCIke25ld1N0eWxlcy5qb2luKCc7Jyl9XCJgOyB9XHJcbiAgICAgIGl0cmVzID0gaXRyZXM/LnJlcGxhY2UobWF0Y2hTdHlsZVswXSwgYXR0cik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRyZXM/LnJlcGxhY2UoL3N0eWxlbmV3PS9pZywgJ3N0eWxlPScpID8/IFwiXCI7XHJcbiAgfVxyXG5cclxuICBpc0FkbWluaXN0cmF0b3IoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VXNlcjogYW55ID0gKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUgYXMgYW55KS5Vc2VySW5mbztcclxuICAgIHJldHVybiBjdXJyZW50VXNlci5Jc0FkbWluaXN0cmF0b3IgPT09IDEgfHwgY3VycmVudFVzZXIuaXNBZG1pbmlzdHJhdG9yID09PSAxO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICAgIDxhbmd1bGFyLWVkaXRvciBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2NvbmZpZ109XCJlZGl0b3JDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIj48L2FuZ3VsYXItZWRpdG9yPlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICN2b2ljZVJlY29nbml0aW9uRGxnPlxyXG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgICAgICA8ZGl2PkxhIHJlY29ubmFpc3NhbmNlIHZvY2FsZSBlc3QgYWN0aXbDqWUuIFZldWlsbGV6IGRpY3RlciBsZSB0ZXh0ZSDDoCBpbnPDqXJlci48L2Rpdj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwidm9pY2VSZWNvZ25pdGlvblNlcnZpY2UudGV4dCB8IGh0bWxGb3JtYXRcIiBzdHlsZT1cIndpZHRoOjUwMHB4O2hlaWdodDozMDBweDtib3JkZXI6MXB4IHNvbGlkOyBib3JkZXItY29sb3I6IGJsdWU7XCI+PC9kaXY+XHJcbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtYXQtcmFpc2VkLWJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1hdC1yYWlzZWQtYnV0dG9uIG1hdC1wcmltYXJ5XCIgKGNsaWNrKT1cInBhc3RlKClcIj5QYXN0ZTwvYnV0dG9uPlxyXG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,97 @@
1
+ import { Component, HostBinding, Input } from '@angular/core';
2
+ import { animate, state, style, transition, trigger } from '@angular/animations';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../Services/nav.service";
5
+ import * as i2 from "@angular/router";
6
+ import * as i3 from "@angular/material/icon";
7
+ import * as i4 from "@angular/common";
8
+ export class MenuListItemComponent {
9
+ constructor(navService, router) {
10
+ this.navService = navService;
11
+ this.router = router;
12
+ this._expanded = false;
13
+ this.ariaExpanded = this.expanded;
14
+ if (this.depth === undefined) {
15
+ this.depth = 0;
16
+ }
17
+ }
18
+ get expanded() {
19
+ return this._expanded;
20
+ }
21
+ set expanded(value) {
22
+ console.log("change expanded");
23
+ this._expanded = value;
24
+ }
25
+ ngOnInit() {
26
+ this.navService.currentUrl.subscribe((url) => {
27
+ let route = this.item.route;
28
+ if (typeof this.item.route === 'function') {
29
+ const routefct = this.item.route;
30
+ route = routefct.call(this);
31
+ }
32
+ if (this.item.route && url) {
33
+ // console.log(`Checking '/${this.item.route}' against '${url}'`);
34
+ //this.expanded = url.indexOf(`/${route}`) === 0;
35
+ //this.ariaExpanded = this.expanded;
36
+ // console.log(`${this.item.route} is expanded: ${this.expanded}`);
37
+ }
38
+ });
39
+ }
40
+ onItemSelected(item) {
41
+ /*if (!item.children || !item.children.length) {
42
+ if (typeof item.route === 'function') {
43
+ const routefct: () => string = item.route;
44
+ this.router.navigate([routefct.call(this)]);
45
+ } else {
46
+ const route: string = item.route;
47
+ this.router.navigate([route]);
48
+ }
49
+ this.navService.closeNav();
50
+ }*/
51
+ if (item.children && item.children.length) {
52
+ this.expanded = !this.expanded;
53
+ }
54
+ }
55
+ isActive(item) {
56
+ let route = this.item.route;
57
+ if (typeof this.item.route === 'function') {
58
+ const routefct = this.item.route;
59
+ route = routefct.call(this);
60
+ return route ? this.router.isActive(route, true) : false;
61
+ }
62
+ }
63
+ routerLink(item) {
64
+ let route = this.item.route;
65
+ if (typeof this.item.route === 'function') {
66
+ const routefct = this.item.route;
67
+ route = routefct.call(this);
68
+ }
69
+ return route;
70
+ }
71
+ }
72
+ MenuListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MenuListItemComponent, deps: [{ token: i1.NavService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
73
+ MenuListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: MenuListItemComponent, selector: "gloww-menu-list-item", inputs: { item: "item", depth: "depth" }, host: { properties: { "attr.aria-expanded": "this.ariaExpanded" } }, ngImport: i0, template: "<div class=\"thisMenu\" (click)=\"onItemSelected(item)\">\r\n <a mat-list-item [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\" [routerLink]=\"routerLink(item)\" [ngClass]=\"{'active': isActive(item), 'expanded': expanded}\" class=\"menu-list-item\">\r\n <mat-icon class=\"routeIcon\"><i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i></mat-icon> {{item.displayName}}\r\n </a>\r\n <span fxFlex *ngIf=\"item.children && item.children.length\">\r\n <span fxFlex></span>\r\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\r\n expand_more\r\n </mat-icon>\r\n </span>\r\n</div>\r\n<div *ngIf=\"expanded\">\r\n <gloww-menu-list-item *ngFor=\"let child of item.children\" [item]=\"child\" [depth]=\"depth+1\">\r\n </gloww-menu-list-item>\r\n</div>\r\n", styles: [".thisMenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center;outline:none;width:calc(100% - 20px);margin:10px}.thisMenu .mat-list-item.active{background-color:#e8eaf6}.thisMenu:hover>.mat-list-item:not(.expanded),.thisMenu:focus>.mat-list-item:not(.expanded){background-color:#c5cae9!important}.mat-list-item{padding:8px 0;display:flex;width:auto}.mat-list-item .routeIcon{margin-right:40px}.routeIcon{margin-right:20px}.expandIcon{cursor:pointer}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: MenuListItemComponent, selector: "gloww-menu-list-item", inputs: ["item", "depth"] }], directives: [{ type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [
74
+ trigger('indicatorRotate', [
75
+ state('collapsed', style({ transform: 'rotate(0deg)' })),
76
+ state('expanded', style({ transform: 'rotate(180deg)' })),
77
+ transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),
78
+ ])
79
+ ] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MenuListItemComponent, decorators: [{
81
+ type: Component,
82
+ args: [{ selector: 'gloww-menu-list-item', animations: [
83
+ trigger('indicatorRotate', [
84
+ state('collapsed', style({ transform: 'rotate(0deg)' })),
85
+ state('expanded', style({ transform: 'rotate(180deg)' })),
86
+ transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),
87
+ ])
88
+ ], template: "<div class=\"thisMenu\" (click)=\"onItemSelected(item)\">\r\n <a mat-list-item [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\" [routerLink]=\"routerLink(item)\" [ngClass]=\"{'active': isActive(item), 'expanded': expanded}\" class=\"menu-list-item\">\r\n <mat-icon class=\"routeIcon\"><i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i></mat-icon> {{item.displayName}}\r\n </a>\r\n <span fxFlex *ngIf=\"item.children && item.children.length\">\r\n <span fxFlex></span>\r\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\r\n expand_more\r\n </mat-icon>\r\n </span>\r\n</div>\r\n<div *ngIf=\"expanded\">\r\n <gloww-menu-list-item *ngFor=\"let child of item.children\" [item]=\"child\" [depth]=\"depth+1\">\r\n </gloww-menu-list-item>\r\n</div>\r\n", styles: [".thisMenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center;outline:none;width:calc(100% - 20px);margin:10px}.thisMenu .mat-list-item.active{background-color:#e8eaf6}.thisMenu:hover>.mat-list-item:not(.expanded),.thisMenu:focus>.mat-list-item:not(.expanded){background-color:#c5cae9!important}.mat-list-item{padding:8px 0;display:flex;width:auto}.mat-list-item .routeIcon{margin-right:40px}.routeIcon{margin-right:20px}.expandIcon{cursor:pointer}\n"] }]
89
+ }], ctorParameters: function () { return [{ type: i1.NavService }, { type: i2.Router }]; }, propDecorators: { ariaExpanded: [{
90
+ type: HostBinding,
91
+ args: ['attr.aria-expanded']
92
+ }], item: [{
93
+ type: Input
94
+ }], depth: [{
95
+ type: Input
96
+ }] } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL21lbnUtbGlzdC1pdGVtL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9tZW51LWxpc3QtaXRlbS9tZW51LWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBZ0JqRixNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxZQUFtQixVQUFzQixFQUNoQyxNQUFjO1FBREosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmYsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNBLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQU85RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQWxCRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFjRCxRQUFRO1FBQ04sSUFBSSxDQUFD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YWtDLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUN4QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vTW9kZWxzL25hdi1pdGVtJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2U2VydmljZSB9IGZyb20gJy4uLy4uL1NlcnZpY2VzL25hdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dsb3d3LW1lbnUtbGlzdC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignaW5kaWNhdG9yUm90YXRlJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMGRlZyknIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSknKVxyXG4gICAgICApLFxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51TGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcclxuICB9XHJcbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZSBleHBhbmRlZFwiKTtcclxuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XHJcbiAgQElucHV0KCkgaXRlbTogTmF2SXRlbTtcclxuICBASW5wdXQoKSBkZXB0aDogbnVtYmVyO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG5hdlNlcnZpY2U6IE5hdlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIGlmICh0aGlzLmRlcHRoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kZXB0aCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubmF2U2VydmljZS5jdXJyZW50VXJsLnN1YnNjcmliZSgodXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLml0ZW0ucm91dGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gKHN0cmluZyB8IHN0cmluZ1tdKSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgICByb3V0ZSA9IHJvdXRlZmN0LmNhbGwodGhpcyk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBpZiAodGhpcy5pdGVtLnJvdXRlICYmIHVybCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDaGVja2luZyAnLyR7dGhpcy5pdGVtLnJvdXRlfScgYWdhaW5zdCAnJHt1cmx9J2ApO1xyXG4gICAgICAgIC8vdGhpcy5leHBhbmRlZCA9IHVybC5pbmRleE9mKGAvJHtyb3V0ZX1gKSA9PT0gMDtcclxuICAgICAgICAvL3RoaXMuYXJpYUV4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgJHt0aGlzLml0ZW0ucm91dGV9IGlzIGV4cGFuZGVkOiAke3RoaXMuZXhwYW5kZWR9YCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgLyppZiAoIWl0ZW0uY2hpbGRyZW4gfHwgIWl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgPSBpdGVtLnJvdXRlO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZWZjdC5jYWxsKHRoaXMpXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGl0ZW0ucm91dGU7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5uYXZTZXJ2aWNlLmNsb3NlTmF2KCk7XHJcbiAgICB9Ki9cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKGl0ZW06IE5hdkl0ZW0pIHtcclxuICAgIGxldCByb3V0ZSA9IHRoaXMuaXRlbS5yb3V0ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gPSB0aGlzLml0ZW0ucm91dGU7XHJcbiAgICAgIHJvdXRlID0gcm91dGVmY3QuY2FsbCh0aGlzKTtcclxuICAgICAgcmV0dXJuIHJvdXRlID8gdGhpcy5yb3V0ZXIuaXNBY3RpdmUocm91dGUsIHRydWUpIDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlckxpbmsoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgfCBzdHJpbmdbXSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgcm91dGUgPSByb3V0ZWZjdC5jYWxsKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvdXRlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRoaXNNZW51XCIgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XHJcbiAgICA8YSBtYXQtbGlzdC1pdGVtIFtuZ1N0eWxlXT1cInsncGFkZGluZy1sZWZ0JzogKGRlcHRoICogMTIpICsgJ3B4J31cIiBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rKGl0ZW0pXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZShpdGVtKSwgJ2V4cGFuZGVkJzogZXhwYW5kZWR9XCIgY2xhc3M9XCJtZW51LWxpc3QtaXRlbVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInJvdXRlSWNvblwiPjxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9pPjwvbWF0LWljb24+IHt7aXRlbS5kaXNwbGF5TmFtZX19XHJcbiAgICA8L2E+XHJcbiAgICA8c3BhbiBmeEZsZXggKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoXCI+XHJcbiAgICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxyXG4gICAgPG1hdC1pY29uIFtAaW5kaWNhdG9yUm90YXRlXT1cImV4cGFuZGVkID8gJ2V4cGFuZGVkJzogJ2NvbGxhcHNlZCdcIiBjbGFzcz1cImV4cGFuZEljb25cIj5cclxuICAgICAgICBleHBhbmRfbW9yZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJleHBhbmRlZFwiPlxyXG4gICAgPGdsb3d3LW1lbnUtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCIgW2l0ZW1dPVwiY2hpbGRcIiBbZGVwdGhdPVwiZGVwdGgrMVwiPlxyXG4gICAgPC9nbG93dy1tZW51LWxpc3QtaXRlbT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/form-field";
8
+ import * as i4 from "@angular/material/button";
9
+ import * as i5 from "@angular/material/input";
10
+ import * as i6 from "../../Pipes/safe-html.pipe";
11
+ export class PromptComponent {
12
+ constructor(dialogRef, data, formBuilder) {
13
+ this.dialogRef = dialogRef;
14
+ this.data = data;
15
+ this.formBuilder = formBuilder;
16
+ // Update view with given values
17
+ this.title = data.title;
18
+ this.message = data.message;
19
+ this.form = this.formBuilder.group({
20
+ prompt: [data.initialValue, data.required ? Validators.required : null],
21
+ });
22
+ }
23
+ ngOnInit() {
24
+ }
25
+ onCancel() {
26
+ // Close the dialog, return true
27
+ this.dialogRef.close(false);
28
+ }
29
+ onOK() {
30
+ // Close the dialog, return false
31
+ this.dialogRef.close(this.form.value.prompt);
32
+ }
33
+ }
34
+ PromptComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PromptComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
35
+ PromptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: PromptComponent, selector: "gloww-prompt", ngImport: i0, template: "<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n", styles: [""], components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "safeHtml": i6.SafeHtmlPipe } });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: PromptComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'gloww-prompt', template: "<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n", styles: [""] }]
39
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: PromptModel, decorators: [{
40
+ type: Inject,
41
+ args: [MAT_DIALOG_DATA]
42
+ }] }, { type: i2.FormBuilder }]; } });
43
+ // tslint:disable-next-line: max-classes-per-file
44
+ export class PromptModel {
45
+ constructor(title, message, initialValue, required) {
46
+ this.title = title;
47
+ this.message = message;
48
+ this.initialValue = initialValue;
49
+ this.required = required;
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9wcm9tcHQvcHJvbXB0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9wcm9tcHQvcHJvbXB0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFPekUsTUFBTSxPQUFPLGVBQWU7SUFLMUIsWUFBbUIsU0FBd0MsRUFBa0MsSUFBaUIsRUFBVSxXQUF3QjtRQUE3SCxjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUksZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN4RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtJQUVSLENBQUM7SUFFRCxRQUFRO1FBQ04sZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJO1FBQ0YsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzRHQXpCVSxlQUFlLDhDQUsyQyxlQUFlO2dHQUx6RSxlQUFlLG9EQ1Q1QixraEJBZUE7MkZETmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxjQUFjO3FGQVMyRSxXQUFXOzBCQUFoRCxNQUFNOzJCQUFDLGVBQWU7O0FBd0J0RixpREFBaUQ7QUFDakQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBbUIsS0FBYSxFQUFTLE9BQWUsRUFBUyxZQUFvQixFQUFTLFFBQWlCO1FBQTVGLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFTO0lBQy9HLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdnbG93dy1wcm9tcHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9tcHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb21wdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb21wdENvbXBvbmVudD4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUHJvbXB0TW9kZWwsIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAvLyBVcGRhdGUgdmlldyB3aXRoIGdpdmVuIHZhbHVlc1xyXG4gICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBkYXRhLm1lc3NhZ2U7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgcHJvbXB0OiBbZGF0YS5pbml0aWFsVmFsdWUsIGRhdGEucmVxdWlyZWQgPyBWYWxpZGF0b3JzLnJlcXVpcmVkIDogbnVsbF0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICAvLyBDbG9zZSB0aGUgZGlhbG9nLCByZXR1cm4gdHJ1ZVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25PSygpOiB2b2lkIHtcclxuICAgIC8vIENsb3NlIHRoZSBkaWFsb2csIHJldHVybiBmYWxzZVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5mb3JtLnZhbHVlLnByb21wdCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtY2xhc3Nlcy1wZXItZmlsZVxyXG5leHBvcnQgY2xhc3MgUHJvbXB0TW9kZWwge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0aXRsZTogc3RyaW5nLCBwdWJsaWMgbWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgaW5pdGlhbFZhbHVlOiBzdHJpbmcsIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbikge1xyXG4gIH1cclxufVxyXG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT5cclxuICAgIHt7dGl0bGV9fVxyXG48L2gxPlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICA8cCBbaW5uZXJIVE1MXT1cIm1lc3NhZ2UgfCBzYWZlSHRtbFwiPjwvcD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJQcm9tcHRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9tcHRcIiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSAzMnB4KTtcIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PlxyXG5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25PSygpXCI+WWVzPC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Component, ContentChildren } from '@angular/core';
2
+ import { MatColumnDef } from '@angular/material/table';
3
+ import * as i0 from "@angular/core";
4
+ export class ResultTableComponent {
5
+ constructor() { }
6
+ ngAfterContentInit() {
7
+ console.log(this.columnDefs.length);
8
+ }
9
+ ngOnInit() {
10
+ }
11
+ }
12
+ ResultTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ResultTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
+ ResultTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ResultTableComponent, selector: "glw-result-table", queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }], ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ResultTableComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'glw-result-table', template: "<ng-content></ng-content>", styles: [""] }]
17
+ }], ctorParameters: function () { return []; }, propDecorators: { columnDefs: [{
18
+ type: ContentChildren,
19
+ args: [MatColumnDef]
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9yZXN1bHQtdGFibGUvcmVzdWx0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9yZXN1bHQtdGFibGUvcmVzdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLGVBQWUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQU92RCxNQUFNLE9BQU8sb0JBQW9CO0lBRWhDLGdCQUFnQixDQUFDO0lBRWpCLGtCQUFrQjtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDOztpSEFUVyxvQkFBb0I7cUdBQXBCLG9CQUFvQixtRkFDZixZQUFZLDZCQ1Q5QiwyQkFBeUI7MkZEUVosb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNDLGtCQUFrQjswRUFLRyxVQUFVO3NCQUF4QyxlQUFlO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgT25Jbml0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdnbHctcmVzdWx0LXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcmVzdWx0LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9yZXN1bHQtdGFibGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzdWx0VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xyXG5cdEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWZzOiBRdWVyeUxpc3Q8TWF0Q29sdW1uRGVmPjtcclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHRuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcblx0XHRjb25zb2xlLmxvZyh0aGlzLmNvbHVtbkRlZnMubGVuZ3RoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SearchFormComponent {
4
+ constructor() { }
5
+ ngOnInit() {
6
+ }
7
+ }
8
+ SearchFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SearchFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ SearchFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SearchFormComponent, selector: "glw-search-form", ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SearchFormComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'glw-search-form', template: "<ng-content></ng-content>", styles: [""] }]
13
+ }], ctorParameters: function () { return []; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL3NlYXJjaC1mb3JtL3NlYXJjaC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9zZWFyY2gtZm9ybS9zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sbUJBQW1CO0lBRS9CLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOztnSEFMVyxtQkFBbUI7b0dBQW5CLG1CQUFtQix1RENQaEMsMkJBQXlCOzJGRE9aLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdnbHctc2VhcmNoLWZvcm0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZvcm0uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { MatDialogConfig } from '@angular/material/dialog';
3
+ import { DownloadProgressComponent } from '../download-progress/download-progress.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ export class SecureAComponent {
7
+ constructor(dialog) {
8
+ this.dialog = dialog;
9
+ }
10
+ ngOnInit() {
11
+ }
12
+ click() {
13
+ const dialogConfig = new MatDialogConfig();
14
+ dialogConfig.disableClose = true;
15
+ dialogConfig.autoFocus = true;
16
+ dialogConfig.closeOnNavigation = false;
17
+ dialogConfig.data = { files: [{ url: this.href, name: this.name }] };
18
+ this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();
19
+ }
20
+ }
21
+ SecureAComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureAComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
22
+ SecureAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SecureAComponent, selector: "gloww-secure-a", inputs: { href: "href", name: "name" }, ngImport: i0, template: "<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>", styles: [""] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureAComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'gloww-secure-a', template: "<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>", styles: [""] }]
26
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { href: [{
27
+ type: Input
28
+ }], name: [{
29
+ type: Input
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL3NlY3VyZS1hL3NlY3VyZS1hLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9zZWN1cmUtYS9zZWN1cmUtYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7OztBQU83RixNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQW9CLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7SUFBSSxDQUFDO0lBRTFDLFFBQVE7SUFDUixDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFM0MsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDakMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDOUIsWUFBWSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUN2QyxZQUFZLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUVyRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0RixDQUFDOzs2R0FsQlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsOEZDVDdCLCtGQUVJOzJGRE9TLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxnQkFBZ0I7Z0dBS2pCLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEb3dubG9hZFByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi4vZG93bmxvYWQtcHJvZ3Jlc3MvZG93bmxvYWQtcHJvZ3Jlc3MuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2xvd3ctc2VjdXJlLWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWN1cmUtYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VjdXJlLWEuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWN1cmVBQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBocmVmOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIGNsaWNrKCkge1xyXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG5cclxuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcclxuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0geyBmaWxlczogW3sgdXJsOiB0aGlzLmhyZWYsIG5hbWU6IHRoaXMubmFtZSB9XSB9O1xyXG5cclxuICAgIHRoaXMuZGlhbG9nLm9wZW4oRG93bmxvYWRQcm9ncmVzc0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGEgKGNsaWNrKT1cImNsaWNrKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2E+Il19
@@ -0,0 +1,45 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { switchMap, map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "@angular/platform-browser";
7
+ import * as i3 from "@angular/common";
8
+ export class SecureImgComponent {
9
+ // we need HttpClient to load the image
10
+ constructor(httpClient, domSanitizer) {
11
+ this.httpClient = httpClient;
12
+ this.domSanitizer = domSanitizer;
13
+ this.src$ = new BehaviorSubject(this.src);
14
+ // this stream will contain the actual url that our img tag will load
15
+ // everytime the src changes, the previous call would be canceled and the
16
+ // new resource would be loaded
17
+ this.dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)));
18
+ }
19
+ ngOnChanges() {
20
+ this.src$.next(this.src);
21
+ }
22
+ loadImage(url) {
23
+ return this.httpClient
24
+ // load the image as a blob
25
+ .get(url, { responseType: 'blob' })
26
+ // create an object url of that blob that we can use in the src attribute
27
+ .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))));
28
+ }
29
+ }
30
+ SecureImgComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureImgComponent, deps: [{ token: i1.HttpClient }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
31
+ SecureImgComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SecureImgComponent, selector: "secure-img", inputs: { src: "src" }, usesOnChanges: true, ngImport: i0, template: `
32
+ <img [src]="dataUrl$ | async" style="object-fit: contain;"/>
33
+ `, isInline: true, pipes: { "async": i3.AsyncPipe } });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SecureImgComponent, decorators: [{
35
+ type: Component,
36
+ args: [{
37
+ selector: 'secure-img',
38
+ template: `
39
+ <img [src]="dataUrl$ | async" style="object-fit: contain;"/>
40
+ `
41
+ }]
42
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DomSanitizer }]; }, propDecorators: { src: [{
43
+ type: Input
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLWltZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nbG93dy9zcmMvbGliL0NvbXBvbmVudHMvc2VjdXJlLWltZy9zZWN1cmUtaW1nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVFoRCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3Qix1Q0FBdUM7SUFDdkMsWUFBb0IsVUFBc0IsRUFBVSxZQUEwQjtRQUExRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFYdEUsU0FBSSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUs3QyxxRUFBcUU7UUFDckUseUVBQXlFO1FBQ3pFLCtCQUErQjtRQUMvQixhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFJaEUsQ0FBQztJQVhELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVdPLFNBQVMsQ0FBQyxHQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVU7WUFDcEIsMkJBQTJCO2FBQzFCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkMseUVBQXlFO2FBQ3hFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckYsQ0FBQzs7K0dBMUJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtGQUpuQjs7R0FFVDsyRkFFVSxrQkFBa0I7a0JBTjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRTs7R0FFVDtpQkFDRjs0SEFNaUIsR0FBRztzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NlY3VyZS1pbWcnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aW1nIFtzcmNdPVwiZGF0YVVybCQgfCBhc3luY1wiIHN0eWxlPVwib2JqZWN0LWZpdDogY29udGFpbjtcIi8+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VjdXJlSW1nQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAvLyBUaGlzIGNvZGUgYmxvY2sganVzdCBjcmVhdGVzIGFuIHJ4anMgc3RyZWFtIGZyb20gdGhlIHNyY1xyXG4gIC8vIHRoaXMgbWFrZXMgc3VyZSB0aGF0IHdlIGNhbiBoYW5kbGUgc291cmNlIGNoYW5nZXNcclxuICAvLyBvciBldmVuIHdoZW4gdGhlIGNvbXBvbmVudCBnZXRzIGRlc3Ryb3llZFxyXG4gIC8vIFNvIGJhc2ljYWxseSB0dXJuIHNyYyBpbnRvIHNyYyRcclxuICBASW5wdXQoKSBwdWJsaWMgc3JjITogc3RyaW5nO1xyXG4gIHByaXZhdGUgc3JjJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5zcmMpO1xyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcmMkLm5leHQodGhpcy5zcmMpO1xyXG4gIH1cclxuXHJcbiAgLy8gdGhpcyBzdHJlYW0gd2lsbCBjb250YWluIHRoZSBhY3R1YWwgdXJsIHRoYXQgb3VyIGltZyB0YWcgd2lsbCBsb2FkXHJcbiAgLy8gZXZlcnl0aW1lIHRoZSBzcmMgY2hhbmdlcywgdGhlIHByZXZpb3VzIGNhbGwgd291bGQgYmUgY2FuY2VsZWQgYW5kIHRoZVxyXG4gIC8vIG5ldyByZXNvdXJjZSB3b3VsZCBiZSBsb2FkZWRcclxuICBkYXRhVXJsJCA9IHRoaXMuc3JjJC5waXBlKHN3aXRjaE1hcCh1cmwgPT4gdGhpcy5sb2FkSW1hZ2UodXJsKSkpXHJcblxyXG4gIC8vIHdlIG5lZWQgSHR0cENsaWVudCB0byBsb2FkIHRoZSBpbWFnZVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkSW1hZ2UodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAvLyBsb2FkIHRoZSBpbWFnZSBhcyBhIGJsb2JcclxuICAgICAgLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcclxuICAgICAgLy8gY3JlYXRlIGFuIG9iamVjdCB1cmwgb2YgdGhhdCBibG9iIHRoYXQgd2UgY2FuIHVzZSBpbiB0aGUgc3JjIGF0dHJpYnV0ZVxyXG4gICAgICAucGlwZShtYXAoZSA9PiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwoZSkpKSlcclxuICB9XHJcbn1cclxuIl19