@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.
- package/README.md +24 -0
- package/compute-version.js +117 -0
- package/esm2020/gloww-gloww.mjs +5 -0
- package/esm2020/lib/Components/code-editor/code-editor.component.mjs +59 -0
- package/esm2020/lib/Components/confirmation/confirmation.component.mjs +43 -0
- package/esm2020/lib/Components/display-objects/display-objects.component.mjs +440 -0
- package/esm2020/lib/Components/display-objects-configuration.mjs +2 -0
- package/esm2020/lib/Components/download-progress/download-progress.component.mjs +119 -0
- package/esm2020/lib/Components/folders/file-edit/file-edit.component.mjs +71 -0
- package/esm2020/lib/Components/folders/folders/folders.component.mjs +180 -0
- package/esm2020/lib/Components/header/header.component.mjs +14 -0
- package/esm2020/lib/Components/html-editor/html-editor.component.mjs +175 -0
- package/esm2020/lib/Components/menu-list-item/menu-list-item.component.mjs +97 -0
- package/esm2020/lib/Components/prompt/prompt.component.mjs +52 -0
- package/esm2020/lib/Components/result-table/result-table.component.mjs +21 -0
- package/esm2020/lib/Components/search-form/search-form.component.mjs +14 -0
- package/esm2020/lib/Components/secure-a/secure-a.component.mjs +31 -0
- package/esm2020/lib/Components/secure-img/secure-img.component.mjs +45 -0
- package/esm2020/lib/Components/upload-doc/upload-doc.component.mjs +95 -0
- package/esm2020/lib/Components/upload-file/upload-file.component.mjs +136 -0
- package/esm2020/lib/Directives/file-sink.directive.mjs +52 -0
- package/esm2020/lib/Models/nav-item.mjs +2 -0
- package/esm2020/lib/Pipes/html-format.pipe.mjs +23 -0
- package/esm2020/lib/Pipes/retry-with-delay.mjs +12 -0
- package/esm2020/lib/Pipes/safe-html.pipe.mjs +22 -0
- package/esm2020/lib/Pipes/secure.pipe.mjs +34 -0
- package/esm2020/lib/Services/dialog.service.mjs +29 -0
- package/esm2020/lib/Services/folder-service-config.mjs +21 -0
- package/esm2020/lib/Services/folder.service.mjs +50 -0
- package/esm2020/lib/Services/gloww.service.mjs +44 -0
- package/esm2020/lib/Services/nav.service.mjs +28 -0
- package/esm2020/lib/Services/version-check.service.mjs +81 -0
- package/esm2020/lib/Services/voice-recognition.service.mjs +55 -0
- package/esm2020/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.mjs +67 -0
- package/esm2020/lib/gloww-security/Components/login/login.component.mjs +173 -0
- package/esm2020/lib/gloww-security/Components/social-network/social-network.component.mjs +46 -0
- package/esm2020/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.mjs +52 -0
- package/esm2020/lib/gloww-security/Components/user-menu/user-menu.component.mjs +73 -0
- package/esm2020/lib/gloww-security/Helpers/administrator.guard.mjs +27 -0
- package/esm2020/lib/gloww-security/Helpers/auth.guard.mjs +57 -0
- package/esm2020/lib/gloww-security/Helpers/error.interceptor.mjs +29 -0
- package/esm2020/lib/gloww-security/Helpers/index.mjs +5 -0
- package/esm2020/lib/gloww-security/Helpers/jwt.interceptor.mjs +31 -0
- package/esm2020/lib/gloww-security/Helpers/staging.interceptor.mjs +24 -0
- package/esm2020/lib/gloww-security/Models/oauthassociation.mjs +6 -0
- package/esm2020/lib/gloww-security/Models/user.mjs +3 -0
- package/esm2020/lib/gloww-security/Services/authentication-service-config.mjs +25 -0
- package/esm2020/lib/gloww-security/Services/authentication.service.mjs +205 -0
- package/esm2020/lib/gloww-security/Services/gloww-security.service.mjs +14 -0
- package/esm2020/lib/gloww-security/gloww-security.module.mjs +171 -0
- package/esm2020/lib/gloww.module.mjs +220 -0
- package/esm2020/lib/injection-token.mjs +3 -0
- package/esm2020/public-api.mjs +32 -0
- package/fesm2015/gloww-gloww.mjs +3018 -0
- package/fesm2015/gloww-gloww.mjs.map +1 -0
- package/fesm2020/gloww-gloww.mjs +2980 -0
- package/fesm2020/gloww-gloww.mjs.map +1 -0
- package/gloww-assets/.gitkeep +0 -0
- package/gloww-assets/7SS_logo.svg +1 -0
- package/gloww-assets/7SS_wobl.svg +1 -0
- package/gloww-assets/7stars.png +0 -0
- package/gloww-assets/gloww.svg +316 -0
- package/gloww-assets/images/google_signin_buttons/Google_signin_button.sketch +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_dark_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_light_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_dark_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_disabled_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_focus_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_normal_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/hdpi/btn_google_signin_light_pressed_hdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_dark_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_light_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_dark_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_disabled_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_focus_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_normal_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/ldpi/btn_google_signin_light_pressed_ldpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_dark_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_light_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_dark_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_disabled_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_focus_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_normal_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/mdpi/btn_google_signin_light_pressed_mdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_dark_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_light_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_dark_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_disabled_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_focus_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_normal_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/tvdpi/btn_google_signin_light_pressed_tvdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_dark_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_light_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_dark_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_disabled_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_focus_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_normal_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xhdpi/btn_google_signin_light_pressed_xhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_dark_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_light_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_dark_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_disabled_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_focus_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_normal_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxhdpi/btn_google_signin_light_pressed_xxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_dark_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_light_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_dark_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_disabled_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_focus_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_normal_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/android/xxxhdpi/btn_google_signin_light_pressed_xxxhdpi.9.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_dark_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_light_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_dark_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_disabled_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_focus_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_normal_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/1x/btn_google_signin_light_pressed_ios.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_dark_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_light_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_dark_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_disabled_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_focus_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_normal_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/2x/btn_google_signin_light_pressed_ios@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_dark_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_light_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_dark_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_disabled_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_focus_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_normal_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/ios/3x/btn_google_signin_light_pressed_ios@3x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_disabled_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_focus_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_normal_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_dark_pressed_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_disabled_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_focus_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_normal_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/1x/btn_google_signin_light_pressed_web.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_disabled_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_focus_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_normal_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_dark_pressed_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_disabled_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_focus_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_normal_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/2x/btn_google_signin_light_pressed_web@2x.png +0 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_disabled_ios.eps +814 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_disabled_ios.svg +24 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_focus_ios.eps +1866 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_focus_ios.svg +51 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_normal_ios.eps +1031 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_normal_ios.svg +50 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_pressed_ios.eps +1031 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_dark_pressed_ios.svg +50 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_disabled_ios.eps +814 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_disabled_ios.svg +24 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_focus_ios.eps +1837 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_focus_ios.svg +44 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_normal_ios.eps +1002 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_normal_ios.svg +43 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_pressed_ios.eps +1002 -0
- package/gloww-assets/images/google_signin_buttons/web/vector/btn_google_light_pressed_ios.svg +43 -0
- package/gloww-assets/swagger.svg +1 -0
- package/gloww-gloww.d.ts +5 -0
- package/lib/Components/code-editor/code-editor.component.d.ts +16 -0
- package/lib/Components/confirmation/confirmation.component.d.ts +20 -0
- package/lib/Components/display-objects/display-objects.component.d.ts +90 -0
- package/lib/Components/display-objects-configuration.d.ts +5 -0
- package/lib/Components/download-progress/download-progress.component.d.ts +30 -0
- package/lib/Components/folders/file-edit/file-edit.component.d.ts +31 -0
- package/lib/Components/folders/folders/folders.component.d.ts +33 -0
- package/lib/Components/header/header.component.d.ts +8 -0
- package/lib/Components/html-editor/html-editor.component.d.ts +36 -0
- package/lib/Components/menu-list-item/menu-list-item.component.d.ts +22 -0
- package/lib/Components/prompt/prompt.component.d.ts +25 -0
- package/lib/Components/result-table/result-table.component.d.ts +11 -0
- package/lib/Components/search-form/search-form.component.d.ts +8 -0
- package/lib/Components/secure-a/secure-a.component.d.ts +13 -0
- package/lib/Components/secure-img/secure-img.component.d.ts +17 -0
- package/lib/Components/upload-doc/upload-doc.component.d.ts +19 -0
- package/lib/Components/upload-file/upload-file.component.d.ts +34 -0
- package/lib/Directives/file-sink.directive.d.ts +11 -0
- package/lib/Models/nav-item.d.ts +8 -0
- package/lib/Pipes/html-format.pipe.d.ts +10 -0
- package/lib/Pipes/retry-with-delay.d.ts +2 -0
- package/lib/Pipes/safe-html.pipe.d.ts +10 -0
- package/lib/Pipes/secure.pipe.d.ts +13 -0
- package/lib/Services/dialog.service.d.ts +11 -0
- package/lib/Services/folder-service-config.d.ts +7 -0
- package/lib/Services/folder.service.d.ts +19 -0
- package/lib/Services/gloww.service.d.ts +17 -0
- package/lib/Services/nav.service.d.ts +13 -0
- package/lib/Services/version-check.service.d.ts +30 -0
- package/lib/Services/voice-recognition.service.d.ts +14 -0
- package/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.d.ts +19 -0
- package/lib/gloww-security/Components/login/login.component.d.ts +43 -0
- package/lib/gloww-security/Components/social-network/social-network.component.d.ts +25 -0
- package/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.d.ts +21 -0
- package/lib/gloww-security/Components/user-menu/user-menu.component.d.ts +24 -0
- package/lib/gloww-security/Helpers/administrator.guard.d.ts +14 -0
- package/lib/gloww-security/Helpers/auth.guard.d.ts +14 -0
- package/lib/gloww-security/Helpers/error.interceptor.d.ts +11 -0
- package/lib/gloww-security/Helpers/index.d.ts +4 -0
- package/lib/gloww-security/Helpers/jwt.interceptor.d.ts +11 -0
- package/lib/gloww-security/Helpers/staging.interceptor.d.ts +9 -0
- package/lib/gloww-security/Models/oauthassociation.d.ts +7 -0
- package/lib/gloww-security/Models/user.d.ts +9 -0
- package/lib/gloww-security/Services/authentication-service-config.d.ts +17 -0
- package/lib/gloww-security/Services/authentication.service.d.ts +40 -0
- package/lib/gloww-security/Services/gloww-security.service.d.ts +6 -0
- package/lib/gloww-security/gloww-security.module.d.ts +35 -0
- package/lib/gloww.module.d.ts +59 -0
- package/lib/injection-token.d.ts +2 -0
- package/package.json +39 -0
- package/public-api.d.ts +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gloww-gloww.mjs","sources":["../../../projects/gloww/src/lib/Services/gloww.service.ts","../../../projects/gloww/src/lib/Services/version-check.service.ts","../../../projects/gloww/src/lib/Pipes/safe-html.pipe.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.html","../../../projects/gloww/src/lib/Services/dialog.service.ts","../../../projects/gloww/src/lib/Services/nav.service.ts","../../../projects/gloww/src/lib/Services/voice-recognition.service.ts","../../../projects/gloww/src/lib/Components/secure-img/secure-img.component.ts","../../../projects/gloww/src/lib/Directives/file-sink.directive.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.html","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.ts","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.html","../../../projects/gloww/src/lib/Components/search-form/search-form.component.ts","../../../projects/gloww/src/lib/Components/search-form/search-form.component.html","../../../projects/gloww/src/lib/Components/header/header.component.ts","../../../projects/gloww/src/lib/Components/header/header.component.html","../../../projects/gloww/src/lib/Components/result-table/result-table.component.ts","../../../projects/gloww/src/lib/Components/result-table/result-table.component.html","../../../projects/gloww/src/lib/gloww-security/Models/oauthassociation.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication-service-config.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication.service.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.html","../../../projects/gloww/src/lib/Components/prompt/prompt.component.ts","../../../projects/gloww/src/lib/Components/prompt/prompt.component.html","../../../projects/gloww/src/lib/Pipes/retry-with-delay.ts","../../../projects/gloww/src/lib/Pipes/secure.pipe.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.html","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.html","../../../projects/gloww/src/lib/Pipes/html-format.pipe.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.html","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/jwt.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/error.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/staging.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/auth.guard.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/administrator.guard.ts","../../../projects/gloww/src/lib/gloww-security/gloww-security.module.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.html","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.ts","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.html","../../../projects/gloww/src/lib/Services/folder-service-config.ts","../../../projects/gloww/src/lib/Services/folder.service.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.html","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.ts","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.html","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.ts","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.html","../../../projects/gloww/src/lib/gloww.module.ts","../../../projects/gloww/src/lib/gloww-security/Services/gloww-security.service.ts","../../../projects/gloww/src/public-api.ts","../../../projects/gloww/src/gloww-gloww.ts"],"sourcesContent":["import { Injectable, InjectionToken } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { PlatformLocation } from '@angular/common';\r\n\r\n\r\nexport const API_SERVER_URL = new InjectionToken<string>('ApiServerUrl.config');\r\nexport const GLOWW_APPLI = new InjectionToken<string>('GlowwAppli.config');\r\n// @Injectable({\r\n// providedIn: 'root'\r\n// })\r\nexport class GlowwService {\r\n public baseHref: string;\r\n public InternalBasePath = '???';\r\n basePathChange: Subject<string> = new Subject<string>();\r\n public get basePath() {\r\n return this.InternalBasePath;\r\n }\r\n public set basePath(value: string) {\r\n this.InternalBasePath = value;\r\n this.basePathChange.next(value);\r\n }\r\n public baseUrl = '/';\r\n constructor(http: HttpClient, BasePath: string, ApiServerUrl: string, private platformLocation: PlatformLocation) {\r\n this.baseHref = platformLocation.getBaseHrefFromDOM();\r\n this.InternalBasePath = BasePath;\r\n if (ApiServerUrl) { this.baseUrl = ApiServerUrl; if (!this.baseUrl.endsWith('/')) { this.baseUrl += '/'; } }\r\n }\r\n public getParams(obj: any) {\r\n let params = new HttpParams();\r\n if (!obj) { return params; }\r\n Object.keys(obj).forEach(p => {\r\n if (obj[p]) {\r\n params = params.append(p.toString(), obj[p].toString());\r\n }\r\n });\r\n return params;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionCheckService {\r\n // this will be replaced by actual hash post-build.js\r\n private currentHash = '{{POST_BUILD_ENTERS_HASH_HERE}}';\r\n private callback;\r\n public url;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Checks in every set frequency the version of frontend application\r\n * @param url the url to test (default : /version.json)\r\n * @param frequency - in milliseconds, defaults to 1 minutes\r\n * @param callback - function to call when the version is different, default askReloadApplication\r\n */\r\n public initVersionCheck(url = '/version.json', frequency = 1000 * 60, callback = this.askReloadApplication) {\r\n this.callback = callback;\r\n this.url = url;\r\n this.checkVersion();\r\n setInterval(() => {\r\n this.checkVersion();\r\n }, frequency);\r\n }\r\n\r\n public askReloadApplication() {\r\n console.log('askReload');\r\n // ENTER YOUR CODE TO DO SOMETHING UPON VERSION CHANGE\r\n if (confirm('Une nouvelle version est disponible sur le serveur. Il est nécessaire de recharger l\\'application. Veuillez confirmer le rechargement de l\\'application')) {\r\n this.reloadApplication();\r\n }\r\n }\r\n public reloadApplication() {\r\n console.log('reload');\r\n let search = location.search;\r\n if (search) { search += '&'; }\r\n search += '___t=' + new Date().getTime();\r\n console.log(`Search ${search}`);\r\n location.search = search;\r\n }\r\n\r\n private checkVersion() {\r\n // timestamp these requests to invalidate caches\r\n this.http.get(this.url + '?t=' + new Date().getTime())\r\n // .first()\r\n .subscribe(\r\n (response: any) => {\r\n console.log('get version ok');\r\n const hash = response.hash;\r\n const hashChanged = this.hasHashChanged(this.currentHash, hash);\r\n console.log(`HASH : Current : ${this.currentHash}, New : ${hash}, Changed ${hashChanged}`);\r\n\r\n // If new version, do something\r\n if (hashChanged) {\r\n this.callback();\r\n }\r\n // store the new hash so we wouldn't trigger versionChange again\r\n // only necessary in case you did not force refresh\r\n this.currentHash = hash;\r\n },\r\n (err) => {\r\n console.error(err, 'Could not get version');\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if hash has changed.\r\n * This file has the JS hash, if it is a different one than in the version.json\r\n * we are dealing with version change\r\n * @param currentHash currenthash\r\n * @param newHash newhash\r\n * @returns the currenthash and newhash are different\r\n */\r\n private hasHashChanged(currentHash, newHash) {\r\n return currentHash !== newHash;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n\tname: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n\tconstructor(private sanitizer: DomSanitizer) { }\r\n\r\n\ttransform(style) {\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustStyle(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\r\n\t}\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'glw-confirmation',\r\n templateUrl: './confirmation.component.html',\r\n styleUrls: ['./confirmation.component.scss']\r\n})\r\nexport class ConfirmationComponent {\r\n\r\n title: string;\r\n message: string;\r\n mode: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmationComponent>, @Inject(MAT_DIALOG_DATA) public data: ConfirmationModel) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.mode = data.mode ?? 'confirmation';\r\n }\r\n\r\n onConfirm(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(false);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class ConfirmationModel {\r\n constructor(public title: string, public message: string, public mode?: string) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content>\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n</div>\r\n\r\n<mat-dialog-actions *ngIf=\"mode==='confirmation'\">\r\n <button mat-button (click)=\"onDismiss()\">No</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\r\n</mat-dialog-actions>\r\n<mat-dialog-actions *ngIf=\"mode==='alert'\">\r\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">OK</button>\r\n</mat-dialog-actions>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent, ConfirmationModel } from '../Components/confirmation/confirmation.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(protected dialog: MatDialog) { }\r\n\r\n createConfirmationDialog(title: string, message: string, mode?: string) {\r\n const dialogData = new ConfirmationModel(title, message, mode);\r\n return this.dialog.open(ConfirmationComponent, {\r\n maxWidth: '80%',\r\n data: dialogData,\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n openConfirmationDialog(title: string, message: string, mode?: string) {\r\n return this.createConfirmationDialog(title, message, mode).afterClosed();\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Event, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavService {\r\n public appDrawer: any;\r\n public currentUrl = new BehaviorSubject<string>(undefined);\r\n\r\n constructor(private router: Router) {\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentUrl.next(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public closeNav() {\r\n this.appDrawer.close();\r\n }\r\n\r\n public openNav() {\r\n this.appDrawer.open();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\ndeclare var webkitSpeechRecognition: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VoiceRecognitionService {\r\n\r\n recognition = new webkitSpeechRecognition();\r\n isStoppedSpeechRecog = false;\r\n public text = '';\r\n tempWords: any;\r\n\r\n constructor() { }\r\n\r\n init() {\r\n\r\n this.recognition.interimResults = true;\r\n this.recognition.lang = 'fr-be';\r\n\r\n this.recognition.addEventListener('result', (e: any) => {\r\n const transcript = Array.from(e.results)\r\n .map((result: any) => result[0])\r\n .map((result) => result.transcript)\r\n .join('');\r\n this.tempWords = transcript;\r\n console.log(transcript);\r\n });\r\n }\r\n\r\n start() {\r\n this.isStoppedSpeechRecog = false;\r\n this.recognition.start();\r\n console.log(\"Speech recognition started\")\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n if (this.isStoppedSpeechRecog) {\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n } else {\r\n this.wordConcat()\r\n this.recognition.start();\r\n }\r\n });\r\n }\r\n stop() {\r\n this.isStoppedSpeechRecog = true;\r\n this.wordConcat()\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n }\r\n\r\n wordConcat() {\r\n this.text = this.text + ' ' + this.tempWords + '.';\r\n this.tempWords = '';\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { switchMap, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'secure-img',\r\n template: `\r\n <img [src]=\"dataUrl$ | async\" style=\"object-fit: contain;\"/>\r\n `\r\n})\r\nexport class SecureImgComponent implements OnChanges {\r\n // This code block just creates an rxjs stream from the src\r\n // this makes sure that we can handle source changes\r\n // or even when the component gets destroyed\r\n // So basically turn src into src$\r\n @Input() public src!: string;\r\n private src$ = new BehaviorSubject(this.src);\r\n ngOnChanges(): void {\r\n this.src$.next(this.src);\r\n }\r\n\r\n // this stream will contain the actual url that our img tag will load\r\n // everytime the src changes, the previous call would be canceled and the\r\n // new resource would be loaded\r\n dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)))\r\n\r\n // we need HttpClient to load the image\r\n constructor(private httpClient: HttpClient, private domSanitizer: DomSanitizer) {\r\n }\r\n\r\n private loadImage(url: string): Observable<any> {\r\n return this.httpClient\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))))\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[glowwFileSink]'\r\n})\r\nexport class FileSinkDirective {\r\n\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Inject, Input, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormArray, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'gloww-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n styleUrls: ['./upload-file.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: UploadFileComponent\r\n }\r\n ]\r\n})\r\nexport class UploadFileComponent implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('fileUpload') fileUpload: ElementRef;\r\n @Input() multiple: boolean = false;\r\n @Input() allowAltFileName: boolean = false;\r\n @Input() acceptMime: string = '*/*';\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n form: FormGroup;\r\n\r\n files = [];\r\n\r\n constructor() {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n const fileUpload = this.fileUpload.nativeElement;\r\n fileUpload.onchange = () => {\r\n if (!this.multiple) {\r\n this.files = [];\r\n //if (this.allowAltFileName) { this.fileNames.clear(); }\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n //if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n };\r\n }\r\n\r\n get value() {\r\n return this.files;\r\n //return this._value;\r\n }\r\n\r\n set value(val) {\r\n this.files = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n SelectFiles() {\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n ChangeAltName(i, $event) {\r\n this.files[i].altFileName = $event.target.value;\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n prepareFilesList(files: Array<any>) {\r\n if (files.length > 1 && !this.multiple) {\r\n alert(\"You can only drop an only file at once\");\r\n return;\r\n }\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n for (const file of files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals = 2) {\r\n if (bytes === 0) {\r\n return \"0 Bytes\";\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n }\r\n\r\n deleteFile(index: number) {\r\n if (this.files[index].progress && this.files[index].progress < 100) {\r\n console.log(\"Upload in progress.\");\r\n return;\r\n }\r\n this.files.splice(index, 1);\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<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>","import { Component, OnInit, ViewChild, ElementRef, Inject, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormArray } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'gloww-upload-doc',\r\n templateUrl: './upload-doc.component.html',\r\n styleUrls: ['./upload-doc.component.css']\r\n})\r\nexport class UploadDocComponent {\r\n\r\n multiple: boolean = false;\r\n allowAltFileName: boolean = false;\r\n\r\n acceptMime = '*/*';\r\n files = [];\r\n callback: (files: any) => Observable<any>;\r\n constructor(private dialogRef: MatDialogRef<UploadDocComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private formBuilder: FormBuilder) {\r\n if (data && data.acceptMime) {\r\n this.acceptMime = data.acceptMime;\r\n }\r\n if (data && data.multiple) {\r\n this.multiple = data.multiple;\r\n }\r\n if (data && data.allowAltFileName) {\r\n this.allowAltFileName = data.allowAltFileName;\r\n }\r\n if (data && data.callback) {\r\n this.callback = data.callback;\r\n }\r\n }\r\n\r\n /*\r\n get fileNames(): FormArray {\r\n return this.form.get(\"fileNames\") as FormArray\r\n }\r\n\r\n FileName(fn: string): FormGroup {\r\n return this.formBuilder.group({\r\n fileName: fn\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onClick() {\r\n const fileUpload = this.fileUpload.nativeElement; fileUpload.onchange = () => {\r\n if (this.multiple) {\r\n this.files = [];\r\n if (this.allowAltFileName) { this.fileNames.clear(); }\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name });\r\n if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n };\r\n fileUpload.click();\r\n }\r\n\r\n private uploadFiles() {\r\n this.fileUpload.nativeElement.value = '';\r\n this.files.forEach(file => {\r\n alert('upload file');\r\n // this.uploadFile(file);\r\n });\r\n }\r\n */\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n save() {\r\n console.log(\"save UploadDoc\");\r\n console.log(`this.files.length ${this.files.length}`);\r\n /*if (this.allowAltFileName) {\r\n for (let i = 0; i < this.files.length; i++) {\r\n // Comment to be sure new version\r\n this.files[i].name = this.fileNames.value[i].fileName;\r\n }\r\n }*/\r\n if (this.callback) {\r\n this.callback(this.files).subscribe(res => this.dialogRef.close(this.files));\r\n } else {\r\n this.dialogRef.close(this.files);\r\n }\r\n }\r\n}\r\n","<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","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'glw-search-form',\r\n\ttemplateUrl: './search-form.component.html',\r\n\tstyleUrls: ['./search-form.component.scss']\r\n})\r\nexport class SearchFormComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'glw-header',\r\n\ttemplateUrl: './header.component.html',\r\n\tstyleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { AfterContentInit, Component, ContentChildren, OnInit, QueryList } from '@angular/core';\r\nimport { MatColumnDef } from '@angular/material/table';\r\n\r\n@Component({\r\n\tselector: 'glw-result-table',\r\n\ttemplateUrl: './result-table.component.html',\r\n\tstyleUrls: ['./result-table.component.scss']\r\n})\r\nexport class ResultTableComponent implements OnInit, AfterContentInit {\r\n\t@ContentChildren(MatColumnDef) columnDefs: QueryList<MatColumnDef>;\r\n\tconstructor() { }\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tconsole.log(this.columnDefs.length);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","export class Oauthassociation {\r\n public idOAuth: number;\r\n public provider: string;\r\n public name: string;\r\n public value: string;\r\n\r\n public toString() {\r\n return this.provider;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationServiceConfig {\r\n currentUserVariableName?= 'currentuser';\r\n authenticationUrl?= `/admin/authusers/authenticate`;\r\n changePasswordUrl?= `/admin/authusers/changePassword`;\r\n askResetPasswordCodeUrl?= `/admin/authusers/askResetPasswordCode`;\r\n resetPassworUrl?= `/admin/authusers/resetPassword`;\r\n environment?= '__GlowwSecurity__';\r\n showDomain?= false;\r\n askGSM?= false;\r\n googleClientId?= '';\r\n facebookClientId?= '';\r\n amazonClientId?= '';\r\n microsoftClientId?= '';\r\n}\r\n","import { Oauthassociation } from './../Models/oauthassociation';\r\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\nimport { User } from '../Models/user';\r\nimport { AuthenticationServiceConfig } from './authentication-service-config';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject<User>;\r\n public currentUser: Observable<User>;\r\n public currentUserVariableName: string;\r\n public authenticationUrl: string;\r\n public changePasswordUrl: string;\r\n public askResetPasswordCodeUrl: string;\r\n public resetPasswordUrl: string;\r\n public OAuthGetProvidersUrl: string;\r\n public OAuthAskCodeUrl: string;\r\n public OAuthAssociationUrl: string;\r\n public OAuthGetAssociationsUrl: string;\r\n public OAuthDeleteAssociationUrl: string;\r\n public environment: string;\r\n public showdomain: boolean;\r\n public hasLocalStorage = false;\r\n\r\n constructor(private http: HttpClient, @Inject(PLATFORM_ID) private platformId: any, @Optional() config?: AuthenticationServiceConfig) {\r\n this.hasLocalStorage = isPlatformBrowser(this.platformId);\r\n if (config && config.currentUserVariableName) { this.currentUserVariableName = config.currentUserVariableName; } else { this.currentUserVariableName = 'currentUser'; }\r\n if (config && config.authenticationUrl) { this.authenticationUrl = config.authenticationUrl; } else { this.authenticationUrl = `/admin/authusers/authenticate`; }\r\n if (config && config.changePasswordUrl) { this.changePasswordUrl = config.changePasswordUrl; } else { this.changePasswordUrl = this.authenticationUrl.replace('authenticate', 'changePassword'); }\r\n if (config && config.askResetPasswordCodeUrl) { this.askResetPasswordCodeUrl = config.askResetPasswordCodeUrl; } else { this.askResetPasswordCodeUrl = this.authenticationUrl.replace('authenticate', 'askResetPasswordCode'); }\r\n if (config && config.resetPassworUrl) { this.resetPasswordUrl = config.resetPassworUrl; } else { this.resetPasswordUrl = this.authenticationUrl.replace('authenticate', 'resetPassword'); }\r\n this.OAuthGetProvidersUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetProviders');\r\n this.OAuthAskCodeUrl = this.authenticationUrl.replace('authenticate', 'OAuthAskCode');\r\n this.OAuthAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthAssociation');\r\n this.OAuthGetAssociationsUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetAssociations');\r\n this.OAuthDeleteAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthDeleteAssociation');\r\n if (config && config.environment) { this.environment = config.environment; }\r\n if (config && config.showDomain) { this.showdomain = config.showDomain; }\r\n if (this.hasLocalStorage) { // Angular Universal\r\n this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem(this.currentUserVariableName)));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n }\r\n\r\n public get currentUserValue(): User {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value !== null;\r\n }\r\n\r\n login(domain: string, username: string, password: string) {\r\n const formData = new FormData();\r\n if (this.showdomain) { formData.set('domain', domain); }\r\n formData.set('environment', this.environment);\r\n formData.set('username', username);\r\n formData.set('password', password);\r\n return this.http.post<any>(this.authenticationUrl, formData, { observe: 'response' })\r\n .pipe(map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n const user: any = resp.body;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n changePassword(domain: string, username: string, oldpassword: string, newpassword: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: this.currentUserValue.domain ?? '',\r\n username: this.currentUserValue.username,\r\n newpassword,\r\n oldpassword,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.changePasswordUrl, { params });\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n if (this.hasLocalStorage) { localStorage.removeItem(this.currentUserVariableName); }\r\n this.currentUserSubject.next(null);\r\n }\r\n\r\n askResetPasswordCode(domain: string, firstname: string, lastname: string, email: string, gsm: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: '',\r\n firstname,\r\n lastname,\r\n email,\r\n gsm,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.askResetPasswordCodeUrl, { params });\r\n }\r\n\r\n resetPassword(email: string, code: string, password: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n email,\r\n code,\r\n password,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.resetPasswordUrl, { params });\r\n }\r\n\r\n getOAuthProviders() {\r\n return this.http.get<string[]>(this.OAuthGetProvidersUrl);\r\n }\r\n\r\n OAuthAskCode(environment: string, login: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n login,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAskCodeUrl, { params });\r\n }\r\n\r\n OAuthAssociation(environment: string, code: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n code,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAssociationUrl, { params }).pipe(\r\n map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n console.log(\"OAuthAuthentication\");\r\n console.log(resp);\r\n const user: any = resp;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n })\r\n );\r\n }\r\n getOAuthAssociations() {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<Oauthassociation[]>(this.OAuthGetAssociationsUrl, { params }).pipe(\r\n tap((value) => console.log(value)),\r\n map((value) => value.map(item => Object.assign(new Oauthassociation(), item))),\r\n tap((value) => console.log(value))\r\n );\r\n }\r\n\r\n OAuthDeleteAssociation(provider: string, idOAuth: number) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment,\r\n provider,\r\n idOAuth\r\n }\r\n });\r\n return this.http.get(this.OAuthDeleteAssociationUrl, { params });\r\n }\r\n\r\n}\r\n","import { DisplayObjectsConfiguration } from './../display-objects-configuration';\r\nimport { SearchFormComponent } from '../search-form/search-form.component';\r\nimport { Reference } from '@angular/compiler/src/render3/r3_ast';\r\nimport { Component, ContentChild, OnInit, ViewChild, AfterViewInit, ElementRef, Directive, ChangeDetectorRef, Injector, ChangeDetectionStrategy, AfterContentInit, QueryList, ContentChildren, OnChanges, SimpleChanges, Input, TemplateRef } from '@angular/core';\r\nimport { FormControl, FormGroup, FormBuilder } from '@angular/forms';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatTable, MatTableDataSource } from '@angular/material/table';\r\nimport { combineLatest, forkJoin, observable, Observable, of, Subject } from 'rxjs';\r\nimport { HeaderComponent } from '../header/header.component';\r\nimport { ResultTableComponent } from '../result-table/result-table.component';\r\nimport { interval } from 'rxjs';\r\nimport { HttpErrorResponse, HttpEvent, HttpEventType, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Location } from '@angular/common';\r\nimport { ActivatedRoute, Data, Router } from '@angular/router';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\r\nimport { Moment } from 'moment';\r\nimport { map, catchError, mergeMap, tap, filter, switchMap, take } from 'rxjs/operators';\r\n\r\nexport interface Action {\r\n icon: any;\r\n name?: string;\r\n routerLinkFct?: (obj) => string[];\r\n display?: (obj) => boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'glw-display-objects',\r\n templateUrl: './display-objects.component.html',\r\n styleUrls: ['./display-objects.component.scss']\r\n})\r\nexport class DisplayObjectsComponent<TObj> implements OnInit, AfterContentInit, AfterViewInit, OnChanges {\r\n\r\n @ContentChild(HeaderComponent) header: HeaderComponent;\r\n @ContentChild(SearchFormComponent) formLayout: SearchFormComponent;\r\n @ContentChild(ResultTableComponent) resultLayout: ResultTableComponent;\r\n @ViewChild(MatTable, { static: false }) table: MatTable<any>;\r\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: false }) sort: MatSort;\r\n\r\n // after the <ng-content> has been initialized, the column definitions are available.\r\n // All that's left is to add them to the table ourselves:\r\n @Input() configuration: DisplayObjectsConfiguration<TObj>;\r\n @Input() displayObjLink: (obj: TObj, action?: string) => (string | string[]);\r\n @Input() canDisplayObj: ((user: any, obj: TObj, action?: string) => boolean) | boolean = false;\r\n @Input() canEdit: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canDelete: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canAdd: ((user: any) => boolean) | boolean = true;\r\n @Input() form: FormGroup;\r\n @Input() Editor: TemplateRef<any>;\r\n @Input() searchRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() postRequest: (obj?: TObj | any) => Observable<TObj>;\r\n @Input() deleteRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() putRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() columns: () => string[];\r\n @Input() glowwService: GlowwService;\r\n @Input() objectName: string;\r\n @Input() primaryKey: string | string[];\r\n @Input() maxrows: string[];\r\n @Input() mandatoryParams: object = {};\r\n @Input() actions = [];\r\n @Input() dialogConfig: object = {};\r\n @Input() fileFields: string[];\r\n\r\n columnsToDisplay = [];\r\n dataSource: MatTableDataSource<TObj>;\r\n displayform = true;\r\n displayresult = false;\r\n queryParams: any = {};\r\n resultException: string;\r\n currentUser: any;\r\n form2: FormGroup;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef, private dialog: MatDialog, private router: Router, private location: Location, private authenticationService: AuthenticationService, private formBuilder: FormBuilder, private route: ActivatedRoute) {\r\n const component = this;\r\n this.currentUser = (this.authenticationService.currentUserValue as any).UserInfo;\r\n this.form2 = this.formBuilder.group({\r\n _MaxRow_: [null]\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n if (!this.postRequest) {\r\n this.postRequest = this.glowwService[`post${this.objectName}`];\r\n }\r\n if (!this.deleteRequest) {\r\n this.deleteRequest = this.glowwService[`delete${this.objectName}`];\r\n }\r\n if (!this.putRequest) {\r\n this.putRequest = this.glowwService[`put${this.objectName}`];\r\n }\r\n if (this.maxrows?.length > 0) { this.form.addControl(\"_MaxRow_\", new FormControl(null)); }\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.formLayout && this.resultLayout) {\r\n this.displayform = false; this.displayresult = true;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n Search(data?: Data) {\r\n this.displayresult = true;\r\n this.displayform = false;\r\n this.resultException = null;\r\n\r\n if (data) {\r\n Object.keys(data).forEach(name => {\r\n this.queryParams[name] = data[name];\r\n });\r\n }\r\n\r\n Object.keys(this.route.snapshot.params).forEach(name => {\r\n this.queryParams[name] = this.route.snapshot.params[name];\r\n });\r\n\r\n if (this.mandatoryParams) {\r\n Object.keys(this.mandatoryParams).forEach(name => {\r\n this.queryParams[name] = this.queryParams[name];\r\n });\r\n }\r\n\r\n this.searchRequest.call(this.glowwService, this.queryParams).subscribe(r => {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.changeDetectorRef.detectChanges();\r\n this.UpdateTable();\r\n },\r\n error => {\r\n this.displayresult = false;\r\n this.displayform = true;\r\n this.resultException = error;\r\n });\r\n }\r\n\r\n clean(obj) {\r\n for (const propName in obj) {\r\n if (obj[propName] === null || obj[propName] === undefined) {\r\n delete obj[propName];\r\n }\r\n }\r\n }\r\n\r\n onSearch() {\r\n this.queryParams = {};\r\n Object.keys(this.form.value).forEach(name => {\r\n const val = this.form.value[name];\r\n if (val) {\r\n if (val.constructor.name === 'Moment') {\r\n this.queryParams[name] = (val as Moment).toISOString()\r\n } else {\r\n this.queryParams[name] = val;\r\n }\r\n }\r\n });\r\n if (this.form2.value._MaxRow_) { this.queryParams._MaxRow_ = this.form2.value._MaxRow_; }\r\n this.clean(this.queryParams);\r\n const params = new HttpParams({ fromObject: this.queryParams });\r\n const currentstate = this.location.getState();\r\n this.location.replaceState(this.router.url, params.toString());\r\n this.Search();\r\n\r\n }\r\n\r\n UpdateDataSource(r: TObj[]) {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.UpdateTable();\r\n\r\n }\r\n\r\n UpdateTable() {\r\n if (this.dataSource) {\r\n if (!this.table) {\r\n console.log('!this.table');\r\n return;\r\n }\r\n this.resultLayout.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n this.columnsToDisplay = this.columns();\r\n }\r\n }\r\n\r\n canDisplayObjThis(obj, action?) {\r\n try {\r\n if (!this.displayObjLink) { return false; }\r\n if (typeof this.canDisplayObj === 'boolean') { return this.canDisplayObj; }\r\n return this.canDisplayObj(this.currentUser, obj, action);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n canAddThis() {\r\n try {\r\n if (!this.canAdd) { return false; }\r\n if (typeof this.canAdd === 'boolean') { return this.canAdd; }\r\n return this.canAdd(this.currentUser);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canEditThis(obj) {\r\n try {\r\n if (!this.canEdit) { return false; }\r\n if (typeof this.canEdit === 'boolean') { return this.canEdit; }\r\n return this.canEdit(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canDeleteThis(obj) {\r\n try {\r\n if (!this.canDelete) { return false; }\r\n if (typeof this.canDelete === 'boolean') { return this.canDelete; }\r\n return this.canDelete(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return false;\r\n }\r\n }\r\n\r\n displayObjLinkThis(obj, action?) {\r\n if (!this.displayObjLink) { return null; }\r\n return this.displayObjLink(obj, action);\r\n }\r\n\r\n\r\n isString(value): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n getPrimaryKey(obj: object | TObj): object[] {\r\n let res = [];\r\n if (this.isString(this.primaryKey)) {\r\n console.log(\"string\");\r\n res.push(obj[this.primaryKey as string]);\r\n } else {\r\n console.log(\"string[]\");\r\n (this.primaryKey as string[]).forEach(key => res.push(obj[key]));\r\n }\r\n return res;\r\n }\r\n\r\n _saveObj(obj: any): Observable<any> {\r\n var subject = new Subject<any>();\r\n this.postRequest.call(this.glowwService, obj).subscribe(\r\n data => {\r\n const tmp = this.dataSource.data;\r\n tmp.push(data);\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to add Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n _saveFile(fileField: string, obj: any, file: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n return this.glowwService[`post${this.objectName}${fileField}`].call(this.glowwService, this.getPrimaryKey(obj), formData).pipe(\r\n tap((event: HttpEvent<any>) => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n file.progress = Math.round(event.loaded * 100 / (event.total ?? 1));\r\n file.inProgress = file.progress !== 100;\r\n break;\r\n case HttpEventType.Response:\r\n file.progress = 100;\r\n file.status = \"Done\";\r\n file.inProgress = false;\r\n break;\r\n }\r\n }),\r\n filter((event: HttpEvent<any>) => {\r\n console.log(`filter ${event.type}`);\r\n return event.type === HttpEventType.Response\r\n }),\r\n map((event: HttpResponse<any>) => {\r\n console.log(`map ${event.type}`);\r\n return event.body;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n file.inProgress = false;\r\n file.status = \"Error\";\r\n console.log(`${file.data.name} upload failed.`);\r\n //subject.error(error);\r\n return of(`${file.data.name} upload failed.`);\r\n })\r\n );\r\n }\r\n\r\n AddObj() {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n if (this.dialogConfig) {\r\n Object.keys(this.dialogConfig).forEach(\r\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n let args = {};\r\n Object.keys(this.route.snapshot?.params).forEach(key => {\r\n args[key] = this.route.snapshot?.params[key];\r\n dialogConfig.data = args;\r\n });\r\n\r\n\r\n const dlg = this.dialog.open(this.Editor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n if (fileFields.length = 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._saveObj(datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n allobs[file.name] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._saveObj(datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._saveObj(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DeleteObj(obj) {\r\n if (confirm('Are you sure you want to delete this objet ? ')) {\r\n this.deleteRequest.apply(this.glowwService, this.getPrimaryKey(obj)).subscribe(\r\n p => {\r\n const i = this.dataSource.data.indexOf(obj);\r\n const tmp = this.dataSource.data;\r\n tmp.splice(i, 1);\r\n this.dataSource.data = tmp;\r\n },\r\n error => {\r\n alert(`Unable to delete Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n }\r\n );\r\n }\r\n }\r\n\r\n EditObj(obj: TObj) {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n if (this.dialogConfig) {\r\n Object.keys(this.dialogConfig).forEach(\r\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n dialogConfig.data = obj;\r\n this.dialog.open(this.Editor, dialogConfig).afterClosed().subscribe(\r\n data => {\r\n if (data) {\r\n let args: object[] = this.getPrimaryKey(obj); args.push(data)\r\n this.putRequest.apply(this.glowwService, args).subscribe(p => {\r\n const i = this.dataSource.data.indexOf(obj);\r\n const tmp = this.dataSource.data;\r\n tmp[i] = p;\r\n this.dataSource.data = tmp;\r\n });\r\n }\r\n },\r\n error => {\r\n alert(`Unable to update Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n }\r\n );\r\n }\r\n\r\n}\r\n","<div>\r\n <ng-content select=\"glw-header\"></ng-content>\r\n</div>\r\n\r\n<div *ngIf=\"displayform\">\r\n <mat-card>\r\n <mat-card-content>\r\n <mat-error *ngIf=\"resultException\">\r\n Unable to query : {{resultException}}\r\n </mat-error>\r\n <ng-content select=\"glw-search-form\"></ng-content>\r\n <div *ngIf=\"maxrows\" [formGroup]=\"form2\">\r\n <br />\r\n <mat-form-field>\r\n <mat-select placeholder=\"MaxRow\" formControlName=\"_MaxRow_\">\r\n <mat-option *ngFor=\"let maxrow of maxrows\" [value]=\"maxrow\">\r\n <span *ngIf=\"maxrow\">{{maxrow}} objects</span>\r\n <span *ngIf=\"!maxrow\"> Default</span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-stroked-button color=\"accent\" (click)=\"onSearch()\">\r\n <mat-icon>search</mat-icon>\r\n Search\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n\r\n<div *ngIf=\"displayresult\">\r\n <div class=\"mat-elevation-z8\" *ngIf=\"dataSource; else Spinner\">\r\n <table mat-table [dataSource]=\"dataSource\" matSort>\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <i class=\"fal fa-plus\" (click)=\"AddObj()\" *ngIf=\"canAddThis()\">\r\n </i>\r\n </th>\r\n <td mat-cell *matCellDef=\"let obj\">\r\n <i class=\"fal fa-eye\" [routerLink]=\"displayObjLinkThis(obj)\" *ngIf=\"canDisplayObjThis(obj)\">\r\n </i>\r\n <ng-container *ngFor=\"let action of actions\">\r\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\" *ngIf=\"action.icon.icon && (!action.display || action.display(obj, action.name))\">\r\n </i>\r\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\" *ngIf=\"!action.icon.icon && (!action.display || action.display(obj, action.name))\"></i>\r\n </ng-container>\r\n <i class=\"fal fa-trash-alt\" (click)=\"DeleteObj(obj)\" *ngIf=\"canDeleteThis(obj)\">\r\n </i>\r\n <i class=\"fal fa-pencil\" (click)=\"EditObj(obj)\" *ngIf=\"canEditThis(obj)\">\r\n </i>\r\n </td>\r\n </ng-container>\r\n <ng-content select=\"glw-result-table\"></ng-content>\r\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\r\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\r\n </table>\r\n <mat-paginator pageSize=\"10\"></mat-paginator>\r\n </div>\r\n <ng-template #Spinner>\r\n <mat-spinner></mat-spinner>\r\n </ng-template>\r\n</div>\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'gloww-prompt',\r\n templateUrl: './prompt.component.html',\r\n styleUrls: ['./prompt.component.scss']\r\n})\r\nexport class PromptComponent implements OnInit {\r\n title: string;\r\n message: string;\r\n form: FormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<PromptComponent>, @Inject(MAT_DIALOG_DATA) public data: PromptModel, private formBuilder: FormBuilder) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.form = this.formBuilder.group({\r\n prompt: [data.initialValue, data.required ? Validators.required : null],\r\n });\r\n }\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onCancel(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(false);\r\n }\r\n\r\n onOK(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(this.form.value.prompt);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class PromptModel {\r\n constructor(public title: string, public message: string, public initialValue: string, public required: boolean) {\r\n }\r\n}\r\n","<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","import { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { delay as delayOperator, retryWhen, scan, tap } from 'rxjs/operators';\r\n\r\nexport function retryWithDelay<T>(\r\n delay: number,\r\n count = 1\r\n): MonoTypeOperatorFunction<T> {\r\n return (input) =>\r\n input.pipe(\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n scan((acc, error) => ({ count: acc.count + 1, error }), {\r\n count: 0,\r\n error: undefined as any,\r\n }),\r\n tap((current) => {\r\n if (current.count > count) {\r\n throw current.error;\r\n }\r\n }),\r\n delayOperator(delay)\r\n )\r\n )\r\n );\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { switchMap, map, catchError, retry, delay } from 'rxjs/operators';\r\nimport { retryWithDelay } from './retry-with-delay';\r\n\r\n@Pipe({\r\n name: 'secure'\r\n})\r\nexport class SecurePipe implements PipeTransform {\r\n\r\n constructor(private http: HttpClient, private domSanitizer: DomSanitizer) { }\r\n\r\n transform(url: any, delayVal?: any, retryVal?: any) {\r\n if (!delayVal) { delayVal = 5000; }\r\n if (!retryVal) { retryVal = 0; }\r\n return this.http\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(\r\n map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))),\r\n retryWithDelay(delayVal, retryVal)\r\n );\r\n }\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { NavItem } from '../../Models/nav-item';\r\nimport { Router } from '@angular/router';\r\nimport { NavService } from '../../Services/nav.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'gloww-menu-list-item',\r\n templateUrl: './menu-list-item.component.html',\r\n styleUrls: ['./menu-list-item.component.scss'],\r\n animations: [\r\n trigger('indicatorRotate', [\r\n state('collapsed', style({ transform: 'rotate(0deg)' })),\r\n state('expanded', style({ transform: 'rotate(180deg)' })),\r\n transition('expanded <=> collapsed',\r\n animate('225ms cubic-bezier(0.4,0.0,0.2,1)')\r\n ),\r\n ])\r\n ]\r\n})\r\nexport class MenuListItemComponent implements OnInit {\r\n\r\n private _expanded: boolean = false;\r\n get expanded(): boolean {\r\n return this._expanded;\r\n }\r\n set expanded(value: boolean) {\r\n console.log(\"change expanded\");\r\n this._expanded = value;\r\n }\r\n\r\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\r\n @Input() item: NavItem;\r\n @Input() depth: number;\r\n\r\n\r\n constructor(public navService: NavService,\r\n public router: Router) {\r\n if (this.depth === undefined) {\r\n this.depth = 0;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.navService.currentUrl.subscribe((url: string) => {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => (string | string[]) = this.item.route;\r\n route = routefct.call(this);\r\n }\r\n\r\n\r\n if (this.item.route && url) {\r\n // console.log(`Checking '/${this.item.route}' against '${url}'`);\r\n //this.expanded = url.indexOf(`/${route}`) === 0;\r\n //this.ariaExpanded = this.expanded;\r\n // console.log(`${this.item.route} is expanded: ${this.expanded}`);\r\n }\r\n });\r\n }\r\n\r\n onItemSelected(item: NavItem) {\r\n /*if (!item.children || !item.children.length) {\r\n if (typeof item.route === 'function') {\r\n const routefct: () => string = item.route;\r\n this.router.navigate([routefct.call(this)]);\r\n } else {\r\n const route: string = item.route;\r\n this.router.navigate([route]);\r\n }\r\n this.navService.closeNav();\r\n }*/\r\n if (item.children && item.children.length) {\r\n this.expanded = !this.expanded;\r\n }\r\n }\r\n\r\n isActive(item: NavItem) {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n return route ? this.router.isActive(route, true) : false\r\n }\r\n }\r\n\r\n routerLink(item: NavItem) {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n }\r\n return route;\r\n }\r\n\r\n}\r\n","<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","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'gloww-code-editor',\r\n templateUrl: './code-editor.component.html',\r\n styleUrls: ['./code-editor.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: CodeEditorComponent\r\n }\r\n ]\r\n})\r\nexport class CodeEditorComponent implements ControlValueAccessor {\r\n @Input('value') _value: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n constructor() { }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (typeof (obj) === 'object') {\r\n this.value = JSON.stringify(obj);\r\n } else {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n}\r\n","<ngx-codemirror [(ngModel)]=\"value\" [options]=\"{lineNumbers: true,theme: 'eclipse', indentWithTabs:true,indentUnit: 4,matchBrackets: true, mode: 'text/typescript', fixedGutter:false}\">\r\n</ngx-codemirror>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'htmlFormat'\r\n})\r\nexport class HtmlFormatPipe implements PipeTransform {\r\n\r\n constructor(private _sanitizer?: DomSanitizer) { }\r\n\r\n transform(value: string, ...args: unknown[]): string {\r\n const newval = value.replace(/(^\\s*\\w|\\.\\s\\w)/g, m => m.toUpperCase()).replace(/\\s\\./ig, '').replace(/\\s*Nouvelle ligne\\s*.\\s*/ig, '<br/>').trim();\r\n if (!this._sanitizer) return newval;\r\n return this._sanitizer.bypassSecurityTrustHtml(newval) as string;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, OnInit, Output, Input } from '@angular/core';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\n\r\n@Component({\r\n selector: 'gloww-social-network',\r\n templateUrl: './social-network.component.html',\r\n styleUrls: ['./social-network.component.css']\r\n})\r\nexport class SocialNetworkComponent implements OnInit {\r\n @Input() oAuthProviders: any[];\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n\r\n icons = {\r\n Google: \"fa-brands fa-google\",\r\n LinkedIN: \"fa-brands fa-linkedin\",\r\n Facebook: \"fa-brands fa-facebook\",\r\n Github: \"fa-brands fa-github\",\r\n Amazon: \"fa-brands fa-amazon\",\r\n Apple: \"fa-brands fa-apple\",\r\n Microsoft: \"fa-brands fa-microsoft\",\r\n Twitter: \"fa-brands fa-twitter\",\r\n VK: \"fa-brands fa-vk\",\r\n };\r\n\r\n // oAuthAssociations: string[];\r\n // oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService) {\r\n // this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n // this.authenticationService.getOAuthAssociations().subscribe(oap => this.oAuthAssociations = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n execute(provider) {\r\n this.callback.emit(provider);\r\n }\r\n writeobj(provider) {\r\n console.log(provider);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","<div class=\"SocialNetwork\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" *ngIf=\"oAuthProviders\">\r\n <ng-container *ngFor=\"let provider of oAuthProviders\">\r\n <a (click)=\"execute(provider)\">\r\n <i [ngClass]=\"icons[provider.toString()]\"></i>\r\n </a>\r\n </ng-container>\r\n</div>\r\n","import { MatIconModule } from '@angular/material/icon';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\r\n\r\n@Component({\r\n selector: 'gloww-login',\r\n templateUrl: 'login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n}) export class LoginComponent implements OnInit {\r\n public loginForm: FormGroup;\r\n public lostPasswordForm: FormGroup;\r\n public resetPasswordForm: FormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n application: string;\r\n error = '';\r\n showDomain = false;\r\n state = 1;\r\n config: AuthenticationServiceConfig;\r\n oAuthProviders: string[];\r\n\r\n idOauth?: number;\r\n provider?: string;\r\n name?: string;\r\n value?: string;\r\n\r\n\r\n constructor(private formBuilder: FormBuilder, private route: ActivatedRoute, private router: Router, private authenticationService: AuthenticationService, @Optional() config?: AuthenticationServiceConfig) {\r\n // redirect to home if already logged in\r\n if (this.authenticationService.currentUserValue) {\r\n this.router.navigate(['/']);\r\n }\r\n this.config = config;\r\n if (config && config.showDomain) {\r\n this.showDomain = config.showDomain;\r\n }\r\n\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n }\r\n\r\n MatchPassword(fg: FormGroup) {\r\n if (!fg) { return; }\r\n return fg.get('newpassword')?.value === fg.get('confirmationPassword')?.value;\r\n }\r\n ngOnInit() {\r\n const grp: any = {\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n };\r\n const lostPwd: any = {\r\n email: ['', Validators.required],\r\n gsm: [''],\r\n firstname: ['', Validators.required],\r\n lastname: ['', Validators.required]\r\n };\r\n const resetPwd: any = {\r\n email: ['', Validators.required],\r\n code: ['', Validators.required],\r\n newPassword: ['', Validators.required],\r\n confirmationPassword: ['', Validators.required]\r\n };\r\n if (this.showDomain) {\r\n grp.domain = [''];\r\n }\r\n this.loginForm = this.formBuilder.group(grp);\r\n this.lostPasswordForm = this.formBuilder.group(lostPwd);\r\n this.resetPasswordForm = this.formBuilder.group(resetPwd, { validator: this.MatchPassword });\r\n // get return url from route parameters or default to '/'\r\n this.returnUrl = this.route.snapshot.queryParams.returnUrl;//|| window.location.search;\r\n this.application = this.route.snapshot.queryParams.application;//|| window.location.pathname;\r\n console.log(`returnUrl : ${this.returnUrl}`);\r\n console.log(`application : ${this.application}`);\r\n\r\n this.idOauth = this.route.snapshot.queryParams.idOauth;\r\n this.provider = this.route.snapshot.queryParams.provider;\r\n this.name = this.route.snapshot.queryParams.name;\r\n this.value = this.route.snapshot.queryParams.value;\r\n if (this.idOauth) {\r\n this.state = 4;\r\n }\r\n\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() { return this.loginForm.controls; }\r\n\r\n resetError() {\r\n this.error = \"\";\r\n }\r\n\r\n onConnect() {\r\n this.submitted = true;\r\n this.error = \"\";\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n this.loading = true;\r\n let domain = '';\r\n if (this.showDomain) {\r\n domain = this.f.domain.value;\r\n }\r\n this.authenticationService.login(domain, this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(data => {\r\n console.log(`navigate to ${this.returnUrl}`);\r\n this.router.navigate([this.returnUrl]);\r\n }, error => {\r\n if (error.error?.Code) {\r\n switch (error.error?.Code) {\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur(${error.error?.Params?.Username}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n if (!this.error) this.error = error.error.Message;\r\n }\r\n else {\r\n this.error = 'Impossible de se connecter. ';\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onAskResetPasswordCode() {\r\n let gsm = this.lostPasswordForm.value.gsm;\r\n if (!this.config?.askGSM) {\r\n gsm = '--noGSM--';\r\n }\r\n this.authenticationService\r\n .askResetPasswordCode('', this.lostPasswordForm.value.firstname, this.lostPasswordForm.value.lastname, this.lostPasswordForm.value.email, gsm)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 3;\r\n }\r\n\r\n onResetPassword() {\r\n this.authenticationService\r\n .resetPassword(this.resetPasswordForm.value.email, this.resetPasswordForm.value.code, this.resetPasswordForm.value.newPassword)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 1;\r\n }\r\n\r\n OAuthSignIn(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}?returnUrl=${encodeURI(this.returnUrl)}&application=${encodeURI(this.application)}&loginUrl=${encodeURI(window.location.pathname)}¤tUserVariableName=${this.authenticationService.currentUserVariableName}`;\r\n window.location.href = url;\r\n }\r\n\r\n onOAuthAskCode(): void {\r\n this.authenticationService\r\n .OAuthAskCode(this.authenticationService.environment, this.resetPasswordForm.value.email, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n d => {\r\n this.state = 5;\r\n },\r\n error => { }\r\n );\r\n }\r\n onOAuthAssociation(): void {\r\n this.authenticationService\r\n .OAuthAssociation(this.authenticationService.environment, this.resetPasswordForm.value.code, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n user => {\r\n console.log(user);\r\n window.location.href = this.returnUrl;\r\n },\r\n error => { }\r\n );\r\n }\r\n}\r\n","<div class=\"login-wrapper\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"height:100%\">\r\n\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Connexion</mat-card-title>\r\n </mat-card-header>\r\n\r\n <form class=\"example-form\" [formGroup]=\"loginForm\" (ngSubmit)=\"onConnect()\" *ngIf=\"state==1\">\r\n <mat-card-content>\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n <span style=\"color:red; font-weight:bold;\" *ngIf=\"error\" fxFlex=\"100%\">{{error}}</span>\r\n <mat-form-field class=\"example-full-width\" *ngIf=\"showDomain\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Domain\" formControlName=\"domain\" (change)=\"resetError()\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Username\" formControlName=\"username\" (change)=\"resetError()\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Password\" formControlName=\"password\" type=\"password\" (change)=\"resetError()\">\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\" fxLayoutGap=\"20px\">\r\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Me Connecter</button>\r\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=2; resetError();\">Mot de passe\r\n oublié</button>\r\n </div>\r\n <br />\r\n <gloww-social-network (callback)=\"OAuthSignIn($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\r\n </form>\r\n <form class=\"example-form\" [formGroup]=\"lostPasswordForm\" (ngSubmit)=\"onAskResetPasswordCode()\" *ngIf=\"state==2\">\r\n <mat-card-content>\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n <span style=\"color:red; font-weight:bold;\" *ngIf=\"error\" fxFlex=\"100%\">{{error}}</span>\r\n <mat-form-field class=\"example-full-width\" *ngIf=\"showDomain\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Domain\" formControlName=\"domain\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Prénom\" formControlName=\"firstname\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Nom\" formControlName=\"lastname\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Email\" formControlName=\"email\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\" *ngIf=\"config?.askGSM\">\r\n <input matInput placeholder=\"Mobile\" formControlName=\"gsm\">\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Demande de\r\n réinitialisation</button>\r\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=3\">J'ai un\r\n code</button>\r\n </form>\r\n <form class=\"example-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"onResetPassword()\" *ngIf=\"state==3\">\r\n <mat-card-content>\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n <span style=\"color:red; font-weight:bold;\" *ngIf=\"error\" fxFlex=\"100%\">{{error}}</span>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Email\" formControlName=\"email\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Code\" formControlName=\"code\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Password\" formControlName=\"newPassword\" type=\"password\">\r\n </mat-form-field>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Confirmation\" formControlName=\"confirmationPassword\" type=\"password\">\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Réinitialiser</button>\r\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=1\">J'ai retrouvé mon mot de\r\n passe</button>\r\n </form>\r\n <form class=\"example-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"onOAuthAskCode()\" *ngIf=\"state==4\">\r\n <mat-card-content>\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n <span fxFlex=\"100%\">Entrez l'adresse associée à votre compte. Vous recevrez un code par email.</span>\r\n <span style=\"color:red; font-weight:bold;\" *ngIf=\"error\" fxFlex=\"100%\">{{error}}</span>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Email\" formControlName=\"email\">\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Obtenir code</button>\r\n </form>\r\n <form class=\"example-form\" [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"onOAuthAssociation()\" *ngIf=\"state==5\">\r\n <mat-card-content>\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n <span fxFlex=\"100%\">Faites un copier/coller du code reçu par mail</span>\r\n <span style=\"color:red; font-weight:bold;\" *ngIf=\"error\" fxFlex=\"100%\">{{error}}</span>\r\n <mat-form-field class=\"example-full-width\" fxFlex=\"100%\">\r\n <input matInput placeholder=\"Code\" formControlName=\"code\">\r\n </mat-form-field>\r\n </div>\r\n </mat-card-content>\r\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Associer</button>\r\n </form>\r\n </mat-card>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\tconstructor(private authenticationService: AuthenticationService) { }\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\t// add authorization header with jwt token if available\r\n\t\ttry {\r\n\t\t\tconst currentUser = this.authenticationService.currentUserValue;\r\n\t\t\tif (currentUser && currentUser.Token) {\r\n\t\t\t\trequest = request.clone({\r\n\t\t\t\t\tsetHeaders: {\r\n\t\t\t\t\t\tAuthorization: `Bearer ${currentUser.Token}`\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(`jwt interceptor ${e}`);\r\n\t\t}\r\n\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error ? (err.error.message || err.StatusText) : err.statusText;\r\n if (console) console.log(err);\r\n return throwError(err);\r\n }));\r\n }\r\n}\r\n","import { MatDialogRef } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\n\r\n@Component({\r\n selector: 'gloww-change-password-dlg',\r\n templateUrl: './change-password-dlg.component.html',\r\n styleUrls: ['./change-password-dlg.component.css']\r\n})\r\nexport class ChangePasswordDlgComponent implements OnInit {\r\n error: string;\r\n form: FormGroup;\r\n constructor(private formBuilder: FormBuilder, private dialogRef: MatDialogRef<ChangePasswordDlgComponent>, private authenticationService: AuthenticationService) {\r\n this.form = this.formBuilder.group({\r\n oldpassword: ['', Validators.required],\r\n newpassword: ['', Validators.required],\r\n confirmationpassword: ['', Validators.required]\r\n }, { validator: c => c.get('newpassword').value === c.get('confirmationpassword').value });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n resetError() {\r\n this.error = '';\r\n }\r\n\r\n onSubmit() {\r\n this.resetError();\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const user = this.authenticationService.currentUserValue;\r\n this.authenticationService.changePassword('', user.username, this.form.value.oldpassword, this.form.value.newpassword).subscribe(r =>\r\n this.dialogRef.close(true),\r\n error => {\r\n switch (error.error?.Code) {\r\n case 'COMPLEXITY':\r\n this.error = 'Le mot de passe souhaitez n\\'est pas suffisamment complexe. Veuillez utiliser un mot de passe long (8 caractères minimum) combinant des majuscules, minuscules, chiffres et caractères spéciaux.';\r\n break;\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur (${error.error?.Params?.Username}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n this.error = error.error.Message;\r\n }\r\n );\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>Change Password</h2>\r\n<form class=\"example-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <mat-dialog-content>\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\r\n <div style=\"color:red; font-weight:bold;\" fxFlex=\"100%\">{{error}}</div>\r\n <mat-form-field fxFlex=\"100%\">\r\n <input matInput placeholder=\"Old Password\" formControlName=\"oldpassword\" type=\"password\" (change)=\"resetError()\">\r\n </mat-form-field>\r\n <mat-form-field fxFlex=\"100%\">\r\n <input matInput placeholder=\"New Password\" formControlName=\"newpassword\" type=\"password\" (change)=\"resetError()\">\r\n </mat-form-field>\r\n <mat-form-field fxFlex=\"100%\">\r\n <input matInput placeholder=\"Confirmation\" formControlName=\"confirmationpassword\" type=\"password\" (change)=\"resetError()\">\r\n </mat-form-field>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" type=\"submit\" [disabled]=\"form.invalid\">Change\r\n Password</button>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" (click)=\"cancel()\">Cancel</button>\r\n </mat-dialog-actions>\r\n</form>","import { Oauthassociation } from './../../Models/oauthassociation';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\n\r\n@Component({\r\n selector: 'gloww-social-network-dlg',\r\n templateUrl: './social-network-dlg.component.html',\r\n styleUrls: ['./social-network-dlg.component.css']\r\n})\r\nexport class SocialNetworkDlgComponent implements OnInit {\r\n\r\n oAuthProviders: string[];\r\n oAuthAssociations: Oauthassociation[];\r\n config: AuthenticationServiceConfig;\r\n\r\n constructor(private dialogRef: MatDialogRef<SocialNetworkDlgComponent>, private authenticationService: AuthenticationService, private dialog: MatDialog, @Optional() config?: AuthenticationServiceConfig) {\r\n this.config = config;\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n this.authenticationService.getOAuthAssociations().subscribe(oap => {\r\n this.oAuthAssociations = oap;//oap.map(item => Object.assign(new Oauthassociation(), item));\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n OK() {\r\n this.dialogRef.close();\r\n }\r\n\r\n OAuthAddAssociation(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}`;\r\n window.location.href = url;\r\n }\r\n OAuthDeleteAssociation(association: Oauthassociation): void {\r\n this.authenticationService.OAuthDeleteAssociation(association.provider, association.idOAuth).subscribe(\r\n result => {\r\n alert(\"Association supprimée\");\r\n const index = this.oAuthAssociations.indexOf(association, 0);\r\n if (index >= 0) {\r\n this.oAuthAssociations.splice(index, 1);\r\n } else {\r\n alert(\"unable to delete item\");\r\n }\r\n //this.oAuthAssociations.find(a => a === association\r\n },\r\n error => {\r\n alert('Impossible d\\'effacer l\\'association');\r\n }\r\n\r\n )\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Gestion des identifications par réseaux sociaux</h2>\r\n<mat-dialog-content>\r\n <h3>Associations établies</h3>\r\n <p>Choisissez l'association que vous souhaitez supprimer</p>\r\n <gloww-social-network (callback)=\"OAuthDeleteAssociation($event)\" [oAuthProviders]=\"oAuthAssociations\"></gloww-social-network>\r\n <h3>Nouvelle association</h3>\r\n <p>Choisissez le provider</p>\r\n <gloww-social-network (callback)=\"OAuthAddAssociation($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" (click)=\"OK() \">OK</button>\r\n</mat-dialog-actions>","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { MatDialogConfig, MatDialog } from '@angular/material/dialog';\r\nimport { ChangePasswordDlgComponent } from '../change-password-dlg/change-password-dlg.component';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { SocialNetworkDlgComponent } from '../social-network-dlg/social-network-dlg.component';\r\n\r\n@Component({\r\n selector: 'gloww-user-menu',\r\n templateUrl: './user-menu.component.html',\r\n styleUrls: ['./user-menu.component.scss']\r\n})\r\nexport class UserMenuComponent implements OnInit {\r\n\r\n @Input() size = '1x';\r\n @Input() imageUser = null;\r\n @Input() loginpage = '';\r\n\r\n showMenuUser = false;\r\n connected = false;\r\n oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService, private dialog: MatDialog, private router: Router) {\r\n const person: any = this.authenticationService.currentUserValue;\r\n if (person && person.UserInfo) {\r\n this.connected = true;\r\n if (person.UserInfo.Picture) { this.imageUser = '/' + authenticationService.environment + '/' + person.UserInfo.Picture; }\r\n }\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n Logout() {\r\n this.showMenuUser = false;\r\n this.authenticationService.logout();\r\n this.router.navigate(['/']);\r\n }\r\n\r\n ChangePassword() {\r\n this.showMenuUser = true;\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(ChangePasswordDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n if (result) { alert('Password Changed'); }\r\n });\r\n }\r\n\r\n toggleMenuUser() {\r\n this.showMenuUser = !this.showMenuUser;\r\n }\r\n\r\n Configuration() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(SocialNetworkDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n\r\n });\r\n }\r\n\r\n}\r\n","<div *ngIf=\"connected\">\r\n <span (click)=\"toggleMenuUser()\">\r\n <img [src]=\"imageUser\" style=\"height:40px;float:left; padding-left:20px\" *ngIf=\"imageUser\" />\r\n <i [ngClass]=\"'fal fa-user '+size\" *ngIf=\"!imageUser\" style=\"float:left; padding-left:10px\">\r\n <!--[size]=\"size\"-->\r\n </i>\r\n </span>\r\n <div class=\"menuUser\" *ngIf=\"showMenuUser\">\r\n <ul class=\"menuSec\" style=\"border: solid lightgrey;\">\r\n <li (click)=\"ChangePassword()\">\r\n <i class=\"fal fa-key-skeleton\"></i>Change Password\r\n </li>\r\n <li (click)=\"Configuration()\" *ngIf=\"oAuthProviders && oAuthProviders.length\">\r\n <i class=\"fal fa-tools\"></i>Configuration\r\n </li>\r\n <li (click)=\"Logout()\">\r\n <i class=\"fal fa-sign-out\"></i>Déconnexion\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!connected && loginpage\">\r\n <span style=\"height:40px;float:left; padding-left:20px\" [routerLink]=\"loginpage\">Connexion</span>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StagingInterceptor implements HttpInterceptor {\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // add authorization header with jwt token if available\r\n try {\r\n if (!request.url.match(/version\\.json(\\?|$)/ig)) {\r\n console.log(`Replace ${request.url}`);\r\n return next.handle(request.clone({ url: request.url.replace(\"__Staging\", \"\") }));\r\n }\r\n } catch (e) {\r\n console.log(`staging interceptor ${e}`);\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { APP_BASE_HREF, PlatformLocation } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport jwt_decode from 'jwt-decode';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate {\r\n\r\n private baseHref = null;\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n this.baseHref = platformLocation.getBaseHrefFromDOM();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n const jwtToken = jwt_decode<any>(currentUser.Token);\r\n if (Date.now() < jwtToken.exp * 1000) {\r\n return true;\r\n } else {\r\n this.authenticationService.logout();\r\n }\r\n }\r\n const vd = window.location.pathname\r\n if (vd.endsWith(\"/login\")) { return true; }\r\n\r\n console.log(window.location);\r\n console.log(route);\r\n console.log(state);\r\n console.log(state.url);\r\n console.log(window.location.search);\r\n console.log(window.location.pathname);\r\n\r\n const returnUrl = window.location.pathname.substr(this.baseHref.length);\r\n //let application = window.location.pathname.substr(0, window.location.pathname.length - state.url.length);\r\n /*if (state.url === '/') {\r\n application = window.location.pathname.endsWith(\"/\") ? application.substr(0, window.location.pathname.length - 1) : window.location.pathname;\r\n }\r\n if (!application) { application = '/'; }\r\n console.log(application);*/\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: `${returnUrl}${window.location.search}`, application: `${this.baseHref}` } });\r\n return false;\r\n }\r\n}\r\n","import { PlatformLocation } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthenticationService } from '../gloww-security.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdministratorGuard implements CanActivate {\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n\r\n }\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator || currentUser.isAdministrator;\r\n }\r\n\r\n}\r\n","import { AdministratorGuard } from './Helpers';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from './Services/authentication-service-config';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoginComponent } from './Components/login/login.component';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AuthGuard } from './Helpers';\r\nimport { JwtInterceptor } from './Helpers/jwt.interceptor';\r\nimport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nimport { AuthenticationService } from './Services/authentication.service';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { UserMenuComponent } from './Components/user-menu/user-menu.component';\r\nimport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\r\nimport { SocialNetworkComponent } from './Components/social-network/social-network.component';\r\nimport { StagingInterceptor } from './Helpers/staging.interceptor';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoginComponent,\r\n ChangePasswordDlgComponent,\r\n UserMenuComponent,\r\n SocialNetworkDlgComponent,\r\n SocialNetworkComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FlexLayoutModule,\r\n MatToolbarModule,\r\n MatButtonModule,\r\n MatSidenavModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatCardModule,\r\n MatDialogModule,\r\n HttpClientModule,\r\n RouterModule,\r\n ],\r\n providers: [],\r\n exports: [LoginComponent, RouterModule, UserMenuComponent]\r\n})\r\nexport class GlowwSecurityModule {\r\n public static forRoot(authenticationServiceConfig: AuthenticationServiceConfig): ModuleWithProviders<GlowwSecurityModule> {\r\n\r\n /*\r\n var socialLoginProviders = {\r\n provide: 'SocialAuthServiceConfig',\r\n useValue: {\r\n autoLogin: false,\r\n providers: [\r\n ],\r\n onError: (err) => {\r\n console.error(err);\r\n }\r\n } as SocialAuthServiceConfig,\r\n };\r\n\r\n if (authenticationServiceConfig.googleClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: GoogleLoginProvider.PROVIDER_ID,\r\n provider: new GoogleLoginProvider(\r\n authenticationServiceConfig.googleClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.facebookClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: FacebookLoginProvider.PROVIDER_ID,\r\n provider: new FacebookLoginProvider(\r\n authenticationServiceConfig.facebookClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.amazonClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: AmazonLoginProvider.PROVIDER_ID,\r\n provider: new AmazonLoginProvider(\r\n authenticationServiceConfig.amazonClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.microsoftClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: MicrosoftLoginProvider.PROVIDER_ID,\r\n provider: new MicrosoftLoginProvider(\r\n authenticationServiceConfig.microsoftClientId\r\n )\r\n }\r\n )\r\n }\r\n */\r\n\r\n return {\r\n ngModule: GlowwSecurityModule,\r\n providers: [\r\n AuthenticationService,\r\n AuthenticationServiceConfig,\r\n { provide: AuthenticationServiceConfig, useValue: authenticationServiceConfig },\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n //{ provide: HTTP_INTERCEPTORS, useClass: StagingInterceptor, multi: true },\r\n //socialLoginProviders\r\n ]\r\n };\r\n }\r\n}\r\n\r\nexport { LoginComponent } from './Components/login/login.component';\r\nexport { AuthenticationService } from './Services/authentication.service';\r\nexport { JwtInterceptor } from './Helpers/jwt.interceptor';\r\nexport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nexport { StagingInterceptor } from './Helpers/staging.interceptor';\r\nexport { AuthGuard } from './Helpers';\r\nexport { AdministratorGuard } from './Helpers/';\r\n","import { Component, Input, OnInit, SecurityContext, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HtmlFormatPipe } from '../../Pipes/html-format.pipe';\r\nimport { VoiceRecognitionService } from '../../Services/voice-recognition.service';\r\nimport { AngularEditorConfig, AngularEditorToolbarComponent } from '@gloww/angular-editor';\r\nimport { AngularEditorButtonConfig } from '@gloww/angular-editor/lib/config';\r\nimport { AuthenticationService } from '../../gloww-security/gloww-security.module';\r\n\r\n@Component({\r\n selector: 'gloww-html-editor',\r\n templateUrl: './html-editor.component.html',\r\n styleUrls: ['./html-editor.component.css'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: HtmlEditorComponent\r\n }\r\n ]\r\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor {\r\n @ViewChild('voiceRecognitionDlg') voiceRecognitionTemplate!: TemplateRef<any>;\r\n //@Input() formControlName: string = \"\";\r\n @Input() placeHolder: string = \"\";\r\n @Input('value') _value: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n tb?: AngularEditorToolbarComponent;\r\n dialogRef?: MatDialogRef<any, any>;\r\n\r\n allowedStyles = ['text-align'];\r\n allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '75px',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: '',\r\n defaultFontSize: '3',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n }\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: (html: string) => this.sanitize(html),\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n ['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',\r\n 'fontName',\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']\r\n ],\r\n additionalButtons: [\r\n {\r\n title: 'Speech Recognition',\r\n click: (tb: AngularEditorToolbarComponent, event) => {\r\n this.tb = tb;\r\n tb.focus();\r\n this.voiceRecognitionService.start();\r\n this.voiceRecognitionService.text = \"\";\r\n this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {\r\n width: '550px'\r\n });\r\n\r\n },\r\n icon: 'fas fa-comment-plus'\r\n }\r\n ]\r\n };\r\n\r\n cancel() {\r\n this.voiceRecognitionService.stop();\r\n this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n paste() {\r\n this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));\r\n this.voiceRecognitionService.stop();\r\n this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n constructor(private sanitizer: DomSanitizer, private authenticationService: AuthenticationService, public voiceRecognitionService: VoiceRecognitionService, public dialog: MatDialog) {\r\n this.voiceRecognitionService.init();\r\n }\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n sanitize(html: string): string {\r\n let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\\\</?[a-z]+:[a-z]+\\\\>', 'gi'), '').replace(/class=\"Mso[a-z]+\"/ig, '');\r\n const matchTags = itres?.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/ig);\r\n matchTags?.forEach(m => {\r\n const matchTag = m.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/i);\r\n if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {\r\n itres = itres?.replace(m, '');\r\n }\r\n });\r\n\r\n while (true) {\r\n const matchStyle = itres?.match(/style\\s*=\\s*\"(?<style>[^\"]+)\"/i);\r\n if (!matchStyle || !matchStyle?.groups) { break; }\r\n const styles = matchStyle?.groups['style']?.replace(/"/ig, '\"');\r\n const smatches = styles.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/ig);\r\n const newStyles: any[] = [];\r\n smatches?.forEach((v, i, a) => {\r\n const ssmatches = v.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/i);\r\n if (ssmatches?.groups) {\r\n const name = ssmatches?.groups['name'];\r\n if (this.allowedStyles.indexOf(name) >= 0) {\r\n newStyles.push(v);\r\n }\r\n const value = ssmatches.groups['value'];\r\n console.log(`${name}=${value}`);\r\n }\r\n });\r\n let attr = '';\r\n if (newStyles.length) { attr = `stylenew=\"${newStyles.join(';')}\"`; }\r\n itres = itres?.replace(matchStyle[0], attr);\r\n }\r\n return itres?.replace(/stylenew=/ig, 'style=') ?? \"\";\r\n }\r\n\r\n isAdministrator() {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;\r\n }\r\n\r\n}\r\n","<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ée. Veuillez dicter le texte à insérer.</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","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'gloww-file-edit',\r\n templateUrl: './file-edit.component.html',\r\n styleUrls: ['./file-edit.component.css']\r\n})\r\nexport class FileEditComponent implements OnInit {\r\n\r\n\r\n form: FormGroup;\r\n ext: string;\r\n\r\n modes = {\r\n \".txt\": \"null\",\r\n \".cs\": \"clike\",\r\n \".js\": \"javascript\",\r\n \".json\": { name: \"javascript\", json: true },\r\n \".css\": \"css\",\r\n \".scss\": \"scss\",\r\n \".htm\": \"html\",\r\n \".html\": \"html\",\r\n \".xml\": \"xml\"\r\n };\r\n\r\n\r\n constructor(private formBuilder: FormBuilder, private dialogRef: MatDialogRef<FileEditComponent>, @Inject(MAT_DIALOG_DATA) definition) {\r\n this.form = this.formBuilder.group({\r\n path: [null, Validators.required],\r\n content: [null]\r\n });\r\n if (definition) {\r\n this.form.patchValue(definition);\r\n try {\r\n this.ext = definition.path.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm)$/ig)[0];\r\n } catch {\r\n this.ext = null;\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n getMode() {\r\n try {\r\n if (this.ext && this.modes[this.ext]) {\r\n return this.modes[this.ext];\r\n } else {\r\n return \"null\";\r\n }\r\n } catch {\r\n return \"null\";\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n save() {\r\n this.dialogRef.close(this.form.value);\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>Ajout/Edition d'un fichier</h2>\r\n\r\n<mat-dialog-content [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput [readonly]=\"true\" placeholder=\"Path\" formControlName=\"path\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n <br />\r\n <ngx-codemirror formControlName=\"content\" [options]=\"{\r\n lineNumbers: true,\r\n theme: 'eclipse',\r\n\t\t\t\tindentWithTabs:true,\r\n\t\t\t\tindentUnit: 4,\r\n mode: getMode()\r\n }\"></ngx-codemirror>\r\n</mat-dialog-content>\r\n\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","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FolderServiceConfig {\r\n apiPath?= '/';\r\n static Create(t?: any): FolderServiceConfig {\r\n const res = new FolderServiceConfig();\r\n if (t) {\r\n Object.assign(res, t);\r\n }\r\n return res;\r\n }\r\n}\r\n","import { FolderServiceConfig } from './folder-service-config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { API_PATH } from '../injection-token';\r\nimport { API_SERVER_URL } from './gloww.service';\r\n\r\n\r\nexport interface DirectoryContent {\r\n files: string[];\r\n directories: string[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FolderService {\r\n\r\n constructor(private http: HttpClient, private folderServiceConfig: FolderServiceConfig, @Optional() @Inject(API_SERVER_URL) apiServerUrl: string) {\r\n console.log(`folderServiceConfig ${folderServiceConfig.apiPath}`);\r\n console.log(`apiServierUrl ${apiServerUrl}`);\r\n }\r\n\r\n getDirectoryContent(path: string) {\r\n return this.http.get<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path ?? \"\"}`);\r\n }\r\n postDirectoryContent(path: string) {\r\n const formData = new FormData();\r\n return this.http.post<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path}`, formData, {});\r\n }\r\n\r\n\r\n getFileContent(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'text'\r\n });\r\n }\r\n getFileContentBlob(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n postFileContent(path: string, formData: FormData) {\r\n return this.http.post<any>(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, formData, {\r\n reportProgress: true,\r\n observe: 'events'\r\n });\r\n }\r\n}\r\n","import { HttpEventType, HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\r\nimport { of } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { DirectoryContent, FolderService } from '../../../Services/folder.service';\r\nimport { PromptModel, PromptComponent } from '../../prompt/prompt.component';\r\nimport { UploadDocComponent } from '../../upload-doc/upload-doc.component';\r\nimport { UploadFileComponent } from '../../upload-file/upload-file.component';\r\nimport { FileEditComponent } from '../file-edit/file-edit.component';\r\n\r\n@Component({\r\n selector: 'gloww-folders',\r\n templateUrl: './folders.component.html',\r\n styleUrls: ['./folders.component.css']\r\n})\r\nexport class FoldersComponent implements OnInit {\r\n\r\n\r\n currentDir: string;\r\n directoryContent: DirectoryContent;\r\n\r\n\r\n constructor(private folderService: FolderService, private router: Router, private route: ActivatedRoute, private dialog: MatDialog) {\r\n //flowService.getDirectoryContent(route.snapshot.params.id).subscribe(r => this.directoryContent = r);\r\n\r\n this.router.events.subscribe((event: NavigationEnd) => {\r\n if (event instanceof NavigationEnd) {\r\n const urlParts = event.url.split('/');\r\n this.currentDir = urlParts.slice(2).join(\"/\");\r\n this.directoryContent = null;\r\n folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n addFolder() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New Folder\", \"Please give the name of the folder to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(folder => {\r\n if (folder) {\r\n this.folderService.postDirectoryContent(this.currentDir + '/' + folder).subscribe(c => {\r\n this.router.navigate(this.getRouterLink(folder)),\r\n error => alert(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addFile() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New File\", \"Please give the name of the text file to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(fileName => {\r\n if (fileName) {\r\n this.Edit(fileName);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n });\r\n }\r\n\r\n addFileUpload() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { acceptMime: 'image/*', multiple: true, allowAltFileName: true };\r\n\r\n this.dialog.open(UploadDocComponent, dialogConfig).afterClosed().subscribe(files => {\r\n if (files) {\r\n files.forEach(file => {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n this.UploadFile(this.currentDir + \"/\" + file.fileName, formData);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n });\r\n }\r\n });\r\n }\r\n getRouterLink(directory?: string) {\r\n if (!this.currentDir) {\r\n return ['/folders', directory];\r\n }\r\n if (!directory) {\r\n let res = ['/folders', ...this.currentDir.split(\"/\")];\r\n res.pop();\r\n return res;\r\n }\r\n return ['/folders', ...this.currentDir.split(\"/\"), directory]\r\n }\r\n getHref(f: string) {\r\n if (!this.currentDir) {\r\n return ['/FlowMgmt', 'folders', f].join('/');\r\n }\r\n\r\n return ['/FlowMgmt', 'folders', ...this.currentDir.split(\"/\"), f].join('/');\r\n }\r\n\r\n\r\n\r\n dataURItoBlob(content) {\r\n const byteString = content;\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: 'text/plain' });\r\n return blob;\r\n }\r\n\r\n isEditable(filename: string): boolean {\r\n return filename.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|exp|sh|pwsh)$/ig) != null;\r\n }\r\n\r\n UploadFile(fileName: string, formData: FormData) {\r\n this.folderService.postFileContent(fileName, formData).pipe(\r\n map(event => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n //file.progress = Math.round(event.loaded * 100 / event.total);\r\n break;\r\n case HttpEventType.Response:\r\n return event.body;\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n //file.inProgress = false;\r\n return of(`${fileName} upload failed.`);\r\n })).subscribe((event: any) => {\r\n if (typeof (event) === 'object') {\r\n //obj.Logo = event.Logo;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n Edit(fileName: string) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n let content: string;\r\n this.folderService.getFileContent(this.currentDir + '/' + fileName).subscribe(c => {\r\n dialogConfig.data = { path: this.currentDir + '/' + fileName, content: c };\r\n this.dialog.open(FileEditComponent, dialogConfig).afterClosed().subscribe(data => {\r\n if (data) {\r\n const formData = new FormData();\r\n const imageName = fileName;\r\n const imageBlob = this.dataURItoBlob(data.content);\r\n const file = new File([imageBlob], imageName, { type: 'text/plain' });\r\n formData.append('file', file);\r\n this.UploadFile(this.currentDir + '/' + fileName, formData);\r\n //file.inProgress = true;\r\n\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n /*\r\nthis.http.get(`${environment.apiUrl}`, {\r\n responseType: 'arraybuffer', headers: headers\r\n}\r\n).subscribe(response => this.downLoadFile(response, \"application/ms-excel\"));*/\r\n\r\n downloadFile(fileName: string) {\r\n this.folderService.getFileContentBlob(this.currentDir + '/' + fileName).subscribe(blob => {\r\n this.downLoadFile2(blob, blob.type)\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Method is use to download file.\r\n * @param data - Array Buffer data\r\n * @param type - type of the document.\r\n */\r\n downLoadFile2(data: any, type: string) {\r\n let blob = new Blob([data], { type: type });\r\n let url = window.URL.createObjectURL(blob);\r\n let pwa = window.open(url);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert('Please disable your Pop-up blocker and try again.');\r\n }\r\n }\r\n\r\n}\r\n","<h1>\r\n <i class=\"fal fa-folder\" size=\"40px\"></i> /{{currentDir}}\r\n <i class=\"fal fa-level-up\" [routerLink]=\"getRouterLink()\" *ngIf=\"currentDir\"></i>\r\n</h1>\r\n<div *ngIf=\"directoryContent else Spinner\">\r\n <i class=\"fal fa-folder-plus\" (click)=\"addFolder()\" size=\"30px\"></i>\r\n <ul>\r\n <li *ngFor=\"let d of directoryContent.directories\">\r\n <i class=\"fal fa-folder\"></i><a [routerLink]=\"getRouterLink(d)\">{{d}}</a>\r\n </li>\r\n </ul>\r\n <i class=\"fal fa-file-plus\" (click)=\"addFile()\" size=\"30px\"></i>\r\n <i class=\"fal fa-file-upload\" (click)=\"addFileUpload()\" size=\"30px\"></i>\r\n <ul>\r\n <li *ngFor=\"let f of directoryContent.files\">\r\n <a (click)=\"Edit(f)\" href=\"javascript:void(0);\" *ngIf=\"isEditable(f); else notEditable\">\r\n <i class=\"fal fa-file\"></i> {{f}}\r\n </a>\r\n <ng-template #notEditable>\r\n <i class=\"fal fa-file fa-disabled\"></i> <a (click)=\"downloadFile(f)\" target=\"_blank\" href=\"javascript:void(0);\">{{f}}</a>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n</div>\r\n<ng-template #Spinner>\r\n <mat-spinner></mat-spinner>\r\n</ng-template>","import { HttpResponse, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as JSZip from 'jszip';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'gloww-download-progress',\r\n templateUrl: './download-progress.component.html',\r\n styleUrls: ['./download-progress.component.scss']\r\n})\r\nexport class DownloadProgressComponent implements OnInit {\r\n\r\n done: number;\r\n name: string;\r\n files: { name: string, url: string }[];\r\n current: { url: string, loaded: number, total: number }[];\r\n message: string;\r\n percent: number;\r\n constructor(private dialogRef: MatDialogRef<DownloadProgressComponent>, @Inject(MAT_DIALOG_DATA) arg: any, public httpClient: HttpClient) {\r\n this.done = -1;\r\n this.name = arg.name;\r\n this.files = arg.files;\r\n this.current = []\r\n this.message = \"Donwload des fichiers\";\r\n this.percent = -1;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.name) {\r\n this.downloadZip();\r\n } else {\r\n this.download();\r\n }\r\n\r\n }\r\n\r\n async getFile(url: string, callback: (url: string, loaded: number, total: number) => void) {\r\n const httpOptions = {\r\n observe: \"events\",\r\n reportProgress: true,\r\n responseType: \"blob\" //as 'json'\r\n };\r\n const res = await this.httpClient.get(url, httpOptions as any).pipe(\r\n map((event: any) => {\r\n console.log(event);\r\n /*if (event.type === HttpEventType.DownloadProgress) {\r\n console.log(`download progress ${(event as HttpEventType.DownloadProgress).valueOf}`);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n console.log(\"donwload completed\");\r\n }*/\r\n if (event.type === 3) {\r\n callback(url, event.loaded, event.total)\r\n }\r\n if (event instanceof HttpResponse) {\r\n callback(url, -1, -1);\r\n }\r\n return event;\r\n }),\r\n filter((event: any) => event instanceof HttpResponse)).toPromise().catch((err: HttpErrorResponse) => {\r\n const error = err.error;\r\n return error;\r\n });\r\n return res.body;\r\n }\r\n\r\n callback(url: string, loaded: number, total: number) {\r\n const index = this.current.findIndex(c => c.url === url);\r\n if (total === -1) {\r\n this.done += 1;\r\n this.current.splice(index, 1);\r\n } else {\r\n if (index === -1) {\r\n this.current.push({ url, loaded, total });\r\n } else {\r\n this.current[index].loaded = loaded;\r\n }\r\n\r\n }\r\n }\r\n\r\n callback_zip(metadata: any) {\r\n this.percent = metadata.percent;\r\n }\r\n\r\n async downloadZip() {\r\n const zip = new JSZip();\r\n // tslint:disable-next-line:prefer-for-of\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n zip.file(file.name, b);\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n\r\n await zip.generateAsync({ type: 'blob' }, this.callback_zip.bind(this)).then((content) => {\r\n if (content) {\r\n FileSaver.saveAs(content, this.name);\r\n }\r\n });\r\n this.dialogRef.close();\r\n }\r\n\r\n async download() {\r\n const zip = new JSZip();\r\n // tslint:disable-next-line:prefer-for-of\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n FileSaver.saveAs(b, file.name);\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n this.dialogRef.close();\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Progression Donwload</h2>\r\n\r\n<mat-dialog-content>\r\n <H3>{{message}}</H3>\r\n <mat-progress-bar [value]=\"percent\" *ngIf=\"percent>0\"></mat-progress-bar>\r\n <div *ngIf=\"done>=0\">\r\n <mat-progress-bar [value]=\"done*100/files.length\"></mat-progress-bar> {{done}}/{{files.length}}\r\n <br />\r\n <ul>\r\n <li *ngFor=\" let file of current; index as i\">\r\n <span id=\"file-label\">{{file.url}}</span>\r\n <mat-progress-bar [value]=\"file.loaded*100/file.total\"></mat-progress-bar>\r\n </li>\r\n </ul>\r\n </div>\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n <!--<button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n\t<button class=\"mat-raised-button mat-primary\" (click)=\"save()\">Save</button>-->\r\n</mat-dialog-actions>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { DownloadProgressComponent } from '../download-progress/download-progress.component';\r\n\r\n@Component({\r\n selector: 'gloww-secure-a',\r\n templateUrl: './secure-a.component.html',\r\n styleUrls: ['./secure-a.component.css']\r\n})\r\nexport class SecureAComponent implements OnInit {\r\n @Input() href: string;\r\n @Input() name: string\r\n\r\n constructor(private dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n click() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { files: [{ url: this.href, name: this.name }] };\r\n\r\n this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();\r\n }\r\n\r\n}\r\n","<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>","import { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nimport { AngularEditorConfig, AngularEditorModule } from '@gloww/angular-editor';\r\nimport { NavService } from './Services/nav.service';\r\nimport { SecureImgComponent } from './Components/secure-img/secure-img.component';\r\nimport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { VersionCheckService } from './Services/version-check.service';\r\nimport { APP_BASE_HREF, CommonModule, PlatformLocation } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\r\nimport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\r\nimport { HeaderComponent } from './Components/header/header.component';\r\nimport { ResultTableComponent } from './Components/result-table/result-table.component';\r\nimport { SearchFormComponent } from './Components/search-form/search-form.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PromptComponent } from './Components/prompt/prompt.component';\r\nimport { SecurePipe } from './Pipes/secure.pipe';\r\nimport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\r\nimport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\r\nimport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\r\nimport { HtmlFormatPipe } from './Pipes/html-format.pipe';\r\nimport { UploadFileComponent } from './Components/upload-file/upload-file.component';\r\nimport { FileSinkDirective } from './Directives/file-sink.directive';\r\nimport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\r\nimport { FoldersComponent } from './Components/folders/folders/folders.component';\r\nimport { API_PATH } from './injection-token';\r\nimport { FolderServiceConfig } from './Services/folder-service-config';\r\nimport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\r\nimport { SecureAComponent } from './Components/secure-a/secure-a.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UploadDocComponent,\r\n SafeHtmlPipe,\r\n DisplayObjectsComponent,\r\n HeaderComponent,\r\n ResultTableComponent,\r\n SearchFormComponent,\r\n ConfirmationComponent,\r\n PromptComponent,\r\n SecurePipe,\r\n SecureImgComponent,\r\n MenuListItemComponent,\r\n CodeEditorComponent,\r\n HtmlEditorComponent,\r\n HtmlFormatPipe,\r\n UploadFileComponent,\r\n FileSinkDirective,\r\n FileEditComponent,\r\n FoldersComponent,\r\n DownloadProgressComponent,\r\n SecureAComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatDialogModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatProgressSpinnerModule,\r\n MatProgressBarModule,\r\n MatTableModule,\r\n MatSelectModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatProgressSpinnerModule,\r\n CodemirrorModule,\r\n AngularEditorModule\r\n ],\r\n providers: [],\r\n exports: [\r\n SafeHtmlPipe,\r\n UploadDocComponent,\r\n UploadFileComponent,\r\n DisplayObjectsComponent,\r\n HeaderComponent,\r\n ResultTableComponent,\r\n SearchFormComponent,\r\n ConfirmationComponent,\r\n PromptComponent,\r\n SecurePipe,\r\n SecureImgComponent,\r\n MenuListItemComponent,\r\n CodeEditorComponent,\r\n HtmlEditorComponent,\r\n HtmlFormatPipe,\r\n FoldersComponent,\r\n DownloadProgressComponent,\r\n SecureAComponent\r\n ]\r\n})\r\nexport class GlowwModule {\r\n public static forRoot(folderServiceConfig?: FolderServiceConfig): ModuleWithProviders<GlowwModule> {\r\n console.log(`forRoot ${folderServiceConfig}`);\r\n return {\r\n ngModule: GlowwModule,\r\n providers: [\r\n VersionCheckService,\r\n NavService,\r\n VoiceRecognitionService,\r\n {\r\n provide: FolderServiceConfig,\r\n useValue: folderServiceConfig\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n\r\nexport { VersionCheckService } from './Services/version-check.service';\r\nexport { DialogService } from './Services/dialog.service';\r\nexport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nexport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\r\nexport { HeaderComponent } from './Components/header/header.component';\r\nexport { ResultTableComponent } from './Components/result-table/result-table.component';\r\nexport { SearchFormComponent } from './Components/search-form/search-form.component';\r\nexport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\r\nexport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\r\nexport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\r\nexport { FoldersComponent } from './Components/folders/folders/folders.component';\r\nexport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\r\nexport { SecureAComponent } from './Components/secure-a/secure-a.component';\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwSecurityService {\r\n\r\n constructor() { }\r\n}\r\n","/*\r\n * Public API Surface of gloww\r\n */\r\n\r\nexport * from './lib/Services/gloww.service';\r\nexport * from './lib/Services/version-check.service';\r\nexport * from './lib/Services/dialog.service';\r\nexport * from './lib/Services/nav.service';\r\nexport * from './lib/gloww.module';\r\nexport * from './lib/Models/nav-item';\r\nexport * from './lib/Pipes/safe-html.pipe';\r\nexport * from './lib/Pipes/secure.pipe';\r\nexport * from './lib/Pipes/html-format.pipe';\r\nexport * from './lib/Components/upload-doc/upload-doc.component';\r\nexport * from './lib/Components/upload-file/upload-file.component';\r\nexport * from './lib/Components/display-objects/display-objects.component';\r\nexport * from './lib/Components/confirmation/confirmation.component';\r\nexport * from './lib/Components/prompt/prompt.component';\r\nexport * from './lib/Components/secure-img/secure-img.component';\r\nexport * from './lib/Components/secure-a/secure-a.component';\r\nexport * from './lib/Components/menu-list-item/menu-list-item.component';\r\nexport * from './lib/Components/code-editor/code-editor.component';\r\nexport * from './lib/Components/html-editor/html-editor.component';\r\nexport * from './lib/Components/folders/folders/folders.component';\r\n\r\nexport * from './lib/gloww-security/Components/login/login.component';\r\nexport * from './lib/gloww-security/Components/change-password-dlg/change-password-dlg.component';\r\nexport * from './lib/gloww-security/Components/user-menu/user-menu.component';\r\nexport * from './lib/gloww-security/Services/gloww-security.service';\r\nexport * from './lib/gloww-security/gloww-security.module';\r\nexport * from './lib/gloww-security/Services/authentication-service-config';\r\nexport * from './lib/Services/folder-service-config';\r\nexport * from './lib/Components/download-progress/download-progress.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["delay","delayOperator"],"mappings":"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"}
|
|
File without changes
|