zek 15.2.1 → 16.0.1
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 +1 -1
- package/{esm2020 → esm2022}/lib/components/args.mjs +1 -1
- package/esm2022/lib/components/base.component.mjs +97 -0
- package/esm2022/lib/components/core-ui.component.mjs +195 -0
- package/esm2022/lib/components/core.component.mjs +40 -0
- package/esm2022/lib/components/edit-base.component.mjs +237 -0
- package/{esm2020 → esm2022}/lib/components/index.mjs +7 -7
- package/esm2022/lib/components/list-base.component.mjs +259 -0
- package/{esm2020 → esm2022}/lib/components/types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/alert-type.mjs +11 -11
- package/{esm2020 → esm2022}/lib/models/captcha.model.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/ctor.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/edit-base.model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/file.model.mjs +19 -19
- package/{esm2020 → esm2022}/lib/models/filter.model.mjs +11 -11
- package/{esm2020 → esm2022}/lib/models/gender.model.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/index.mjs +17 -17
- package/{esm2020 → esm2022}/lib/models/key-pair.model.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/list-base.model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/login.model.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/month.model.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/nav.model.mjs +1 -1
- package/esm2022/lib/models/pager.model.mjs +43 -0
- package/{esm2020 → esm2022}/lib/models/print.model.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/tree.model.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/valid-event-args.model.mjs +5 -5
- package/esm2022/lib/modules/age/age.module.mjs +23 -0
- package/esm2022/lib/modules/age/age.pipe.mjs +22 -0
- package/{esm2020 → esm2022}/lib/modules/age/index.mjs +2 -2
- package/esm2022/lib/modules/alert/alert/alert.mjs +55 -0
- package/esm2022/lib/modules/alert/alert.module.mjs +36 -0
- package/{esm2020 → esm2022}/lib/modules/alert/index.mjs +5 -5
- package/esm2022/lib/modules/alert/toast/toast.mjs +110 -0
- package/esm2022/lib/modules/alert/validation/validation.mjs +86 -0
- package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +25 -0
- package/esm2022/lib/modules/autocomplete/autocomplete.module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/autocomplete/index.mjs +2 -2
- package/esm2022/lib/modules/bb/bb-modal-base.component.mjs +75 -0
- package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +45 -0
- package/esm2022/lib/modules/bb/bb.component.mjs +189 -0
- package/esm2022/lib/modules/bb/bb.module.mjs +38 -0
- package/{esm2020 → esm2022}/lib/modules/bb/index.mjs +4 -4
- package/esm2022/lib/modules/callback/callback.module.mjs +23 -0
- package/esm2022/lib/modules/callback/callback.pipe.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/callback/index.mjs +2 -2
- package/esm2022/lib/modules/card/card/card.component.mjs +48 -0
- package/esm2022/lib/modules/card/card.module.mjs +19 -0
- package/{esm2020 → esm2022}/lib/modules/card/index.mjs +2 -2
- package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +47 -0
- package/esm2022/lib/modules/date-ago/date.module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/date-ago/index.mjs +2 -2
- package/esm2022/lib/modules/datepicker/date-value-accessor.mjs +189 -0
- package/esm2022/lib/modules/datepicker/datepicker.module.mjs +32 -0
- package/{esm2020 → esm2022}/lib/modules/datepicker/index.mjs +2 -2
- package/esm2022/lib/modules/edit-toolbar/edit-toolbar.component.mjs +75 -0
- package/esm2022/lib/modules/edit-toolbar/edit-toolbar.module.mjs +27 -0
- package/{esm2020 → esm2022}/lib/modules/edit-toolbar/index.mjs +2 -2
- package/esm2022/lib/modules/file/file-size.pipe.mjs +48 -0
- package/esm2022/lib/modules/file/file.module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/file/index.mjs +2 -2
- package/esm2022/lib/modules/file-viewer/file-viewer.mjs +52 -0
- package/{esm2020 → esm2022}/lib/modules/file-viewer/index.mjs +2 -2
- package/esm2022/lib/modules/file-viewer/module.mjs +31 -0
- package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +146 -0
- package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +15 -0
- package/esm2022/lib/modules/grid-toolbar/grid-toolbar.module.mjs +34 -0
- package/{esm2020 → esm2022}/lib/modules/grid-toolbar/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/modules/index.mjs +32 -32
- package/{esm2020 → esm2022}/lib/modules/list-toolbar/index.mjs +2 -2
- package/esm2022/lib/modules/list-toolbar/list-toolbar.component.mjs +110 -0
- package/esm2022/lib/modules/list-toolbar/list-toolbar.module.mjs +25 -0
- package/{esm2020 → esm2022}/lib/modules/loading/index.mjs +3 -3
- package/esm2022/lib/modules/loading/loading-interceptor.mjs +80 -0
- package/esm2022/lib/modules/loading/loading.component.mjs +36 -0
- package/esm2022/lib/modules/loading/loading.module.mjs +33 -0
- package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +27 -0
- package/{esm2020 → esm2022}/lib/modules/modal/index.mjs +4 -4
- package/esm2022/lib/modules/modal/modal/modal.component.mjs +313 -0
- package/esm2022/lib/modules/modal/modal.module.mjs +63 -0
- package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +28 -0
- package/{esm2020 → esm2022}/lib/modules/page-title/index.mjs +2 -2
- package/esm2022/lib/modules/page-title/page-title.component.mjs +32 -0
- package/esm2022/lib/modules/page-title/page-title.module.mjs +27 -0
- package/{esm2020 → esm2022}/lib/modules/pager/index.mjs +2 -2
- package/esm2022/lib/modules/pager/pager/pager.component.mjs +51 -0
- package/esm2022/lib/modules/pager/pager.module.mjs +27 -0
- package/{esm2020 → esm2022}/lib/modules/password/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/modules/password/password.component.mjs +48 -47
- package/esm2022/lib/modules/password/password.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/modules/progress/index.mjs +2 -2
- package/esm2022/lib/modules/progress/module.mjs +27 -0
- package/esm2022/lib/modules/progress/progress.mjs +98 -0
- package/{esm2020 → esm2022}/lib/modules/radio/index.mjs +2 -2
- package/esm2022/lib/modules/radio/radio-button.component.mjs +135 -0
- package/esm2022/lib/modules/radio/radio.module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/readonly/index.mjs +2 -2
- package/esm2022/lib/modules/readonly/readonly.directive.mjs +26 -0
- package/esm2022/lib/modules/readonly/readonly.module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/recaptcha/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/modules/recaptcha/loader.mjs +12 -12
- package/{esm2020 → esm2022}/lib/modules/recaptcha/recaptcha.model.mjs +1 -1
- package/esm2022/lib/modules/recaptcha/recaptcha.module.mjs +33 -0
- package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +120 -0
- package/{esm2020 → esm2022}/lib/modules/safe/index.mjs +2 -2
- package/esm2022/lib/modules/safe/safe.module.mjs +21 -0
- package/esm2022/lib/modules/safe/safe.pipe.mjs +38 -0
- package/{esm2020 → esm2022}/lib/modules/select/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/modules/select/model.mjs +3 -3
- package/esm2022/lib/modules/select/module.mjs +29 -0
- package/esm2022/lib/modules/select/select.mjs +199 -0
- package/{esm2020 → esm2022}/lib/modules/select2/index.mjs +2 -2
- package/esm2022/lib/modules/select2/select2.component.mjs +171 -0
- package/esm2022/lib/modules/select2/select2.module.mjs +29 -0
- package/{esm2020 → esm2022}/lib/modules/select2-multiple/index.mjs +2 -2
- package/esm2022/lib/modules/select2-multiple/select2-multiple.component.mjs +133 -0
- package/esm2022/lib/modules/select2-multiple/select2-multiple.module.mjs +29 -0
- package/{esm2020 → esm2022}/lib/modules/sort/index.mjs +3 -3
- package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +80 -0
- package/esm2022/lib/modules/sort/sort.directive.mjs +118 -0
- package/esm2022/lib/modules/sort/sort.module.mjs +34 -0
- package/{esm2020 → esm2022}/lib/modules/time/index.mjs +3 -3
- package/esm2022/lib/modules/time/time.module.mjs +28 -0
- package/esm2022/lib/modules/time/time.pipe.mjs +41 -0
- package/esm2022/lib/modules/time/timer-service.mjs +90 -0
- package/{esm2020 → esm2022}/lib/modules/validator/field-validator.mjs +21 -20
- package/{esm2020 → esm2022}/lib/modules/validator/index.mjs +2 -2
- package/esm2022/lib/modules/validator/validator.module.mjs +27 -0
- package/esm2022/lib/modules/validators/directive.mjs +76 -0
- package/{esm2020 → esm2022}/lib/modules/validators/index.mjs +3 -3
- package/esm2022/lib/modules/validators/module.mjs +23 -0
- package/{esm2020 → esm2022}/lib/modules/validators/validator.mjs +71 -71
- package/{esm2020 → esm2022}/lib/modules/wizard/index.mjs +3 -3
- package/esm2022/lib/modules/wizard/wizard/wizard.component.mjs +66 -0
- package/esm2022/lib/modules/wizard/wizard.module.mjs +34 -0
- package/esm2022/lib/modules/wizard/wizard2/wizard2.component.mjs +14 -0
- package/esm2022/lib/services/alert.service.mjs +77 -0
- package/esm2022/lib/services/auth-guard.service.mjs +29 -0
- package/esm2022/lib/services/auth.service.mjs +204 -0
- package/{esm2020 → esm2022}/lib/services/base.service.mjs +7 -7
- package/{esm2020 → esm2022}/lib/services/crud.service.mjs +42 -42
- package/esm2022/lib/services/http-error-handler.service.mjs +142 -0
- package/{esm2020 → esm2022}/lib/services/index.mjs +6 -6
- package/esm2022/lib/services/web.api.mjs +127 -0
- package/{esm2020 → esm2022}/lib/tokens.mjs +5 -5
- package/{esm2020 → esm2022}/lib/utils/array-helper.mjs +113 -113
- package/{esm2020 → esm2022}/lib/utils/base64-helper.mjs +8 -8
- package/{esm2020 → esm2022}/lib/utils/bitwise-helper.mjs +13 -13
- package/{esm2020 → esm2022}/lib/utils/bootstrap.helper.mjs +126 -126
- package/{esm2020 → esm2022}/lib/utils/convert.mjs +34 -34
- package/{esm2020 → esm2022}/lib/utils/css-helper.mjs +40 -40
- package/esm2022/lib/utils/date-helper.mjs +236 -0
- package/{esm2020 → esm2022}/lib/utils/file.helper.mjs +25 -25
- package/{esm2020 → esm2022}/lib/utils/filter-helper.mjs +12 -12
- package/{esm2020 → esm2022}/lib/utils/handler.mjs +23 -23
- package/{esm2020 → esm2022}/lib/utils/html-helper.mjs +65 -65
- package/{esm2020 → esm2022}/lib/utils/index.mjs +22 -22
- package/{esm2020 → esm2022}/lib/utils/math-helper.mjs +6 -6
- package/{esm2020 → esm2022}/lib/utils/object-helper.mjs +63 -63
- package/{esm2020 → esm2022}/lib/utils/overlap-helper.mjs +72 -72
- package/{esm2020 → esm2022}/lib/utils/pager-helper.mjs +62 -62
- package/{esm2020 → esm2022}/lib/utils/random-helper.mjs +10 -10
- package/{esm2020 → esm2022}/lib/utils/storage-helper.mjs +27 -27
- package/{esm2020 → esm2022}/lib/utils/string-helper.mjs +31 -31
- package/{esm2020 → esm2022}/lib/utils/thenBy.mjs +40 -40
- package/{esm2020 → esm2022}/lib/utils/time-helper.mjs +46 -46
- package/{esm2020 → esm2022}/lib/utils/url-helper.mjs +25 -25
- package/esm2022/lib/utils/validation-helper.mjs +11 -0
- package/esm2022/lib/zek.module.mjs +34 -0
- package/{esm2020 → esm2022}/public-api.mjs +10 -10
- package/{esm2020 → esm2022}/zek.mjs +4 -4
- package/{fesm2020 → fesm2022}/zek.mjs +6431 -6415
- package/fesm2022/zek.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components/args.d.ts +5 -5
- package/lib/components/base.component.d.ts +24 -24
- package/lib/components/core-ui.component.d.ts +86 -86
- package/lib/components/core.component.d.ts +15 -15
- package/lib/components/edit-base.component.d.ts +59 -59
- package/lib/components/index.d.ts +7 -7
- package/lib/components/list-base.component.d.ts +61 -61
- package/lib/components/types.d.ts +3 -3
- package/lib/models/alert-type.d.ts +10 -10
- package/lib/models/captcha.model.d.ts +3 -3
- package/lib/models/ctor.d.ts +3 -3
- package/lib/models/edit-base.model.d.ts +5 -5
- package/lib/models/file.model.d.ts +14 -14
- package/lib/models/filter.model.d.ts +9 -9
- package/lib/models/gender.model.d.ts +4 -4
- package/lib/models/index.d.ts +16 -16
- package/lib/models/key-pair.model.d.ts +14 -14
- package/lib/models/list-base.model.d.ts +4 -4
- package/lib/models/login.model.d.ts +28 -28
- package/lib/models/month.model.d.ts +14 -14
- package/lib/models/nav.model.d.ts +19 -19
- package/lib/models/pager.model.d.ts +32 -21
- package/lib/models/print.model.d.ts +4 -4
- package/lib/models/tree.model.d.ts +8 -8
- package/lib/models/valid-event-args.model.d.ts +3 -3
- package/lib/modules/age/age.module.d.ts +8 -8
- package/lib/modules/age/age.pipe.d.ts +7 -7
- package/lib/modules/age/index.d.ts +2 -2
- package/lib/modules/alert/alert/alert.d.ts +16 -16
- package/lib/modules/alert/alert.module.d.ts +10 -10
- package/lib/modules/alert/index.d.ts +5 -5
- package/lib/modules/alert/toast/toast.d.ts +20 -20
- package/lib/modules/alert/validation/validation.d.ts +17 -17
- package/lib/modules/autocomplete/autocomplete.directive.d.ts +11 -11
- package/lib/modules/autocomplete/autocomplete.module.d.ts +8 -8
- package/lib/modules/autocomplete/index.d.ts +2 -2
- package/lib/modules/bb/bb-modal-base.component.d.ts +26 -26
- package/lib/modules/bb/bb-modal-toolbar.d.ts +16 -16
- package/lib/modules/bb/bb.component.d.ts +52 -52
- package/lib/modules/bb/bb.module.d.ts +11 -11
- package/lib/modules/bb/index.d.ts +4 -4
- package/lib/modules/callback/callback.module.d.ts +8 -8
- package/lib/modules/callback/callback.pipe.d.ts +7 -7
- package/lib/modules/callback/index.d.ts +2 -2
- package/lib/modules/card/card/card.component.d.ts +21 -21
- package/lib/modules/card/card.module.d.ts +8 -8
- package/lib/modules/card/index.d.ts +2 -2
- package/lib/modules/date-ago/date-ago.pipe.d.ts +7 -7
- package/lib/modules/date-ago/date.module.d.ts +8 -8
- package/lib/modules/date-ago/index.d.ts +2 -2
- package/lib/modules/datepicker/date-value-accessor.d.ts +24 -24
- package/lib/modules/datepicker/datepicker.module.d.ts +14 -14
- package/lib/modules/datepicker/index.d.ts +2 -2
- package/lib/modules/edit-toolbar/edit-toolbar.component.d.ts +25 -25
- package/lib/modules/edit-toolbar/edit-toolbar.module.d.ts +9 -9
- package/lib/modules/edit-toolbar/index.d.ts +2 -2
- package/lib/modules/file/file-size.pipe.d.ts +8 -8
- package/lib/modules/file/file.module.d.ts +8 -8
- package/lib/modules/file/index.d.ts +2 -2
- package/lib/modules/file-viewer/file-viewer.d.ts +10 -10
- package/lib/modules/file-viewer/index.d.ts +2 -2
- package/lib/modules/file-viewer/module.d.ts +10 -10
- package/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.d.ts +50 -50
- package/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.d.ts +6 -6
- package/lib/modules/grid-toolbar/grid-toolbar.module.d.ts +10 -10
- package/lib/modules/grid-toolbar/index.d.ts +3 -3
- package/lib/modules/index.d.ts +31 -31
- package/lib/modules/list-toolbar/index.d.ts +2 -2
- package/lib/modules/list-toolbar/list-toolbar.component.d.ts +41 -41
- package/lib/modules/list-toolbar/list-toolbar.module.d.ts +9 -9
- package/lib/modules/loading/index.d.ts +2 -2
- package/lib/modules/loading/loading-interceptor.d.ts +21 -21
- package/lib/modules/loading/loading.component.d.ts +13 -13
- package/lib/modules/loading/loading.module.d.ts +8 -8
- package/lib/modules/modal/filter-modal/filter-modal.component.d.ts +10 -10
- package/lib/modules/modal/index.d.ts +4 -4
- package/lib/modules/modal/modal/modal.component.d.ts +90 -90
- package/lib/modules/modal/modal.module.d.ts +12 -12
- package/lib/modules/modal/sum-modal/sum-modal.component.d.ts +8 -8
- package/lib/modules/page-title/index.d.ts +2 -2
- package/lib/modules/page-title/page-title.component.d.ts +12 -12
- package/lib/modules/page-title/page-title.module.d.ts +9 -9
- package/lib/modules/pager/index.d.ts +2 -2
- package/lib/modules/pager/pager/pager.component.d.ts +17 -17
- package/lib/modules/pager/pager.module.d.ts +9 -9
- package/lib/modules/password/index.d.ts +2 -2
- package/lib/modules/password/password.component.d.ts +18 -18
- package/lib/modules/password/password.module.d.ts +10 -10
- package/lib/modules/progress/index.d.ts +2 -2
- package/lib/modules/progress/module.d.ts +9 -9
- package/lib/modules/progress/progress.d.ts +33 -33
- package/lib/modules/radio/index.d.ts +2 -2
- package/lib/modules/radio/radio-button.component.d.ts +44 -44
- package/lib/modules/radio/radio.module.d.ts +8 -8
- package/lib/modules/readonly/index.d.ts +2 -2
- package/lib/modules/readonly/readonly.directive.d.ts +8 -8
- package/lib/modules/readonly/readonly.module.d.ts +8 -8
- package/lib/modules/recaptcha/index.d.ts +3 -3
- package/lib/modules/recaptcha/loader.d.ts +12 -12
- package/lib/modules/recaptcha/recaptcha.model.d.ts +109 -109
- package/lib/modules/recaptcha/recaptcha.module.d.ts +10 -10
- package/lib/modules/recaptcha/recaptcha.service.d.ts +60 -60
- package/lib/modules/safe/index.d.ts +2 -2
- package/lib/modules/safe/safe.module.d.ts +8 -8
- package/lib/modules/safe/safe.pipe.d.ts +16 -16
- package/lib/modules/select/index.d.ts +2 -2
- package/lib/modules/select/model.d.ts +5 -5
- package/lib/modules/select/module.d.ts +9 -9
- package/lib/modules/select/select.d.ts +42 -42
- package/lib/modules/select2/index.d.ts +2 -2
- package/lib/modules/select2/select2.component.d.ts +31 -31
- package/lib/modules/select2/select2.module.d.ts +9 -9
- package/lib/modules/select2-multiple/index.d.ts +2 -2
- package/lib/modules/select2-multiple/select2-multiple.component.d.ts +30 -30
- package/lib/modules/select2-multiple/select2-multiple.module.d.ts +9 -9
- package/lib/modules/sort/index.d.ts +3 -3
- package/lib/modules/sort/sort-button-group/sort-button-group.component.d.ts +34 -34
- package/lib/modules/sort/sort.directive.d.ts +34 -34
- package/lib/modules/sort/sort.module.d.ts +10 -10
- package/lib/modules/time/index.d.ts +3 -3
- package/lib/modules/time/time.module.d.ts +8 -8
- package/lib/modules/time/time.pipe.d.ts +11 -11
- package/lib/modules/time/timer-service.d.ts +21 -21
- package/lib/modules/validator/field-validator.d.ts +7 -7
- package/lib/modules/validator/index.d.ts +2 -2
- package/lib/modules/validator/validator.module.d.ts +9 -9
- package/lib/modules/validators/directive.d.ts +67 -67
- package/lib/modules/validators/index.d.ts +3 -3
- package/lib/modules/validators/module.d.ts +8 -8
- package/lib/modules/validators/validator.d.ts +33 -33
- package/lib/modules/wizard/index.d.ts +3 -3
- package/lib/modules/wizard/wizard/wizard.component.d.ts +19 -19
- package/lib/modules/wizard/wizard.module.d.ts +10 -10
- package/lib/modules/wizard/wizard2/wizard2.component.d.ts +6 -6
- package/lib/services/alert.service.d.ts +33 -33
- package/lib/services/auth-guard.service.d.ts +12 -12
- package/lib/services/auth.service.d.ts +30 -30
- package/lib/services/base.service.d.ts +8 -8
- package/lib/services/crud.service.d.ts +32 -32
- package/lib/services/http-error-handler.service.d.ts +39 -39
- package/lib/services/index.d.ts +6 -6
- package/lib/services/web.api.d.ts +31 -31
- package/lib/tokens.d.ts +5 -5
- package/lib/utils/array-helper.d.ts +14 -14
- package/lib/utils/base64-helper.d.ts +4 -4
- package/lib/utils/bitwise-helper.d.ts +4 -4
- package/lib/utils/bootstrap.helper.d.ts +25 -25
- package/lib/utils/convert.d.ts +7 -7
- package/lib/utils/css-helper.d.ts +5 -5
- package/lib/utils/date-helper.d.ts +43 -43
- package/lib/utils/file.helper.d.ts +3 -3
- package/lib/utils/filter-helper.d.ts +3 -3
- package/lib/utils/handler.d.ts +4 -4
- package/lib/utils/html-helper.d.ts +7 -7
- package/lib/utils/index.d.ts +22 -22
- package/lib/utils/math-helper.d.ts +3 -3
- package/lib/utils/object-helper.d.ts +13 -13
- package/lib/utils/overlap-helper.d.ts +22 -22
- package/lib/utils/pager-helper.d.ts +4 -4
- package/lib/utils/random-helper.d.ts +3 -3
- package/lib/utils/storage-helper.d.ts +4 -4
- package/lib/utils/string-helper.d.ts +8 -8
- package/lib/utils/thenBy.d.ts +4 -4
- package/lib/utils/time-helper.d.ts +7 -7
- package/lib/utils/url-helper.d.ts +5 -5
- package/lib/utils/validation-helper.d.ts +4 -4
- package/lib/zek.module.d.ts +14 -14
- package/package.json +7 -13
- package/public-api.d.ts +7 -7
- package/esm2020/lib/components/base.component.mjs +0 -96
- package/esm2020/lib/components/core-ui.component.mjs +0 -194
- package/esm2020/lib/components/core.component.mjs +0 -39
- package/esm2020/lib/components/edit-base.component.mjs +0 -234
- package/esm2020/lib/components/list-base.component.mjs +0 -253
- package/esm2020/lib/models/pager.model.mjs +0 -32
- package/esm2020/lib/modules/age/age.module.mjs +0 -22
- package/esm2020/lib/modules/age/age.pipe.mjs +0 -21
- package/esm2020/lib/modules/alert/alert/alert.mjs +0 -54
- package/esm2020/lib/modules/alert/alert.module.mjs +0 -35
- package/esm2020/lib/modules/alert/toast/toast.mjs +0 -109
- package/esm2020/lib/modules/alert/validation/validation.mjs +0 -85
- package/esm2020/lib/modules/autocomplete/autocomplete.directive.mjs +0 -24
- package/esm2020/lib/modules/autocomplete/autocomplete.module.mjs +0 -22
- package/esm2020/lib/modules/bb/bb-modal-base.component.mjs +0 -74
- package/esm2020/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
- package/esm2020/lib/modules/bb/bb.component.mjs +0 -188
- package/esm2020/lib/modules/bb/bb.module.mjs +0 -37
- package/esm2020/lib/modules/callback/callback.module.mjs +0 -22
- package/esm2020/lib/modules/callback/callback.pipe.mjs +0 -22
- package/esm2020/lib/modules/card/card/card.component.mjs +0 -47
- package/esm2020/lib/modules/card/card.module.mjs +0 -18
- package/esm2020/lib/modules/date-ago/date-ago.pipe.mjs +0 -46
- package/esm2020/lib/modules/date-ago/date.module.mjs +0 -22
- package/esm2020/lib/modules/datepicker/date-value-accessor.mjs +0 -188
- package/esm2020/lib/modules/datepicker/datepicker.module.mjs +0 -31
- package/esm2020/lib/modules/edit-toolbar/edit-toolbar.component.mjs +0 -74
- package/esm2020/lib/modules/edit-toolbar/edit-toolbar.module.mjs +0 -26
- package/esm2020/lib/modules/file/file-size.pipe.mjs +0 -47
- package/esm2020/lib/modules/file/file.module.mjs +0 -22
- package/esm2020/lib/modules/file-viewer/file-viewer.mjs +0 -51
- package/esm2020/lib/modules/file-viewer/module.mjs +0 -30
- package/esm2020/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +0 -145
- package/esm2020/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +0 -14
- package/esm2020/lib/modules/grid-toolbar/grid-toolbar.module.mjs +0 -33
- package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +0 -109
- package/esm2020/lib/modules/list-toolbar/list-toolbar.module.mjs +0 -24
- package/esm2020/lib/modules/loading/loading-interceptor.mjs +0 -79
- package/esm2020/lib/modules/loading/loading.component.mjs +0 -35
- package/esm2020/lib/modules/loading/loading.module.mjs +0 -32
- package/esm2020/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -26
- package/esm2020/lib/modules/modal/modal/modal.component.mjs +0 -307
- package/esm2020/lib/modules/modal/modal.module.mjs +0 -62
- package/esm2020/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
- package/esm2020/lib/modules/page-title/page-title.component.mjs +0 -31
- package/esm2020/lib/modules/page-title/page-title.module.mjs +0 -26
- package/esm2020/lib/modules/pager/pager/pager.component.mjs +0 -50
- package/esm2020/lib/modules/pager/pager.module.mjs +0 -26
- package/esm2020/lib/modules/password/password.module.mjs +0 -30
- package/esm2020/lib/modules/progress/module.mjs +0 -26
- package/esm2020/lib/modules/progress/progress.mjs +0 -97
- package/esm2020/lib/modules/radio/radio-button.component.mjs +0 -134
- package/esm2020/lib/modules/radio/radio.module.mjs +0 -22
- package/esm2020/lib/modules/readonly/readonly.directive.mjs +0 -25
- package/esm2020/lib/modules/readonly/readonly.module.mjs +0 -22
- package/esm2020/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
- package/esm2020/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
- package/esm2020/lib/modules/safe/safe.module.mjs +0 -20
- package/esm2020/lib/modules/safe/safe.pipe.mjs +0 -37
- package/esm2020/lib/modules/select/module.mjs +0 -28
- package/esm2020/lib/modules/select/select.mjs +0 -198
- package/esm2020/lib/modules/select2/select2.component.mjs +0 -170
- package/esm2020/lib/modules/select2/select2.module.mjs +0 -28
- package/esm2020/lib/modules/select2-multiple/select2-multiple.component.mjs +0 -132
- package/esm2020/lib/modules/select2-multiple/select2-multiple.module.mjs +0 -28
- package/esm2020/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +0 -79
- package/esm2020/lib/modules/sort/sort.directive.mjs +0 -117
- package/esm2020/lib/modules/sort/sort.module.mjs +0 -33
- package/esm2020/lib/modules/time/time.module.mjs +0 -27
- package/esm2020/lib/modules/time/time.pipe.mjs +0 -40
- package/esm2020/lib/modules/time/timer-service.mjs +0 -89
- package/esm2020/lib/modules/validator/validator.module.mjs +0 -26
- package/esm2020/lib/modules/validators/directive.mjs +0 -75
- package/esm2020/lib/modules/validators/module.mjs +0 -22
- package/esm2020/lib/modules/wizard/wizard/wizard.component.mjs +0 -65
- package/esm2020/lib/modules/wizard/wizard.module.mjs +0 -33
- package/esm2020/lib/modules/wizard/wizard2/wizard2.component.mjs +0 -13
- package/esm2020/lib/services/alert.service.mjs +0 -76
- package/esm2020/lib/services/auth-guard.service.mjs +0 -28
- package/esm2020/lib/services/auth.service.mjs +0 -203
- package/esm2020/lib/services/http-error-handler.service.mjs +0 -141
- package/esm2020/lib/services/web.api.mjs +0 -126
- package/esm2020/lib/utils/date-helper.mjs +0 -235
- package/esm2020/lib/utils/validation-helper.mjs +0 -10
- package/esm2020/lib/zek.module.mjs +0 -33
- package/fesm2015/zek.mjs +0 -6693
- package/fesm2015/zek.mjs.map +0 -1
- package/fesm2020/zek.mjs.map +0 -1
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
-
import { Convert } from "../utils";
|
|
3
|
-
import { CoreComponent } from "./core.component";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
let uniqueId = 0;
|
|
6
|
-
export class CoreUiComponent extends CoreComponent {
|
|
7
|
-
constructor(_renderer, _elementRef
|
|
8
|
-
//private _changeDetector: ChangeDetectorRef
|
|
9
|
-
) {
|
|
10
|
-
super();
|
|
11
|
-
this._renderer = _renderer;
|
|
12
|
-
this._elementRef = _elementRef;
|
|
13
|
-
/** The method to be called in order to update ngModel */
|
|
14
|
-
this._onChange = () => { };
|
|
15
|
-
/**
|
|
16
|
-
* onTouch function registered via registerOnTouch (ControlValueAccessor).
|
|
17
|
-
* @docs-private
|
|
18
|
-
*/
|
|
19
|
-
this._onTouched = () => { };
|
|
20
|
-
this.change = new EventEmitter();
|
|
21
|
-
this.changing = new EventEmitter();
|
|
22
|
-
this._name = `zek-${++uniqueId}`;
|
|
23
|
-
this._isInitialized = false;
|
|
24
|
-
this._value = null;
|
|
25
|
-
this._readonly = false;
|
|
26
|
-
this._disabled = false;
|
|
27
|
-
this._required = false;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Helper method that sets a property on a target element using the current Renderer
|
|
31
|
-
* implementation.
|
|
32
|
-
* @nodoc
|
|
33
|
-
*/
|
|
34
|
-
setProperty(key, value) {
|
|
35
|
-
this._renderer.setProperty(this._elementRef.nativeElement, key, value);
|
|
36
|
-
}
|
|
37
|
-
get name() {
|
|
38
|
-
return this._name;
|
|
39
|
-
}
|
|
40
|
-
set name(value) {
|
|
41
|
-
if (this._name !== value) {
|
|
42
|
-
this._name = value;
|
|
43
|
-
this.onNameChanged();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
onNameChanged() { }
|
|
47
|
-
get isInitialized() {
|
|
48
|
-
return this._isInitialized;
|
|
49
|
-
}
|
|
50
|
-
get value() {
|
|
51
|
-
return this._value;
|
|
52
|
-
}
|
|
53
|
-
set value(newValue) {
|
|
54
|
-
if (this._value !== newValue) {
|
|
55
|
-
let cancelEventArgs = {
|
|
56
|
-
oldValue: this._value,
|
|
57
|
-
newValue: newValue
|
|
58
|
-
};
|
|
59
|
-
this.onValueChanging(cancelEventArgs);
|
|
60
|
-
if (cancelEventArgs.cancel === true)
|
|
61
|
-
return;
|
|
62
|
-
// Set this before proceeding to ensure no circular loop occurs with selection.
|
|
63
|
-
this._value = newValue;
|
|
64
|
-
this.onValueChanged();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
onValueChanging(e) {
|
|
68
|
-
this.changing.emit(e);
|
|
69
|
-
}
|
|
70
|
-
onValueChanged() { }
|
|
71
|
-
/**
|
|
72
|
-
* Use this method for client side change
|
|
73
|
-
* @param newValue
|
|
74
|
-
*/
|
|
75
|
-
setNgModel(newValue) {
|
|
76
|
-
if (!this.disabled) {
|
|
77
|
-
if (this._value !== newValue) {
|
|
78
|
-
this.value = newValue;
|
|
79
|
-
this._emitChangeEvent();
|
|
80
|
-
this._onChange(this._value); //write value to NgModel
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/** Whether the component is disabled */
|
|
85
|
-
get readonly() {
|
|
86
|
-
return this._readonly;
|
|
87
|
-
}
|
|
88
|
-
set readonly(value) {
|
|
89
|
-
let v = Convert.toBooleanProperty(value);
|
|
90
|
-
if (this._readonly !== v) {
|
|
91
|
-
this._readonly = v;
|
|
92
|
-
this.onReadOnlyChanged();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
onReadOnlyChanged() { }
|
|
96
|
-
/** Whether the component is disabled */
|
|
97
|
-
get disabled() {
|
|
98
|
-
return this._disabled;
|
|
99
|
-
}
|
|
100
|
-
set disabled(value) {
|
|
101
|
-
let v = Convert.toBooleanProperty(value);
|
|
102
|
-
if (this._disabled !== v) {
|
|
103
|
-
this._disabled = v;
|
|
104
|
-
this.onDisabledChanged();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
onDisabledChanged() { }
|
|
108
|
-
/** Whether the component is required */
|
|
109
|
-
get required() {
|
|
110
|
-
return this._required;
|
|
111
|
-
}
|
|
112
|
-
set required(value) {
|
|
113
|
-
let v = Convert.toBooleanProperty(value);
|
|
114
|
-
if (this._required !== v) {
|
|
115
|
-
this._required = v;
|
|
116
|
-
this.onRequiredChanged();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
onRequiredChanged() { }
|
|
120
|
-
_onInputInteraction(event) {
|
|
121
|
-
// We always have to stop propagation on the change event.
|
|
122
|
-
// Otherwise the change event, from the input element, will bubble up and
|
|
123
|
-
// emit its event object to the `change` output.
|
|
124
|
-
event.stopPropagation();
|
|
125
|
-
this.setNgModel(event.target.value);
|
|
126
|
-
}
|
|
127
|
-
/** Dispatch change event with current value. */
|
|
128
|
-
_emitChangeEvent() {
|
|
129
|
-
if (this._isInitialized) {
|
|
130
|
-
this.change.emit(this._value);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
ngAfterContentInit() {
|
|
134
|
-
// Mark this component as initialized in AfterContentInit because the initial value can
|
|
135
|
-
// possibly be set by NgModel on component, and it is possible that the OnInit of the
|
|
136
|
-
// NgModel occurs *after* the OnInit of the component.
|
|
137
|
-
this._isInitialized = true;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Sets the model value. Implemented as part of ControlValueAccessor.
|
|
141
|
-
* (write from model to el.nativeElement)
|
|
142
|
-
* @param value
|
|
143
|
-
*/
|
|
144
|
-
writeValue(value) {
|
|
145
|
-
this.value = value;
|
|
146
|
-
//this._changeDetector.markForCheck();
|
|
147
|
-
//this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Registers a callback to be triggered when the model value changes.
|
|
151
|
-
* Implemented as part of ControlValueAccessor.
|
|
152
|
-
* @param fn Callback to be registered.
|
|
153
|
-
*/
|
|
154
|
-
registerOnChange(fn) {
|
|
155
|
-
this._onChange = fn;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Registers a callback to be triggered when the control is touched.
|
|
159
|
-
* Implemented as part of ControlValueAccessor.
|
|
160
|
-
* @param fn Callback to be registered.
|
|
161
|
-
*/
|
|
162
|
-
registerOnTouched(fn) {
|
|
163
|
-
this._onTouched = fn;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.
|
|
167
|
-
* @param isDisabled Whether the control should be disabled.
|
|
168
|
-
*/
|
|
169
|
-
setDisabledState(isDisabled) {
|
|
170
|
-
this.disabled = isDisabled;
|
|
171
|
-
//this._changeDetector.markForCheck();
|
|
172
|
-
//this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
CoreUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CoreUiComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
176
|
-
CoreUiComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: CoreUiComponent, inputs: { name: "name", value: "value", readonly: "readonly", disabled: "disabled", required: "required" }, outputs: { change: "change", changing: "changing" }, usesInheritance: true, ngImport: i0 });
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CoreUiComponent, decorators: [{
|
|
178
|
-
type: Directive
|
|
179
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { change: [{
|
|
180
|
-
type: Output
|
|
181
|
-
}], changing: [{
|
|
182
|
-
type: Output
|
|
183
|
-
}], name: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], value: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], readonly: [{
|
|
188
|
-
type: Input
|
|
189
|
-
}], disabled: [{
|
|
190
|
-
type: Input
|
|
191
|
-
}], required: [{
|
|
192
|
-
type: Input
|
|
193
|
-
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS11aS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUtdWkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUdqRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFHakIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQUU5QyxZQUNjLFNBQW9CLEVBQ3BCLFdBQXVCO0lBQ2pDLDRDQUE0Qzs7UUFFNUMsS0FBSyxFQUFFLENBQUM7UUFKRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBTXJDLHlEQUF5RDtRQUN6RCxjQUFTLEdBQXlCLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU1Qzs7O1dBR0c7UUFDSCxlQUFVLEdBQWMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBWWYsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BELGFBQVEsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUUvRSxVQUFLLEdBQVcsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBY3BDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBSzlCLFdBQU0sR0FBUSxJQUFJLENBQUM7UUF3Q3JCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFnQjNCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFnQjNCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFuSG5DLENBQUM7SUFZRDs7OztLQUlDO0lBQ1MsV0FBVyxDQUFDLEdBQVcs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RyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLHNDQUFzQztRQUN0QyxxRkFBcUY7SUFDekYsQ0FBQzs7NEdBek1RLGVBQWU7Z0dBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixTQUFTO3lIQThCYSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLFFBQVE7c0JBQTFCLE1BQU07Z0JBT0gsSUFBSTtzQkFEUCxLQUFLO2dCQW9CRixLQUFLO3NCQURSLEtBQUs7Z0JBMENGLFFBQVE7c0JBRFgsS0FBSztnQkFpQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENvbnZlcnQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgQ2FuY2VsQXJncyB9IGZyb20gXCIuL2FyZ3NcIjtcclxuaW1wb3J0IHsgQ29yZUNvbXBvbmVudCB9IGZyb20gXCIuL2NvcmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5sZXQgdW5pcXVlSWQgPSAwO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBDb3JlVWlDb21wb25lbnQgZXh0ZW5kcyBDb3JlQ29tcG9uZW50XHJcbiAgICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBfcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICAgICAgICAvL3ByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGhlIG1ldGhvZCB0byBiZSBjYWxsZWQgaW4gb3JkZXIgdG8gdXBkYXRlIG5nTW9kZWwgKi9cclxuICAgIF9vbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7IH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBvblRvdWNoIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyT25Ub3VjaCAoQ29udHJvbFZhbHVlQWNjZXNzb3IpLlxyXG4gICAgICogQGRvY3MtcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBfb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2QgdGhhdCBzZXRzIGEgcHJvcGVydHkgb24gYSB0YXJnZXQgZWxlbWVudCB1c2luZyB0aGUgY3VycmVudCBSZW5kZXJlclxyXG4gICAqIGltcGxlbWVudGF0aW9uLlxyXG4gICAqIEBub2RvY1xyXG4gICAqL1xyXG4gICAgcHJvdGVjdGVkIHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBrZXksIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5naW5nOiBFdmVudEVtaXR0ZXI8Q2FuY2VsQXJncz4gPSBuZXcgRXZlbnRFbWl0dGVyPENhbmNlbEFyZ3M+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nID0gYHplay0keysrdW5pcXVlSWR9YDtcclxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLl9uYW1lICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9uYW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMub25OYW1lQ2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uTmFtZUNoYW5nZWQoKSB7IH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5pdGlhbGl6ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF92YWx1ZTogYW55ID0gbnVsbDtcclxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgbGV0IGNhbmNlbEV2ZW50QXJnczogQ2FuY2VsQXJncyA9IHtcclxuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiB0aGlzLl92YWx1ZSxcclxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdpbmcoY2FuY2VsRXZlbnRBcmdzKTtcclxuICAgICAgICAgICAgaWYgKGNhbmNlbEV2ZW50QXJncy5jYW5jZWwgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAvLyBTZXQgdGhpcyBiZWZvcmUgcHJvY2VlZGluZyB0byBlbnN1cmUgbm8gY2lyY3VsYXIgbG9vcCBvY2N1cnMgd2l0aCBzZWxlY3Rpb24uXHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvblZhbHVlQ2hhbmdpbmcoZTogQ2FuY2VsQXJncykge1xyXG4gICAgICAgIHRoaXMuY2hhbmdpbmcuZW1pdChlKTtcclxuICAgIH1cclxuICAgIG9uVmFsdWVDaGFuZ2VkKCkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2UgdGhpcyBtZXRob2QgZm9yIGNsaWVudCBzaWRlIGNoYW5nZVxyXG4gICAgICogQHBhcmFtIG5ld1ZhbHVlIFxyXG4gICAgICovXHJcbiAgICBzZXROZ01vZGVsKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7Ly93cml0ZSB2YWx1ZSB0byBOZ01vZGVsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQgKi9cclxuICAgIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHJlYWRvbmx5KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcclxuICAgICAgICBsZXQgdiA9IENvbnZlcnQudG9Cb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgICAgIGlmICh0aGlzLl9yZWFkb25seSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl9yZWFkb25seSA9IHY7XHJcbiAgICAgICAgICAgIHRoaXMub25SZWFkT25seUNoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvblJlYWRPbmx5Q2hhbmdlZCgpIHsgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZCAqL1xyXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xyXG4gICAgICAgIGxldCB2ID0gQ29udmVydC50b0Jvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdjtcclxuICAgICAgICAgICAgdGhpcy5vbkRpc2FibGVkQ2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uRGlzYWJsZWRDaGFuZ2VkKCkgeyB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlcXVpcmVkICovXHJcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XHJcbiAgICAgICAgbGV0IHYgPSBDb252ZXJ0LnRvQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5fcmVxdWlyZWQgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLm9uUmVxdWlyZWRDaGFuZ2VkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25SZXF1aXJlZENoYW5nZWQoKSB7IH1cclxuXHJcblxyXG4gICAgX29uSW5wdXRJbnRlcmFjdGlvbihldmVudDogRXZlbnQpIHtcclxuICAgICAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXHJcbiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGFuZ2UgZXZlbnQsIGZyb20gdGhlIGlucHV0IGVsZW1lbnQsIHdpbGwgYnViYmxlIHVwIGFuZFxyXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2V0TmdNb2RlbCgoZXZlbnQudGFyZ2V0IGFzIGFueSkudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBEaXNwYXRjaCBjaGFuZ2UgZXZlbnQgd2l0aCBjdXJyZW50IHZhbHVlLiAqL1xyXG4gICAgX2VtaXRDaGFuZ2VFdmVudCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5faXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgICAgICAvLyBNYXJrIHRoaXMgY29tcG9uZW50IGFzIGluaXRpYWxpemVkIGluIEFmdGVyQ29udGVudEluaXQgYmVjYXVzZSB0aGUgaW5pdGlhbCB2YWx1ZSBjYW5cclxuICAgICAgICAvLyBwb3NzaWJseSBiZSBzZXQgYnkgTmdNb2RlbCBvbiBjb21wb25lbnQsIGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBPbkluaXQgb2YgdGhlXHJcbiAgICAgICAgLy8gTmdNb2RlbCBvY2N1cnMgKmFmdGVyKiB0aGUgT25Jbml0IG9mIHRoZSBjb21wb25lbnQuXHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgbW9kZWwgdmFsdWUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAgICAgKiAod3JpdGUgZnJvbSBtb2RlbCB0byBlbC5uYXRpdmVFbGVtZW50KVxyXG4gICAgICogQHBhcmFtIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAvL3RoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIC8vdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgbW9kZWwgdmFsdWUgY2hhbmdlcy5cclxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAgICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cclxuICAgICAqL1xyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgY29udHJvbCBpcyB0b3VjaGVkLlxyXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSByZWdpc3RlcmVkLlxyXG4gICAgICovXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxyXG4gICAgICovXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgICAgICAvL3RoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIC8vdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCBpc0Rpc2FibGVkKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CoreComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.loading = false;
|
|
6
|
-
}
|
|
7
|
-
ngOnInit() {
|
|
8
|
-
this.load();
|
|
9
|
-
}
|
|
10
|
-
ngOnDestroy() {
|
|
11
|
-
this.destroy();
|
|
12
|
-
}
|
|
13
|
-
async load() {
|
|
14
|
-
try {
|
|
15
|
-
if (this.loading)
|
|
16
|
-
return;
|
|
17
|
-
this.loading = true;
|
|
18
|
-
await this.init();
|
|
19
|
-
await this.bindModel();
|
|
20
|
-
await this.bindDictionary();
|
|
21
|
-
await this.onBound();
|
|
22
|
-
}
|
|
23
|
-
finally {
|
|
24
|
-
this.loading = false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
init() { }
|
|
28
|
-
bindModel() { }
|
|
29
|
-
bindDictionary() { }
|
|
30
|
-
onBound() { }
|
|
31
|
-
async destroy() {
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
CoreComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
-
CoreComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: CoreComponent, ngImport: i0 });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CoreComponent, decorators: [{
|
|
37
|
-
type: Directive
|
|
38
|
-
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBTTdELE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRUksWUFBTyxHQUFHLEtBQUssQ0FBQztLQWdDbkI7SUE1QkcsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0QsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixJQUFJO1lBQ0EsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXpCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3hCO2dCQUNPO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUM7SUFDVixTQUFTLEtBQUssQ0FBQztJQUNmLGNBQWMsS0FBSyxDQUFDO0lBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBRWIsS0FBSyxDQUFDLE9BQU87SUFDYixDQUFDOzswR0FoQ1EsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkluaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnZlcnQgfSBmcm9tICcuLi91dGlscyc7XHJcblxyXG5cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgQ29yZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcblxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9hZCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5iaW5kTW9kZWwoKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5iaW5kRGljdGlvbmFyeSgpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uQm91bmQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGluaXQoKSB7IH1cclxuICAgIGJpbmRNb2RlbCgpIHsgfVxyXG4gICAgYmluZERpY3Rpb25hcnkoKSB7IH1cclxuICAgIG9uQm91bmQoKSB7IH1cclxuXHJcbiAgICBhc3luYyBkZXN0cm95KCkge1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { ViewChild, Directive } from '@angular/core';
|
|
2
|
-
import { BaseComponent } from './base.component';
|
|
3
|
-
import { firstValueFrom } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ngx-translate/core";
|
|
6
|
-
import * as i2 from "../services/alert.service";
|
|
7
|
-
import * as i3 from "@angular/router";
|
|
8
|
-
// import { IObjectConstructor } from '../models/ctor';
|
|
9
|
-
// import { IService } from '../services/base.service';
|
|
10
|
-
// import { AlertService } from '../modules/alert/shared/alert.service';
|
|
11
|
-
// import { Area } from '../models/area.model';
|
|
12
|
-
// import { PrintType } from '../models/print.model';
|
|
13
|
-
// import { TranslateService } from '@ngx-translate/core';
|
|
14
|
-
// import { ModalComponent } from '../modules/modal/modal.component';
|
|
15
|
-
export class EditFormComponent extends BaseComponent {
|
|
16
|
-
constructor() {
|
|
17
|
-
super(...arguments);
|
|
18
|
-
this.approveModel = {};
|
|
19
|
-
}
|
|
20
|
-
// @ViewChild('submitModal', { static: false }) protected readonly submitModal?: ModalComponent;
|
|
21
|
-
init() {
|
|
22
|
-
super.init();
|
|
23
|
-
const idParam = this.getParam('id') || this.getQueryParam('id');
|
|
24
|
-
if (idParam)
|
|
25
|
-
this.id = +idParam;
|
|
26
|
-
const id2Param = this.getParam('id2') || this.getQueryParam('id2');
|
|
27
|
-
if (id2Param)
|
|
28
|
-
this.id2 = +id2Param;
|
|
29
|
-
}
|
|
30
|
-
async bindModel() {
|
|
31
|
-
if (this.id) {
|
|
32
|
-
this.model = await this.getModel();
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
this.initCreate();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
initCreate() {
|
|
39
|
-
this.model = {};
|
|
40
|
-
}
|
|
41
|
-
getModel() {
|
|
42
|
-
throw 'Not implemented getModel';
|
|
43
|
-
}
|
|
44
|
-
onSubmit(f) {
|
|
45
|
-
this.save(f);
|
|
46
|
-
}
|
|
47
|
-
async save(f) {
|
|
48
|
-
if (!f || f.valid) {
|
|
49
|
-
return await this.internalSave(true);
|
|
50
|
-
}
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
internalSave(navigateToReturnUrl) {
|
|
54
|
-
throw 'Not implemented internalSave';
|
|
55
|
-
}
|
|
56
|
-
showApproveModal() {
|
|
57
|
-
this.approveModel = {};
|
|
58
|
-
if (this.approveModal) {
|
|
59
|
-
this.approveModal.show();
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
throw new Error('approveModal is null or undefined');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async approve() {
|
|
66
|
-
if (this.id) {
|
|
67
|
-
this.approveModel.ids = [this.id];
|
|
68
|
-
let approved = await this.internalApprove(this.approveModel);
|
|
69
|
-
if (approved) {
|
|
70
|
-
this.load();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
internalApprove(approveModel) {
|
|
75
|
-
throw 'Not implemented internalApprove';
|
|
76
|
-
}
|
|
77
|
-
showDisapproveModal() {
|
|
78
|
-
this.approveModel = {};
|
|
79
|
-
if (this.disapproveModal) {
|
|
80
|
-
this.disapproveModal.show();
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
throw new Error('disapproveModal is null or undefined');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async disapprove() {
|
|
87
|
-
if (this.id) {
|
|
88
|
-
this.approveModel.ids = [this.id];
|
|
89
|
-
let disapproved = await this.internalDisapprove(this.approveModel);
|
|
90
|
-
if (disapproved) {
|
|
91
|
-
this.load();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
internalDisapprove(model) {
|
|
96
|
-
throw 'Not implemented internalDisapprove';
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
EditFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
100
|
-
EditFormComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: EditFormComponent, viewQueries: [{ propertyName: "form", first: true, predicate: ["f"], descendants: true }, { propertyName: "approveModal", first: true, predicate: ["approveModal"], descendants: true }, { propertyName: "disapproveModal", first: true, predicate: ["disapproveModal"], descendants: true }], usesInheritance: true, ngImport: i0 });
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditFormComponent, decorators: [{
|
|
102
|
-
type: Directive
|
|
103
|
-
}], propDecorators: { form: [{
|
|
104
|
-
type: ViewChild,
|
|
105
|
-
args: ['f', { static: false }]
|
|
106
|
-
}], approveModal: [{
|
|
107
|
-
type: ViewChild,
|
|
108
|
-
args: ['approveModal', { static: false }]
|
|
109
|
-
}], disapproveModal: [{
|
|
110
|
-
type: ViewChild,
|
|
111
|
-
args: ['disapproveModal', { static: false }]
|
|
112
|
-
}] } });
|
|
113
|
-
export class EditBaseComponent extends EditFormComponent {
|
|
114
|
-
constructor(service, translate, alert, route, router) {
|
|
115
|
-
super(route, router);
|
|
116
|
-
this.service = service;
|
|
117
|
-
this.translate = translate;
|
|
118
|
-
this.alert = alert;
|
|
119
|
-
}
|
|
120
|
-
async internalSave(navigateToReturnUrl) {
|
|
121
|
-
this.alert.clear();
|
|
122
|
-
let data = await firstValueFrom(this.service.save(this.model));
|
|
123
|
-
let success = false;
|
|
124
|
-
if (typeof data === 'number' && data > 0) {
|
|
125
|
-
success = true;
|
|
126
|
-
this.id = data;
|
|
127
|
-
}
|
|
128
|
-
else if (typeof data === 'object' && data?.success) {
|
|
129
|
-
success = true;
|
|
130
|
-
}
|
|
131
|
-
if (success) {
|
|
132
|
-
let message = await firstValueFrom(this.translate.get('Alert.SaveSuccess'));
|
|
133
|
-
this.alert.success(message, null, 'fas fa-save');
|
|
134
|
-
if (navigateToReturnUrl === true) {
|
|
135
|
-
this.navigateReturnUrl();
|
|
136
|
-
}
|
|
137
|
-
return true;
|
|
138
|
-
// if (navigateToReturnUrl) {
|
|
139
|
-
// this.navigateReturnUrl();
|
|
140
|
-
// } else if (!this.id) {//if insert
|
|
141
|
-
// this.router.navigate([this.router.url.substring(0, this.router.url.length - 6), id]);
|
|
142
|
-
// }
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
let message = await firstValueFrom(this.translate.get('Alert.SaveError'));
|
|
146
|
-
this.alert.error(message, null, 'fas fa-save');
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
async internalApprove(model) {
|
|
151
|
-
let data = await firstValueFrom(this.service.approve(model));
|
|
152
|
-
if (data && data.length > 0) {
|
|
153
|
-
let message = await firstValueFrom(this.translate.get('Alert.Approved'));
|
|
154
|
-
this.alert.success(message, null, 'fas fa-save');
|
|
155
|
-
return true;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
let message = await firstValueFrom(this.translate.get('Alert.ApproveError'));
|
|
159
|
-
this.alert.error(message, null, 'fas fa-save');
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async internalDisapprove(model) {
|
|
164
|
-
let data = await firstValueFrom(this.service.disapprove(model));
|
|
165
|
-
if (data && data.length > 0) {
|
|
166
|
-
let message = await firstValueFrom(this.translate.get('Alert.Disapproved'));
|
|
167
|
-
this.alert.success(message, null, 'fas fa-save');
|
|
168
|
-
return true;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
let message = await firstValueFrom(this.translate.get('Alert.DisapproveError'));
|
|
172
|
-
this.alert.error(message, null, 'fas fa-save');
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
async internalSubmit(model) {
|
|
177
|
-
let data = await firstValueFrom(this.service.approve(model));
|
|
178
|
-
if (data && data.length > 0) {
|
|
179
|
-
let message = await firstValueFrom(this.translate.get('Alert.Submitted'));
|
|
180
|
-
this.alert.success(message, null, 'fas fa-save');
|
|
181
|
-
return true;
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
let message = await firstValueFrom(this.translate.get('Alert.SubmitError'));
|
|
185
|
-
this.alert.error(message, null, 'fas fa-save');
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
async getModel() {
|
|
190
|
-
if (this.id2)
|
|
191
|
-
return await firstValueFrom(this.service.get2(this.id, this.id2));
|
|
192
|
-
else
|
|
193
|
-
return await firstValueFrom(this.service.get(this.id));
|
|
194
|
-
}
|
|
195
|
-
initCreate() {
|
|
196
|
-
this.model = {};
|
|
197
|
-
}
|
|
198
|
-
print(printType) {
|
|
199
|
-
super.print(this.id, printType);
|
|
200
|
-
}
|
|
201
|
-
async restore() {
|
|
202
|
-
let data = await firstValueFrom(this.service.restore(this.id));
|
|
203
|
-
if (data?.success) {
|
|
204
|
-
let message = await firstValueFrom(this.translate.get('Alert.Restored'));
|
|
205
|
-
this.alert.success(message);
|
|
206
|
-
this.load();
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
export(fileTypeId) {
|
|
210
|
-
this.service.export({ id: this.id }, fileTypeId).subscribe(data => {
|
|
211
|
-
this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
EditBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
216
|
-
EditBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: EditBaseComponent, usesInheritance: true, ngImport: i0 });
|
|
217
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditBaseComponent, decorators: [{
|
|
218
|
-
type: Directive
|
|
219
|
-
}], ctorParameters: function () { return [{ type: undefined }, { type: i1.TranslateService }, { type: i2.AlertService }, { type: i3.ActivatedRoute }, { type: i3.Router }]; } });
|
|
220
|
-
export class EditComponent extends EditBaseComponent {
|
|
221
|
-
constructor(ctorModel, service, translate, alert, route, router) {
|
|
222
|
-
super(service, translate, alert, route, router);
|
|
223
|
-
this.ctorModel = ctorModel;
|
|
224
|
-
}
|
|
225
|
-
initCreate() {
|
|
226
|
-
this.model = new this.ctorModel();
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
EditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
230
|
-
EditComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: EditComponent, usesInheritance: true, ngImport: i0 });
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EditComponent, decorators: [{
|
|
232
|
-
type: Directive
|
|
233
|
-
}], ctorParameters: function () { return [{ type: undefined }, { type: undefined }, { type: i1.TranslateService }, { type: i2.AlertService }, { type: i3.ActivatedRoute }, { type: i3.Router }]; } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFDdEMsdURBQXVEO0FBQ3ZELHVEQUF1RDtBQUN2RCx3RUFBd0U7QUFDeEUsK0NBQStDO0FBQy9DLHFEQUFxRDtBQUNyRCwwREFBMEQ7QUFDMUQscUVBQXFFO0FBR3JFLE1BQU0sT0FBTyxpQkFBZ0MsU0FBUSxhQUFxQjtJQUQxRTs7UUFRSSxpQkFBWSxHQUF5QyxFQUFFLENBQUM7S0EyRjNEO0lBeEZHLGdHQUFnRztJQUV2RixJQUFJO1FBQ1QsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksT0FBTztZQUNQLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFFdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksUUFBUTtZQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVRLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNULElBQUksQ0FBQyxLQUFL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RSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsbUVBQW1FLENBQUMsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzhHQS9HUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTOztBQW9IVixNQUFNLE9BQU8sYUFBc0IsU0FBUSxpQkFBeUI7SUFFaEUsWUFDcUIsU0FBcUMsRUFDdEQsT0FBaUIsRUFDakIsU0FBMkIsRUFDM0IsS0FBbUIsRUFDbkIsS0FBcUIsRUFDckIsTUFBYztRQUNkLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFOL0IsY0FBUyxHQUFULFNBQVMsQ0FBNEI7SUFPMUQsQ0FBQztJQUVrQixVQUFVO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7MEdBZFEsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q2hpbGQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJT2JqZWN0Q29uc3RydWN0b3IsIFByaW50VHlwZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFpla01vZGFsIH0gZnJvbSAnLi4vbW9kdWxlcy9tb2RhbC9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuLy8gaW1wb3J0IHsgSU9iamVjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vbW9kZWxzL2N0b3InO1xyXG4vLyBpbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvYWxlcnQvc2hhcmVkL2FsZXJ0LnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBBcmVhIH0gZnJvbSAnLi4vbW9kZWxzL2FyZWEubW9kZWwnO1xyXG4vLyBpbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tICcuLi9tb2RlbHMvcHJpbnQubW9kZWwnO1xyXG4vLyBpbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbi8vIGltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kdWxlcy9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBFZGl0Rm9ybUNvbXBvbmVudDxUTW9kZWwgPSBhbnk+IGV4dGVuZHMgQmFzZUNvbXBvbmVudDxUTW9kZWw+IHtcclxuICAgIGlkPzogbnVtYmVyIHwgbnVsbDtcclxuICAgIGlkMj86IG51bWJlciB8IG51bGw7XHJcbiAgICAvLyAgIGFyZWEgPSBBcmVhO1xyXG4gICAgQFZpZXdDaGlsZCgnZicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb3JtPzogTmdGb3JtO1xyXG5cclxuXHJcbiAgICBhcHByb3ZlTW9kZWw6IHsgaWRzPzogbnVtYmVyW10sIGNvbW1lbnQ/OiBzdHJpbmcgfSA9IHt9O1xyXG4gICAgQFZpZXdDaGlsZCgnYXBwcm92ZU1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb3RlY3RlZCByZWFkb25seSBhcHByb3ZlTW9kYWw/OiBaZWtNb2RhbDtcclxuICAgIEBWaWV3Q2hpbGQoJ2Rpc2FwcHJvdmVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYXBwcm92ZU1vZGFsPzogWmVrTW9kYWw7XHJcbiAgICAvLyBAVmlld0NoaWxkKCdzdWJtaXRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VibWl0TW9kYWw/OiBNb2RhbENvbXBvbmVudDtcclxuXHJcbiAgICBvdmVycmlkZSBpbml0KCkge1xyXG4gICAgICAgIHN1cGVyLmluaXQoKTtcclxuICAgICAgICBjb25zdCBpZFBhcmFtID0gdGhpcy5nZXRQYXJhbSgnaWQnKSB8fCB0aGlzLmdldFF1ZXJ5UGFyYW0oJ2lkJyk7XHJcbiAgICAgICAgaWYgKGlkUGFyYW0pXHJcbiAgICAgICAgICAgIHRoaXMuaWQgPSAraWRQYXJhbTtcclxuXHJcbiAgICAgICAgY29uc3QgaWQyUGFyYW0gPSB0aGlzLmdldFBhcmFtKCdpZDInKSB8fCB0aGlzLmdldFF1ZXJ5UGFyYW0oJ2lkMicpO1xyXG4gICAgICAgIGlmIChpZDJQYXJhbSlcclxuICAgICAgICAgICAgdGhpcy5pZDIgPSAraWQyUGFyYW07XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgYmluZE1vZGVsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBhd2FpdCB0aGlzLmdldE1vZGVsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRDcmVhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRDcmVhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHt9IGFzIFRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICB0aHJvdyAnTm90IGltcGxlbWVudGVkIGdldE1vZGVsJztcclxuICAgIH1cclxuXHJcbiAgICBvblN1Ym1pdChmOiBOZ0Zvcm0pIHtcclxuICAgICAgICB0aGlzLnNhdmUoZik7XHJcbiAgICB9XHJcbiAgICBhc3luYyBzYXZlKGY/OiBOZ0Zvcm0pIHtcclxuICAgICAgICBpZiAoIWYgfHwgZi52YWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbnRlcm5hbFNhdmUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgaW50ZXJuYWxTYXZlKG5hdmlnYXRlVG9SZXR1cm5Vcmw/OiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCBpbnRlcm5hbFNhdmUnO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzaG93QXBwcm92ZU1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuYXBwcm92ZU1vZGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYXBwcm92ZU1vZGFsIGlzIG51bGwgb3IgdW5kZWZpbmVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgYXBwcm92ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbC5pZHMgPSBbdGhpcy5pZF07XHJcbiAgICAgICAgICAgIGxldCBhcHByb3ZlZCA9IGF3YWl0IHRoaXMuaW50ZXJuYWxBcHByb3ZlKHRoaXMuYXBwcm92ZU1vZGVsKTtcclxuICAgICAgICAgICAgaWYgKGFwcHJvdmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBpbnRlcm5hbEFwcHJvdmUoYXBwcm92ZU1vZGVsPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhyb3cgJ05vdCBpbXBsZW1lbnRlZCBpbnRlcm5hbEFwcHJvdmUnO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dEaXNhcHByb3ZlTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5hcHByb3ZlTW9kZWwgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5kaXNhcHByb3ZlTW9kYWwpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhcHByb3ZlTW9kYWwuc2hvdygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkaXNhcHByb3ZlTW9kYWwgaXMgbnVsbCBvciB1bmRlZmluZWQnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBkaXNhcHByb3ZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsLmlkcyA9IFt0aGlzLmlkXTtcclxuICAgICAgICAgICAgbGV0IGRpc2FwcHJvdmVkID0gYXdhaXQgdGhpcy5pbnRlcm5hbERpc2FwcHJvdmUodGhpcy5hcHByb3ZlTW9kZWwpO1xyXG4gICAgICAgICAgICBpZiAoZGlzYXBwcm92ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIGludGVybmFsRGlzYXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRocm93ICdOb3QgaW1wbGVtZW50ZWQgaW50ZXJuYWxEaXNhcHByb3ZlJztcclxuICAgIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBFZGl0QmFzZUNvbXBvbmVudDxUTW9kZWwgPSBhbnk+IGV4dGVuZHMgRWRpdEZvcm1Db21wb25lbnQ8VE1vZGVsPiB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcmVhZG9ubHkgc2VydmljZTogSVNlcnZpY2UsXHJcbiAgICAgICAgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgIHJlYWRvbmx5IGFsZXJ0OiBBbGVydFNlcnZpY2UsXHJcbiAgICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICAgICAgc3VwZXIocm91dGUsIHJvdXRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGludGVybmFsU2F2ZShuYXZpZ2F0ZVRvUmV0dXJuVXJsPzogYm9vbGVhbiB8IG51bGwpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2Uuc2F2ZSh0aGlzLm1vZGVsKSk7XHJcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInICYmIGRhdGEgPiAwKSB7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmlkID0gZGF0YTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiBkYXRhPy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LlNhdmVTdWNjZXNzJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAobmF2aWdhdGVUb1JldHVyblVybCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVJldHVyblVybCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgLy8gaWYgKG5hdmlnYXRlVG9SZXR1cm5VcmwpIHtcclxuICAgICAgICAgICAgLy8gICB0aGlzLm5hdmlnYXRlUmV0dXJuVXJsKCk7XHJcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoIXRoaXMuaWQpIHsvL2lmIGluc2VydFxyXG4gICAgICAgICAgICAvLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMucm91dGVyLnVybC5sZW5ndGggLSA2KSwgaWRdKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TYXZlRXJyb3InKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGludGVybmFsQXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmFwcHJvdmUobW9kZWwpKTtcclxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkFwcHJvdmVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5BcHByb3ZlRXJyb3InKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGludGVybmFsRGlzYXBwcm92ZShtb2RlbD86IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmRpc2FwcHJvdmUobW9kZWwpKTtcclxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkRpc2FwcHJvdmVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5EaXNhcHByb3ZlRXJyb3InKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIGludGVybmFsU3VibWl0KG1vZGVsPzogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuYXBwcm92ZShtb2RlbCkpO1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCgnQWxlcnQuU3VibWl0dGVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS1zYXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5TdWJtaXRFcnJvcicpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5lcnJvcihtZXNzYWdlLCBudWxsLCAnZmFzIGZhLXNhdmUnKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZ2V0TW9kZWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWQyKVxyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldDIodGhpcy5pZCwgdGhpcy5pZDIpKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0KHRoaXMuaWQpKTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpbml0Q3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMubW9kZWwgPSB7fSBhcyBUTW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgcHJpbnQocHJpbnRUeXBlPzogUHJpbnRUeXBlKSB7XHJcbiAgICAgICAgc3VwZXIucHJpbnQodGhpcy5pZCwgcHJpbnRUeXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXN0b3JlKCkge1xyXG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLnJlc3RvcmUodGhpcy5pZCkpXHJcbiAgICAgICAgaWYgKGRhdGE/LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LlJlc3RvcmVkJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGV4cG9ydChmaWxlVHlwZUlkOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UuZXhwb3J0KHsgaWQ6IHRoaXMuaWQgfSwgZmlsZVR5cGVJZCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShkYXRhLCAnZXhwb3J0Lnhsc3gnLCAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBFZGl0Q29tcG9uZW50PFRNb2RlbD4gZXh0ZW5kcyBFZGl0QmFzZUNvbXBvbmVudDxUTW9kZWw+IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGN0b3JNb2RlbDogSU9iamVjdENvbnN0cnVjdG9yPFRNb2RlbD4sXHJcbiAgICAgICAgc2VydmljZTogSVNlcnZpY2UsXHJcbiAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgIGFsZXJ0OiBBbGVydFNlcnZpY2UsXHJcbiAgICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICAgICAgc3VwZXIoc2VydmljZSwgdHJhbnNsYXRlLCBhbGVydCwgcm91dGUsIHJvdXRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGluaXRDcmVhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IG5ldyB0aGlzLmN0b3JNb2RlbCgpO1xyXG4gICAgfVxyXG59Il19
|