@cleavelandprice/ngx-lib 3.7.2 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/active-directory/active-directory.module.d.ts +11 -11
- package/active-directory/gui/components/user-chooser/user-chooser.component.d.ts +58 -58
- package/active-directory/gui/components/user-form-field/user-form-field.component.d.ts +29 -29
- package/active-directory/gui/gui.module.d.ts +25 -25
- package/active-directory/gui/index.d.ts +5 -5
- package/active-directory/gui/model/selectable-user.d.ts +5 -5
- package/active-directory/gui/model/user-chooser-data.d.ts +22 -22
- package/active-directory/gui/model/user-chooser-filter-options.d.ts +7 -7
- package/active-directory/gui/model/user-chooser-mode.d.ts +4 -4
- package/active-directory/gui/model/user-chooser-pre-processing-group.d.ts +6 -6
- package/active-directory/gui/public_api.d.ts +8 -8
- package/active-directory/index.d.ts +5 -5
- package/active-directory/model/ad-object-with-children.d.ts +4 -4
- package/active-directory/model/ad-object.d.ts +13 -13
- package/active-directory/model/cache-object.d.ts +4 -4
- package/active-directory/model/caching-config.d.ts +4 -4
- package/active-directory/model/cleaveland-price-user.d.ts +17 -17
- package/active-directory/model/group.d.ts +7 -7
- package/active-directory/model/logging-config.d.ts +6 -6
- package/active-directory/model/service-config.d.ts +8 -8
- package/active-directory/model/user-or-group.d.ts +7 -7
- package/active-directory/model/user.d.ts +23 -23
- package/active-directory/public_api.d.ts +11 -11
- package/active-directory/services/active-directory.service.d.ts +32 -32
- package/authentication/authentication.base.module.d.ts +7 -7
- package/authentication/index.d.ts +5 -5
- package/authentication/model/abstract-authentication-service.d.ts +16 -16
- package/authentication/model/authenticated-user.d.ts +9 -9
- package/authentication/model/authentication-request.d.ts +8 -6
- package/authentication/model/service-config.d.ts +8 -7
- package/authentication/object/index.d.ts +5 -5
- package/authentication/object/model/service-config.d.ts +4 -4
- package/authentication/object/object.module.d.ts +11 -11
- package/authentication/object/public_api.d.ts +3 -3
- package/authentication/object/services/authentication.service.d.ts +25 -25
- package/authentication/public_api.d.ts +5 -5
- package/authentication/token/gui/components/login/login.component.d.ts +14 -13
- package/authentication/token/gui/components/login-form/login-form.component.d.ts +29 -28
- package/authentication/token/gui/index.d.ts +5 -5
- package/authentication/token/gui/model/login-form-data.d.ts +4 -3
- package/authentication/token/gui/model/service-config.d.ts +5 -5
- package/authentication/token/gui/public_api.d.ts +6 -6
- package/authentication/token/gui/services/authentication.service.d.ts +15 -15
- package/authentication/token/gui/token-gui.module.d.ts +21 -21
- package/authentication/token/index.d.ts +5 -5
- package/authentication/token/model/authentication-token.d.ts +17 -17
- package/authentication/token/model/service-config.d.ts +5 -5
- package/authentication/token/public_api.d.ts +4 -4
- package/authentication/token/services/authentication.service.d.ts +24 -24
- package/authentication/token/token.module.d.ts +11 -11
- package/dialog/components/base/base.component.d.ts +22 -22
- package/dialog/components/choice/choice.component.d.ts +12 -12
- package/dialog/components/confirmation/confirmation.component.d.ts +12 -12
- package/dialog/components/input/input.component.d.ts +12 -12
- package/dialog/components/message/message.component.d.ts +12 -12
- package/dialog/dialog.module.d.ts +18 -18
- package/dialog/index.d.ts +5 -5
- package/dialog/model/confirmation-dialog-mode.d.ts +6 -6
- package/dialog/model/dialog-base-data.d.ts +10 -10
- package/dialog/model/dialog-choice-data.d.ts +4 -4
- package/dialog/model/dialog-type.d.ts +6 -6
- package/dialog/public_api.d.ts +9 -9
- package/esm2022/active-directory/active-directory.module.mjs +40 -0
- package/{esm2020 → esm2022}/active-directory/cleavelandprice-ngx-lib-active-directory.mjs +4 -4
- package/{esm2020 → esm2022}/active-directory/gui/cleavelandprice-ngx-lib-active-directory-gui.mjs +4 -4
- package/esm2022/active-directory/gui/components/user-chooser/user-chooser.component.mjs +375 -0
- package/esm2022/active-directory/gui/components/user-form-field/user-form-field.component.mjs +130 -0
- package/esm2022/active-directory/gui/gui.module.mjs +97 -0
- package/{esm2020 → esm2022}/active-directory/gui/model/selectable-user.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-data.mjs +32 -32
- package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-filter-options.mjs +9 -9
- package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-mode.mjs +5 -5
- package/{esm2020 → esm2022}/active-directory/gui/model/user-chooser-pre-processing-group.mjs +8 -8
- package/{esm2020 → esm2022}/active-directory/gui/public_api.mjs +8 -8
- package/{esm2020 → esm2022}/active-directory/model/ad-object-with-children.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/model/ad-object.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/model/cache-object.mjs +2 -2
- package/{esm2020 → esm2022}/active-directory/model/caching-config.mjs +6 -6
- package/{esm2020 → esm2022}/active-directory/model/cleaveland-price-user.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/model/group.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/model/logging-config.mjs +8 -8
- package/{esm2020 → esm2022}/active-directory/model/service-config.mjs +11 -11
- package/{esm2020 → esm2022}/active-directory/model/user-or-group.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/model/user.mjs +1 -1
- package/{esm2020 → esm2022}/active-directory/public_api.mjs +11 -11
- package/esm2022/active-directory/services/active-directory.service.mjs +112 -0
- package/esm2022/authentication/authentication.base.module.mjs +20 -0
- package/{esm2020 → esm2022}/authentication/cleavelandprice-ngx-lib-authentication.mjs +4 -4
- package/{esm2020 → esm2022}/authentication/model/abstract-authentication-service.mjs +1 -1
- package/{esm2020 → esm2022}/authentication/model/authenticated-user.mjs +1 -1
- package/{esm2020 → esm2022}/authentication/model/authentication-request.mjs +2 -2
- package/esm2022/authentication/model/service-config.mjs +12 -0
- package/{esm2020 → esm2022}/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs +4 -4
- package/esm2022/authentication/object/model/service-config.mjs +9 -0
- package/esm2022/authentication/object/object.module.mjs +40 -0
- package/{esm2020 → esm2022}/authentication/object/public_api.mjs +3 -3
- package/esm2022/authentication/object/services/authentication.service.mjs +109 -0
- package/{esm2020 → esm2022}/authentication/public_api.mjs +5 -5
- package/{esm2020 → esm2022}/authentication/token/cleavelandprice-ngx-lib-authentication-token.mjs +4 -4
- package/{esm2020 → esm2022}/authentication/token/gui/cleavelandprice-ngx-lib-authentication-token-gui.mjs +4 -4
- package/esm2022/authentication/token/gui/components/login/login.component.mjs +45 -0
- package/esm2022/authentication/token/gui/components/login-form/login-form.component.mjs +74 -0
- package/{esm2020 → esm2022}/authentication/token/gui/model/login-form-data.mjs +2 -2
- package/esm2022/authentication/token/gui/model/service-config.mjs +10 -0
- package/{esm2020 → esm2022}/authentication/token/gui/public_api.mjs +6 -6
- package/esm2022/authentication/token/gui/services/authentication.service.mjs +79 -0
- package/esm2022/authentication/token/gui/token-gui.module.mjs +82 -0
- package/{esm2020 → esm2022}/authentication/token/model/authentication-token.mjs +1 -1
- package/esm2022/authentication/token/model/service-config.mjs +10 -0
- package/{esm2020 → esm2022}/authentication/token/public_api.mjs +4 -4
- package/esm2022/authentication/token/services/authentication.service.mjs +120 -0
- package/esm2022/authentication/token/token.module.mjs +40 -0
- package/{esm2020 → esm2022}/cleavelandprice-ngx-lib.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/cleavelandprice-ngx-lib-dialog.mjs +4 -4
- package/esm2022/dialog/components/base/base.component.mjs +93 -0
- package/esm2022/dialog/components/choice/choice.component.mjs +24 -0
- package/esm2022/dialog/components/confirmation/confirmation.component.mjs +24 -0
- package/esm2022/dialog/components/input/input.component.mjs +24 -0
- package/esm2022/dialog/components/message/message.component.mjs +24 -0
- package/esm2022/dialog/dialog.module.mjs +69 -0
- package/{esm2020 → esm2022}/dialog/model/confirmation-dialog-mode.mjs +7 -7
- package/{esm2020 → esm2022}/dialog/model/dialog-base-data.mjs +1 -1
- package/{esm2020 → esm2022}/dialog/model/dialog-choice-data.mjs +1 -1
- package/{esm2020 → esm2022}/dialog/model/dialog-type.mjs +7 -7
- package/{esm2020 → esm2022}/dialog/public_api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/model/app-path-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/model/app-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/model/app.mjs +1 -1
- package/esm2022/lib/model/service-config.mjs +21 -0
- package/esm2022/lib/ngx-lib.module.mjs +37 -0
- package/esm2022/lib/services/app-path-config.service.mjs +46 -0
- package/{esm2020 → esm2022}/msgraph/cleavelandprice-ngx-lib-msgraph.mjs +4 -4
- package/{esm2020 → esm2022}/msgraph/model/address.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/attendee.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/bulk-calendar-events.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/bulk-calendar-request.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/calendar-event.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/coordinates.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/email-address.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/location.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/online-meeting-info.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/patterned-recurrence.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/phone.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/recipient.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/recurrence-pattern.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/recurrence-range.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/response-status.mjs +1 -1
- package/{esm2020 → esm2022}/msgraph/model/room.mjs +5 -5
- package/{esm2020 → esm2022}/msgraph/model/user.mjs +131 -131
- package/esm2022/msgraph/msgraph.module.mjs +33 -0
- package/{esm2020 → esm2022}/msgraph/public_api.mjs +18 -18
- package/{esm2020 → esm2022}/public_api.mjs +9 -9
- package/{esm2020 → esm2022}/quill/cleavelandprice-ngx-lib-quill.mjs +4 -4
- package/esm2022/quill/components/editor/editor.component.mjs +297 -0
- package/esm2022/quill/components/raw/raw.component.mjs +25 -0
- package/{esm2020 → esm2022}/quill/mention/cleavelandprice-ngx-lib-quill-mention.mjs +4 -4
- package/esm2022/quill/mention/components/editor/editor.component.mjs +156 -0
- package/{esm2020 → esm2022}/quill/mention/model/buttons.mjs +3 -3
- package/{esm2020 → esm2022}/quill/mention/model/config.mjs +3 -3
- package/{esm2020 → esm2022}/quill/mention/model/dialog-data.mjs +1 -1
- package/{esm2020 → esm2022}/quill/mention/model/icons.mjs +3 -3
- package/{esm2020 → esm2022}/quill/mention/model/tooltips.mjs +3 -3
- package/{esm2020 → esm2022}/quill/mention/public_api.mjs +7 -7
- package/esm2022/quill/mention/quill-mention.module.mjs +66 -0
- package/{esm2020 → esm2022}/quill/model/buttons.mjs +51 -51
- package/{esm2020 → esm2022}/quill/model/config.mjs +39 -39
- package/{esm2020 → esm2022}/quill/model/dialog-data.mjs +1 -1
- package/{esm2020 → esm2022}/quill/model/icons.mjs +8 -8
- package/{esm2020 → esm2022}/quill/model/tooltips.mjs +54 -54
- package/{esm2020 → esm2022}/quill/public_api.mjs +8 -8
- package/esm2022/quill/quill.module.mjs +79 -0
- package/{esm2020 → esm2022}/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs +4 -4
- package/esm2022/sharepoint/components/employee-photo/employee-photo.component.mjs +38 -0
- package/{esm2020 → esm2022}/sharepoint/model/base-item.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/base-request-credential.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/base-request.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/cache-object.mjs +2 -2
- package/{esm2020 → esm2022}/sharepoint/model/file-request.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/folder-request.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/list-item.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/list-items-request.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/photo-item.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/service-config.mjs +28 -28
- package/{esm2020 → esm2022}/sharepoint/model/uri-request.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/user-request.mjs +1 -1
- package/{esm2020 → esm2022}/sharepoint/model/user.mjs +1 -1
- package/esm2022/sharepoint/pipes/employee-photo-url.pipe.mjs +39 -0
- package/{esm2020 → esm2022}/sharepoint/public_api.mjs +16 -16
- package/esm2022/sharepoint/services/sharepoint.service.mjs +149 -0
- package/esm2022/sharepoint/sharepoint.module.mjs +50 -0
- package/{esm2020 → esm2022}/upload/cleavelandprice-ngx-lib-upload.mjs +4 -4
- package/esm2022/upload/components/upload/upload.component.mjs +35 -0
- package/esm2022/upload/components/upload-dialog/upload-dialog.component.mjs +87 -0
- package/{esm2020 → esm2022}/upload/model/database-file-info.mjs +1 -1
- package/{esm2020 → esm2022}/upload/model/file-upload-request.mjs +1 -1
- package/{esm2020 → esm2022}/upload/model/filesystem-file-info.mjs +1 -1
- package/{esm2020 → esm2022}/upload/model/service-config.mjs +15 -15
- package/{esm2020 → esm2022}/upload/public_api.mjs +8 -8
- package/esm2022/upload/services/upload.service.mjs +92 -0
- package/esm2022/upload/upload.module.mjs +66 -0
- package/{esm2020 → esm2022}/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs +4 -4
- package/esm2022/url-utilities/pipes/safe-resource-url.pipe.mjs +21 -0
- package/esm2022/url-utilities/pipes/safe-url.pipe.mjs +21 -0
- package/esm2022/url-utilities/pipes/uri-scheme.pipe.mjs +106 -0
- package/{esm2020 → esm2022}/url-utilities/public_api.mjs +4 -4
- package/esm2022/url-utilities/url-utilities.module.mjs +35 -0
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory-gui.mjs +586 -587
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory-gui.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory.mjs +155 -156
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-authentication-object.mjs +141 -140
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-authentication-token-gui.mjs +232 -226
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-authentication-token.mjs +152 -151
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/cleavelandprice-ngx-lib-authentication.mjs +25 -25
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-dialog.mjs +205 -205
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-msgraph.mjs +161 -162
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-msgraph.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill-mention.mjs +188 -189
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill-mention.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill.mjs +492 -493
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-quill.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-sharepoint.mjs +269 -270
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-upload.mjs +250 -251
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/cleavelandprice-ngx-lib-url-utilities.mjs +159 -160
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib.mjs +91 -92
- package/{fesm2020 → fesm2022}/cleavelandprice-ngx-lib.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/model/app-path-config.d.ts +10 -10
- package/lib/model/app-type.d.ts +5 -5
- package/lib/model/app.d.ts +16 -16
- package/lib/model/service-config.d.ts +6 -6
- package/lib/ngx-lib.module.d.ts +10 -10
- package/lib/services/app-path-config.service.d.ts +20 -20
- package/msgraph/index.d.ts +5 -5
- package/msgraph/model/address.d.ts +7 -7
- package/msgraph/model/attendee.d.ts +13 -13
- package/msgraph/model/bulk-calendar-events.d.ts +5 -5
- package/msgraph/model/bulk-calendar-request.d.ts +3 -3
- package/msgraph/model/calendar-event.d.ts +53 -53
- package/msgraph/model/coordinates.d.ts +7 -7
- package/msgraph/model/email-address.d.ts +4 -4
- package/msgraph/model/location.d.ts +12 -12
- package/msgraph/model/online-meeting-info.d.ts +9 -9
- package/msgraph/model/patterned-recurrence.d.ts +6 -6
- package/msgraph/model/phone.d.ts +4 -4
- package/msgraph/model/recipient.d.ts +4 -4
- package/msgraph/model/recurrence-pattern.d.ts +9 -9
- package/msgraph/model/recurrence-range.d.ts +7 -7
- package/msgraph/model/response-status.d.ts +4 -4
- package/msgraph/model/room.d.ts +22 -22
- package/msgraph/model/user.d.ts +29 -29
- package/msgraph/msgraph.module.d.ts +10 -10
- package/msgraph/public_api.d.ts +18 -18
- package/package.json +61 -93
- package/public_api.d.ts +6 -6
- package/quill/components/editor/editor.component.d.ts +53 -53
- package/quill/components/raw/raw.component.d.ts +7 -7
- package/quill/index.d.ts +5 -5
- package/quill/mention/components/editor/editor.component.d.ts +20 -20
- package/quill/mention/index.d.ts +5 -5
- package/quill/mention/model/buttons.d.ts +3 -3
- package/quill/mention/model/config.d.ts +3 -3
- package/quill/mention/model/dialog-data.d.ts +5 -5
- package/quill/mention/model/icons.d.ts +3 -3
- package/quill/mention/model/tooltips.d.ts +3 -3
- package/quill/mention/public_api.d.ts +7 -7
- package/quill/mention/quill-mention.module.d.ts +17 -17
- package/quill/model/buttons.d.ts +29 -29
- package/quill/model/config.d.ts +30 -30
- package/quill/model/dialog-data.d.ts +21 -21
- package/quill/model/icons.d.ts +6 -6
- package/quill/model/tooltips.d.ts +32 -32
- package/quill/public_api.d.ts +8 -8
- package/quill/quill.module.d.ts +20 -20
- package/sharepoint/components/employee-photo/employee-photo.component.d.ts +16 -16
- package/sharepoint/index.d.ts +5 -5
- package/sharepoint/model/base-item.d.ts +4 -4
- package/sharepoint/model/base-request-credential.d.ts +4 -4
- package/sharepoint/model/base-request.d.ts +8 -8
- package/sharepoint/model/cache-object.d.ts +4 -4
- package/sharepoint/model/file-request.d.ts +4 -4
- package/sharepoint/model/folder-request.d.ts +4 -4
- package/sharepoint/model/list-item.d.ts +10 -10
- package/sharepoint/model/list-items-request.d.ts +5 -5
- package/sharepoint/model/photo-item.d.ts +11 -11
- package/sharepoint/model/service-config.d.ts +23 -23
- package/sharepoint/model/uri-request.d.ts +4 -4
- package/sharepoint/model/user-request.d.ts +4 -4
- package/sharepoint/model/user.d.ts +12 -12
- package/sharepoint/pipes/employee-photo-url.pipe.d.ts +12 -12
- package/sharepoint/public_api.d.ts +16 -16
- package/sharepoint/services/sharepoint.service.d.ts +25 -25
- package/sharepoint/sharepoint.module.d.ts +13 -13
- package/upload/components/upload/upload.component.d.ts +15 -15
- package/upload/components/upload-dialog/upload-dialog.component.d.ts +24 -24
- package/upload/index.d.ts +5 -5
- package/upload/model/database-file-info.d.ts +7 -7
- package/upload/model/file-upload-request.d.ts +6 -6
- package/upload/model/filesystem-file-info.d.ts +12 -12
- package/upload/model/service-config.d.ts +15 -15
- package/upload/public_api.d.ts +8 -8
- package/upload/services/upload.service.d.ts +18 -18
- package/upload/upload.module.d.ts +17 -17
- package/url-utilities/index.d.ts +5 -5
- package/url-utilities/pipes/safe-resource-url.pipe.d.ts +10 -10
- package/url-utilities/pipes/safe-url.pipe.d.ts +10 -10
- package/url-utilities/pipes/uri-scheme.pipe.d.ts +9 -9
- package/url-utilities/public_api.d.ts +4 -4
- package/url-utilities/url-utilities.module.d.ts +10 -10
- package/esm2020/active-directory/active-directory.module.mjs +0 -39
- package/esm2020/active-directory/gui/components/user-chooser/user-chooser.component.mjs +0 -374
- package/esm2020/active-directory/gui/components/user-form-field/user-form-field.component.mjs +0 -129
- package/esm2020/active-directory/gui/gui.module.mjs +0 -96
- package/esm2020/active-directory/services/active-directory.service.mjs +0 -111
- package/esm2020/authentication/authentication.base.module.mjs +0 -19
- package/esm2020/authentication/model/service-config.mjs +0 -11
- package/esm2020/authentication/object/model/service-config.mjs +0 -9
- package/esm2020/authentication/object/object.module.mjs +0 -39
- package/esm2020/authentication/object/services/authentication.service.mjs +0 -106
- package/esm2020/authentication/token/gui/components/login/login.component.mjs +0 -39
- package/esm2020/authentication/token/gui/components/login-form/login-form.component.mjs +0 -71
- package/esm2020/authentication/token/gui/model/service-config.mjs +0 -10
- package/esm2020/authentication/token/gui/services/authentication.service.mjs +0 -78
- package/esm2020/authentication/token/gui/token-gui.module.mjs +0 -81
- package/esm2020/authentication/token/model/service-config.mjs +0 -10
- package/esm2020/authentication/token/services/authentication.service.mjs +0 -117
- package/esm2020/authentication/token/token.module.mjs +0 -39
- package/esm2020/dialog/components/base/base.component.mjs +0 -92
- package/esm2020/dialog/components/choice/choice.component.mjs +0 -23
- package/esm2020/dialog/components/confirmation/confirmation.component.mjs +0 -23
- package/esm2020/dialog/components/input/input.component.mjs +0 -23
- package/esm2020/dialog/components/message/message.component.mjs +0 -23
- package/esm2020/dialog/dialog.module.mjs +0 -68
- package/esm2020/lib/model/service-config.mjs +0 -21
- package/esm2020/lib/ngx-lib.module.mjs +0 -36
- package/esm2020/lib/services/app-path-config.service.mjs +0 -45
- package/esm2020/msgraph/msgraph.module.mjs +0 -32
- package/esm2020/quill/components/editor/editor.component.mjs +0 -296
- package/esm2020/quill/components/raw/raw.component.mjs +0 -24
- package/esm2020/quill/mention/components/editor/editor.component.mjs +0 -155
- package/esm2020/quill/mention/quill-mention.module.mjs +0 -65
- package/esm2020/quill/quill.module.mjs +0 -78
- package/esm2020/sharepoint/components/employee-photo/employee-photo.component.mjs +0 -37
- package/esm2020/sharepoint/pipes/employee-photo-url.pipe.mjs +0 -38
- package/esm2020/sharepoint/services/sharepoint.service.mjs +0 -148
- package/esm2020/sharepoint/sharepoint.module.mjs +0 -49
- package/esm2020/upload/components/upload/upload.component.mjs +0 -34
- package/esm2020/upload/components/upload-dialog/upload-dialog.component.mjs +0 -86
- package/esm2020/upload/services/upload.service.mjs +0 -91
- package/esm2020/upload/upload.module.mjs +0 -65
- package/esm2020/url-utilities/pipes/safe-resource-url.pipe.mjs +0 -20
- package/esm2020/url-utilities/pipes/safe-url.pipe.mjs +0 -20
- package/esm2020/url-utilities/pipes/uri-scheme.pipe.mjs +0 -105
- package/esm2020/url-utilities/url-utilities.module.mjs +0 -34
- package/fesm2015/cleavelandprice-ngx-lib-active-directory-gui.mjs +0 -652
- package/fesm2015/cleavelandprice-ngx-lib-active-directory-gui.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-active-directory.mjs +0 -187
- package/fesm2015/cleavelandprice-ngx-lib-active-directory.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs +0 -161
- package/fesm2015/cleavelandprice-ngx-lib-authentication-object.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs +0 -274
- package/fesm2015/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs +0 -173
- package/fesm2015/cleavelandprice-ngx-lib-authentication-token.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-authentication.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs +0 -250
- package/fesm2015/cleavelandprice-ngx-lib-dialog.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-msgraph.mjs +0 -178
- package/fesm2015/cleavelandprice-ngx-lib-msgraph.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-quill-mention.mjs +0 -230
- package/fesm2015/cleavelandprice-ngx-lib-quill-mention.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-quill.mjs +0 -539
- package/fesm2015/cleavelandprice-ngx-lib-quill.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-sharepoint.mjs +0 -310
- package/fesm2015/cleavelandprice-ngx-lib-sharepoint.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-upload.mjs +0 -288
- package/fesm2015/cleavelandprice-ngx-lib-upload.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib-url-utilities.mjs.map +0 -1
- package/fesm2015/cleavelandprice-ngx-lib.mjs +0 -113
- package/fesm2015/cleavelandprice-ngx-lib.mjs.map +0 -1
- package/fesm2020/cleavelandprice-ngx-lib-authentication-object.mjs.map +0 -1
- package/fesm2020/cleavelandprice-ngx-lib-authentication-token-gui.mjs.map +0 -1
- package/fesm2020/cleavelandprice-ngx-lib-authentication-token.mjs.map +0 -1
- package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs +0 -38
- package/fesm2020/cleavelandprice-ngx-lib-authentication.mjs.map +0 -1
- package/fesm2020/cleavelandprice-ngx-lib-url-utilities.mjs +0 -177
- package/fesm2020/cleavelandprice-ngx-lib-url-utilities.mjs.map +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import moment from 'moment';
|
|
4
|
+
import { ServiceConfig } from '../model/service-config';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../model/service-config";
|
|
7
|
+
import * as i2 from "@angular/common/http";
|
|
8
|
+
class SharePointService {
|
|
9
|
+
//#region Utilities
|
|
10
|
+
cacheExpired(cache) {
|
|
11
|
+
if (!cache) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
const lifeMinutes = this.config.caching?.lifeMinutes ?? this.defaultCacheLifeMinutes;
|
|
15
|
+
const expiration = moment(cache.lastUpdate)
|
|
16
|
+
.add(lifeMinutes, 'minutes');
|
|
17
|
+
return moment().isAfter(expiration);
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region Initialization
|
|
21
|
+
constructor(config, http) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.http = http;
|
|
24
|
+
this.defaultCacheLifeMinutes = 720;
|
|
25
|
+
this.config = this.config ?? new ServiceConfig();
|
|
26
|
+
this.configureCaching();
|
|
27
|
+
this.configureLogging();
|
|
28
|
+
}
|
|
29
|
+
configureCaching() {
|
|
30
|
+
// If caching config is missing entirely, give it a default
|
|
31
|
+
this.config.caching = this.config.caching ?? {
|
|
32
|
+
enabled: false,
|
|
33
|
+
lifeMinutes: this.defaultCacheLifeMinutes
|
|
34
|
+
};
|
|
35
|
+
this.cache = {
|
|
36
|
+
photos: undefined,
|
|
37
|
+
users: undefined
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
configureLogging() {
|
|
41
|
+
// If logging config is missing entirely, give it a default
|
|
42
|
+
this.config.logging = this.config.logging ?? {
|
|
43
|
+
dataCached: false,
|
|
44
|
+
cachedDataReturned: false,
|
|
45
|
+
freshDataReturned: false,
|
|
46
|
+
cacheCleared: false
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
getListItems(request) {
|
|
51
|
+
const apiUrl = this.config.apiUrl;
|
|
52
|
+
const endpoint = this.config.listItemsEndpoint;
|
|
53
|
+
return this.http.post(`${apiUrl}${endpoint}`, request);
|
|
54
|
+
}
|
|
55
|
+
getPhotos() {
|
|
56
|
+
const request = {
|
|
57
|
+
username: this.config.username,
|
|
58
|
+
password: this.config.password,
|
|
59
|
+
site: this.config.photos.site,
|
|
60
|
+
list: this.config.photos.list,
|
|
61
|
+
additionalPropertiesToRetrieve: this.config.photos.additionalPropertiesToRetrieve
|
|
62
|
+
};
|
|
63
|
+
const observable$ = this.getListItems(request);
|
|
64
|
+
if (this.config.caching?.enabled) {
|
|
65
|
+
if (this.cacheExpired(this.cache?.photos)) {
|
|
66
|
+
// Get the data and cache it
|
|
67
|
+
observable$.subscribe(data => {
|
|
68
|
+
this.cache.photos = {
|
|
69
|
+
data,
|
|
70
|
+
lastUpdate: moment()
|
|
71
|
+
};
|
|
72
|
+
if (this.config.logging?.dataCached) {
|
|
73
|
+
const lifeMinutes = this.config.caching?.lifeMinutes ?? this.defaultCacheLifeMinutes;
|
|
74
|
+
console.log(`Photos cached for ${lifeMinutes} minutes`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Cache exists and hasn't expired yet
|
|
80
|
+
if (this.config.logging?.cachedDataReturned) {
|
|
81
|
+
console.log('Returning cached photos');
|
|
82
|
+
}
|
|
83
|
+
return of(this.cache.photos.data);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Cache is either disabled or expired, return data from API
|
|
87
|
+
if (this.config.logging?.freshDataReturned) {
|
|
88
|
+
console.log('Returning fresh photos');
|
|
89
|
+
}
|
|
90
|
+
return observable$;
|
|
91
|
+
}
|
|
92
|
+
getUsers(request, id) {
|
|
93
|
+
const apiUrl = this.config.apiUrl;
|
|
94
|
+
const endpoint = this.config.usersEndpoint;
|
|
95
|
+
const observable$ = this.http.post(`${apiUrl}${endpoint}/${id ?? ''}`, request);
|
|
96
|
+
//#region Single user
|
|
97
|
+
if (id) {
|
|
98
|
+
return observable$;
|
|
99
|
+
}
|
|
100
|
+
//#endregion
|
|
101
|
+
//#region Multiple users
|
|
102
|
+
if (this.config.caching?.enabled) {
|
|
103
|
+
if (this.cacheExpired(this.cache.users)) {
|
|
104
|
+
// Get the data and cache it
|
|
105
|
+
observable$.subscribe(data => {
|
|
106
|
+
this.cache.users = {
|
|
107
|
+
data: data,
|
|
108
|
+
lastUpdate: moment()
|
|
109
|
+
};
|
|
110
|
+
if (this.config.logging?.dataCached) {
|
|
111
|
+
const lifeMinutes = this.config.caching?.lifeMinutes ?? this.defaultCacheLifeMinutes;
|
|
112
|
+
console.log(`Users cached for ${lifeMinutes} minutes`);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Cache exists and hasn't expired yet
|
|
118
|
+
if (this.config.logging?.cachedDataReturned) {
|
|
119
|
+
console.log('Returning cached users');
|
|
120
|
+
}
|
|
121
|
+
return of(this.cache.users.data);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Cache is either disabled or expired, return data from API
|
|
125
|
+
if (this.config.logging?.freshDataReturned) {
|
|
126
|
+
console.log('Returning fresh users');
|
|
127
|
+
}
|
|
128
|
+
return observable$;
|
|
129
|
+
//#endregion
|
|
130
|
+
}
|
|
131
|
+
clearCache() {
|
|
132
|
+
this.cache = undefined;
|
|
133
|
+
if (this.config.logging?.cacheCleared) {
|
|
134
|
+
console.log('Cache cleared');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointService, deps: [{ token: i1.ServiceConfig, optional: true }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
138
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointService, providedIn: 'root' }); }
|
|
139
|
+
}
|
|
140
|
+
export { SharePointService };
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointService, decorators: [{
|
|
142
|
+
type: Injectable,
|
|
143
|
+
args: [{
|
|
144
|
+
providedIn: 'root'
|
|
145
|
+
}]
|
|
146
|
+
}], ctorParameters: function () { return [{ type: i1.ServiceConfig, decorators: [{
|
|
147
|
+
type: Optional
|
|
148
|
+
}] }, { type: i2.HttpClient }]; } });
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVwb2ludC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvc2hhcmVwb2ludC9zcmMvc2VydmljZXMvc2hhcmVwb2ludC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBTTVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUl4RCxNQUdhLGlCQUFpQjtJQVE1QixtQkFBbUI7SUFDWCxZQUFZLENBQUksS0FBcUI7UUFDM0MsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3JGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFL0IsT0FBTyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFlBQVk7SUFFWix3QkFBd0I7SUFDdEIsWUFBZ0MsTUFBcUIsRUFDbkMsSUFBZ0I7UUFERixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ25DLFNBQUksR0FBSixJQUFJLENBQVk7UUFsQjVCLDRCQUF1QixHQUFHLEdBQUcsQ0FBQztRQW9CeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7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QUMsQ0FBQztxQkFDeEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxzQ0FBc0M7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7b0JBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpQkFDdkM7Z0JBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxLQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEM7U0FDRjtRQUVELDREQUE0RDtRQUM1RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUN0QztRQUVELE9BQU8sV0FBVyxDQUFDO1FBQ25CLFlBQVk7SUFDZCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOzhHQTlKVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOztTQUVQLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBd0JnQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IHsgQ2FjaGVPYmplY3QgfSBmcm9tICcuLi9tb2RlbC9jYWNoZS1vYmplY3QnO1xyXG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uL21vZGVsL2xpc3QtaXRlbSc7XHJcbmltcG9ydCB7IExpc3RJdGVtc1JlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC9saXN0LWl0ZW1zLXJlcXVlc3QnO1xyXG5pbXBvcnQgeyBQaG90b0l0ZW0gfSBmcm9tICcuLi9tb2RlbC9waG90by1pdGVtJztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgVXNlclJlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC91c2VyLXJlcXVlc3QnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vbW9kZWwvdXNlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZVBvaW50U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjYWNoZToge1xyXG4gICAgdXNlcnM6IENhY2hlT2JqZWN0PFVzZXI+IHwgdW5kZWZpbmVkLFxyXG4gICAgcGhvdG9zOiBDYWNoZU9iamVjdDxQaG90b0l0ZW0+IHwgdW5kZWZpbmVkXHJcbiAgfSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0Q2FjaGVMaWZlTWludXRlcyA9IDcyMDtcclxuXHJcbiAgLy8jcmVnaW9uIFV0aWxpdGllc1xyXG4gIHByaXZhdGUgY2FjaGVFeHBpcmVkPFQ+KGNhY2hlOiBDYWNoZU9iamVjdDxUPik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjYWNoZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsaWZlTWludXRlcyA9IHRoaXMuY29uZmlnLmNhY2hpbmc/LmxpZmVNaW51dGVzID8/IHRoaXMuZGVmYXVsdENhY2hlTGlmZU1pbnV0ZXM7XHJcbiAgICBjb25zdCBleHBpcmF0aW9uID0gbW9tZW50KGNhY2hlLmxhc3RVcGRhdGUpXHJcbiAgICAgIC5hZGQobGlmZU1pbnV0ZXMsICdtaW51dGVzJyk7XHJcblxyXG4gICAgcmV0dXJuIG1vbWVudCgpLmlzQWZ0ZXIoZXhwaXJhdGlvbik7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW5pdGlhbGl6YXRpb25cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBTZXJ2aWNlQ29uZmlnLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWcgPz8gbmV3IFNlcnZpY2VDb25maWcoKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVDYWNoaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZUxvZ2dpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlndXJlQ2FjaGluZygpOiB2b2lkIHtcclxuICAgIC8vIElmIGNhY2hpbmcgY29uZmlnIGlzIG1pc3NpbmcgZW50aXJlbHksIGdpdmUgaXQgYSBkZWZhdWx0XHJcbiAgICB0aGlzLmNvbmZpZy5jYWNoaW5nID0gdGhpcy5jb25maWcuY2FjaGluZyA/PyB7XHJcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBsaWZlTWludXRlczogdGhpcy5kZWZhdWx0Q2FjaGVMaWZlTWludXRlc1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmNhY2hlID0ge1xyXG4gICAgICBwaG90b3M6IHVuZGVmaW5lZCxcclxuICAgICAgdXNlcnM6IHVuZGVmaW5lZFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlndXJlTG9nZ2luZygpOiB2b2lkIHtcclxuICAgIC8vIElmIGxvZ2dpbmcgY29uZmlnIGlzIG1pc3NpbmcgZW50aXJlbHksIGdpdmUgaXQgYSBkZWZhdWx0XHJcbiAgICB0aGlzLmNvbmZpZy5sb2dnaW5nID0gdGhpcy5jb25maWcubG9nZ2luZyA/PyB7XHJcbiAgICAgIGRhdGFDYWNoZWQ6IGZhbHNlLFxyXG4gICAgICBjYWNoZWREYXRhUmV0dXJuZWQ6IGZhbHNlLFxyXG4gICAgICBmcmVzaERhdGFSZXR1cm5lZDogZmFsc2UsXHJcbiAgICAgIGNhY2hlQ2xlYXJlZDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGdldExpc3RJdGVtcyhyZXF1ZXN0OiBMaXN0SXRlbXNSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMaXN0SXRlbVtdPiB7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmNvbmZpZy5hcGlVcmw7XHJcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuY29uZmlnLmxpc3RJdGVtc0VuZHBvaW50O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0SXRlbVtdPihgJHthcGlVcmx9JHtlbmRwb2ludH1gLCByZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIGdldFBob3RvcygpOiBPYnNlcnZhYmxlPFBob3RvSXRlbVtdPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBMaXN0SXRlbXNSZXF1ZXN0ID0ge1xyXG4gICAgICB1c2VybmFtZTogdGhpcy5jb25maWcudXNlcm5hbWUsXHJcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmNvbmZpZy5wYXNzd29yZCxcclxuICAgICAgc2l0ZTogdGhpcy5jb25maWcucGhvdG9zLnNpdGUsXHJcbiAgICAgIGxpc3Q6IHRoaXMuY29uZmlnLnBob3Rvcy5saXN0LFxyXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllc1RvUmV0cmlldmU6IHRoaXMuY29uZmlnLnBob3Rvcy5hZGRpdGlvbmFsUHJvcGVydGllc1RvUmV0cmlldmVcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSQgPSB0aGlzLmdldExpc3RJdGVtcyhyZXF1ZXN0KSBhcyBPYnNlcnZhYmxlPFBob3RvSXRlbVtdPjtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuY2FjaGluZz8uZW5hYmxlZCkge1xyXG4gICAgICBpZiAodGhpcy5jYWNoZUV4cGlyZWQ8UGhvdG9JdGVtPih0aGlzLmNhY2hlPy5waG90b3MhKSkge1xyXG4gICAgICAgIC8vIEdldCB0aGUgZGF0YSBhbmQgY2FjaGUgaXRcclxuICAgICAgICBvYnNlcnZhYmxlJC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlIS5waG90b3MgPSB7XHJcbiAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgIGxhc3RVcGRhdGU6IG1vbWVudCgpXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5kYXRhQ2FjaGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpZmVNaW51dGVzID0gdGhpcy5jb25maWcuY2FjaGluZz8ubGlmZU1pbnV0ZXMgPz8gdGhpcy5kZWZhdWx0Q2FjaGVMaWZlTWludXRlcztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFBob3RvcyBjYWNoZWQgZm9yICR7bGlmZU1pbnV0ZXN9IG1pbnV0ZXNgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBDYWNoZSBleGlzdHMgYW5kIGhhc24ndCBleHBpcmVkIHlldFxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5jYWNoZWREYXRhUmV0dXJuZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZXR1cm5pbmcgY2FjaGVkIHBob3RvcycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuY2FjaGUhLnBob3RvcyEuZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDYWNoZSBpcyBlaXRoZXIgZGlzYWJsZWQgb3IgZXhwaXJlZCwgcmV0dXJuIGRhdGEgZnJvbSBBUElcclxuICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5mcmVzaERhdGFSZXR1cm5lZCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnUmV0dXJuaW5nIGZyZXNoIHBob3RvcycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvYnNlcnZhYmxlJDtcclxuICB9XHJcblxyXG4gIGdldFVzZXJzKHJlcXVlc3Q6IFVzZXJSZXF1ZXN0LCBpZD86IG51bWJlcik6IE9ic2VydmFibGU8VXNlciB8IFVzZXJbXT4ge1xyXG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5jb25maWcuYXBpVXJsO1xyXG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmNvbmZpZy51c2Vyc0VuZHBvaW50O1xyXG4gICAgXHJcbiAgICBjb25zdCBvYnNlcnZhYmxlJCA9IHRoaXMuaHR0cC5wb3N0PFVzZXIgfCBVc2VyW10+KGAke2FwaVVybH0ke2VuZHBvaW50fS8ke2lkID8/ICcnfWAsIHJlcXVlc3QpO1xyXG5cclxuICAgIC8vI3JlZ2lvbiBTaW5nbGUgdXNlclxyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlJDtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBNdWx0aXBsZSB1c2Vyc1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmNhY2hpbmc/LmVuYWJsZWQpIHtcclxuICAgICAgaWYgKHRoaXMuY2FjaGVFeHBpcmVkPFVzZXI+KHRoaXMuY2FjaGUhLnVzZXJzISkpIHtcclxuICAgICAgICAvLyBHZXQgdGhlIGRhdGEgYW5kIGNhY2hlIGl0XHJcbiAgICAgICAgb2JzZXJ2YWJsZSQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZSEudXNlcnMgPSB7XHJcbiAgICAgICAgICAgIGRhdGE6IGRhdGEgYXMgVXNlcltdLFxyXG4gICAgICAgICAgICBsYXN0VXBkYXRlOiBtb21lbnQoKVxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcubG9nZ2luZz8uZGF0YUNhY2hlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBsaWZlTWludXRlcyA9IHRoaXMuY29uZmlnLmNhY2hpbmc/LmxpZmVNaW51dGVzID8/IHRoaXMuZGVmYXVsdENhY2hlTGlmZU1pbnV0ZXM7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBVc2VycyBjYWNoZWQgZm9yICR7bGlmZU1pbnV0ZXN9IG1pbnV0ZXNgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBDYWNoZSBleGlzdHMgYW5kIGhhc24ndCBleHBpcmVkIHlldFxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dnaW5nPy5jYWNoZWREYXRhUmV0dXJuZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSZXR1cm5pbmcgY2FjaGVkIHVzZXJzJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YodGhpcy5jYWNoZSEudXNlcnMhLmRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FjaGUgaXMgZWl0aGVyIGRpc2FibGVkIG9yIGV4cGlyZWQsIHJldHVybiBkYXRhIGZyb20gQVBJXHJcbiAgICBpZiAodGhpcy5jb25maWcubG9nZ2luZz8uZnJlc2hEYXRhUmV0dXJuZWQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1JldHVybmluZyBmcmVzaCB1c2VycycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvYnNlcnZhYmxlJDtcclxuICAgIC8vI2VuZHJlZ2lvblxyXG4gIH1cclxuXHJcbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FjaGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmxvZ2dpbmc/LmNhY2hlQ2xlYXJlZCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnQ2FjaGUgY2xlYXJlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { NgModule, Optional, SkipSelf } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ServiceConfig } from './model/service-config';
|
|
4
|
+
import { SharePointService } from './services/sharepoint.service';
|
|
5
|
+
import { EmployeePhotoUrlPipe } from './pipes/employee-photo-url.pipe';
|
|
6
|
+
import { EmployeePhotoComponent } from './components/employee-photo/employee-photo.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
class SharePointModule {
|
|
9
|
+
static forRoot(config) {
|
|
10
|
+
return {
|
|
11
|
+
ngModule: SharePointModule,
|
|
12
|
+
providers: [
|
|
13
|
+
SharePointService,
|
|
14
|
+
{ provide: ServiceConfig, useValue: config }
|
|
15
|
+
]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
constructor(parentModule) {
|
|
19
|
+
if (parentModule) {
|
|
20
|
+
throw new Error('SharePointModule is already loaded. Import it in the AppModule only');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, deps: [{ token: SharePointModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
24
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, declarations: [EmployeePhotoUrlPipe,
|
|
25
|
+
EmployeePhotoComponent], imports: [CommonModule], exports: [EmployeePhotoUrlPipe,
|
|
26
|
+
EmployeePhotoComponent] }); }
|
|
27
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, imports: [CommonModule] }); }
|
|
28
|
+
}
|
|
29
|
+
export { SharePointModule };
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SharePointModule, decorators: [{
|
|
31
|
+
type: NgModule,
|
|
32
|
+
args: [{
|
|
33
|
+
declarations: [
|
|
34
|
+
EmployeePhotoUrlPipe,
|
|
35
|
+
EmployeePhotoComponent
|
|
36
|
+
],
|
|
37
|
+
imports: [
|
|
38
|
+
CommonModule
|
|
39
|
+
],
|
|
40
|
+
exports: [
|
|
41
|
+
EmployeePhotoUrlPipe,
|
|
42
|
+
EmployeePhotoComponent
|
|
43
|
+
]
|
|
44
|
+
}]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: SharePointModule, decorators: [{
|
|
46
|
+
type: Optional
|
|
47
|
+
}, {
|
|
48
|
+
type: SkipSelf
|
|
49
|
+
}] }]; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVwb2ludC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi9zaGFyZXBvaW50L3NyYy9zaGFyZXBvaW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0FBRTlGLE1BYWEsZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBcUI7UUFDbEMsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNULGlCQUFpQjtnQkFDakIsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7YUFDN0M7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQW9DLFlBQThCO1FBQ2hFLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IscUVBQXFFLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7OEdBaEJVLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQVh6QixvQkFBb0I7WUFDcEIsc0JBQXNCLGFBR3RCLFlBQVksYUFHWixvQkFBb0I7WUFDcEIsc0JBQXNCOytHQUdiLGdCQUFnQixZQVB6QixZQUFZOztTQU9ILGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQWI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLHNCQUFzQjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN2QjtpQkFDRjs7MEJBWWMsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IFNlcnZpY2VDb25maWcgfSBmcm9tICcuL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuaW1wb3J0IHsgU2hhcmVQb2ludFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NoYXJlcG9pbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVtcGxveWVlUGhvdG9VcmxQaXBlIH0gZnJvbSAnLi9waXBlcy9lbXBsb3llZS1waG90by11cmwucGlwZSc7XHJcbmltcG9ydCB7IEVtcGxveWVlUGhvdG9Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wbG95ZWUtcGhvdG8vZW1wbG95ZWUtcGhvdG8uY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBFbXBsb3llZVBob3RvVXJsUGlwZSxcclxuICAgIEVtcGxveWVlUGhvdG9Db21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRW1wbG95ZWVQaG90b1VybFBpcGUsXHJcbiAgICBFbXBsb3llZVBob3RvQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hhcmVQb2ludE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBTZXJ2aWNlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGFyZVBvaW50TW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogU2hhcmVQb2ludE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgU2hhcmVQb2ludFNlcnZpY2UsXHJcbiAgICAgICAgeyBwcm92aWRlOiBTZXJ2aWNlQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHBhcmVudE1vZHVsZTogU2hhcmVQb2ludE1vZHVsZSkge1xyXG4gICAgaWYgKHBhcmVudE1vZHVsZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ1NoYXJlUG9pbnRNb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpdCBpbiB0aGUgQXBwTW9kdWxlIG9ubHknKTtcclxuICAgIH1cclxuICB9XHJcbn0iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXZlbGFuZHByaWNlLW5neC1saWItdXBsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9jbGVhdmVsYW5kcHJpY2Utbmd4LWxpYi11cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "./../../services/upload.service";
|
|
6
|
+
import * as i3 from "@angular/material/button";
|
|
7
|
+
class UploadComponent {
|
|
8
|
+
constructor(dialog, uploadService) {
|
|
9
|
+
this.dialog = dialog;
|
|
10
|
+
this.uploadService = uploadService;
|
|
11
|
+
this.dialogClosed = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.uploadButtonText = this.uploadService.config.uploadButtonText ?
|
|
15
|
+
this.uploadService.config.uploadButtonText :
|
|
16
|
+
'Upload';
|
|
17
|
+
}
|
|
18
|
+
openUploadDialog() {
|
|
19
|
+
this.dialog.open(UploadDialogComponent, { width: '50%' })
|
|
20
|
+
.afterClosed().subscribe(() => this.dialogClosed.emit());
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.UploadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: UploadComponent, selector: "cp-upload", outputs: { dialogClosed: "dialogClosed" }, ngImport: i0, template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadButtonText }}</button>', isInline: true, dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
|
|
24
|
+
}
|
|
25
|
+
export { UploadComponent };
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: 'cp-upload',
|
|
30
|
+
template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadButtonText }}</button>'
|
|
31
|
+
}]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.UploadService }]; }, propDecorators: { dialogClosed: [{
|
|
33
|
+
type: Output
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7O0FBR25GLE1BSWEsZUFBZTtJQUl4QixZQUFtQixNQUFpQixFQUFTLGFBQTRCO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQVc7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUgvRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFHaUMsQ0FBQztJQUU5RSxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVNLGdCQUFnQjtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUNwRCxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OEdBZlEsZUFBZTtrR0FBZixlQUFlLDRGQUZkLHdGQUF3Rjs7U0FFekYsZUFBZTsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsd0ZBQXdGO2lCQUNyRzs0SEFFYSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBVcGxvYWREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLy4uL3VwbG9hZC1kaWFsb2cvdXBsb2FkLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy91cGxvYWQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY3AtdXBsb2FkJyxcclxuICAgIHRlbXBsYXRlOiAnPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib3BlblVwbG9hZERpYWxvZygpXCI+e3sgdXBsb2FkQnV0dG9uVGV4dCB9fTwvYnV0dG9uPidcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAT3V0cHV0KCkgZGlhbG9nQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgdXBsb2FkQnV0dG9uVGV4dCE6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIHB1YmxpYyB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVwbG9hZEJ1dHRvblRleHQgPSB0aGlzLnVwbG9hZFNlcnZpY2UuY29uZmlnLnVwbG9hZEJ1dHRvblRleHQgP1xyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY29uZmlnLnVwbG9hZEJ1dHRvblRleHQgOlxyXG4gICAgICAgICAgICAnVXBsb2FkJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblVwbG9hZERpYWxvZygpIHtcclxuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKFVwbG9hZERpYWxvZ0NvbXBvbmVudCwgeyB3aWR0aDogJzUwJScgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlhbG9nQ2xvc2VkLmVtaXQoKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { forkJoin } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "./../../services/upload.service";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/material/button";
|
|
8
|
+
import * as i5 from "@angular/material/list";
|
|
9
|
+
import * as i6 from "@angular/material/progress-bar";
|
|
10
|
+
class UploadDialogComponent {
|
|
11
|
+
constructor(dialogRef, uploadService) {
|
|
12
|
+
this.dialogRef = dialogRef;
|
|
13
|
+
this.uploadService = uploadService;
|
|
14
|
+
this.files = new Set();
|
|
15
|
+
this.canBeClosed = true;
|
|
16
|
+
this.showCancelButton = true;
|
|
17
|
+
this.uploading = false;
|
|
18
|
+
this.uploadSuccessful = false;
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.primaryButtonText = this.uploadService.config.uploadDialogUploadButtonText;
|
|
22
|
+
}
|
|
23
|
+
addFiles() {
|
|
24
|
+
this.file.nativeElement.click();
|
|
25
|
+
}
|
|
26
|
+
onFilesAdded() {
|
|
27
|
+
const files = this.file.nativeElement.files;
|
|
28
|
+
for (const key in files) {
|
|
29
|
+
if (!isNaN(parseInt(key))) {
|
|
30
|
+
// See if the file already exists
|
|
31
|
+
this.uploadService.exists(files[key].name)
|
|
32
|
+
.subscribe(exists => {
|
|
33
|
+
if (exists) {
|
|
34
|
+
this.existingFileConflict = files[key].name;
|
|
35
|
+
}
|
|
36
|
+
if (!exists) {
|
|
37
|
+
this.files.add(files[key]);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
closeDialog() {
|
|
44
|
+
// if everything was uploaded already, just close the dialog
|
|
45
|
+
if (this.uploadSuccessful) {
|
|
46
|
+
return this.dialogRef.close();
|
|
47
|
+
}
|
|
48
|
+
// set the component state to "uploading"
|
|
49
|
+
this.uploading = true;
|
|
50
|
+
// start the upload and save the progress map
|
|
51
|
+
this.progress = this.uploadService.upload(this.files);
|
|
52
|
+
// convert the progress map into an array
|
|
53
|
+
const allProgressObservables = [];
|
|
54
|
+
for (let key in this.progress) {
|
|
55
|
+
allProgressObservables.push(this.progress[key].progress);
|
|
56
|
+
}
|
|
57
|
+
// Adjust the state variables
|
|
58
|
+
// The OK-button should have the text "Finish" now
|
|
59
|
+
this.primaryButtonText = this.uploadService.config.uploadDialogFinishButtonText;
|
|
60
|
+
// The dialog should not be closed while uploading
|
|
61
|
+
this.canBeClosed = false;
|
|
62
|
+
this.dialogRef.disableClose = true;
|
|
63
|
+
// Hide the cancel-button
|
|
64
|
+
this.showCancelButton = false;
|
|
65
|
+
// When all progress-observables are completed...
|
|
66
|
+
forkJoin(allProgressObservables).subscribe(end => {
|
|
67
|
+
// ... the dialog can be closed again...
|
|
68
|
+
this.canBeClosed = true;
|
|
69
|
+
this.dialogRef.disableClose = false;
|
|
70
|
+
// ... the upload was successful...
|
|
71
|
+
this.uploadSuccessful = true;
|
|
72
|
+
// ... and the component is no longer uploading
|
|
73
|
+
this.uploading = false;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.UploadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: UploadDialogComponent, selector: "ng-component", viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, static: true }], ngImport: i0, template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n", styles: ["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{font-size:.8em;color:red;margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
78
|
+
}
|
|
79
|
+
export { UploadDialogComponent };
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadDialogComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\n\n<div mat-dialog-title id=\"title\">\n <div>{{ uploadService.config.uploadDialogTitle }}</div>\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\n {{ uploadService.config.uploadDialogAddFilesButtonText }}\n </button>\n</div>\n\n<div id=\"conflict\" *ngIf=\"existingFileConflict\">\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\n</div>\n\n<mat-dialog-content>\n <mat-list>\n <mat-list-item *ngFor=\"let file of files\">\n <h4 mat-line>{{file.name}}</h4>\n <mat-progress-bar *ngIf=\"progress\" mode=\"determinate\" [value]=\"progress[file.name].progress | async\"></mat-progress-bar>\n </mat-list-item>\n </mat-list>\n</mat-dialog-content>\n\n<mat-dialog-actions id=\"actions\">\n <button *ngIf=\"showCancelButton\" mat-button mat-dialog-close>{{ uploadService.config.uploadDialogCancelButtonText }}</button>\n <button *ngIf=\"files.size > 0\" mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\n</mat-dialog-actions>\n", styles: ["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{font-size:.8em;color:red;margin-top:.5em}\n"] }]
|
|
83
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.UploadService }]; }, propDecorators: { file: [{
|
|
84
|
+
type: ViewChild,
|
|
85
|
+
args: ['file', { static: true }]
|
|
86
|
+
}] } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL2NvbXBvbmVudHMvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBSWhDLE1BSWEscUJBQXFCO0lBYWhDLFlBQW1CLFNBQThDLEVBQVMsYUFBNEI7UUFBbkYsY0FBUyxHQUFULFNBQVMsQ0FBcUM7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVgvRixVQUFLLEdBQWMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUtwQyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFaUYsQ0FBQztJQUUzRyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDO0lBQ2xGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEtBQUssR0FBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3JFLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLGlDQUFpQztnQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztxQkFDdkMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNsQixJQUFJLE1BQU0sRUFBRTt3QkFDVixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztxQkFDN0M7b0JBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDNUI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCw0REFBNEQ7UUFDNUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0RCx5Q0FBeUM7UUFDekMsTUFBTSxzQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFFekMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsNkJBQTZCO1FBRTdCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUM7UUFFaEYsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUVuQyx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixpREFBaUQ7UUFDakQsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLHdDQUF3QztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFFcEMsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFFN0IsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FyRlUscUJBQXFCO2tHQUFyQixxQkFBcUIsZ0tDVmxDLHN0Q0EwQkE7O1NEaEJhLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUpqQyxTQUFTOzsrSEFLNkIsSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWxlITogRWxlbWVudFJlZjtcclxuICBwdWJsaWMgZmlsZXM6IFNldDxGaWxlPiA9IG5ldyBTZXQoKTtcclxuICBleGlzdGluZ0ZpbGVDb25mbGljdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBTdGF0ZVxyXG4gIHByb2dyZXNzOiBhbnk7XHJcbiAgY2FuQmVDbG9zZWQgPSB0cnVlO1xyXG4gIHByaW1hcnlCdXR0b25UZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWU7XHJcbiAgdXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgdXBsb2FkU3VjY2Vzc2Z1bCA9IGZhbHNlO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxVcGxvYWREaWFsb2dDb21wb25lbnQ+LCBwdWJsaWMgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVGV4dCA9IHRoaXMudXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nVXBsb2FkQnV0dG9uVGV4dDtcclxuICB9XHJcblxyXG4gIGFkZEZpbGVzKCkge1xyXG4gICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIG9uRmlsZXNBZGRlZCgpIHtcclxuICAgIGNvbnN0IGZpbGVzOiB7IFtrZXk6IHN0cmluZ106IEZpbGUgfSA9IHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LmZpbGVzO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmlsZXMpIHtcclxuICAgICAgaWYgKCFpc05hTihwYXJzZUludChrZXkpKSkge1xyXG4gICAgICAgIC8vIFNlZSBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5leGlzdHMoZmlsZXNba2V5XS5uYW1lKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShleGlzdHMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGlzdGluZ0ZpbGVDb25mbGljdCA9IGZpbGVzW2tleV0ubmFtZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVzLmFkZChmaWxlc1trZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlRGlhbG9nKCkge1xyXG4gICAgLy8gaWYgZXZlcnl0aGluZyB3YXMgdXBsb2FkZWQgYWxyZWFkeSwganVzdCBjbG9zZSB0aGUgZGlhbG9nXHJcbiAgICBpZiAodGhpcy51cGxvYWRTdWNjZXNzZnVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCB0aGUgY29tcG9uZW50IHN0YXRlIHRvIFwidXBsb2FkaW5nXCJcclxuICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBzdGFydCB0aGUgdXBsb2FkIGFuZCBzYXZlIHRoZSBwcm9ncmVzcyBtYXBcclxuICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkKHRoaXMuZmlsZXMpO1xyXG5cclxuICAgIC8vIGNvbnZlcnQgdGhlIHByb2dyZXNzIG1hcCBpbnRvIGFuIGFycmF5XHJcbiAgICBjb25zdCBhbGxQcm9ncmVzc09ic2VydmFibGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnByb2dyZXNzKSB7XHJcbiAgICAgIGFsbFByb2dyZXNzT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnByb2dyZXNzW2tleV0ucHJvZ3Jlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkanVzdCB0aGUgc3RhdGUgdmFyaWFibGVzXHJcblxyXG4gICAgLy8gVGhlIE9LLWJ1dHRvbiBzaG91bGQgaGF2ZSB0aGUgdGV4dCBcIkZpbmlzaFwiIG5vd1xyXG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVGV4dCA9IHRoaXMudXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nRmluaXNoQnV0dG9uVGV4dDtcclxuXHJcbiAgICAvLyBUaGUgZGlhbG9nIHNob3VsZCBub3QgYmUgY2xvc2VkIHdoaWxlIHVwbG9hZGluZ1xyXG4gICAgdGhpcy5jYW5CZUNsb3NlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBjYW5jZWwtYnV0dG9uXHJcbiAgICB0aGlzLnNob3dDYW5jZWxCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBXaGVuIGFsbCBwcm9ncmVzcy1vYnNlcnZhYmxlcyBhcmUgY29tcGxldGVkLi4uXHJcbiAgICBmb3JrSm9pbihhbGxQcm9ncmVzc09ic2VydmFibGVzKS5zdWJzY3JpYmUoZW5kID0+IHtcclxuICAgICAgLy8gLi4uIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZCBhZ2Fpbi4uLlxyXG4gICAgICB0aGlzLmNhbkJlQ2xvc2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gZmFsc2U7XHJcblxyXG4gICAgICAvLyAuLi4gdGhlIHVwbG9hZCB3YXMgc3VjY2Vzc2Z1bC4uLlxyXG4gICAgICB0aGlzLnVwbG9hZFN1Y2Nlc3NmdWwgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gLi4uIGFuZCB0aGUgY29tcG9uZW50IGlzIG5vIGxvbmdlciB1cGxvYWRpbmdcclxuICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cIm9uRmlsZXNBZGRlZCgpXCIgbXVsdGlwbGUgLz5cblxuPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGlkPVwidGl0bGVcIj5cbiAgPGRpdj57eyB1cGxvYWRTZXJ2aWNlLmNvbmZpZy51cGxvYWREaWFsb2dUaXRsZSB9fTwvZGl2PlxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ1cGxvYWRpbmcgfHwgdXBsb2FkU3VjY2Vzc2Z1bFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYWRkLWZpbGVzLWJ0blwiIChjbGljayk9XCJhZGRGaWxlcygpXCI+XG4gICAge3sgdXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nQWRkRmlsZXNCdXR0b25UZXh0IH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxkaXYgaWQ9XCJjb25mbGljdFwiICpuZ0lmPVwiZXhpc3RpbmdGaWxlQ29uZmxpY3RcIj5cbiAge3sgZXhpc3RpbmdGaWxlQ29uZmxpY3QgfX0gYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIG92ZXJ3cml0dGVuXG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1saXN0PlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICA8aDQgbWF0LWxpbmU+e3tmaWxlLm5hbWV9fTwvaDQ+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cInByb2dyZXNzXCIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cInByb2dyZXNzW2ZpbGUubmFtZV0ucHJvZ3Jlc3MgfCBhc3luY1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG4gIDwvbWF0LWxpc3Q+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBpZD1cImFjdGlvbnNcIj5cbiAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWxCdXR0b25cIiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+e3sgdXBsb2FkU2VydmljZS5jb25maWcudXBsb2FkRGlhbG9nQ2FuY2VsQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuICA8YnV0dG9uICpuZ0lmPVwiZmlsZXMuc2l6ZSA+IDBcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWNhbkJlQ2xvc2VkXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj57eyBwcmltYXJ5QnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZmlsZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9tb2RlbC9kYXRhYmFzZS1maWxlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0aW1lc3RhbXA6IERhdGU7XHJcbiAgICBkYkFwcElkOiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkPzogbnVtYmVyO1xyXG4gICAgY29tbWVudD86IHN0cmluZztcclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvZmlsZS11cGxvYWQtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkUmVxdWVzdCB7XHJcbiAgICBhcHBJZD86IHN0cmluZztcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkPzogbnVtYmVyO1xyXG4gICAgZm9sZGVyPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS1maWxlLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL21vZGVsL2ZpbGVzeXN0ZW0tZmlsZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVzeXN0ZW1GaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBhdHRyaWJ1dGVzPzogbnVtYmVyO1xyXG4gICAgY3JlYXRpb25UaW1lOiBEYXRlO1xyXG4gICAgZGlyZWN0b3J5OiBzdHJpbmc7XHJcbiAgICBleHRlbnNpb246IHN0cmluZztcclxuICAgIGZ1bGxuYW1lOiBzdHJpbmc7XHJcbiAgICBsYXN0QWNjZXNzVGltZTogRGF0ZTtcclxuICAgIGxhc3RXcml0ZVRpbWU6IERhdGU7XHJcbiAgICByZWFkT25seTogYm9vbGVhbjtcclxuICAgIHNpemU6IG51bWJlcjtcclxufVxyXG4iXX0=
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
|
|
2
|
-
export class ServiceConfig extends NgxLibServiceConfig {
|
|
3
|
-
// See the comment in the library's main service-config.ts file for an explanation
|
|
4
|
-
constructor(useSsl_or_customApiUrl = false) {
|
|
5
|
-
super(useSsl_or_customApiUrl);
|
|
6
|
-
this.databaseEndpoint = '/upload/database';
|
|
7
|
-
this.uploadDialogTitle = 'Upload Files';
|
|
8
|
-
// UI configuration
|
|
9
|
-
this.uploadButtonText = 'Upload';
|
|
10
|
-
this.uploadDialogCancelButtonText = 'Cancel';
|
|
11
|
-
this.uploadDialogFinishButtonText = 'Finish';
|
|
12
|
-
this.uploadDialogUploadButtonText = 'Upload';
|
|
13
|
-
this.uploadDialogAddFilesButtonText = 'Add Files';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
1
|
+
import { ServiceConfig as NgxLibServiceConfig } from '@cleavelandprice/ngx-lib';
|
|
2
|
+
export class ServiceConfig extends NgxLibServiceConfig {
|
|
3
|
+
// See the comment in the library's main service-config.ts file for an explanation
|
|
4
|
+
constructor(useSsl_or_customApiUrl = false) {
|
|
5
|
+
super(useSsl_or_customApiUrl);
|
|
6
|
+
this.databaseEndpoint = '/upload/database';
|
|
7
|
+
this.uploadDialogTitle = 'Upload Files';
|
|
8
|
+
// UI configuration
|
|
9
|
+
this.uploadButtonText = 'Upload';
|
|
10
|
+
this.uploadDialogCancelButtonText = 'Cancel';
|
|
11
|
+
this.uploadDialogFinishButtonText = 'Finish';
|
|
12
|
+
this.uploadDialogUploadButtonText = 'Upload';
|
|
13
|
+
this.uploadDialogAddFilesButtonText = 'Add Files';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
16
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL21vZGVsL3NlcnZpY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLElBQUksbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRixNQUFNLE9BQU8sYUFBYyxTQUFRLG1CQUFtQjtJQWVsRCxrRkFBa0Y7SUFDbEYsWUFBWSx5QkFBMkMsS0FBSztRQUN4RCxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQWhCbEMscUJBQWdCLEdBQUcsa0JBQWtCLENBQUM7UUFDdEMsc0JBQWlCLEdBQUcsY0FBYyxDQUFDO1FBTW5DLG1CQUFtQjtRQUNuQixxQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDNUIsaUNBQTRCLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLGlDQUE0QixHQUFHLFFBQVEsQ0FBQztRQUN4QyxpQ0FBNEIsR0FBRyxRQUFRLENBQUM7UUFDeEMsbUNBQThCLEdBQUcsV0FBVyxDQUFDO0lBSzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZpY2VDb25maWcgYXMgTmd4TGliU2VydmljZUNvbmZpZyB9IGZyb20gJ0BjbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYic7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VydmljZUNvbmZpZyBleHRlbmRzIE5neExpYlNlcnZpY2VDb25maWcge1xyXG4gICAgZGF0YWJhc2VFbmRwb2ludCA9ICcvdXBsb2FkL2RhdGFiYXNlJztcclxuICAgIHVwbG9hZERpYWxvZ1RpdGxlID0gJ1VwbG9hZCBGaWxlcyc7XHJcbiAgICB1cGxvYWRQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBjb21tZW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBkYkFwcElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICBcclxuICAgIC8vIFVJIGNvbmZpZ3VyYXRpb25cclxuICAgIHVwbG9hZEJ1dHRvblRleHQgPSAnVXBsb2FkJztcclxuICAgIHVwbG9hZERpYWxvZ0NhbmNlbEJ1dHRvblRleHQgPSAnQ2FuY2VsJztcclxuICAgIHVwbG9hZERpYWxvZ0ZpbmlzaEJ1dHRvblRleHQgPSAnRmluaXNoJztcclxuICAgIHVwbG9hZERpYWxvZ1VwbG9hZEJ1dHRvblRleHQgPSAnVXBsb2FkJztcclxuICAgIHVwbG9hZERpYWxvZ0FkZEZpbGVzQnV0dG9uVGV4dCA9ICdBZGQgRmlsZXMnO1xyXG5cclxuICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgbGlicmFyeSdzIG1haW4gc2VydmljZS1jb25maWcudHMgZmlsZSBmb3IgYW4gZXhwbGFuYXRpb25cclxuICAgIGNvbnN0cnVjdG9yKHVzZVNzbF9vcl9jdXN0b21BcGlVcmw6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZSkge1xyXG4gICAgICAgIHN1cGVyKHVzZVNzbF9vcl9jdXN0b21BcGlVcmwpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from './model/database-file-info';
|
|
2
|
-
export * from './model/file-upload-request';
|
|
3
|
-
export * from './model/filesystem-file-info';
|
|
4
|
-
export * from './model/service-config';
|
|
5
|
-
export * from './components/upload/upload.component';
|
|
6
|
-
export * from './components/upload-dialog/upload-dialog.component';
|
|
7
|
-
export * from './services/upload.service';
|
|
8
|
-
export * from './upload.module';
|
|
1
|
+
export * from './model/database-file-info';
|
|
2
|
+
export * from './model/file-upload-request';
|
|
3
|
+
export * from './model/filesystem-file-info';
|
|
4
|
+
export * from './model/service-config';
|
|
5
|
+
export * from './components/upload/upload.component';
|
|
6
|
+
export * from './components/upload-dialog/upload-dialog.component';
|
|
7
|
+
export * from './services/upload.service';
|
|
8
|
+
export * from './upload.module';
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxvREFBb0QsQ0FBQztBQUVuRSxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsL2RhdGFiYXNlLWZpbGUtaW5mbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvZmlsZS11cGxvYWQtcmVxdWVzdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvZmlsZXN5c3RlbS1maWxlLWluZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQubW9kdWxlJzsiXX0=
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { HttpRequest, HttpEventType, HttpResponse, HttpHeaders } from '@angular/common/http';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { ServiceConfig } from '../model/service-config';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "../model/service-config";
|
|
8
|
+
// https://malcoded.com/posts/angular-file-upload-component-with-express
|
|
9
|
+
class UploadService {
|
|
10
|
+
constructor(http, config) {
|
|
11
|
+
this.http = http;
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.config = this.config ?? new ServiceConfig();
|
|
14
|
+
}
|
|
15
|
+
upload(files) {
|
|
16
|
+
// this will be the our resulting map
|
|
17
|
+
const status = {};
|
|
18
|
+
files.forEach(file => {
|
|
19
|
+
// create a new multipart-form for every file
|
|
20
|
+
const formData = new FormData();
|
|
21
|
+
formData.append('file', file, file.name);
|
|
22
|
+
// create a http-post request and pass the form
|
|
23
|
+
// tell it to report the upload progress
|
|
24
|
+
// A 'Destination' header is used to optionally configure the file upload destination (filesystem)
|
|
25
|
+
// A 'DbAppId' header is used to configure the unique identifier of database uploads
|
|
26
|
+
let headers = new HttpHeaders();
|
|
27
|
+
if (this.config.uploadPath) {
|
|
28
|
+
headers = headers.set('Destination', this.config.uploadPath);
|
|
29
|
+
}
|
|
30
|
+
if (this.config.dbAppId) {
|
|
31
|
+
headers = headers.set('DbAppId', this.config.dbAppId);
|
|
32
|
+
}
|
|
33
|
+
if (this.config.externalReferenceId) {
|
|
34
|
+
headers = headers.set('ExternalReferenceId', this.config.externalReferenceId);
|
|
35
|
+
}
|
|
36
|
+
if (this.config.comment) {
|
|
37
|
+
headers = headers.set('Comment', this.config.comment);
|
|
38
|
+
}
|
|
39
|
+
const req = new HttpRequest('POST', `${this.config.apiUrl}${this.config.databaseEndpoint}`, formData, {
|
|
40
|
+
reportProgress: true,
|
|
41
|
+
responseType: 'blob',
|
|
42
|
+
headers
|
|
43
|
+
});
|
|
44
|
+
// create a new progress-subject for every file
|
|
45
|
+
const progress = new Subject();
|
|
46
|
+
// send the http-request and subscribe for progress-updates
|
|
47
|
+
this.http.request(req).subscribe(event => {
|
|
48
|
+
if (event.type === HttpEventType.UploadProgress) {
|
|
49
|
+
// calculate the progress percentage
|
|
50
|
+
const percentDone = Math.round(100 * event.loaded / (event.total ?? 1));
|
|
51
|
+
// pass the percentage into the progress-stream
|
|
52
|
+
progress.next(percentDone);
|
|
53
|
+
}
|
|
54
|
+
else if (event instanceof HttpResponse) {
|
|
55
|
+
// Close the progress-stream if we get an answer form the API
|
|
56
|
+
// The upload is complete
|
|
57
|
+
progress.complete();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
// Save every progress-observable in a map of all observables
|
|
61
|
+
status[file.name] = {
|
|
62
|
+
progress: progress.asObservable()
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
// return the map of progress.observables
|
|
66
|
+
return status;
|
|
67
|
+
}
|
|
68
|
+
exists(fileName) {
|
|
69
|
+
const query = `${this.config.apiUrl}${this.config.databaseEndpoint}`.toLowerCase().indexOf('filesystem') === -1 ?
|
|
70
|
+
{ name: fileName, dbAppId: this.config.dbAppId } :
|
|
71
|
+
{ name: fileName, destination: this.config.uploadPath };
|
|
72
|
+
return this.http.post(`${this.config.apiUrl}${this.config.databaseEndpoint}/exists`, query);
|
|
73
|
+
}
|
|
74
|
+
download(request) {
|
|
75
|
+
return this.http.post(`${this.config.apiUrl}${this.config.databaseEndpoint}/stream`, request, { responseType: 'blob' });
|
|
76
|
+
}
|
|
77
|
+
getUploadInfo(request) {
|
|
78
|
+
return this.http.post(`${this.config.apiUrl}${this.config.databaseEndpoint}/info`, request);
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadService, deps: [{ token: i1.HttpClient }, { token: i2.ServiceConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
81
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadService, providedIn: 'root' }); }
|
|
82
|
+
}
|
|
83
|
+
export { UploadService };
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: UploadService, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{
|
|
87
|
+
providedIn: 'root'
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ServiceConfig, decorators: [{
|
|
90
|
+
type: Optional
|
|
91
|
+
}] }]; } });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBYyxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUs3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsd0VBQXdFO0FBRXhFLE1BR2EsYUFBYTtJQUN4QixZQUFvQixJQUFnQixFQUNmLE1BQXFCO1FBRHRCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBRXRDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFSSxNQUFNLENBQUMsS0FBZ0I7UUFDNUIscUNBQXFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFvRCxFQUFFLENBQUM7UUFFbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQiw2Q0FBNkM7WUFDN0MsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLCtDQUErQztZQUMvQyx3Q0FBd0M7WUFFeEMsa0dBQWtHO1lBQ2xHLG9GQUFvRjtZQUVwRixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxD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QUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUEwQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFILENBQUM7SUFFTSxhQUFhLENBQUMsT0FBMEI7UUFFN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQzs4R0F4RlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7U0FFUCxhQUFhOzJGQUFiLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlcXVlc3QsIEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFN1YmplY3QgLCAgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRGF0YWJhc2VGaWxlSW5mbyB9IGZyb20gJy4uL21vZGVsL2RhdGFiYXNlLWZpbGUtaW5mbyc7XHJcbmltcG9ydCB7IEZpbGVzeXN0ZW1GaWxlSW5mbyB9IGZyb20gJy4uL21vZGVsL2ZpbGVzeXN0ZW0tZmlsZS1pbmZvJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZFJlcXVlc3QgfSBmcm9tICcuLi9tb2RlbC9maWxlLXVwbG9hZC1yZXF1ZXN0JztcclxuaW1wb3J0IHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3NlcnZpY2UtY29uZmlnJztcclxuXHJcbi8vIGh0dHBzOi8vbWFsY29kZWQuY29tL3Bvc3RzL2FuZ3VsYXItZmlsZS11cGxvYWQtY29tcG9uZW50LXdpdGgtZXhwcmVzc1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogU2VydmljZUNvbmZpZykge1xyXG5cclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyA/PyBuZXcgU2VydmljZUNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgdXBsb2FkKGZpbGVzOiBTZXQ8RmlsZT4pOiBhbnkgeyAvLyB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxudW1iZXI+fSB7XHJcbiAgICAvLyB0aGlzIHdpbGwgYmUgdGhlIG91ciByZXN1bHRpbmcgbWFwXHJcbiAgICBjb25zdCBzdGF0dXM6IHtba2V5OiBzdHJpbmddOiB7cHJvZ3Jlc3M6IE9ic2VydmFibGU8bnVtYmVyPn19ID0ge307XHJcblxyXG4gICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgLy8gY3JlYXRlIGEgbmV3IG11bHRpcGFydC1mb3JtIGZvciBldmVyeSBmaWxlXHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG5cclxuICAgICAgLy8gY3JlYXRlIGEgaHR0cC1wb3N0IHJlcXVlc3QgYW5kIHBhc3MgdGhlIGZvcm1cclxuICAgICAgLy8gdGVsbCBpdCB0byByZXBvcnQgdGhlIHVwbG9hZCBwcm9ncmVzc1xyXG5cclxuICAgICAgLy8gQSAnRGVzdGluYXRpb24nIGhlYWRlciBpcyB1c2VkIHRvIG9wdGlvbmFsbHkgY29uZmlndXJlIHRoZSBmaWxlIHVwbG9hZCBkZXN0aW5hdGlvbiAoZmlsZXN5c3RlbSlcclxuICAgICAgLy8gQSAnRGJBcHBJZCcgaGVhZGVyIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiBkYXRhYmFzZSB1cGxvYWRzXHJcbiAgICAgIFxyXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICBpZiAodGhpcy5jb25maWcudXBsb2FkUGF0aCkge1xyXG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnRGVzdGluYXRpb24nLCB0aGlzLmNvbmZpZy51cGxvYWRQYXRoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb25maWcuZGJBcHBJZCkge1xyXG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnRGJBcHBJZCcsIHRoaXMuY29uZmlnLmRiQXBwSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5leHRlcm5hbFJlZmVyZW5jZUlkKSB7XHJcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdFeHRlcm5hbFJlZmVyZW5jZUlkJywgdGhpcy5jb25maWcuZXh0ZXJuYWxSZWZlcmVuY2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbW1lbnQpIHtcclxuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbW1lbnQnLCB0aGlzLmNvbmZpZy5jb21tZW50KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgYCR7dGhpcy5jb25maWcuYXBpVXJsfSR7dGhpcy5jb25maWcuZGF0YWJhc2VFbmRwb2ludH1gLCBmb3JtRGF0YSwge1xyXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBjcmVhdGUgYSBuZXcgcHJvZ3Jlc3Mtc3ViamVjdCBmb3IgZXZlcnkgZmlsZVxyXG4gICAgICBjb25zdCBwcm9ncmVzcyA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuXHJcbiAgICAgIC8vIHNlbmQgdGhlIGh0dHAtcmVxdWVzdCBhbmQgc3Vic2NyaWJlIGZvciBwcm9ncmVzcy11cGRhdGVzXHJcbiAgICAgIHRoaXMuaHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xyXG5cclxuICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgcHJvZ3Jlc3MgcGVyY2VudGFnZVxyXG4gICAgICAgICAgY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIChldmVudC50b3RhbCA/PyAxKSk7XHJcblxyXG4gICAgICAgICAgLy8gcGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW1cclxuICAgICAgICAgIHByb2dyZXNzLm5leHQocGVyY2VudERvbmUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuXHJcbiAgICAgICAgICAvLyBDbG9zZSB0aGUgcHJvZ3Jlc3Mtc3RyZWFtIGlmIHdlIGdldCBhbiBhbnN3ZXIgZm9ybSB0aGUgQVBJXHJcbiAgICAgICAgICAvLyBUaGUgdXBsb2FkIGlzIGNvbXBsZXRlXHJcbiAgICAgICAgICBwcm9ncmVzcy5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBTYXZlIGV2ZXJ5IHByb2dyZXNzLW9ic2VydmFibGUgaW4gYSBtYXAgb2YgYWxsIG9ic2VydmFibGVzXHJcbiAgICAgIHN0YXR1c1tmaWxlLm5hbWVdID0ge1xyXG4gICAgICAgIHByb2dyZXNzOiBwcm9ncmVzcy5hc09ic2VydmFibGUoKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gcmV0dXJuIHRoZSBtYXAgb2YgcHJvZ3Jlc3Mub2JzZXJ2YWJsZXNcclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhpc3RzKGZpbGVOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHF1ZXJ5ID0gYCR7dGhpcy5jb25maWcuYXBpVXJsfSR7dGhpcy5jb25maWcuZGF0YWJhc2VFbmRwb2ludH1gLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlsZXN5c3RlbScpID09PSAtMSA/XHJcbiAgICAgIHsgbmFtZTogZmlsZU5hbWUsIGRiQXBwSWQ6IHRoaXMuY29uZmlnLmRiQXBwSWQgfSA6XHJcbiAgICAgIHsgbmFtZTogZmlsZU5hbWUsIGRlc3RpbmF0aW9uOiB0aGlzLmNvbmZpZy51cGxvYWRQYXRoIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmRhdGFiYXNlRW5kcG9pbnR9L2V4aXN0c2AsIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZChyZXF1ZXN0OiBGaWxlVXBsb2FkUmVxdWVzdCk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmRhdGFiYXNlRW5kcG9pbnR9L3N0cmVhbWAsIHJlcXVlc3QsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VXBsb2FkSW5mbyhyZXF1ZXN0OiBGaWxlVXBsb2FkUmVxdWVzdCk6XHJcbiAgICBPYnNlcnZhYmxlPERhdGFiYXNlRmlsZUluZm8gfCBEYXRhYmFzZUZpbGVJbmZvW10gfCBGaWxlc3lzdGVtRmlsZUluZm8gfCBGaWxlc3lzdGVtRmlsZUluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PERhdGFiYXNlRmlsZUluZm8gfCBEYXRhYmFzZUZpbGVJbmZvW10gfCBGaWxlc3lzdGVtRmlsZUluZm8gfCBGaWxlc3lzdGVtRmlsZUluZm9bXT5cclxuICAgICAgKGAke3RoaXMuY29uZmlnLmFwaVVybH0ke3RoaXMuY29uZmlnLmRhdGFiYXNlRW5kcG9pbnR9L2luZm9gLCByZXF1ZXN0KTtcclxuICB9XHJcbn1cclxuIl19
|