@cleavelandprice/ngx-lib 4.4.13 → 4.4.15
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 +5 -5
- package/active-directory/index.d.ts +120 -5
- package/active-directory/material/index.d.ts +161 -5
- package/authentication/index.d.ts +57 -5
- package/authentication/material/index.d.ts +81 -5
- package/authentication/object/index.d.ts +37 -5
- package/authentication/token/index.d.ts +60 -5
- package/dialog/index.d.ts +106 -5
- package/fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs +17 -17
- package/fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs +8 -8
- package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs +18 -18
- package/fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs +8 -8
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs +8 -8
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs +5 -5
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs +27 -27
- package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs +5 -5
- package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs +12 -12
- package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-quill.mjs +32 -32
- package/fesm2022/cleavelandprice-ngx-lib-quill.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs +18 -18
- package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-table.mjs +54 -29
- package/fesm2022/cleavelandprice-ngx-lib-table.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-upload.mjs +15 -15
- package/fesm2022/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs +13 -13
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib.mjs +8 -8
- package/fesm2022/cleavelandprice-ngx-lib.mjs.map +1 -1
- package/index.d.ts +91 -5
- package/msgraph/index.d.ts +211 -5
- package/package.json +3 -33
- package/quill/index.d.ts +200 -5
- package/quill/mention/index.d.ts +33 -5
- package/sharepoint/index.d.ts +138 -5
- package/table/index.d.ts +146 -5
- package/upload/index.d.ts +135 -5
- package/url-utilities/index.d.ts +35 -5
- package/active-directory/active-directory.api.d.ts +0 -10
- package/active-directory/active-directory.module.d.ts +0 -11
- package/active-directory/material/components/user-chooser/user-chooser.component.d.ts +0 -58
- package/active-directory/material/components/user-form-field/user-form-field.component.d.ts +0 -27
- package/active-directory/material/mat-active-directory.api.d.ts +0 -10
- package/active-directory/material/mat-active-directory.module.d.ts +0 -25
- package/active-directory/material/model/default-user-chooser-data.d.ts +0 -2
- package/active-directory/material/model/default-user-chooser-filter-options.d.ts +0 -2
- package/active-directory/material/model/selectable-group.d.ts +0 -4
- package/active-directory/material/model/selectable-user.d.ts +0 -5
- package/active-directory/material/model/user-chooser-data.d.ts +0 -25
- package/active-directory/material/model/user-chooser-filter-options.d.ts +0 -7
- package/active-directory/material/model/user-chooser-mode.d.ts +0 -4
- package/active-directory/material/model/user-chooser-pre-processing-group.d.ts +0 -6
- package/active-directory/model/active-directory-service-options-token.d.ts +0 -3
- package/active-directory/model/active-directory-service-options.d.ts +0 -5
- package/active-directory/model/ad-object-with-children.d.ts +0 -4
- package/active-directory/model/ad-object.d.ts +0 -13
- package/active-directory/model/cache-object.d.ts +0 -5
- package/active-directory/model/cleaveland-price-user.d.ts +0 -19
- package/active-directory/model/group.d.ts +0 -7
- package/active-directory/model/user-or-group.d.ts +0 -7
- package/active-directory/model/user.d.ts +0 -23
- package/active-directory/services/active-directory.service.d.ts +0 -31
- package/authentication/authentication.api.d.ts +0 -6
- package/authentication/authentication.base.module.d.ts +0 -11
- package/authentication/material/components/login/login.component.d.ts +0 -14
- package/authentication/material/components/login-form/login-form.component.d.ts +0 -27
- package/authentication/material/mat-authentication.api.d.ts +0 -7
- package/authentication/material/mat-authentication.module.d.ts +0 -21
- package/authentication/material/model/login-form-data.d.ts +0 -4
- package/authentication/material/model/mat-authentication-service-options-token.d.ts +0 -3
- package/authentication/material/model/mat-authentication-service-options.d.ts +0 -4
- package/authentication/material/services/mat-authentication.service.d.ts +0 -11
- package/authentication/model/abstract-authentication-service.d.ts +0 -16
- package/authentication/model/authenticated-user.d.ts +0 -9
- package/authentication/model/authentication-request.d.ts +0 -8
- package/authentication/model/authentication-service-options-token.d.ts +0 -3
- package/authentication/model/authentication-service-options.d.ts +0 -6
- package/authentication/object/authentication-object.api.d.ts +0 -3
- package/authentication/object/authentication-object.module.d.ts +0 -11
- package/authentication/object/services/authentication-object.service.d.ts +0 -24
- package/authentication/token/authentication-token.api.d.ts +0 -5
- package/authentication/token/authetiction-token.module.d.ts +0 -11
- package/authentication/token/model/authentication-token-service-options-token.d.ts +0 -3
- package/authentication/token/model/authentication-token-service-options.d.ts +0 -4
- package/authentication/token/model/authentication-token.d.ts +0 -17
- package/authentication/token/services/authentication-token.service.d.ts +0 -24
- package/dialog/components/base/base.component.d.ts +0 -23
- package/dialog/components/choice/choice.component.d.ts +0 -13
- package/dialog/components/confirmation/confirmation.component.d.ts +0 -13
- package/dialog/components/input/input.component.d.ts +0 -13
- package/dialog/components/message/message.component.d.ts +0 -13
- package/dialog/dialog.api.d.ts +0 -9
- package/dialog/dialog.module.d.ts +0 -18
- package/dialog/model/confirmation-dialog-mode.d.ts +0 -6
- package/dialog/model/dialog-base-data.d.ts +0 -10
- package/dialog/model/dialog-choice-data.d.ts +0 -4
- package/dialog/model/dialog-type.d.ts +0 -6
- package/esm2022/active-directory/active-directory.api.mjs +0 -11
- package/esm2022/active-directory/active-directory.module.mjs +0 -40
- package/esm2022/active-directory/cleavelandprice-ngx-lib-active-directory.mjs +0 -5
- package/esm2022/active-directory/material/cleavelandprice-ngx-lib-active-directory-material.mjs +0 -5
- package/esm2022/active-directory/material/components/user-chooser/user-chooser.component.mjs +0 -437
- package/esm2022/active-directory/material/components/user-form-field/user-form-field.component.mjs +0 -159
- package/esm2022/active-directory/material/mat-active-directory.api.mjs +0 -11
- package/esm2022/active-directory/material/mat-active-directory.module.mjs +0 -100
- package/esm2022/active-directory/material/model/default-user-chooser-data.mjs +0 -15
- package/esm2022/active-directory/material/model/default-user-chooser-filter-options.mjs +0 -8
- package/esm2022/active-directory/material/model/selectable-group.mjs +0 -2
- package/esm2022/active-directory/material/model/selectable-user.mjs +0 -2
- package/esm2022/active-directory/material/model/user-chooser-data.mjs +0 -2
- package/esm2022/active-directory/material/model/user-chooser-filter-options.mjs +0 -3
- package/esm2022/active-directory/material/model/user-chooser-mode.mjs +0 -6
- package/esm2022/active-directory/material/model/user-chooser-pre-processing-group.mjs +0 -3
- package/esm2022/active-directory/model/active-directory-service-options-token.mjs +0 -3
- package/esm2022/active-directory/model/active-directory-service-options.mjs +0 -2
- package/esm2022/active-directory/model/ad-object-with-children.mjs +0 -2
- package/esm2022/active-directory/model/ad-object.mjs +0 -2
- package/esm2022/active-directory/model/cache-object.mjs +0 -3
- package/esm2022/active-directory/model/cleaveland-price-user.mjs +0 -2
- package/esm2022/active-directory/model/group.mjs +0 -2
- package/esm2022/active-directory/model/user-or-group.mjs +0 -2
- package/esm2022/active-directory/model/user.mjs +0 -2
- package/esm2022/active-directory/services/active-directory.service.mjs +0 -131
- package/esm2022/authentication/authentication.api.mjs +0 -7
- package/esm2022/authentication/authentication.base.module.mjs +0 -40
- package/esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs +0 -5
- package/esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs +0 -5
- package/esm2022/authentication/material/components/login/login.component.mjs +0 -49
- package/esm2022/authentication/material/components/login-form/login-form.component.mjs +0 -82
- package/esm2022/authentication/material/mat-authentication.api.mjs +0 -8
- package/esm2022/authentication/material/mat-authentication.module.mjs +0 -84
- package/esm2022/authentication/material/model/login-form-data.mjs +0 -2
- package/esm2022/authentication/material/model/mat-authentication-service-options-token.mjs +0 -3
- package/esm2022/authentication/material/model/mat-authentication-service-options.mjs +0 -2
- package/esm2022/authentication/material/services/mat-authentication.service.mjs +0 -67
- package/esm2022/authentication/model/abstract-authentication-service.mjs +0 -2
- package/esm2022/authentication/model/authenticated-user.mjs +0 -2
- package/esm2022/authentication/model/authentication-request.mjs +0 -2
- package/esm2022/authentication/model/authentication-service-options-token.mjs +0 -3
- package/esm2022/authentication/model/authentication-service-options.mjs +0 -2
- package/esm2022/authentication/object/authentication-object.api.mjs +0 -6
- package/esm2022/authentication/object/authentication-object.module.mjs +0 -40
- package/esm2022/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs +0 -5
- package/esm2022/authentication/object/services/authentication-object.service.mjs +0 -129
- package/esm2022/authentication/token/authentication-token.api.mjs +0 -6
- package/esm2022/authentication/token/authetiction-token.module.mjs +0 -40
- package/esm2022/authentication/token/cleavelandprice-ngx-lib-authentication-token.mjs +0 -5
- package/esm2022/authentication/token/model/authentication-token-service-options-token.mjs +0 -3
- package/esm2022/authentication/token/model/authentication-token-service-options.mjs +0 -2
- package/esm2022/authentication/token/model/authentication-token.mjs +0 -2
- package/esm2022/authentication/token/services/authentication-token.service.mjs +0 -138
- package/esm2022/cleavelandprice-ngx-lib.mjs +0 -5
- package/esm2022/dialog/cleavelandprice-ngx-lib-dialog.mjs +0 -5
- package/esm2022/dialog/components/base/base.component.mjs +0 -102
- package/esm2022/dialog/components/choice/choice.component.mjs +0 -21
- package/esm2022/dialog/components/confirmation/confirmation.component.mjs +0 -21
- package/esm2022/dialog/components/input/input.component.mjs +0 -21
- package/esm2022/dialog/components/message/message.component.mjs +0 -21
- package/esm2022/dialog/dialog.api.mjs +0 -20
- package/esm2022/dialog/dialog.module.mjs +0 -73
- package/esm2022/dialog/model/confirmation-dialog-mode.mjs +0 -8
- package/esm2022/dialog/model/dialog-base-data.mjs +0 -2
- package/esm2022/dialog/model/dialog-choice-data.mjs +0 -2
- package/esm2022/dialog/model/dialog-type.mjs +0 -8
- package/esm2022/lib/model/app-path-config.mjs +0 -2
- package/esm2022/lib/model/app-type.mjs +0 -2
- package/esm2022/lib/model/app.mjs +0 -2
- package/esm2022/lib/model/caching-config.mjs +0 -2
- package/esm2022/lib/model/credentials.mjs +0 -2
- package/esm2022/lib/model/logging-config.mjs +0 -2
- package/esm2022/lib/model/service-options-token.mjs +0 -3
- package/esm2022/lib/model/service-options.mjs +0 -2
- package/esm2022/lib/ngx-lib.module.mjs +0 -37
- package/esm2022/lib/services/app-path-config.service.mjs +0 -50
- package/esm2022/lib/services/service-base.mjs +0 -26
- package/esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs +0 -5
- package/esm2022/msgraph/model/address.mjs +0 -2
- package/esm2022/msgraph/model/attendee.mjs +0 -2
- package/esm2022/msgraph/model/bulk-calendar-events.mjs +0 -2
- package/esm2022/msgraph/model/bulk-calendar-request.mjs +0 -2
- package/esm2022/msgraph/model/calendar-event.mjs +0 -2
- package/esm2022/msgraph/model/coordinates.mjs +0 -2
- package/esm2022/msgraph/model/email-address.mjs +0 -2
- package/esm2022/msgraph/model/location.mjs +0 -2
- package/esm2022/msgraph/model/online-meeting-info.mjs +0 -2
- package/esm2022/msgraph/model/patterned-recurrence.mjs +0 -2
- package/esm2022/msgraph/model/phone.mjs +0 -2
- package/esm2022/msgraph/model/recipient.mjs +0 -2
- package/esm2022/msgraph/model/recurrence-pattern.mjs +0 -2
- package/esm2022/msgraph/model/recurrence-range.mjs +0 -2
- package/esm2022/msgraph/model/response-status.mjs +0 -2
- package/esm2022/msgraph/model/room.mjs +0 -6
- package/esm2022/msgraph/model/user.mjs +0 -132
- package/esm2022/msgraph/msgraph.api.mjs +0 -19
- package/esm2022/msgraph/msgraph.module.mjs +0 -27
- package/esm2022/public_api.mjs +0 -15
- package/esm2022/quill/cleavelandprice-ngx-lib-quill.mjs +0 -5
- package/esm2022/quill/components/editor/editor.component.mjs +0 -282
- package/esm2022/quill/components/raw/raw.component.mjs +0 -30
- package/esm2022/quill/mention/cleavelandprice-ngx-lib-quill-mention.mjs +0 -5
- package/esm2022/quill/mention/components/editor/editor.component.mjs +0 -151
- package/esm2022/quill/mention/model/dialog-data.mjs +0 -2
- package/esm2022/quill/mention/quill-mention.api.mjs +0 -9
- package/esm2022/quill/mention/quill-mention.module.mjs +0 -65
- package/esm2022/quill/model/buttons.mjs +0 -3
- package/esm2022/quill/model/config.mjs +0 -3
- package/esm2022/quill/model/default-buttons.mjs +0 -50
- package/esm2022/quill/model/default-config.mjs +0 -28
- package/esm2022/quill/model/default-icons.mjs +0 -7
- package/esm2022/quill/model/default-tooltips.mjs +0 -53
- package/esm2022/quill/model/dialog-data.mjs +0 -2
- package/esm2022/quill/model/icons.mjs +0 -3
- package/esm2022/quill/model/tooltips.mjs +0 -3
- package/esm2022/quill/quill.api.mjs +0 -13
- package/esm2022/quill/quill.module.mjs +0 -75
- package/esm2022/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs +0 -5
- package/esm2022/sharepoint/components/user-photo/user-photo.component.mjs +0 -40
- package/esm2022/sharepoint/default-credentials.mjs +0 -6
- package/esm2022/sharepoint/model/base-item.mjs +0 -2
- package/esm2022/sharepoint/model/base-request-credential.mjs +0 -2
- package/esm2022/sharepoint/model/base-request.mjs +0 -2
- package/esm2022/sharepoint/model/cache-object.mjs +0 -3
- package/esm2022/sharepoint/model/file-request.mjs +0 -2
- package/esm2022/sharepoint/model/folder-request.mjs +0 -2
- package/esm2022/sharepoint/model/list-item.mjs +0 -2
- package/esm2022/sharepoint/model/list-items-request.mjs +0 -2
- package/esm2022/sharepoint/model/photo-item.mjs +0 -2
- package/esm2022/sharepoint/model/sharepoint-service-options.mjs +0 -3
- package/esm2022/sharepoint/model/uri-request.mjs +0 -2
- package/esm2022/sharepoint/model/user-request.mjs +0 -2
- package/esm2022/sharepoint/model/user.mjs +0 -2
- package/esm2022/sharepoint/pipes/user-photo-url.pipe.mjs +0 -37
- package/esm2022/sharepoint/services/sharepoint.service.mjs +0 -155
- package/esm2022/sharepoint/sharepoint.api.mjs +0 -17
- package/esm2022/sharepoint/sharepoint.module.mjs +0 -50
- package/esm2022/table/cleavelandprice-ngx-lib-table.mjs +0 -5
- package/esm2022/table/components/table/table.component.mjs +0 -141
- package/esm2022/table/model/table-column.mjs +0 -2
- package/esm2022/table/pipes/decimalPoints.mjs +0 -14
- package/esm2022/table/pipes/roundNumber.mjs +0 -14
- package/esm2022/table/table.api.mjs +0 -6
- package/esm2022/table/table.module.mjs +0 -78
- package/esm2022/upload/cleavelandprice-ngx-lib-upload.mjs +0 -5
- package/esm2022/upload/components/upload/upload.component.mjs +0 -32
- package/esm2022/upload/components/upload-dialog/upload-dialog.component.mjs +0 -98
- package/esm2022/upload/model/database-file-info.mjs +0 -2
- package/esm2022/upload/model/file-upload-request.mjs +0 -2
- package/esm2022/upload/model/filesystem-file-info.mjs +0 -2
- package/esm2022/upload/model/msg-file-content.mjs +0 -5
- package/esm2022/upload/model/upload-service-options-token.mjs +0 -3
- package/esm2022/upload/model/upload-service-options.mjs +0 -3
- package/esm2022/upload/model/upload-status.mjs +0 -2
- package/esm2022/upload/services/upload.service.mjs +0 -106
- package/esm2022/upload/upload.api.mjs +0 -11
- package/esm2022/upload/upload.module.mjs +0 -68
- package/esm2022/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs +0 -5
- package/esm2022/url-utilities/pipes/safe-resource-url.pipe.mjs +0 -19
- package/esm2022/url-utilities/pipes/safe-url.pipe.mjs +0 -19
- package/esm2022/url-utilities/pipes/uri-scheme.pipe.mjs +0 -106
- package/esm2022/url-utilities/url-utilities.api.mjs +0 -13
- package/esm2022/url-utilities/url-utilities.module.mjs +0 -34
- package/lib/model/app-path-config.d.ts +0 -10
- package/lib/model/app-type.d.ts +0 -5
- package/lib/model/app.d.ts +0 -16
- package/lib/model/caching-config.d.ts +0 -4
- package/lib/model/credentials.d.ts +0 -4
- package/lib/model/logging-config.d.ts +0 -6
- package/lib/model/service-options-token.d.ts +0 -3
- package/lib/model/service-options.d.ts +0 -4
- package/lib/ngx-lib.module.d.ts +0 -10
- package/lib/services/app-path-config.service.d.ts +0 -18
- package/lib/services/service-base.d.ts +0 -7
- package/msgraph/model/address.d.ts +0 -7
- package/msgraph/model/attendee.d.ts +0 -13
- package/msgraph/model/bulk-calendar-events.d.ts +0 -5
- package/msgraph/model/bulk-calendar-request.d.ts +0 -3
- package/msgraph/model/calendar-event.d.ts +0 -53
- package/msgraph/model/coordinates.d.ts +0 -7
- package/msgraph/model/email-address.d.ts +0 -4
- package/msgraph/model/location.d.ts +0 -12
- package/msgraph/model/online-meeting-info.d.ts +0 -9
- package/msgraph/model/patterned-recurrence.d.ts +0 -6
- package/msgraph/model/phone.d.ts +0 -4
- package/msgraph/model/recipient.d.ts +0 -4
- package/msgraph/model/recurrence-pattern.d.ts +0 -9
- package/msgraph/model/recurrence-range.d.ts +0 -7
- package/msgraph/model/response-status.d.ts +0 -4
- package/msgraph/model/room.d.ts +0 -22
- package/msgraph/model/user.d.ts +0 -29
- package/msgraph/msgraph.api.d.ts +0 -18
- package/msgraph/msgraph.module.d.ts +0 -8
- package/public_api.d.ts +0 -11
- package/quill/components/editor/editor.component.d.ts +0 -55
- package/quill/components/raw/raw.component.d.ts +0 -6
- package/quill/mention/components/editor/editor.component.d.ts +0 -15
- package/quill/mention/model/dialog-data.d.ts +0 -5
- package/quill/mention/quill-mention.api.d.ts +0 -3
- package/quill/mention/quill-mention.module.d.ts +0 -17
- package/quill/model/buttons.d.ts +0 -29
- package/quill/model/config.d.ts +0 -23
- package/quill/model/default-buttons.d.ts +0 -2
- package/quill/model/default-config.d.ts +0 -2
- package/quill/model/default-icons.d.ts +0 -2
- package/quill/model/default-tooltips.d.ts +0 -2
- package/quill/model/dialog-data.d.ts +0 -21
- package/quill/model/icons.d.ts +0 -6
- package/quill/model/tooltips.d.ts +0 -32
- package/quill/quill.api.d.ts +0 -12
- package/quill/quill.module.d.ts +0 -18
- package/sharepoint/components/user-photo/user-photo.component.d.ts +0 -15
- package/sharepoint/default-credentials.d.ts +0 -4
- package/sharepoint/model/base-item.d.ts +0 -4
- package/sharepoint/model/base-request-credential.d.ts +0 -4
- package/sharepoint/model/base-request.d.ts +0 -8
- package/sharepoint/model/cache-object.d.ts +0 -5
- package/sharepoint/model/file-request.d.ts +0 -4
- package/sharepoint/model/folder-request.d.ts +0 -4
- package/sharepoint/model/list-item.d.ts +0 -10
- package/sharepoint/model/list-items-request.d.ts +0 -5
- package/sharepoint/model/photo-item.d.ts +0 -11
- package/sharepoint/model/sharepoint-service-options.d.ts +0 -19
- package/sharepoint/model/uri-request.d.ts +0 -4
- package/sharepoint/model/user-request.d.ts +0 -4
- package/sharepoint/model/user.d.ts +0 -12
- package/sharepoint/pipes/user-photo-url.pipe.d.ts +0 -10
- package/sharepoint/services/sharepoint.service.d.ts +0 -20
- package/sharepoint/sharepoint.api.d.ts +0 -16
- package/sharepoint/sharepoint.module.d.ts +0 -13
- package/table/components/table/table.component.d.ts +0 -42
- package/table/model/table-column.d.ts +0 -70
- package/table/pipes/decimalPoints.d.ts +0 -7
- package/table/pipes/roundNumber.d.ts +0 -7
- package/table/table.api.d.ts +0 -5
- package/table/table.module.d.ts +0 -20
- package/upload/components/upload/upload.component.d.ts +0 -10
- package/upload/components/upload-dialog/upload-dialog.component.d.ts +0 -25
- package/upload/model/database-file-info.d.ts +0 -7
- package/upload/model/file-upload-request.d.ts +0 -6
- package/upload/model/filesystem-file-info.d.ts +0 -12
- package/upload/model/msg-file-content.d.ts +0 -21
- package/upload/model/upload-service-options-token.d.ts +0 -3
- package/upload/model/upload-service-options.d.ts +0 -14
- package/upload/model/upload-status.d.ts +0 -6
- package/upload/services/upload.service.d.ts +0 -21
- package/upload/upload.api.d.ts +0 -10
- package/upload/upload.module.d.ts +0 -17
- package/url-utilities/pipes/safe-resource-url.pipe.d.ts +0 -9
- package/url-utilities/pipes/safe-url.pipe.d.ts +0 -9
- package/url-utilities/pipes/uri-scheme.pipe.d.ts +0 -8
- package/url-utilities/url-utilities.api.d.ts +0 -8
- package/url-utilities/url-utilities.module.d.ts +0 -10
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { Component, input, output, viewChild } from '@angular/core';
|
|
2
|
-
import { MatPaginator } from '@angular/material/paginator';
|
|
3
|
-
import { MatSort, MatSortHeader } from '@angular/material/sort';
|
|
4
|
-
import { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';
|
|
5
|
-
import { DatePipe, DecimalPipe, NgClass, NgStyle } from '@angular/common';
|
|
6
|
-
import { FormsModule } from '@angular/forms';
|
|
7
|
-
import { MatButton, MatIconButton } from '@angular/material/button';
|
|
8
|
-
import { MatCheckbox } from '@angular/material/checkbox';
|
|
9
|
-
import { MatFormField, MatLabel, MatPrefix } from '@angular/material/form-field';
|
|
10
|
-
import { MatIcon } from '@angular/material/icon';
|
|
11
|
-
import { MatInput } from '@angular/material/input';
|
|
12
|
-
import { MatTooltip } from '@angular/material/tooltip';
|
|
13
|
-
import { RoundNumberPipe } from '../../pipes/roundNumber';
|
|
14
|
-
import { DecimalPointsPipe } from '../../pipes/decimalPoints';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "@angular/forms";
|
|
17
|
-
export class TableComponent {
|
|
18
|
-
constructor() {
|
|
19
|
-
//#region Inputs
|
|
20
|
-
this.title = input('');
|
|
21
|
-
this.tableData = input.required();
|
|
22
|
-
this.columns = input([]);
|
|
23
|
-
this.showPaginator = input(true);
|
|
24
|
-
this.showSearch = input(true);
|
|
25
|
-
this.maxTableHeight = input('50em');
|
|
26
|
-
this.shrinkTable = input(false);
|
|
27
|
-
this.paginatorSticky = input(false);
|
|
28
|
-
this.pageinatorDefaultIncrement = input(50);
|
|
29
|
-
this.sortingDataAccessor = input();
|
|
30
|
-
this.headerBackgroundColor = input('#ffffff');
|
|
31
|
-
this.headerTextColor = input('#000000');
|
|
32
|
-
//#endregion
|
|
33
|
-
this.buttonClicked = output();
|
|
34
|
-
this.isMobile = false;
|
|
35
|
-
this.paginator = viewChild(MatPaginator);
|
|
36
|
-
this.sort = viewChild(MatSort);
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
this.dataSource = new MatTableDataSource(this.tableData());
|
|
40
|
-
this.dataSource.sortingDataAccessor = this.sortingDataAccessor() ? this.sortingDataAccessor() : this.#setSortingDataAccessor();
|
|
41
|
-
this.columnNames = this.columns().map(c => c.field);
|
|
42
|
-
this.#setTablePageSizeOptions(this.pageinatorDefaultIncrement());
|
|
43
|
-
}
|
|
44
|
-
ngAfterViewInit() {
|
|
45
|
-
if (this.paginator() && !this.dataSource.paginator) {
|
|
46
|
-
this.dataSource.paginator = this.paginator();
|
|
47
|
-
}
|
|
48
|
-
if (this.sort() && !this.dataSource.sort) {
|
|
49
|
-
this.dataSource.sort = this.sort();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
searchFilterChange(event) {
|
|
53
|
-
const filterValue = event.target.value;
|
|
54
|
-
this.dataSource.filter = filterValue.trim().toLowerCase();
|
|
55
|
-
}
|
|
56
|
-
buttonClick(rowData, field) {
|
|
57
|
-
this.buttonClicked.emit({ rowData, field });
|
|
58
|
-
}
|
|
59
|
-
editableFieldChange(rowData, field, value) {
|
|
60
|
-
rowData[field] = value;
|
|
61
|
-
this.buttonClicked.emit({ rowData, field });
|
|
62
|
-
}
|
|
63
|
-
getDropdownFieldValue(option, field, nestedField) {
|
|
64
|
-
if (nestedField)
|
|
65
|
-
return option[field][nestedField];
|
|
66
|
-
else
|
|
67
|
-
return option[field];
|
|
68
|
-
}
|
|
69
|
-
getNestedFieldValue(rowData, nestedField) {
|
|
70
|
-
if (!nestedField) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
return rowData[nestedField];
|
|
74
|
-
}
|
|
75
|
-
getDoubleNestedFieldValue(rowData, field, nestedField) {
|
|
76
|
-
if (!field || !nestedField) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
return rowData[field][nestedField];
|
|
80
|
-
}
|
|
81
|
-
getTripleNestedFieldValue(rowData, field, childField, nestedField) {
|
|
82
|
-
if (!field || !childField || !nestedField) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
return rowData[field][childField][nestedField];
|
|
86
|
-
}
|
|
87
|
-
#setTablePageSizeOptions(defaultPageIncrement = 50) {
|
|
88
|
-
this.pageSizeOptions = [];
|
|
89
|
-
for (let i = defaultPageIncrement; i < this.dataSource.data.length; i = i + (defaultPageIncrement * 2)) {
|
|
90
|
-
this.pageSizeOptions.push(i);
|
|
91
|
-
}
|
|
92
|
-
this.pageSizeOptions.push(this.dataSource.data.length);
|
|
93
|
-
}
|
|
94
|
-
#setSortingDataAccessor() {
|
|
95
|
-
return (data, sortHeaderId) => {
|
|
96
|
-
const columnField = this.columns().filter(c => c.field === sortHeaderId)[0];
|
|
97
|
-
return columnField.nestedField ? this.getDoubleNestedFieldValue(data, columnField.field, columnField.nestedField) :
|
|
98
|
-
columnField.doubleNestedField ? this.getDoubleNestedFieldValue(data, columnField.doubleNestedField.field, columnField.doubleNestedField.nestedField) :
|
|
99
|
-
columnField.tripleNestedField ? this.getTripleNestedFieldValue(data, columnField.tripleNestedField.field, columnField.tripleNestedField.childField, columnField.tripleNestedField.nestedField) :
|
|
100
|
-
data[sortHeaderId];
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: TableComponent, isStandalone: true, selector: "lib-table", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, showPaginator: { classPropertyName: "showPaginator", publicName: "showPaginator", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, maxTableHeight: { classPropertyName: "maxTableHeight", publicName: "maxTableHeight", isSignal: true, isRequired: false, transformFunction: null }, shrinkTable: { classPropertyName: "shrinkTable", publicName: "shrinkTable", isSignal: true, isRequired: false, transformFunction: null }, paginatorSticky: { classPropertyName: "paginatorSticky", publicName: "paginatorSticky", isSignal: true, isRequired: false, transformFunction: null }, pageinatorDefaultIncrement: { classPropertyName: "pageinatorDefaultIncrement", publicName: "pageinatorDefaultIncrement", isSignal: true, isRequired: false, transformFunction: null }, sortingDataAccessor: { classPropertyName: "sortingDataAccessor", publicName: "sortingDataAccessor", isSignal: true, isRequired: false, transformFunction: null }, headerBackgroundColor: { classPropertyName: "headerBackgroundColor", publicName: "headerBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, headerTextColor: { classPropertyName: "headerTextColor", publicName: "headerTextColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClicked: "buttonClicked" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, isSignal: true }], ngImport: i0, template: "@if (showSearch()) {\r\n <div style=\"display: flex; gap: .75em;\">\r\n @if (title() !== '') {\r\n <h3>{{title()}}</h3>\r\n }\r\n\r\n <mat-form-field appearance=\"outline\" style=\"margin-bottom: -1em;\">\r\n <mat-label>Search</mat-label>\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input type=\"text\" matInput (keyup)=\"searchFilterChange($event)\">\r\n </mat-form-field>\r\n </div>\r\n}\r\n@else {\r\n <h3>{{title()}}</h3>\r\n}\r\n\r\n<div class=\"table-container\" [ngStyle]=\"{'max-height': maxTableHeight()}\" [class.shrink-table]=\"shrinkTable()\">\r\n <table mat-table [dataSource]=\"dataSource\" matSort>\r\n @for (column of columns(); track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth, 'background-color': headerBackgroundColor(), 'color': headerTextColor() }\">\r\n <div>{{ column.fieldColumnTitle }}</div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let data\" [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth }\">\r\n @if(column.isDate) {\r\n @if(column.isDate.showTime) {\r\n {{ data[column.field] | date:'short' }}\r\n }\r\n @else if(column.isDate.customFormat) {\r\n {{ data[column.field] | date:'' + column.isDate.customFormat + ''}}\r\n }\r\n @else {\r\n {{ data[column.field] | date:'shortDate' }}\r\n }\r\n }\r\n @else if (column.isNumber) {\r\n @if (column.isNumber.needsRounded) {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'0.0-0' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'0.0-0' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'0.0-0' }}\r\n }\r\n } @else {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'.2-2' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'.2-2' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'.2-2' }}\r\n }\r\n }\r\n }\r\n @else if (column.isCheckbox) {\r\n <mat-checkbox [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isCheckbox['isDisabled']\" />\r\n }\r\n @else if (column.isHyperlink) {\r\n <a [href]=\"data[column.isHyperlink.linkField]\" target=\"_blank\">\r\n {{ data[column.field] }}\r\n </a>\r\n }\r\n @else if (column.isButton) {\r\n @if (column.isButton.isIcon) {\r\n @if (column.isButton.isIcon.hideOnFieldValue) {\r\n <button mat-icon-button [matTooltip]=\"column.isButton.isIcon.toolTip\" [disabled]=\"column.isButton.isDisabled\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n <mat-icon [ngStyle]=\"{'color': column.isButton.isIcon.iconColor, 'display': data[column.field] === true ? 'default' : 'none'}\">{{column.isButton.isIcon.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else {\r\n <button mat-icon-button [matTooltip]=\"column.isButton.isIcon.toolTip\" [disabled]=\"column.isButton.isDisabled\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n <mat-icon [ngStyle]=\"{'color': column.isButton.isIcon.iconColor}\">{{column.isButton.isIcon.iconName}}</mat-icon>\r\n </button>\r\n }\r\n } @else if (column.isButton.isCheckbox) {\r\n <mat-checkbox [matTooltip]=\"column.isButton.isCheckbox.toolTip\"\r\n [(ngModel)]=\"data[column.field]\" (click)=\"buttonClick(data, column.field)\" />\r\n } @else {\r\n <button mat-raised-button [disabled]=\"column.isButton.isDisabled\"\r\n [color]=\"column.isButton.isDisabled ? undefined : 'primary'\"\r\n [class.button-extra-padding]=\"column.isButton.extraPadding\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n {{column.isButton.text}}\r\n </button>\r\n }\r\n }\r\n @else if (column.nestedField) {\r\n @if (column.fieldIconButton) {\r\n {{ getNestedFieldValue(data[column.field], column.nestedField) }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n {{ getNestedFieldValue(data[column.field], column.nestedField) }}\r\n }\r\n }\r\n @else if (column.doubleNestedField) {\r\n @if (column.fieldIconButton) {\r\n {{ getDoubleNestedFieldValue(data, column.doubleNestedField.field, column.doubleNestedField.nestedField) }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n {{ getDoubleNestedFieldValue(data, column.doubleNestedField.field, column.doubleNestedField.nestedField) }}\r\n }\r\n }\r\n @else if (column.tripleNestedField) {\r\n @if (column.fieldIconButton) {\r\n {{ getTripleNestedFieldValue(data, column.tripleNestedField.field, column.tripleNestedField.childField, column.tripleNestedField.nestedField) }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n {{ getTripleNestedFieldValue(data, column.tripleNestedField.field, column.tripleNestedField.childField, column.tripleNestedField.nestedField) }}\r\n }\r\n }\r\n @else if (column.isEditable) {\r\n @if (column.isEditable.type === 'textarea') {\r\n <textarea style=\"width: 100%;\" [rows]=\"3\" [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\"></textarea>\r\n }\r\n @else if (column.isEditable.type === 'dropdown' && column.isEditable.isDropdown) {\r\n <select [(ngModel)]=\"data[column.field]\" (change)=\"buttonClick(data, column.field)\">\r\n @for (item of column.isEditable.isDropdown.options; track $index) {\r\n <option\r\n [value]=\"getDropdownFieldValue(item, column.isEditable.isDropdown.value.field, column.isEditable.isDropdown.value.nestedField)\"\r\n >\r\n {{ getDropdownFieldValue(item, column.isEditable.isDropdown.displayField.field, column.isEditable.isDropdown.displayField.nestedField) }}\r\n </option>\r\n }\r\n </select>\r\n }\r\n @else if (column.isEditable.isNumber) {\r\n @if (column.isEditable.isNumber.needsRounded) {\r\n <input [ngModel]=\"data[column.field] | roundNumber\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else if (column.isEditable.isNumber.decimalPoints) {\r\n <input [ngModel]=\"data[column.field] | decimalPoints:column.isEditable.isNumber.decimalPoints\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else {\r\n <input [ngModel]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n }\r\n @else {\r\n <input [(ngModel)]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"text\">\r\n }\r\n }\r\n @else if (column.fieldIconButton) {\r\n {{ data[column.field] }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else {\r\n {{ data[column.field] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columnNames;\" class=\"table-row\"></tr>\r\n <tr mat-row *matNoDataRow>\r\n <td class=\"mat-cell\" colspan=\"9999\">\r\n No records exist.\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n @if (showPaginator()) {\r\n <mat-paginator [class.paginator-sticky]=\"paginatorSticky()\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons />\r\n }\r\n</div>\r\n", styles: [".mat-form-field{width:100%!important}.table-container{display:grid;grid-template-columns:1fr;max-height:50em;overflow:auto;margin:1em .5em .5em;text-align:center!important}.table-container .table{width:100%}:host ::ng-deep .mat-sort-header-container{display:flex;justify-content:center;margin-left:1.25em}td,th{text-align:center!important;vertical-align:middle!important}.shrink-table .mat-mdc-unelevated-button{line-height:1.75em}.shrink-table .mat-mdc-outlined-button{line-height:1.5em;height:1.5em}.shrink-table .mat-mdc-row:hover{background-color:#8f8f8f18;font-weight:700}.shrink-table .mat-mdc-row,tr.mat-row{min-height:1.5em;height:1.5em}.shrink-table .mat-mdc-header-row{min-height:40px}.shrink-table tr.mat-mdc-header-row{height:1.5em;border-radius:5px}.shrink-table .mat-column-tools{min-width:225px;max-width:225px}.shrink-table .mat-mdc-header-cell{font-weight:700;padding:0}.paginator-sticky{bottom:0;position:sticky;z-index:10}.button-extra-padding{padding-top:1.75em;padding-bottom:1.75em}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: RoundNumberPipe, name: "roundNumber" }, { kind: "pipe", type: DecimalPointsPipe, name: "decimalPoints" }] }); }
|
|
105
|
-
}
|
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableComponent, decorators: [{
|
|
107
|
-
type: Component,
|
|
108
|
-
args: [{ selector: 'lib-table', imports: [
|
|
109
|
-
DatePipe,
|
|
110
|
-
DecimalPipe,
|
|
111
|
-
FormsModule,
|
|
112
|
-
MatButton,
|
|
113
|
-
MatCell,
|
|
114
|
-
MatCellDef,
|
|
115
|
-
MatCheckbox,
|
|
116
|
-
MatColumnDef,
|
|
117
|
-
MatFormField,
|
|
118
|
-
MatHeaderCell,
|
|
119
|
-
MatHeaderCellDef,
|
|
120
|
-
MatHeaderRow,
|
|
121
|
-
MatHeaderRowDef,
|
|
122
|
-
MatIcon,
|
|
123
|
-
MatIconButton,
|
|
124
|
-
MatInput,
|
|
125
|
-
MatLabel,
|
|
126
|
-
MatNoDataRow,
|
|
127
|
-
MatPaginator,
|
|
128
|
-
MatPrefix,
|
|
129
|
-
MatRow,
|
|
130
|
-
MatRowDef,
|
|
131
|
-
MatSort,
|
|
132
|
-
MatSortHeader,
|
|
133
|
-
MatTable,
|
|
134
|
-
MatTooltip,
|
|
135
|
-
NgClass,
|
|
136
|
-
NgStyle,
|
|
137
|
-
RoundNumberPipe,
|
|
138
|
-
DecimalPointsPipe
|
|
139
|
-
], standalone: true, template: "@if (showSearch()) {\r\n <div style=\"display: flex; gap: .75em;\">\r\n @if (title() !== '') {\r\n <h3>{{title()}}</h3>\r\n }\r\n\r\n <mat-form-field appearance=\"outline\" style=\"margin-bottom: -1em;\">\r\n <mat-label>Search</mat-label>\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input type=\"text\" matInput (keyup)=\"searchFilterChange($event)\">\r\n </mat-form-field>\r\n </div>\r\n}\r\n@else {\r\n <h3>{{title()}}</h3>\r\n}\r\n\r\n<div class=\"table-container\" [ngStyle]=\"{'max-height': maxTableHeight()}\" [class.shrink-table]=\"shrinkTable()\">\r\n <table mat-table [dataSource]=\"dataSource\" matSort>\r\n @for (column of columns(); track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth, 'background-color': headerBackgroundColor(), 'color': headerTextColor() }\">\r\n <div>{{ column.fieldColumnTitle }}</div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let data\" [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth }\">\r\n @if(column.isDate) {\r\n @if(column.isDate.showTime) {\r\n {{ data[column.field] | date:'short' }}\r\n }\r\n @else if(column.isDate.customFormat) {\r\n {{ data[column.field] | date:'' + column.isDate.customFormat + ''}}\r\n }\r\n @else {\r\n {{ data[column.field] | date:'shortDate' }}\r\n }\r\n }\r\n @else if (column.isNumber) {\r\n @if (column.isNumber.needsRounded) {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'0.0-0' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'0.0-0' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'0.0-0' }}\r\n }\r\n } @else {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'.2-2' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'.2-2' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'.2-2' }}\r\n }\r\n }\r\n }\r\n @else if (column.isCheckbox) {\r\n <mat-checkbox [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isCheckbox['isDisabled']\" />\r\n }\r\n @else if (column.isHyperlink) {\r\n <a [href]=\"data[column.isHyperlink.linkField]\" target=\"_blank\">\r\n {{ data[column.field] }}\r\n </a>\r\n }\r\n @else if (column.isButton) {\r\n @if (column.isButton.isIcon) {\r\n @if (column.isButton.isIcon.hideOnFieldValue) {\r\n <button mat-icon-button [matTooltip]=\"column.isButton.isIcon.toolTip\" [disabled]=\"column.isButton.isDisabled\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n <mat-icon [ngStyle]=\"{'color': column.isButton.isIcon.iconColor, 'display': data[column.field] === true ? 'default' : 'none'}\">{{column.isButton.isIcon.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else {\r\n <button mat-icon-button [matTooltip]=\"column.isButton.isIcon.toolTip\" [disabled]=\"column.isButton.isDisabled\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n <mat-icon [ngStyle]=\"{'color': column.isButton.isIcon.iconColor}\">{{column.isButton.isIcon.iconName}}</mat-icon>\r\n </button>\r\n }\r\n } @else if (column.isButton.isCheckbox) {\r\n <mat-checkbox [matTooltip]=\"column.isButton.isCheckbox.toolTip\"\r\n [(ngModel)]=\"data[column.field]\" (click)=\"buttonClick(data, column.field)\" />\r\n } @else {\r\n <button mat-raised-button [disabled]=\"column.isButton.isDisabled\"\r\n [color]=\"column.isButton.isDisabled ? undefined : 'primary'\"\r\n [class.button-extra-padding]=\"column.isButton.extraPadding\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n {{column.isButton.text}}\r\n </button>\r\n }\r\n }\r\n @else if (column.nestedField) {\r\n @if (column.fieldIconButton) {\r\n {{ getNestedFieldValue(data[column.field], column.nestedField) }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n {{ getNestedFieldValue(data[column.field], column.nestedField) }}\r\n }\r\n }\r\n @else if (column.doubleNestedField) {\r\n @if (column.fieldIconButton) {\r\n {{ getDoubleNestedFieldValue(data, column.doubleNestedField.field, column.doubleNestedField.nestedField) }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n {{ getDoubleNestedFieldValue(data, column.doubleNestedField.field, column.doubleNestedField.nestedField) }}\r\n }\r\n }\r\n @else if (column.tripleNestedField) {\r\n @if (column.fieldIconButton) {\r\n {{ getTripleNestedFieldValue(data, column.tripleNestedField.field, column.tripleNestedField.childField, column.tripleNestedField.nestedField) }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else\r\n {\r\n {{ getTripleNestedFieldValue(data, column.tripleNestedField.field, column.tripleNestedField.childField, column.tripleNestedField.nestedField) }}\r\n }\r\n }\r\n @else if (column.isEditable) {\r\n @if (column.isEditable.type === 'textarea') {\r\n <textarea style=\"width: 100%;\" [rows]=\"3\" [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\"></textarea>\r\n }\r\n @else if (column.isEditable.type === 'dropdown' && column.isEditable.isDropdown) {\r\n <select [(ngModel)]=\"data[column.field]\" (change)=\"buttonClick(data, column.field)\">\r\n @for (item of column.isEditable.isDropdown.options; track $index) {\r\n <option\r\n [value]=\"getDropdownFieldValue(item, column.isEditable.isDropdown.value.field, column.isEditable.isDropdown.value.nestedField)\"\r\n >\r\n {{ getDropdownFieldValue(item, column.isEditable.isDropdown.displayField.field, column.isEditable.isDropdown.displayField.nestedField) }}\r\n </option>\r\n }\r\n </select>\r\n }\r\n @else if (column.isEditable.isNumber) {\r\n @if (column.isEditable.isNumber.needsRounded) {\r\n <input [ngModel]=\"data[column.field] | roundNumber\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else if (column.isEditable.isNumber.decimalPoints) {\r\n <input [ngModel]=\"data[column.field] | decimalPoints:column.isEditable.isNumber.decimalPoints\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else {\r\n <input [ngModel]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n }\r\n @else {\r\n <input [(ngModel)]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"text\">\r\n }\r\n }\r\n @else if (column.fieldIconButton) {\r\n {{ data[column.field] }}\r\n\r\n <button mat-icon-button [matTooltip]=\"column.fieldIconButton.toolTip\"\r\n (click)=\"buttonClick(data, column.field)\">\r\n <mat-icon>{{column.fieldIconButton.iconName}}</mat-icon>\r\n </button>\r\n }\r\n @else {\r\n {{ data[column.field] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columnNames;\" class=\"table-row\"></tr>\r\n <tr mat-row *matNoDataRow>\r\n <td class=\"mat-cell\" colspan=\"9999\">\r\n No records exist.\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n @if (showPaginator()) {\r\n <mat-paginator [class.paginator-sticky]=\"paginatorSticky()\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons />\r\n }\r\n</div>\r\n", styles: [".mat-form-field{width:100%!important}.table-container{display:grid;grid-template-columns:1fr;max-height:50em;overflow:auto;margin:1em .5em .5em;text-align:center!important}.table-container .table{width:100%}:host ::ng-deep .mat-sort-header-container{display:flex;justify-content:center;margin-left:1.25em}td,th{text-align:center!important;vertical-align:middle!important}.shrink-table .mat-mdc-unelevated-button{line-height:1.75em}.shrink-table .mat-mdc-outlined-button{line-height:1.5em;height:1.5em}.shrink-table .mat-mdc-row:hover{background-color:#8f8f8f18;font-weight:700}.shrink-table .mat-mdc-row,tr.mat-row{min-height:1.5em;height:1.5em}.shrink-table .mat-mdc-header-row{min-height:40px}.shrink-table tr.mat-mdc-header-row{height:1.5em;border-radius:5px}.shrink-table .mat-column-tools{min-width:225px;max-width:225px}.shrink-table .mat-mdc-header-cell{font-weight:700;padding:0}.paginator-sticky{bottom:0;position:sticky;z-index:10}.button-extra-padding{padding-top:1.75em;padding-bottom:1.75em}\n"] }]
|
|
140
|
-
}] });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNNLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFD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d0JBQ1YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsaUJBQWlCO3FCQUNwQixjQUNXLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgTWF0U29ydEhlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDZWxsLCBNYXRDZWxsRGVmLCBNYXRDb2x1bW5EZWYsIE1hdEhlYWRlckNlbGwsIE1hdEhlYWRlckNlbGxEZWYsIE1hdEhlYWRlclJvdywgTWF0SGVhZGVyUm93RGVmLCBNYXROb0RhdGFSb3csIE1hdFJvdywgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRQcmVmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL3RhYmxlLWNvbHVtbic7XHJcbmltcG9ydCB7IFJvdW5kTnVtYmVyUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3JvdW5kTnVtYmVyJztcclxuaW1wb3J0IHsgRGVjaW1hbFBvaW50c1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9kZWNpbWFsUG9pbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItdGFibGUnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIERhdGVQaXBlLFxyXG4gICAgICAgIERlY2ltYWxQaXBlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEJ1dHRvbixcclxuICAgICAgICBNYXRDZWxsLFxyXG4gICAgICAgIE1hdENlbGxEZWYsXHJcbiAgICAgICAgTWF0Q2hlY2tib3gsXHJcbiAgICAgICAgTWF0Q29sdW1uRGVmLFxyXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcclxuICAgICAgICBNYXRIZWFkZXJDZWxsLFxyXG4gICAgICAgIE1hdEhlYWRlckNlbGxEZWYsXHJcbiAgICAgICAgTWF0SGVhZGVyUm93LFxyXG4gICAgICAgIE1hdEhlYWRlclJvd0RlZixcclxuICAgICAgICBNYXRJY29uLFxyXG4gICAgICAgIE1hdEljb25CdXR0b24sXHJcbiAgICAgICAgTWF0SW5wdXQsXHJcbiAgICAgICAgTWF0TGFiZWwsXHJcbiAgICAgICAgTWF0Tm9EYXRhUm93LFxyXG4gICAgICAgIE1hdFBhZ2luYXRvcixcclxuICAgICAgICBNYXRQcmVmaXgsXHJcbiAgICAgICAgTWF0Um93LFxyXG4gICAgICAgIE1hdFJvd0RlZixcclxuICAgICAgICBNYXRTb3J0LFxyXG4gICAgICAgIE1hdFNvcnRIZWFkZXIsXHJcbiAgICAgICAgTWF0VGFibGUsXHJcbiAgICAgICAgTWF0VG9vbHRpcCxcclxuICAgICAgICBOZ0NsYXNzLFxyXG4gICAgICAgIE5nU3R5bGUsXHJcbiAgICAgICAgUm91bmROdW1iZXJQaXBlLFxyXG4gICAgICAgIERlY2ltYWxQb2ludHNQaXBlXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICB0aXRsZSA9IGlucHV0KCcnKTtcclxuICB0YWJsZURhdGEgPSBpbnB1dC5yZXF1aXJlZDxhbnlbXT4oKTtcclxuICBjb2x1bW5zID0gaW5wdXQ8VGFibGVDb2x1bW5bXT4oW10pO1xyXG4gIHNob3dQYWdpbmF0b3IgPSBpbnB1dCh0cnVlKTtcclxuICBzaG93U2VhcmNoID0gaW5wdXQodHJ1ZSk7XHJcbiAgbWF4VGFibGVIZWlnaHQgPSBpbnB1dCgnNTBlbScpO1xyXG4gIHNocmlua1RhYmxlID0gaW5wdXQoZmFsc2UpO1xyXG4gIHBhZ2luYXRvclN0aWNreSA9IGlucHV0KGZhbHNlKTtcclxuICBwYWdlaW5hdG9yRGVmYXVsdEluY3JlbWVudCA9IGlucHV0KDUwKTtcclxuICBzb3J0aW5nRGF0YUFjY2Vzc29yID0gaW5wdXQ8KGRhdGE6IGFueSwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHN0cmluZz4oKTtcclxuICBoZWFkZXJCYWNrZ3JvdW5kQ29sb3IgPSBpbnB1dCgnI2ZmZmZmZicpO1xyXG4gIGhlYWRlclRleHRDb2xvciA9IGlucHV0KCcjMDAwMDAwJyk7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGJ1dHRvbkNsaWNrZWQgPSBvdXRwdXQ8eyByb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgaXNNb2JpbGUgPSBmYWxzZTtcclxuICBkYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgcGFnZVNpemVPcHRpb25zITogbnVtYmVyW107IC8vID0gWzEwLCAyMCwgMTAwLCA1MDBdO1xyXG4gIGNvbHVtbk5hbWVzITogc3RyaW5nW107XHJcblxyXG4gIHBhZ2luYXRvciA9IHZpZXdDaGlsZChNYXRQYWdpbmF0b3IpO1xyXG4gIHNvcnQgPSB2aWV3Q2hpbGQoTWF0U29ydCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLnRhYmxlRGF0YSgpKTtcclxuXHJcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IHRoaXMuc29ydGluZ0RhdGFBY2Nlc3NvcigpID8gdGhpcy5zb3J0aW5nRGF0YUFjY2Vzc29yKCkhIDogdGhpcy4jc2V0U29ydGluZ0RhdGFBY2Nlc3NvcigpO1xyXG5cclxuICAgIHRoaXMuY29sdW1uTmFtZXMgPSB0aGlzLmNvbHVtbnMoKS5tYXAoYyA9PiBjLmZpZWxkKTtcclxuXHJcbiAgICB0aGlzLiNzZXRUYWJsZVBhZ2VTaXplT3B0aW9ucyh0aGlzLnBhZ2VpbmF0b3JEZWZhdWx0SW5jcmVtZW50KCkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKCkgJiYgIXRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yKCkhO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc29ydCgpICYmICF0aGlzLmRhdGFTb3VyY2Uuc29ydCkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydCgpITtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlYXJjaEZpbHRlckNoYW5nZShldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5idXR0b25DbGlja2VkLmVtaXQoeyByb3dEYXRhLCBmaWVsZCB9KTtcclxuICB9XHJcblxyXG4gIGVkaXRhYmxlRmllbGRDaGFuZ2Uocm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICByb3dEYXRhW2ZpZWxkXSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuYnV0dG9uQ2xpY2tlZC5lbWl0KHsgcm93RGF0YSwgZmllbGQgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREcm9wZG93bkZpZWxkVmFsdWUob3B0aW9uOiBhbnksIGZpZWxkOiBzdHJpbmcsIG5lc3RlZEZpZWxkPzogc3RyaW5nKSB7XHJcbiAgICBpZiAobmVzdGVkRmllbGQpXHJcbiAgICAgIHJldHVybiBvcHRpb25bZmllbGRdW25lc3RlZEZpZWxkXTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIG9wdGlvbltmaWVsZF07XHJcbiAgfVxyXG5cclxuICBnZXROZXN0ZWRGaWVsZFZhbHVlKHJvd0RhdGE6IGFueSwgbmVzdGVkRmllbGQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFuZXN0ZWRGaWVsZCkgeyByZXR1cm47IH1cclxuXHJcbiAgICByZXR1cm4gcm93RGF0YVtuZXN0ZWRGaWVsZF07XHJcbiAgfVxyXG5cclxuICBnZXREb3VibGVOZXN0ZWRGaWVsZFZhbHVlKHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZywgbmVzdGVkRmllbGQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFmaWVsZCB8fCAhbmVzdGVkRmllbGQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgcmV0dXJuIHJvd0RhdGFbZmllbGRdW25lc3RlZEZpZWxkXTtcclxuICB9XHJcblxyXG4gIGdldFRyaXBsZU5lc3RlZEZpZWxkVmFsdWUocm93RGF0YTogYW55LCBmaWVsZDogc3RyaW5nLCBjaGlsZEZpZWxkOiBzdHJpbmcsIG5lc3RlZEZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGlmICghZmllbGQgfHwgIWNoaWxkRmllbGQgfHwgIW5lc3RlZEZpZWxkKSB7IHJldHVybjsgfVxyXG5cclxuICAgIHJldHVybiByb3dEYXRhW2ZpZWxkXVtjaGlsZEZpZWxkXVtuZXN0ZWRGaWVsZF07XHJcbiAgfVxyXG5cclxuICAjc2V0VGFibGVQYWdlU2l6ZU9wdGlvbnMoZGVmYXVsdFBhZ2VJbmNyZW1lbnQ6IG51bWJlciA9IDUwKSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSBkZWZhdWx0UGFnZUluY3JlbWVudDsgaSA8IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDsgaSA9IGkgKyAoZGVmYXVsdFBhZ2VJbmNyZW1lbnQgKiAyKSkge1xyXG4gICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucy5wdXNoKGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gICNzZXRTb3J0aW5nRGF0YUFjY2Vzc29yKCkge1xyXG4gICAgcmV0dXJuIChkYXRhOiBhbnksIHNvcnRIZWFkZXJJZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbkZpZWxkID0gdGhpcy5jb2x1bW5zKCkuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gc29ydEhlYWRlcklkKVswXTtcclxuXHJcbiAgICAgIHJldHVybiBjb2x1bW5GaWVsZC5uZXN0ZWRGaWVsZCA/IHRoaXMuZ2V0RG91YmxlTmVzdGVkRmllbGRWYWx1ZShkYXRhLCBjb2x1bW5GaWVsZC5maWVsZCwgY29sdW1uRmllbGQubmVzdGVkRmllbGQpIDpcclxuICAgICAgICBjb2x1bW5GaWVsZC5kb3VibGVOZXN0ZWRGaWVsZCA/IHRoaXMuZ2V0RG91YmxlTmVzdGVkRmllbGRWYWx1ZShkYXRhLCBjb2x1bW5GaWVsZC5kb3VibGVOZXN0ZWRGaWVsZC5maWVsZCwgY29sdW1uRmllbGQuZG91YmxlTmVzdGVkRmllbGQubmVzdGVkRmllbGQpIDpcclxuICAgICAgICBjb2x1bW5GaWVsZC50cmlwbGVOZXN0ZWRGaWVsZCA/IHRoaXMuZ2V0VHJpcGxlTmVzdGVkRmllbGRWYWx1ZShkYXRhLCBjb2x1bW5GaWVsZC50cmlwbGVOZXN0ZWRGaWVsZC5maWVsZCwgY29sdW1uRmllbGQudHJpcGxlTmVzdGVkRmllbGQuY2hpbGRGaWVsZCwgY29sdW1uRmllbGQudHJpcGxlTmVzdGVkRmllbGQubmVzdGVkRmllbGQpIDpcclxuICAgICAgICBkYXRhW3NvcnRIZWFkZXJJZF07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoc2hvd1NlYXJjaCgpKSB7XHJcbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogLjc1ZW07XCI+XHJcbiAgICBAaWYgKHRpdGxlKCkgIT09ICcnKSB7XHJcbiAgICAgIDxoMz57e3RpdGxlKCl9fTwvaDM+XHJcbiAgICB9XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAtMWVtO1wiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IChrZXl1cCk9XCJzZWFyY2hGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxufVxyXG5AZWxzZSB7XHJcbiAgPGgzPnt7dGl0bGUoKX19PC9oMz5cclxufVxyXG5cclxuPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6IG1heFRhYmxlSGVpZ2h0KCl9XCIgW2NsYXNzLnNocmluay10YWJsZV09XCJzaHJpbmtUYWJsZSgpXCI+XHJcbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4pIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmZpZWxkXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBbY2xhc3MuaGlkZS1tb2JpbGVdPVwiY29sdW1uLmhpZGVPbk1vYmlsZSAmJiBpc01vYmlsZVwiIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogY29sdW1uLmNvbHVtbldpZHRoLCAnYmFja2dyb3VuZC1jb2xvcic6IGhlYWRlckJhY2tncm91bmRDb2xvcigpLCAnY29sb3InOiBoZWFkZXJUZXh0Q29sb3IoKSB9XCI+XHJcbiAgICAgICAgICAgIDxkaXY+e3sgY29sdW1uLmZpZWxkQ29sdW1uVGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGRhdGFcIiBbY2xhc3MuaGlkZS1tb2JpbGVdPVwiY29sdW1uLmhpZGVPbk1vYmlsZSAmJiBpc01vYmlsZVwiIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogY29sdW1uLmNvbHVtbldpZHRoIH1cIj5cclxuICAgICAgICAgICAgQGlmKGNvbHVtbi5pc0RhdGUpIHtcclxuICAgICAgICAgICAgICBAaWYoY29sdW1uLmlzRGF0ZS5zaG93VGltZSkge1xyXG4gICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIHwgZGF0ZTonc2hvcnQnIH19XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBlbHNlIGlmKGNvbHVtbi5pc0RhdGUuY3VzdG9tRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5maWVsZF0gfCBkYXRlOicnICsgY29sdW1uLmlzRGF0ZS5jdXN0b21Gb3JtYXQgKyAnJ319XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IGRhdGU6J3Nob3J0RGF0ZScgfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc051bWJlcikge1xyXG4gICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzTnVtYmVyLm5lZWRzUm91bmRlZCkge1xyXG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaXNOdW1iZXIucGVyY2VudGFnZSkge1xyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5maWVsZF0gfCBudW1iZXI6JzAuMC0wJyB9fSVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNOdW1iZXIubW9uZXkpIHtcclxuICAgICAgICAgICAgICAgICAgJHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IG51bWJlcjonMC4wLTAnIH19XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IG51bWJlcjonMC4wLTAnIH19XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5pc051bWJlci5wZXJjZW50YWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IG51bWJlcjonLjItMicgfX0lXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLmlzTnVtYmVyLm1vbmV5KSB7XHJcbiAgICAgICAgICAgICAgICAgICR7eyBkYXRhW2NvbHVtbi5maWVsZF0gfCBudW1iZXI6Jy4yLTInIH19XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IG51bWJlcjonLjItMicgfX1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImRhdGFbY29sdW1uLmZpZWxkXVwiIFtkaXNhYmxlZF09XCJjb2x1bW4uaXNDaGVja2JveFsnaXNEaXNhYmxlZCddXCIgLz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLmlzSHlwZXJsaW5rKSB7XHJcbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiZGF0YVtjb2x1bW4uaXNIeXBlcmxpbmsubGlua0ZpZWxkXVwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIH19XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNCdXR0b24pIHtcclxuICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5pc0J1dHRvbi5pc0ljb24pIHtcclxuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzQnV0dG9uLmlzSWNvbi5oaWRlT25GaWVsZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRUb29sdGlwXT1cImNvbHVtbi5pc0J1dHRvbi5pc0ljb24udG9vbFRpcFwiIFtkaXNhYmxlZF09XCJjb2x1bW4uaXNCdXR0b24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5pc0J1dHRvbi5pc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogY29sdW1uLmlzQnV0dG9uLmlzSWNvbi5pY29uQ29sb3IsICdkaXNwbGF5JzogZGF0YVtjb2x1bW4uZmllbGRdID09PSB0cnVlID8gJ2RlZmF1bHQnIDogJ25vbmUnfVwiPnt7Y29sdW1uLmlzQnV0dG9uLmlzSWNvbi5pY29uTmFtZX19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRUb29sdGlwXT1cImNvbHVtbi5pc0J1dHRvbi5pc0ljb24udG9vbFRpcFwiIFtkaXNhYmxlZF09XCJjb2x1bW4uaXNCdXR0b24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5pc0J1dHRvbi5pc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogY29sdW1uLmlzQnV0dG9uLmlzSWNvbi5pY29uQ29sb3J9XCI+e3tjb2x1bW4uaXNCdXR0b24uaXNJY29uLmljb25OYW1lfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjb2x1bW4uaXNCdXR0b24uaXNDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbbWF0VG9vbHRpcF09XCJjb2x1bW4uaXNCdXR0b24uaXNDaGVja2JveC50b29sVGlwXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhW2NvbHVtbi5maWVsZF1cIiAoY2xpY2spPVwiYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiIC8+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCJjb2x1bW4uaXNCdXR0b24uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJjb2x1bW4uaXNCdXR0b24uaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwcmltYXJ5J1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5idXR0b24tZXh0cmEtcGFkZGluZ109XCJjb2x1bW4uaXNCdXR0b24uZXh0cmFQYWRkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5pc0J1dHRvbi5pc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2NvbHVtbi5pc0J1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLm5lc3RlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uZmllbGRJY29uQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICB7eyBnZXROZXN0ZWRGaWVsZFZhbHVlKGRhdGFbY29sdW1uLmZpZWxkXSwgY29sdW1uLm5lc3RlZEZpZWxkKSB9fVxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRUb29sdGlwXT1cImNvbHVtbi5maWVsZEljb25CdXR0b24udG9vbFRpcFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGljayhkYXRhLCBjb2x1bW4uZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e2NvbHVtbi5maWVsZEljb25CdXR0b24uaWNvbk5hbWV9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGVsc2VcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB7eyBnZXROZXN0ZWRGaWVsZFZhbHVlKGRhdGFbY29sdW1uLmZpZWxkXSwgY29sdW1uLm5lc3RlZEZpZWxkKSB9fVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLmRvdWJsZU5lc3RlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uZmllbGRJY29uQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICB7eyBnZXREb3VibGVOZXN0ZWRGaWVsZFZhbHVlKGRhdGEsIGNvbHVtbi5kb3VibGVOZXN0ZWRGaWVsZC5maWVsZCwgY29sdW1uLmRvdWJsZU5lc3RlZEZpZWxkLm5lc3RlZEZpZWxkKSB9fVxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRUb29sdGlwXT1cImNvbHVtbi5maWVsZEljb25CdXR0b24udG9vbFRpcFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGljayhkYXRhLCBjb2x1bW4uZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e2NvbHVtbi5maWVsZEljb25CdXR0b24uaWNvbk5hbWV9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGVsc2VcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB7eyBnZXREb3VibGVOZXN0ZWRGaWVsZFZhbHVlKGRhdGEsIGNvbHVtbi5kb3VibGVOZXN0ZWRGaWVsZC5maWVsZCwgY29sdW1uLmRvdWJsZU5lc3RlZEZpZWxkLm5lc3RlZEZpZWxkKSB9fVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLnRyaXBsZU5lc3RlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uZmllbGRJY29uQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRUcmlwbGVOZXN0ZWRGaWVsZFZhbHVlKGRhdGEsIGNvbHVtbi50cmlwbGVOZXN0ZWRGaWVsZC5maWVsZCwgY29sdW1uLnRyaXBsZU5lc3RlZEZpZWxkLmNoaWxkRmllbGQsIGNvbHVtbi50cmlwbGVOZXN0ZWRGaWVsZC5uZXN0ZWRGaWVsZCkgfX1cclxuXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJjb2x1bW4uZmllbGRJY29uQnV0dG9uLnRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tjb2x1bW4uZmllbGRJY29uQnV0dG9uLmljb25OYW1lfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBlbHNlXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAge3sgZ2V0VHJpcGxlTmVzdGVkRmllbGRWYWx1ZShkYXRhLCBjb2x1bW4udHJpcGxlTmVzdGVkRmllbGQuZmllbGQsIGNvbHVtbi50cmlwbGVOZXN0ZWRGaWVsZC5jaGlsZEZpZWxkLCBjb2x1bW4udHJpcGxlTmVzdGVkRmllbGQubmVzdGVkRmllbGQpIH19XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNFZGl0YWJsZSkge1xyXG4gICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzRWRpdGFibGUudHlwZSA9PT0gJ3RleHRhcmVhJykge1xyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3Jvd3NdPVwiM1wiIFsobmdNb2RlbCldPVwiZGF0YVtjb2x1bW4uZmllbGRdXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc0VkaXRhYmxlLnR5cGUgPT09ICdkcm9wZG93bicgJiYgY29sdW1uLmlzRWRpdGFibGUuaXNEcm9wZG93bikge1xyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImRhdGFbY29sdW1uLmZpZWxkXVwiIChjaGFuZ2UpPVwiYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGNvbHVtbi5pc0VkaXRhYmxlLmlzRHJvcGRvd24ub3B0aW9uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldERyb3Bkb3duRmllbGRWYWx1ZShpdGVtLCBjb2x1bW4uaXNFZGl0YWJsZS5pc0Ryb3Bkb3duLnZhbHVlLmZpZWxkLCBjb2x1bW4uaXNFZGl0YWJsZS5pc0Ryb3Bkb3duLnZhbHVlLm5lc3RlZEZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RHJvcGRvd25GaWVsZFZhbHVlKGl0ZW0sIGNvbHVtbi5pc0VkaXRhYmxlLmlzRHJvcGRvd24uZGlzcGxheUZpZWxkLmZpZWxkLCBjb2x1bW4uaXNFZGl0YWJsZS5pc0Ryb3Bkb3duLmRpc3BsYXlGaWVsZC5uZXN0ZWRGaWVsZCkgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNFZGl0YWJsZS5pc051bWJlcikge1xyXG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaXNFZGl0YWJsZS5pc051bWJlci5uZWVkc1JvdW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cImRhdGFbY29sdW1uLmZpZWxkXSB8IHJvdW5kTnVtYmVyXCIgIHN0eWxlPVwid2lkdGg6IDU1JTtcIiAgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCIgdHlwZT1cIm51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc0VkaXRhYmxlLmlzTnVtYmVyLmRlY2ltYWxQb2ludHMpIHtcclxuICAgICAgICAgICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cImRhdGFbY29sdW1uLmZpZWxkXSB8IGRlY2ltYWxQb2ludHM6Y29sdW1uLmlzRWRpdGFibGUuaXNOdW1iZXIuZGVjaW1hbFBvaW50c1wiIChuZ01vZGVsQ2hhbmdlKT1cImVkaXRhYmxlRmllbGRDaGFuZ2UoZGF0YSwgY29sdW1uLmZpZWxkLCAkZXZlbnQpXCIgc3R5bGU9XCJ3aWR0aDogNTUlO1wiICBbZGlzYWJsZWRdPVwiY29sdW1uLmlzRWRpdGFibGUuZGlzYWJsZSAhPT0gdW5kZWZpbmVkICYmIGNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGVcIiB0eXBlPVwibnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdNb2RlbF09XCJkYXRhW2NvbHVtbi5maWVsZF1cIiAobmdNb2RlbENoYW5nZSk9XCJlZGl0YWJsZUZpZWxkQ2hhbmdlKGRhdGEsIGNvbHVtbi5maWVsZCwgJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDU1JTtcIiAgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCIgdHlwZT1cIm51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJkYXRhW2NvbHVtbi5maWVsZF1cIiAobmdNb2RlbENoYW5nZSk9XCJlZGl0YWJsZUZpZWxkQ2hhbmdlKGRhdGEsIGNvbHVtbi5maWVsZCwgJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDU1JTtcIiAgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5maWVsZEljb25CdXR0b24pIHtcclxuICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5maWVsZF0gfX1cclxuXHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdFRvb2x0aXBdPVwiY29sdW1uLmZpZWxkSWNvbkJ1dHRvbi50b29sVGlwXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGljayhkYXRhLCBjb2x1bW4uZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tjb2x1bW4uZmllbGRJY29uQnV0dG9uLmljb25OYW1lfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5maWVsZF0gfX1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5OYW1lczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbk5hbWVzO1wiIGNsYXNzPVwidGFibGUtcm93XCI+PC90cj5cclxuICAgICAgPHRyIG1hdC1yb3cgKm1hdE5vRGF0YVJvdz5cclxuICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiIGNvbHNwYW49XCI5OTk5XCI+XHJcbiAgICAgICAgICBObyByZWNvcmRzIGV4aXN0LlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIEBpZiAoc2hvd1BhZ2luYXRvcigpKSB7XHJcbiAgICAgIDxtYXQtcGFnaW5hdG9yIFtjbGFzcy5wYWdpbmF0b3Itc3RpY2t5XT1cInBhZ2luYXRvclN0aWNreSgpXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9ucyAvPlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL21vZGVsL3RhYmxlLWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbiB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBmaWVsZENvbHVtblRpdGxlOiBzdHJpbmc7XHJcbiAgZmllbGRJY29uQnV0dG9uPzogeyBpY29uTmFtZTogc3RyaW5nLCB0b29sVGlwOiBzdHJpbmcgfTtcclxuICBjb2x1bW5XaWR0aD86IHN0cmluZztcclxuXHJcbiAgaXNEYXRlPzogeyBzaG93VGltZTogYm9vbGVhbiwgY3VzdG9tRm9ybWF0Pzogc3RyaW5nIH07XHJcbiAgaXNQZXJjZW50PzogYm9vbGVhbjtcclxuXHJcbiAgaXNOdW1iZXI/OiB7IG5lZWRzUm91bmRlZDogYm9vbGVhbiwgcGVyY2VudGFnZT86IGJvb2xlYW4sIG1vbmV5PzogYm9vbGVhbiB9O1xyXG5cclxuICBpc0NoZWNrYm94PzogeyBpc0Rpc2FibGVkOiBib29sZWFuIH07XHJcblxyXG4gIGlzQnV0dG9uPzogeyBpc0Rpc2FibGVkOiBib29sZWFuLCB0ZXh0Pzogc3RyaW5nLCBpc0ljb24/OiB7IGljb25OYW1lOiBzdHJpbmcsIHRvb2xUaXA6IHN0cmluZywgaWNvbkNvbG9yPzogc3RyaW5nLCBoaWRlT25GaWVsZFZhbHVlPzogYm9vbGVhbiB9LCBpc0NoZWNrYm94PzogeyB0b29sVGlwOiBzdHJpbmcsIG11bHRpcGxlU2VsZWN0OiBib29sZWFuIH0sIGV4dHJhUGFkZGluZz86IGJvb2xlYW4gfTtcclxuXHJcbiAgaXNFZGl0YWJsZT86IHtcclxuICAgIHR5cGU6IHN0cmluZyxcclxuICAgIGRpc2FibGU/OiBib29sZWFuLFxyXG4gICAgaXNOdW1iZXI/OiB7IG5lZWRzUm91bmRlZDogYm9vbGVhbiwgZGVjaW1hbFBvaW50cz86IG51bWJlciB9LFxyXG4gICAgaXNEcm9wZG93bj86IHtcclxuICAgICAgb3B0aW9uczogYW55W10sXHJcbiAgICAgIHZhbHVlOiB7IGZpZWxkOiBzdHJpbmcsIG5lc3RlZEZpZWxkPzogc3RyaW5nIH0sXHJcbiAgICAgIGRpc3BsYXlGaWVsZDogeyBmaWVsZDogc3RyaW5nLCBuZXN0ZWRGaWVsZD86IHN0cmluZyB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGlkZU9uTW9iaWxlPzogYm9vbGVhbjtcclxuXHJcbiAgbmVzdGVkRmllbGQ/OiBzdHJpbmc7XHJcbiAgZG91YmxlTmVzdGVkRmllbGQ/OiB7IGZpZWxkOiBzdHJpbmcsIG5lc3RlZEZpZWxkOiBzdHJpbmcgfVxyXG4gIHRyaXBsZU5lc3RlZEZpZWxkPzogeyBmaWVsZDogc3RyaW5nLCBjaGlsZEZpZWxkOiBzdHJpbmcsIG5lc3RlZEZpZWxkOiBzdHJpbmcgfVxyXG5cclxuICBpc0h5cGVybGluaz86IHsgbGlua0ZpZWxkOiBzdHJpbmcgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Pipe } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DecimalPointsPipe {
|
|
4
|
-
transform(val, numberOfDecimalPoints) {
|
|
5
|
-
return parseFloat(val.toString()).toFixed(numberOfDecimalPoints);
|
|
6
|
-
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DecimalPointsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: DecimalPointsPipe, isStandalone: true, name: "decimalPoints" }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DecimalPointsPipe, decorators: [{
|
|
11
|
-
type: Pipe,
|
|
12
|
-
args: [{ name: 'decimalPoints', standalone: true }]
|
|
13
|
-
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbFBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3RhYmxlL3NyYy9waXBlcy9kZWNpbWFsUG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUdwRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFNBQVMsQ0FBQyxHQUFRLEVBQUUscUJBQTZCO1FBQy9DLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBSFUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBQaXBlKHsgbmFtZTogJ2RlY2ltYWxQb2ludHMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBEZWNpbWFsUG9pbnRzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm17XHJcbiAgdHJhbnNmb3JtKHZhbDogYW55LCBudW1iZXJPZkRlY2ltYWxQb2ludHM6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsLnRvU3RyaW5nKCkpLnRvRml4ZWQobnVtYmVyT2ZEZWNpbWFsUG9pbnRzKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Pipe } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class RoundNumberPipe {
|
|
4
|
-
transform(val) {
|
|
5
|
-
return Math.round(+val);
|
|
6
|
-
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: RoundNumberPipe, isStandalone: true, name: "roundNumber" }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundNumberPipe, decorators: [{
|
|
11
|
-
type: Pipe,
|
|
12
|
-
args: [{ name: 'roundNumber', standalone: true }]
|
|
13
|
-
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmROdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi90YWJsZS9zcmMvcGlwZXMvcm91bmROdW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFNBQVMsQ0FBQyxHQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBSFUsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdyb3VuZE51bWJlcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcclxuZXhwb3J0IGNsYXNzIFJvdW5kTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm17XHJcbiAgdHJhbnNmb3JtKHZhbDogYW55KSB7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZCgrdmFsKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './model/table-column';
|
|
2
|
-
export * from './components/table/table.component';
|
|
3
|
-
export * from './table.module';
|
|
4
|
-
export * from './pipes/roundNumber';
|
|
5
|
-
export * from './pipes/decimalPoints';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL3RhYmxlLmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsL3RhYmxlLWNvbHVtbic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcm91bmROdW1iZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2RlY2ltYWxQb2ludHMnO1xyXG4iXX0=
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
6
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
8
|
-
import { MatInputModule } from '@angular/material/input';
|
|
9
|
-
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
10
|
-
import { MatSortModule } from '@angular/material/sort';
|
|
11
|
-
import { MatTableModule } from '@angular/material/table';
|
|
12
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
13
|
-
import { TableComponent } from './components/table/table.component';
|
|
14
|
-
import { RoundNumberPipe } from './pipes/roundNumber';
|
|
15
|
-
import { DecimalPointsPipe } from './pipes/decimalPoints';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
export class TableModule {
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
19
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: TableModule, imports: [CommonModule,
|
|
20
|
-
FormsModule,
|
|
21
|
-
ReactiveFormsModule,
|
|
22
|
-
MatButtonModule,
|
|
23
|
-
MatCheckboxModule,
|
|
24
|
-
MatFormFieldModule,
|
|
25
|
-
MatInputModule,
|
|
26
|
-
MatTableModule,
|
|
27
|
-
MatSortModule,
|
|
28
|
-
MatPaginatorModule,
|
|
29
|
-
MatTooltipModule,
|
|
30
|
-
MatIconModule,
|
|
31
|
-
TableComponent,
|
|
32
|
-
RoundNumberPipe,
|
|
33
|
-
DecimalPointsPipe], exports: [TableComponent,
|
|
34
|
-
RoundNumberPipe,
|
|
35
|
-
DecimalPointsPipe] }); }
|
|
36
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableModule, imports: [CommonModule,
|
|
37
|
-
FormsModule,
|
|
38
|
-
ReactiveFormsModule,
|
|
39
|
-
MatButtonModule,
|
|
40
|
-
MatCheckboxModule,
|
|
41
|
-
MatFormFieldModule,
|
|
42
|
-
MatInputModule,
|
|
43
|
-
MatTableModule,
|
|
44
|
-
MatSortModule,
|
|
45
|
-
MatPaginatorModule,
|
|
46
|
-
MatTooltipModule,
|
|
47
|
-
MatIconModule,
|
|
48
|
-
TableComponent] }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableModule, decorators: [{
|
|
51
|
-
type: NgModule,
|
|
52
|
-
args: [{
|
|
53
|
-
declarations: [],
|
|
54
|
-
imports: [
|
|
55
|
-
CommonModule,
|
|
56
|
-
FormsModule,
|
|
57
|
-
ReactiveFormsModule,
|
|
58
|
-
MatButtonModule,
|
|
59
|
-
MatCheckboxModule,
|
|
60
|
-
MatFormFieldModule,
|
|
61
|
-
MatInputModule,
|
|
62
|
-
MatTableModule,
|
|
63
|
-
MatSortModule,
|
|
64
|
-
MatPaginatorModule,
|
|
65
|
-
MatTooltipModule,
|
|
66
|
-
MatIconModule,
|
|
67
|
-
TableComponent,
|
|
68
|
-
RoundNumberPipe,
|
|
69
|
-
DecimalPointsPipe
|
|
70
|
-
],
|
|
71
|
-
exports: [
|
|
72
|
-
TableComponent,
|
|
73
|
-
RoundNumberPipe,
|
|
74
|
-
DecimalPointsPipe
|
|
75
|
-
]
|
|
76
|
-
}]
|
|
77
|
-
}] });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQThCMUQsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLFlBeEJwQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUVuQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFFYixjQUFjO1lBQ2QsZUFBZTtZQUNmLGlCQUFpQixhQUdqQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGlCQUFpQjsrR0FHUixXQUFXLFlBeEJwQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUVuQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFFYixjQUFjOzsyRkFVTCxXQUFXO2tCQTVCdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFFbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBRWIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdW5kTnVtYmVyUGlwZSB9IGZyb20gJy4vcGlwZXMvcm91bmROdW1iZXInO1xyXG5pbXBvcnQgeyBEZWNpbWFsUG9pbnRzUGlwZSB9IGZyb20gJy4vcGlwZXMvZGVjaW1hbFBvaW50cyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG5cclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFNvcnRNb2R1bGUsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuICAgIFJvdW5kTnVtYmVyUGlwZSxcclxuICAgIERlY2ltYWxQb2ludHNQaXBlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuICAgIFJvdW5kTnVtYmVyUGlwZSxcclxuICAgIERlY2ltYWxQb2ludHNQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVNb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './upload.api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXZlbGFuZHByaWNlLW5neC1saWItdXBsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9jbGVhdmVsYW5kcHJpY2Utbmd4LWxpYi11cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQuYXBpJztcbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Component, inject, output } from '@angular/core';
|
|
2
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
-
import { MatButton } from '@angular/material/button';
|
|
4
|
-
import { UploadService } from './../../services/upload.service';
|
|
5
|
-
import { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class UploadComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.#dialogService = inject(MatDialog);
|
|
10
|
-
this.uploadService = inject(UploadService);
|
|
11
|
-
this.dialogClosed = output();
|
|
12
|
-
}
|
|
13
|
-
#dialogService;
|
|
14
|
-
openUploadDialog() {
|
|
15
|
-
this.#dialogService.open(UploadDialogComponent, { width: '50%' })
|
|
16
|
-
.afterClosed().subscribe(() => this.dialogClosed.emit());
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: UploadComponent, isStandalone: true, selector: "cp-upload", outputs: { dialogClosed: "dialogClosed" }, ngImport: i0, template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadService.options.uploadButtonText }}</button>', isInline: true, dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{
|
|
24
|
-
selector: 'cp-upload',
|
|
25
|
-
imports: [
|
|
26
|
-
MatButton
|
|
27
|
-
],
|
|
28
|
-
standalone: true,
|
|
29
|
-
template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadService.options.uploadButtonText }}</button>'
|
|
30
|
-
}]
|
|
31
|
-
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBVW5GLE1BQU0sT0FBTyxlQUFlO0lBUjVCO1FBU0ksbUJBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsaUJBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQztLQU0zQjtJQVRHLGNBQWMsQ0FBcUI7SUFLbkMsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDNUQsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzhHQVRRLGVBQWU7a0dBQWYsZUFBZSxnSEFGZCw4R0FBOEcsNERBSHBILFNBQVM7OzJGQUtKLGVBQWU7a0JBUjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDTCxTQUFTO3FCQUNaO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsOEdBQThHO2lCQUMzSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi8uLi91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjcC11cGxvYWQnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIE1hdEJ1dHRvblxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZTogJzxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIm9wZW5VcGxvYWREaWFsb2coKVwiPnt7IHVwbG9hZFNlcnZpY2Uub3B0aW9ucy51cGxvYWRCdXR0b25UZXh0IH19PC9idXR0b24+J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkQ29tcG9uZW50IHtcclxuICAgICNkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcbiAgICB1cGxvYWRTZXJ2aWNlID0gaW5qZWN0KFVwbG9hZFNlcnZpY2UpO1xyXG5cclxuICAgIGRpYWxvZ0Nsb3NlZCA9IG91dHB1dCgpO1xyXG5cclxuICAgIG9wZW5VcGxvYWREaWFsb2coKSB7XHJcbiAgICAgICAgdGhpcy4jZGlhbG9nU2VydmljZS5vcGVuKFVwbG9hZERpYWxvZ0NvbXBvbmVudCwgeyB3aWR0aDogJzUwJScgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlhbG9nQ2xvc2VkLmVtaXQoKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { AsyncPipe } from '@angular/common';
|
|
2
|
-
import { Component, inject, viewChild } from '@angular/core';
|
|
3
|
-
import { MatButton } from '@angular/material/button';
|
|
4
|
-
import { MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
-
import { MatList, MatListItem } from '@angular/material/list';
|
|
6
|
-
import { MatProgressBar } from '@angular/material/progress-bar';
|
|
7
|
-
import { forkJoin } from 'rxjs';
|
|
8
|
-
import { UploadService } from './../../services/upload.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class UploadDialogComponent {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.services = {
|
|
13
|
-
dialogRef: inject((MatDialogRef)),
|
|
14
|
-
upload: inject(UploadService)
|
|
15
|
-
};
|
|
16
|
-
this.file = viewChild.required('file');
|
|
17
|
-
this.files = new Set();
|
|
18
|
-
this.canBeClosed = true;
|
|
19
|
-
this.primaryButtonText = this.services.upload.options.uploadDialogUploadButtonText;
|
|
20
|
-
this.showCancelButton = true;
|
|
21
|
-
this.uploading = false;
|
|
22
|
-
this.uploadSuccessful = false;
|
|
23
|
-
}
|
|
24
|
-
addFiles() {
|
|
25
|
-
this.file().nativeElement.click();
|
|
26
|
-
}
|
|
27
|
-
onFilesAdded() {
|
|
28
|
-
const files = this.file().nativeElement.files;
|
|
29
|
-
for (const key in files) {
|
|
30
|
-
if (!isNaN(parseInt(key))) {
|
|
31
|
-
// See if the file already exists
|
|
32
|
-
this.services.upload.exists(files[key].name)
|
|
33
|
-
.subscribe(exists => {
|
|
34
|
-
if (exists) {
|
|
35
|
-
this.existingFileConflict = files[key].name;
|
|
36
|
-
}
|
|
37
|
-
if (!exists) {
|
|
38
|
-
this.files.add(files[key]);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
closeDialog() {
|
|
45
|
-
// if everything was uploaded already, just close the dialog
|
|
46
|
-
if (this.uploadSuccessful) {
|
|
47
|
-
return this.services.dialogRef.close();
|
|
48
|
-
}
|
|
49
|
-
// set the component state to "uploading"
|
|
50
|
-
this.uploading = true;
|
|
51
|
-
// start the upload and save the progress map
|
|
52
|
-
this.progress = this.services.upload.upload(this.files);
|
|
53
|
-
// convert the progress map into an array
|
|
54
|
-
const allProgressObservables$ = [];
|
|
55
|
-
for (let key in this.progress) {
|
|
56
|
-
allProgressObservables$.push(this.progress[key].progress);
|
|
57
|
-
}
|
|
58
|
-
// Adjust the state variables
|
|
59
|
-
// The OK-button should have the text "Finish" now
|
|
60
|
-
this.primaryButtonText = this.services.upload.options.uploadDialogFinishButtonText;
|
|
61
|
-
// The dialog should not be closed while uploading
|
|
62
|
-
this.canBeClosed = false;
|
|
63
|
-
this.services.dialogRef.disableClose = true;
|
|
64
|
-
// Hide the cancel-button
|
|
65
|
-
this.showCancelButton = false;
|
|
66
|
-
// When all progress-observables are completed...
|
|
67
|
-
forkJoin(allProgressObservables$)
|
|
68
|
-
.subscribe({
|
|
69
|
-
complete: () => {
|
|
70
|
-
// ... the dialog can be closed again...
|
|
71
|
-
this.canBeClosed = true;
|
|
72
|
-
this.services.dialogRef.disableClose = false;
|
|
73
|
-
// ... the upload was successful...
|
|
74
|
-
this.uploadSuccessful = true;
|
|
75
|
-
// ... and the component is no longer uploading
|
|
76
|
-
this.uploading = false;
|
|
77
|
-
console.log('Upload complete', this.files);
|
|
78
|
-
this.services.dialogRef.close();
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: UploadDialogComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, isSignal: true }], ngImport: i0, template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\r\n\r\n<div mat-dialog-title id=\"title\">\r\n <div>{{ services.upload.options.uploadDialogTitle }}</div>\r\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\r\n {{ services.upload.options.uploadDialogAddFilesButtonText }}\r\n </button>\r\n</div>\r\n\r\n@if (existingFileConflict) {\r\n <div id=\"conflict\">\r\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\r\n </div>\r\n}\r\n\r\n<mat-dialog-content>\r\n <mat-list>\r\n @for (file of files; track file) {\r\n <mat-list-item>\r\n <h4 mat-line>{{file.name}}</h4>\r\n @if (progress) {\r\n <mat-progress-bar mode=\"determinate\" [value]=\"progress[file.name].progress | async\"/>\r\n }\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions id=\"actions\">\r\n @if (showCancelButton) {\r\n <button mat-button mat-dialog-close>{{ services.upload.options.uploadDialogCancelButtonText }}</button>\r\n }\r\n @if (files.size > 0) {\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\r\n }\r\n</mat-dialog-actions>\r\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: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
|
|
84
|
-
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadDialogComponent, decorators: [{
|
|
86
|
-
type: Component,
|
|
87
|
-
args: [{ imports: [
|
|
88
|
-
AsyncPipe,
|
|
89
|
-
MatButton,
|
|
90
|
-
MatDialogActions,
|
|
91
|
-
MatDialogClose,
|
|
92
|
-
MatDialogContent,
|
|
93
|
-
MatList,
|
|
94
|
-
MatListItem,
|
|
95
|
-
MatProgressBar
|
|
96
|
-
], standalone: true, template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\r\n\r\n<div mat-dialog-title id=\"title\">\r\n <div>{{ services.upload.options.uploadDialogTitle }}</div>\r\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\r\n {{ services.upload.options.uploadDialogAddFilesButtonText }}\r\n </button>\r\n</div>\r\n\r\n@if (existingFileConflict) {\r\n <div id=\"conflict\">\r\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\r\n </div>\r\n}\r\n\r\n<mat-dialog-content>\r\n <mat-list>\r\n @for (file of files; track file) {\r\n <mat-list-item>\r\n <h4 mat-line>{{file.name}}</h4>\r\n @if (progress) {\r\n <mat-progress-bar mode=\"determinate\" [value]=\"progress[file.name].progress | async\"/>\r\n }\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions id=\"actions\">\r\n @if (showCancelButton) {\r\n <button mat-button mat-dialog-close>{{ services.upload.options.uploadDialogCancelButtonText }}</button>\r\n }\r\n @if (files.size > 0) {\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\r\n }\r\n</mat-dialog-actions>\r\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"] }]
|
|
97
|
-
}] });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL2NvbXBvbmVudHMvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQWMsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFpQmhFLE1BQU0sT0FBTyxxQkFBcUI7SUFmbEM7UUFnQkUsYUFBUSxHQUFHO1lBQ1QsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBLFlBQW1DLENBQUEsQ0FBQztZQUN0RCxNQUFNLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQztTQUM5QixDQUFDO1FBRUYsU0FBSSxHQUFHLFNB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LEdBQUcsS0FBSyxDQUFDO2dCQUU3QyxtQ0FBbUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBRTdCLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1RlUscUJBQXFCO2tHQUFyQixxQkFBcUIsc0xDekJsQywyMUNBb0NBLDJNRHZCUSxTQUFTLDhDQUNULFNBQVMsaUxBQ1QsZ0JBQWdCLDRIQUNoQixjQUFjLHFMQUNkLGdCQUFnQix5R0FDaEIsT0FBTyw0RUFDUCxXQUFXLHFKQUNYLGNBQWM7OzJGQUtULHFCQUFxQjtrQkFmakMsU0FBUzs4QkFFRzt3QkFDTCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGNBQWM7cUJBQ2pCLGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdExpc3QsIE1hdExpc3RJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWwvdXBsb2FkLXN0YXR1cyc7XHJcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEFzeW5jUGlwZSxcclxuICAgICAgICBNYXRCdXR0b24sXHJcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgICAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgICAgIE1hdExpc3QsXHJcbiAgICAgICAgTWF0TGlzdEl0ZW0sXHJcbiAgICAgICAgTWF0UHJvZ3Jlc3NCYXJcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgc3R5bGVVcmw6ICcuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWREaWFsb2dDb21wb25lbnQge1xyXG4gIHNlcnZpY2VzID0ge1xyXG4gICAgZGlhbG9nUmVmOiBpbmplY3QoTWF0RGlhbG9nUmVmPFVwbG9hZERpYWxvZ0NvbXBvbmVudD4pLFxyXG4gICAgdXBsb2FkOiBpbmplY3QoVXBsb2FkU2VydmljZSlcclxuICB9O1xyXG5cclxuICBmaWxlID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdmaWxlJyk7XHJcblxyXG4gIGZpbGVzOiBTZXQ8RmlsZT4gPSBuZXcgU2V0KCk7XHJcbiAgZXhpc3RpbmdGaWxlQ29uZmxpY3Q/OiBzdHJpbmc7XHJcblxyXG4gIC8vIFN0YXRlXHJcbiAgcHJvZ3Jlc3M/OiBVcGxvYWRTdGF0dXM7XHJcbiAgY2FuQmVDbG9zZWQgPSB0cnVlO1xyXG4gIHByaW1hcnlCdXR0b25UZXh0ID0gdGhpcy5zZXJ2aWNlcy51cGxvYWQub3B0aW9ucy51cGxvYWREaWFsb2dVcGxvYWRCdXR0b25UZXh0O1xyXG4gIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlO1xyXG4gIHVwbG9hZGluZyA9IGZhbHNlO1xyXG4gIHVwbG9hZFN1Y2Nlc3NmdWwgPSBmYWxzZTtcclxuXHJcbiAgYWRkRmlsZXMoKSB7XHJcbiAgICB0aGlzLmZpbGUoKS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzQWRkZWQoKSB7XHJcbiAgICBjb25zdCBmaWxlczogeyBba2V5OiBzdHJpbmddOiBGaWxlIH0gPSB0aGlzLmZpbGUoKS5uYXRpdmVFbGVtZW50LmZpbGVzO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmlsZXMpIHtcclxuICAgICAgaWYgKCFpc05hTihwYXJzZUludChrZXkpKSkge1xyXG4gICAgICAgIC8vIFNlZSBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgIHRoaXMuc2VydmljZXMudXBsb2FkLmV4aXN0cyhmaWxlc1trZXldLm5hbWUpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKGV4aXN0cyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4aXN0aW5nRmlsZUNvbmZsaWN0ID0gZmlsZXNba2V5XS5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMuYWRkKGZpbGVzW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICAvLyBpZiBldmVyeXRoaW5nIHdhcyB1cGxvYWRlZCBhbHJlYWR5LCBqdXN0IGNsb3NlIHRoZSBkaWFsb2dcclxuICAgIGlmICh0aGlzLnVwbG9hZFN1Y2Nlc3NmdWwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHRoZSBjb21wb25lbnQgc3RhdGUgdG8gXCJ1cGxvYWRpbmdcIlxyXG4gICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIHN0YXJ0IHRoZSB1cGxvYWQgYW5kIHNhdmUgdGhlIHByb2dyZXNzIG1hcFxyXG4gICAgdGhpcy5wcm9ncmVzcyA9IHRoaXMuc2VydmljZXMudXBsb2FkLnVwbG9hZCh0aGlzLmZpbGVzKTtcclxuXHJcbiAgICAvLyBjb252ZXJ0IHRoZSBwcm9ncmVzcyBtYXAgaW50byBhbiBhcnJheVxyXG4gICAgY29uc3QgYWxsUHJvZ3Jlc3NPYnNlcnZhYmxlcyQ6IE9ic2VydmFibGU8bnVtYmVyPltdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMucHJvZ3Jlc3MpIHtcclxuICAgICAgYWxsUHJvZ3Jlc3NPYnNlcnZhYmxlcyQucHVzaCh0aGlzLnByb2dyZXNzW2tleV0ucHJvZ3Jlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkanVzdCB0aGUgc3RhdGUgdmFyaWFibGVzXHJcblxyXG4gICAgLy8gVGhlIE9LLWJ1dHRvbiBzaG91bGQgaGF2ZSB0aGUgdGV4dCBcIkZpbmlzaFwiIG5vd1xyXG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVGV4dCA9IHRoaXMuc2VydmljZXMudXBsb2FkLm9wdGlvbnMudXBsb2FkRGlhbG9nRmluaXNoQnV0dG9uVGV4dDtcclxuXHJcbiAgICAvLyBUaGUgZGlhbG9nIHNob3VsZCBub3QgYmUgY2xvc2VkIHdoaWxlIHVwbG9hZGluZ1xyXG4gICAgdGhpcy5jYW5CZUNsb3NlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBjYW5jZWwtYnV0dG9uXHJcbiAgICB0aGlzLnNob3dDYW5jZWxCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBXaGVuIGFsbCBwcm9ncmVzcy1vYnNlcnZhYmxlcyBhcmUgY29tcGxldGVkLi4uXHJcbiAgICBmb3JrSm9pbihhbGxQcm9ncmVzc09ic2VydmFibGVzJClcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIC8vIC4uLiB0aGUgZGlhbG9nIGNhbiBiZSBjbG9zZWQgYWdhaW4uLi5cclxuICAgICAgICB0aGlzLmNhbkJlQ2xvc2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlcnZpY2VzLmRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gLi4uIHRoZSB1cGxvYWQgd2FzIHN1Y2Nlc3NmdWwuLi5cclxuICAgICAgICB0aGlzLnVwbG9hZFN1Y2Nlc3NmdWwgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyAuLi4gYW5kIHRoZSBjb21wb25lbnQgaXMgbm8gbG9uZ2VyIHVwbG9hZGluZ1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdVcGxvYWQgY29tcGxldGUnLCB0aGlzLmZpbGVzKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIChjaGFuZ2UpPVwib25GaWxlc0FkZGVkKClcIiBtdWx0aXBsZSAvPlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGlkPVwidGl0bGVcIj5cclxuICA8ZGl2Pnt7IHNlcnZpY2VzLnVwbG9hZC5vcHRpb25zLnVwbG9hZERpYWxvZ1RpdGxlIH19PC9kaXY+XHJcbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwidXBsb2FkaW5nIHx8IHVwbG9hZFN1Y2Nlc3NmdWxcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFkZC1maWxlcy1idG5cIiAoY2xpY2spPVwiYWRkRmlsZXMoKVwiPlxyXG4gICAge3sgc2VydmljZXMudXBsb2FkLm9wdGlvbnMudXBsb2FkRGlhbG9nQWRkRmlsZXNCdXR0b25UZXh0IH19XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG5cclxuQGlmIChleGlzdGluZ0ZpbGVDb25mbGljdCkge1xyXG4gIDxkaXYgaWQ9XCJjb25mbGljdFwiPlxyXG4gICAge3sgZXhpc3RpbmdGaWxlQ29uZmxpY3QgfX0gYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIG92ZXJ3cml0dGVuXHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1saXN0PlxyXG4gICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZSkge1xyXG4gICAgICA8bWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8aDQgbWF0LWxpbmU+e3tmaWxlLm5hbWV9fTwvaDQ+XHJcbiAgICAgICAgQGlmIChwcm9ncmVzcykge1xyXG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cInByb2dyZXNzW2ZpbGUubmFtZV0ucHJvZ3Jlc3MgfCBhc3luY1wiLz5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgIH1cclxuICA8L21hdC1saXN0PlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbjxtYXQtZGlhbG9nLWFjdGlvbnMgaWQ9XCJhY3Rpb25zXCI+XHJcbiAgQGlmIChzaG93Q2FuY2VsQnV0dG9uKSB7XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eyBzZXJ2aWNlcy51cGxvYWQub3B0aW9ucy51cGxvYWREaWFsb2dDYW5jZWxCdXR0b25UZXh0IH19PC9idXR0b24+XHJcbiAgfVxyXG4gIEBpZiAoZmlsZXMuc2l6ZSA+IDApIHtcclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFjYW5CZUNsb3NlZFwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+e3sgcHJpbWFyeUJ1dHRvblRleHQgfX08L2J1dHRvbj5cclxuICB9XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZmlsZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9tb2RlbC9kYXRhYmFzZS1maWxlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0aW1lc3RhbXA6IHN0cmluZzsgLy9EYXRlO1xyXG4gICAgZGJBcHBJZDogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxSZWZlcmVuY2VJZD86IG51bWJlcjtcclxuICAgIGNvbW1lbnQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvZmlsZS11cGxvYWQtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkUmVxdWVzdCB7XHJcbiAgICBhcHBJZD86IHN0cmluZztcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkPzogbnVtYmVyO1xyXG4gICAgZm9sZGVyPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS1maWxlLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL21vZGVsL2ZpbGVzeXN0ZW0tZmlsZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVzeXN0ZW1GaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBhdHRyaWJ1dGVzPzogbnVtYmVyO1xyXG4gICAgY3JlYXRpb25UaW1lOiBzdHJpbmc7IC8vRGF0ZTtcclxuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xyXG4gICAgZXh0ZW5zaW9uOiBzdHJpbmc7XHJcbiAgICBmdWxsbmFtZTogc3RyaW5nO1xyXG4gICAgbGFzdEFjY2Vzc1RpbWU6IHN0cmluZzsgLy9EYXRlO1xyXG4gICAgbGFzdFdyaXRlVGltZTogc3RyaW5nOyAvL0RhdGU7XHJcbiAgICByZWFkT25seTogYm9vbGVhbjtcclxuICAgIHNpemU6IG51bWJlcjtcclxufVxyXG4iXX0=
|