@pepperi-addons/ngx-lib 0.3.9-beta.21 → 0.3.9-beta.24
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/address/address.component.d.ts +27 -27
- package/address/address.module.d.ts +2 -2
- package/address/pepperi-addons-ngx-lib-address.d.ts +4 -4
- package/address/public-api.d.ts +2 -2
- package/attachment/attachment.component.d.ts +82 -82
- package/attachment/attachment.module.d.ts +2 -2
- package/attachment/pepperi-addons-ngx-lib-attachment.d.ts +4 -4
- package/attachment/public-api.d.ts +2 -2
- package/bread-crumbs/bread-crumbs.component.d.ts +23 -23
- package/bread-crumbs/bread-crumbs.model.d.ts +11 -11
- package/bread-crumbs/bread-crumbs.module.d.ts +5 -5
- package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.d.ts +4 -4
- package/bread-crumbs/public-api.d.ts +3 -3
- package/bundles/pepperi-addons-ngx-lib-address.umd.js +124 -124
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +247 -247
- package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +121 -121
- package/bundles/pepperi-addons-ngx-lib-button.umd.js +158 -158
- package/bundles/pepperi-addons-ngx-lib-carousel.umd.js +788 -788
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +192 -192
- package/bundles/pepperi-addons-ngx-lib-color.umd.js +296 -296
- package/bundles/pepperi-addons-ngx-lib-date.umd.js +660 -660
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +171 -171
- package/bundles/pepperi-addons-ngx-lib-draggable-items.umd.js +151 -151
- package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +57 -57
- package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +260 -260
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +3237 -3229
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +87 -87
- package/bundles/pepperi-addons-ngx-lib-icon.umd.js +681 -681
- package/bundles/pepperi-addons-ngx-lib-image.umd.js +322 -316
- package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +413 -413
- package/bundles/pepperi-addons-ngx-lib-link.umd.js +464 -464
- package/bundles/pepperi-addons-ngx-lib-list.umd.js +3187 -3187
- package/bundles/pepperi-addons-ngx-lib-menu.umd.js +646 -646
- package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js +60 -60
- package/bundles/pepperi-addons-ngx-lib-profile-data-views-list.umd.js +543 -543
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +914 -914
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1060 -1060
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +275 -275
- package/bundles/pepperi-addons-ngx-lib-search.umd.js +326 -326
- package/bundles/pepperi-addons-ngx-lib-select.umd.js +575 -576
- package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js +79 -79
- package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +163 -163
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js +283 -283
- package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js +113 -113
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js +124 -124
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1780 -1780
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +211 -211
- package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js +80 -80
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +506 -506
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +129 -129
- package/bundles/pepperi-addons-ngx-lib.umd.js +4719 -4719
- package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
- package/button/button.component.d.ts +99 -99
- package/button/button.model.d.ts +14 -14
- package/button/button.module.d.ts +2 -2
- package/button/pepperi-addons-ngx-lib-button.d.ts +4 -4
- package/button/public-api.d.ts +3 -3
- package/carousel/carousel-item.directive.d.ts +9 -9
- package/carousel/carousel.component.d.ts +145 -145
- package/carousel/carousel.module.d.ts +2 -2
- package/carousel/pepperi-addons-ngx-lib-carousel.d.ts +4 -4
- package/carousel/public-api.d.ts +3 -3
- package/checkbox/checkbox.component.d.ts +47 -47
- package/checkbox/checkbox.module.d.ts +5 -5
- package/checkbox/pepperi-addons-ngx-lib-checkbox.d.ts +4 -4
- package/checkbox/public-api.d.ts +2 -2
- package/color/color-picker.component.d.ts +52 -52
- package/color/color.component.d.ts +26 -26
- package/color/color.model.d.ts +1 -1
- package/color/color.module.d.ts +5 -5
- package/color/pepperi-addons-ngx-lib-color.d.ts +5 -5
- package/color/public-api.d.ts +3 -3
- package/core/clipboard/clipboard.directive.d.ts +2 -2
- package/core/clipboard/clipboard.service.d.ts +2 -2
- package/core/clipboard/index.d.ts +1 -1
- package/core/clipboard/public-api.d.ts +2 -2
- package/core/common/directives/auto-width.directive.d.ts +16 -16
- package/core/common/directives/button-blur.directive.d.ts +6 -6
- package/core/common/directives/button-loader.directive.d.ts +23 -23
- package/core/common/directives/data-qa.directive.d.ts +8 -8
- package/core/common/directives/index.d.ts +1 -1
- package/core/common/directives/menu-blur.directive.d.ts +7 -7
- package/core/common/directives/prevent-multi-click.directive.d.ts +4 -4
- package/core/common/directives/print.directive.d.ts +72 -72
- package/core/common/directives/public-api.d.ts +7 -7
- package/core/common/index.d.ts +1 -1
- package/core/common/model/index.d.ts +1 -1
- package/core/common/model/papi.model.d.ts +2 -2
- package/core/common/model/public-api.d.ts +3 -3
- package/core/common/model/utilities.model.d.ts +5 -5
- package/core/common/model/wapi.model.d.ts +200 -200
- package/core/common/pipes/common-pipes.d.ts +36 -36
- package/core/common/pipes/index.d.ts +1 -1
- package/core/common/pipes/public-api.d.ts +1 -1
- package/core/common/public-api.d.ts +4 -4
- package/core/common/services/addon.service.d.ts +32 -32
- package/core/common/services/color.service.d.ts +48 -48
- package/core/common/services/cookie.service.d.ts +50 -50
- package/core/common/services/data-convertor.service.d.ts +39 -39
- package/core/common/services/file.service.d.ts +24 -24
- package/core/common/services/index.d.ts +1 -1
- package/core/common/services/jwt-helper.service.d.ts +10 -10
- package/core/common/services/public-api.d.ts +11 -11
- package/core/common/services/session.service.d.ts +15 -15
- package/core/common/services/translate.service.d.ts +9 -9
- package/core/common/services/utilities.service.d.ts +18 -18
- package/core/common/services/validator.service.d.ts +28 -28
- package/core/common/services/window-scrolling.service.d.ts +7 -7
- package/core/customization/customization.model.d.ts +264 -264
- package/core/customization/customization.service.d.ts +155 -155
- package/core/customization/index.d.ts +1 -1
- package/core/customization/public-api.d.ts +2 -2
- package/core/http/index.d.ts +1 -1
- package/core/http/interceptors/error.interceptor.d.ts +5 -5
- package/core/http/interceptors/index.d.ts +11 -11
- package/core/http/interceptors/loader.interceptor.d.ts +8 -8
- package/core/http/interceptors/profiler.interceptor.d.ts +5 -5
- package/core/http/public-api.d.ts +2 -2
- package/core/http/services/http.service.d.ts +25 -25
- package/core/http/services/loader.service.d.ts +10 -10
- package/core/index.d.ts +1 -1
- package/core/layout/index.d.ts +1 -1
- package/core/layout/layout.service.d.ts +33 -33
- package/core/layout/public-api.d.ts +2 -2
- package/core/layout/rtl.directive.d.ts +16 -16
- package/core/portal/attach.directive.d.ts +10 -10
- package/core/portal/index.d.ts +1 -1
- package/core/portal/portal.service.d.ts +9 -9
- package/core/portal/public-api.d.ts +3 -3
- package/core/portal/target.directive.d.ts +9 -9
- package/core/public-api.d.ts +7 -7
- package/core/scroll-to/index.d.ts +1 -1
- package/core/scroll-to/public-api.d.ts +1 -1
- package/core/scroll-to/scroll-to.service.d.ts +8 -8
- package/date/date.component.d.ts +65 -65
- package/date/date.model.d.ts +26 -26
- package/date/date.module.d.ts +5 -5
- package/date/pepperi-addons-ngx-lib-date.d.ts +5 -5
- package/date/public-api.d.ts +2 -2
- package/dialog/default-dialog.component.d.ts +8 -8
- package/dialog/dialog.component.d.ts +6 -6
- package/dialog/dialog.model.d.ts +27 -27
- package/dialog/dialog.module.d.ts +5 -5
- package/dialog/dialog.service.d.ts +24 -24
- package/dialog/pepperi-addons-ngx-lib-dialog.d.ts +5 -5
- package/dialog/public-api.d.ts +4 -4
- package/draggable-items/draggable-item/draggable-item.component.d.ts +8 -8
- package/draggable-items/draggable-items.component.d.ts +33 -33
- package/draggable-items/draggable-items.model.d.ts +7 -7
- package/draggable-items/draggable-items.module.d.ts +5 -5
- package/draggable-items/pepperi-addons-ngx-lib-draggable-items.d.ts +4 -4
- package/draggable-items/pepperi-addons-ngx-lib-draggable-items.metadata.json +1 -1
- package/draggable-items/public-api.d.ts +4 -4
- package/esm2015/address/address.component.js +96 -96
- package/esm2015/address/address.module.js +30 -30
- package/esm2015/address/pepperi-addons-ngx-lib-address.js +4 -4
- package/esm2015/address/public-api.js +5 -5
- package/esm2015/attachment/attachment.component.js +208 -208
- package/esm2015/attachment/attachment.module.js +28 -28
- package/esm2015/attachment/pepperi-addons-ngx-lib-attachment.js +4 -4
- package/esm2015/attachment/public-api.js +5 -5
- package/esm2015/bread-crumbs/bread-crumbs.component.js +78 -78
- package/esm2015/bread-crumbs/bread-crumbs.model.js +6 -6
- package/esm2015/bread-crumbs/bread-crumbs.module.js +34 -34
- package/esm2015/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.js +4 -4
- package/esm2015/bread-crumbs/public-api.js +6 -6
- package/esm2015/button/button.component.js +127 -127
- package/esm2015/button/button.model.js +5 -5
- package/esm2015/button/button.module.js +26 -26
- package/esm2015/button/pepperi-addons-ngx-lib-button.js +4 -4
- package/esm2015/button/public-api.js +6 -6
- package/esm2015/carousel/carousel-item.directive.js +26 -26
- package/esm2015/carousel/carousel.component.js +699 -699
- package/esm2015/carousel/carousel.module.js +11 -11
- package/esm2015/carousel/pepperi-addons-ngx-lib-carousel.js +4 -4
- package/esm2015/carousel/public-api.js +7 -7
- package/esm2015/checkbox/checkbox.component.js +151 -151
- package/esm2015/checkbox/checkbox.module.js +39 -39
- package/esm2015/checkbox/pepperi-addons-ngx-lib-checkbox.js +4 -4
- package/esm2015/checkbox/public-api.js +5 -5
- package/esm2015/color/color-picker.component.js +194 -194
- package/esm2015/color/color.component.js +74 -74
- package/esm2015/color/color.model.js +1 -1
- package/esm2015/color/color.module.js +57 -57
- package/esm2015/color/pepperi-addons-ngx-lib-color.js +5 -5
- package/esm2015/color/public-api.js +6 -6
- package/esm2015/core/clipboard/clipboard.directive.js +19 -19
- package/esm2015/core/clipboard/clipboard.service.js +11 -11
- package/esm2015/core/clipboard/index.js +4 -4
- package/esm2015/core/clipboard/public-api.js +5 -5
- package/esm2015/core/common/directives/auto-width.directive.js +77 -77
- package/esm2015/core/common/directives/button-blur.directive.js +22 -22
- package/esm2015/core/common/directives/button-loader.directive.js +102 -102
- package/esm2015/core/common/directives/data-qa.directive.js +22 -22
- package/esm2015/core/common/directives/index.js +4 -4
- package/esm2015/core/common/directives/menu-blur.directive.js +28 -28
- package/esm2015/core/common/directives/prevent-multi-click.directive.js +21 -21
- package/esm2015/core/common/directives/print.directive.js +134 -134
- package/esm2015/core/common/directives/public-api.js +11 -11
- package/esm2015/core/common/index.js +4 -4
- package/esm2015/core/common/model/index.js +4 -4
- package/esm2015/core/common/model/papi.model.js +2 -2
- package/esm2015/core/common/model/public-api.js +6 -6
- package/esm2015/core/common/model/utilities.model.js +56 -56
- package/esm2015/core/common/model/wapi.model.js +155 -155
- package/esm2015/core/common/pipes/common-pipes.js +141 -141
- package/esm2015/core/common/pipes/index.js +4 -4
- package/esm2015/core/common/pipes/public-api.js +4 -4
- package/esm2015/core/common/public-api.js +7 -7
- package/esm2015/core/common/services/addon.service.js +123 -123
- package/esm2015/core/common/services/color.service.js +356 -356
- package/esm2015/core/common/services/cookie.service.js +147 -147
- package/esm2015/core/common/services/data-convertor.service.js +111 -111
- package/esm2015/core/common/services/file.service.js +211 -211
- package/esm2015/core/common/services/index.js +4 -4
- package/esm2015/core/common/services/jwt-helper.service.js +103 -103
- package/esm2015/core/common/services/public-api.js +14 -14
- package/esm2015/core/common/services/session.service.js +72 -72
- package/esm2015/core/common/services/translate.service.js +47 -47
- package/esm2015/core/common/services/utilities.service.js +123 -123
- package/esm2015/core/common/services/validator.service.js +272 -272
- package/esm2015/core/common/services/window-scrolling.service.js +30 -30
- package/esm2015/core/customization/customization.model.js +290 -290
- package/esm2015/core/customization/customization.service.js +774 -774
- package/esm2015/core/customization/index.js +4 -4
- package/esm2015/core/customization/public-api.js +5 -5
- package/esm2015/core/http/index.js +4 -4
- package/esm2015/core/http/interceptors/error.interceptor.js +23 -23
- package/esm2015/core/http/interceptors/index.js +23 -23
- package/esm2015/core/http/interceptors/loader.interceptor.js +32 -32
- package/esm2015/core/http/interceptors/profiler.interceptor.js +28 -28
- package/esm2015/core/http/public-api.js +5 -5
- package/esm2015/core/http/services/http.service.js +160 -160
- package/esm2015/core/http/services/loader.service.js +48 -48
- package/esm2015/core/index.js +4 -4
- package/esm2015/core/layout/index.js +4 -4
- package/esm2015/core/layout/layout.service.js +168 -168
- package/esm2015/core/layout/public-api.js +5 -5
- package/esm2015/core/layout/rtl.directive.js +46 -46
- package/esm2015/core/portal/attach.directive.js +26 -26
- package/esm2015/core/portal/index.js +4 -4
- package/esm2015/core/portal/portal.service.js +34 -34
- package/esm2015/core/portal/public-api.js +6 -6
- package/esm2015/core/portal/target.directive.js +23 -23
- package/esm2015/core/public-api.js +10 -10
- package/esm2015/core/scroll-to/index.js +4 -4
- package/esm2015/core/scroll-to/public-api.js +5 -5
- package/esm2015/core/scroll-to/scroll-to.service.js +81 -81
- package/esm2015/date/date.component.js +244 -244
- package/esm2015/date/date.model.js +44 -44
- package/esm2015/date/date.module.js +50 -50
- package/esm2015/date/pepperi-addons-ngx-lib-date.js +5 -5
- package/esm2015/date/public-api.js +5 -5
- package/esm2015/dialog/default-dialog.component.js +28 -28
- package/esm2015/dialog/dialog.component.js +21 -21
- package/esm2015/dialog/dialog.model.js +21 -21
- package/esm2015/dialog/dialog.module.js +39 -39
- package/esm2015/dialog/dialog.service.js +73 -73
- package/esm2015/dialog/pepperi-addons-ngx-lib-dialog.js +5 -5
- package/esm2015/dialog/public-api.js +7 -7
- package/esm2015/draggable-items/draggable-item/draggable-item.component.js +24 -24
- package/esm2015/draggable-items/draggable-items.component.js +91 -91
- package/esm2015/draggable-items/draggable-items.model.js +1 -1
- package/esm2015/draggable-items/draggable-items.module.js +42 -42
- package/esm2015/draggable-items/pepperi-addons-ngx-lib-draggable-items.js +4 -4
- package/esm2015/draggable-items/public-api.js +7 -7
- package/esm2015/field-title/field-title.component.js +31 -31
- package/esm2015/field-title/field-title.module.js +31 -31
- package/esm2015/field-title/pepperi-addons-ngx-lib-field-title.js +4 -4
- package/esm2015/field-title/public-api.js +5 -5
- package/esm2015/files-uploader/files-uploader.component.js +220 -220
- package/esm2015/files-uploader/files-uploader.module.js +49 -49
- package/esm2015/files-uploader/pepperi-addons-ngx-lib-files-uploader.js +4 -4
- package/esm2015/files-uploader/public-api.js +5 -5
- package/esm2015/form/field-generator.component.js +121 -121
- package/esm2015/form/form.component.js +1189 -1181
- package/esm2015/form/form.model.js +1 -1
- package/esm2015/form/form.module.js +107 -107
- package/esm2015/form/indicators.component.js +20 -20
- package/esm2015/form/internal-button.component.js +165 -165
- package/esm2015/form/internal-carusel.component.js +115 -115
- package/esm2015/form/internal-carusel.service.js +31 -31
- package/esm2015/form/internal-list.component.js +494 -494
- package/esm2015/form/internal-menu.component.js +54 -54
- package/esm2015/form/internal-page.component.js +350 -350
- package/esm2015/form/internal-page.service.js +120 -120
- package/esm2015/form/pepperi-addons-ngx-lib-form.js +13 -13
- package/esm2015/form/public-api.js +6 -6
- package/esm2015/group-buttons/group-buttons.component.js +57 -57
- package/esm2015/group-buttons/group-buttons.module.js +37 -37
- package/esm2015/group-buttons/pepperi-addons-ngx-lib-group-buttons.js +4 -4
- package/esm2015/group-buttons/public-api.js +5 -5
- package/esm2015/icon/icon-generated-all.model.js +100 -100
- package/esm2015/icon/icon-generated.model.js +389 -389
- package/esm2015/icon/icon-registry.service.js +22 -22
- package/esm2015/icon/icon.component.js +124 -124
- package/esm2015/icon/icon.module.js +14 -14
- package/esm2015/icon/icon.service.js +31 -31
- package/esm2015/icon/pepperi-addons-ngx-lib-icon.js +4 -4
- package/esm2015/icon/public-api.js +10 -10
- package/esm2015/image/image.component.js +229 -223
- package/esm2015/image/image.module.js +48 -48
- package/esm2015/image/image.service.js +54 -54
- package/esm2015/image/pepperi-addons-ngx-lib-image.js +4 -4
- package/esm2015/image/public-api.js +6 -6
- package/esm2015/images-filmstrip/images-filmstrip.component.js +363 -363
- package/esm2015/images-filmstrip/images-filmstrip.module.js +70 -70
- package/esm2015/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.js +4 -4
- package/esm2015/images-filmstrip/public-api.js +5 -5
- package/esm2015/link/link.component.js +390 -390
- package/esm2015/link/link.module.js +50 -50
- package/esm2015/link/link.pipes.js +14 -14
- package/esm2015/link/pepperi-addons-ngx-lib-link.js +5 -5
- package/esm2015/link/public-api.js +5 -5
- package/esm2015/list/list-actions.component.js +35 -35
- package/esm2015/list/list-carousel.component.js +94 -94
- package/esm2015/list/list-chooser.component.js +57 -57
- package/esm2015/list/list-pager.component.js +112 -112
- package/esm2015/list/list-sorting.component.js +54 -54
- package/esm2015/list/list-total.component.js +23 -23
- package/esm2015/list/list-views.component.js +71 -71
- package/esm2015/list/list.component.js +1123 -1123
- package/esm2015/list/list.model.js +3 -3
- package/esm2015/list/list.module.js +87 -87
- package/esm2015/list/list.pipes.js +39 -39
- package/esm2015/list/pepperi-addons-ngx-lib-list.js +6 -6
- package/esm2015/list/public-api.js +14 -14
- package/esm2015/list/virtual-scroller.js +1018 -1018
- package/esm2015/menu/menu-item.component.js +102 -102
- package/esm2015/menu/menu.component.js +173 -173
- package/esm2015/menu/menu.model.js +18 -18
- package/esm2015/menu/menu.module.js +39 -39
- package/esm2015/menu/pepperi-addons-ngx-lib-menu.js +5 -5
- package/esm2015/menu/public-api.js +6 -6
- package/esm2015/ngx-lib.module.js +76 -76
- package/esm2015/page-layout/page-layout.component.js +41 -41
- package/esm2015/page-layout/page-layout.module.js +20 -20
- package/esm2015/page-layout/pepperi-addons-ngx-lib-page-layout.js +4 -4
- package/esm2015/page-layout/public-api.js +5 -5
- package/esm2015/pepperi-addons-ngx-lib.js +8 -8
- package/esm2015/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.js +4 -4
- package/esm2015/profile-data-views-list/profile-data-view/profile-data-view.component.js +38 -38
- package/esm2015/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.js +59 -59
- package/esm2015/profile-data-views-list/profile-data-views-list.component.js +86 -86
- package/esm2015/profile-data-views-list/profile-data-views-list.model.js +1 -1
- package/esm2015/profile-data-views-list/profile-data-views-list.module.js +56 -56
- package/esm2015/profile-data-views-list/public-api.js +8 -8
- package/esm2015/public-api.js +5 -5
- package/esm2015/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.js +6 -6
- package/esm2015/quantity-selector/public-api.js +5 -5
- package/esm2015/quantity-selector/quantity-selector-validation.directive.js +43 -43
- package/esm2015/quantity-selector/quantity-selector.component.js +460 -460
- package/esm2015/quantity-selector/quantity-selector.module.js +52 -52
- package/esm2015/quantity-selector/quantity-selector.pipes.js +18 -18
- package/esm2015/query-builder/common/model/field.js +1 -1
- package/esm2015/query-builder/common/model/filter.js +1 -1
- package/esm2015/query-builder/common/model/legacy.js +1 -1
- package/esm2015/query-builder/common/model/operator-unit.js +41 -41
- package/esm2015/query-builder/common/model/operator.js +206 -206
- package/esm2015/query-builder/common/model/structure.js +1 -1
- package/esm2015/query-builder/common/model/type-map.js +26 -26
- package/esm2015/query-builder/common/model/type.js +5 -5
- package/esm2015/query-builder/common/services/output-query.service.js +110 -110
- package/esm2015/query-builder/common/services/type-convertor.service.js +39 -39
- package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +8 -8
- package/esm2015/query-builder/public-api.js +7 -7
- package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +115 -115
- package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +63 -63
- package/esm2015/query-builder/query-builder.component.js +103 -103
- package/esm2015/query-builder/query-builder.module.js +34 -34
- package/esm2015/query-builder/query-builder.service.js +281 -281
- package/esm2015/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.js +4 -4
- package/esm2015/rich-html-textarea/public-api.js +5 -5
- package/esm2015/rich-html-textarea/rich-html-textarea.component.js +219 -219
- package/esm2015/rich-html-textarea/rich-html-textarea.module.js +56 -56
- package/esm2015/search/pepperi-addons-ngx-lib-search.js +4 -4
- package/esm2015/search/public-api.js +6 -6
- package/esm2015/search/search.component.js +273 -273
- package/esm2015/search/search.model.js +1 -1
- package/esm2015/search/search.module.js +44 -44
- package/esm2015/select/pepperi-addons-ngx-lib-select.js +4 -4
- package/esm2015/select/public-api.js +5 -5
- package/esm2015/select/select.component.js +212 -213
- package/esm2015/select/select.module.js +42 -42
- package/esm2015/separator/pepperi-addons-ngx-lib-separator.js +4 -4
- package/esm2015/separator/public-api.js +5 -5
- package/esm2015/separator/separator.component.js +62 -62
- package/esm2015/separator/separator.module.js +12 -12
- package/esm2015/side-bar/pepperi-addons-ngx-lib-side-bar.js +4 -4
- package/esm2015/side-bar/public-api.js +6 -6
- package/esm2015/side-bar/side-bar.component.js +130 -130
- package/esm2015/side-bar/side-bar.model.js +1 -1
- package/esm2015/side-bar/side-bar.module.js +33 -33
- package/esm2015/signature/pepperi-addons-ngx-lib-signature.js +4 -4
- package/esm2015/signature/public-api.js +5 -5
- package/esm2015/signature/signature.component.js +230 -230
- package/esm2015/signature/signature.module.js +54 -54
- package/esm2015/size-detector/pepperi-addons-ngx-lib-size-detector.js +4 -4
- package/esm2015/size-detector/public-api.js +5 -5
- package/esm2015/size-detector/size-detector.component.js +88 -88
- package/esm2015/size-detector/size-detector.module.js +21 -21
- package/esm2015/slider/pepperi-addons-ngx-lib-slider.js +4 -4
- package/esm2015/slider/public-api.js +5 -5
- package/esm2015/slider/slider.component.js +95 -95
- package/esm2015/slider/slider.module.js +24 -24
- package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +41 -41
- package/esm2015/smart-filters/common/filter-actions.component.js +25 -25
- package/esm2015/smart-filters/common/model/base-filter-component.js +259 -259
- package/esm2015/smart-filters/common/model/creator.js +75 -75
- package/esm2015/smart-filters/common/model/field.js +116 -116
- package/esm2015/smart-filters/common/model/filter.js +1 -1
- package/esm2015/smart-filters/common/model/operator.js +215 -215
- package/esm2015/smart-filters/common/model/type.js +1 -1
- package/esm2015/smart-filters/date-filter/date-filter.component.js +143 -143
- package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +152 -152
- package/esm2015/smart-filters/number-filter/number-filter.component.js +102 -102
- package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +4 -4
- package/esm2015/smart-filters/public-api.js +18 -18
- package/esm2015/smart-filters/smart-filters.component.js +129 -129
- package/esm2015/smart-filters/smart-filters.module.js +90 -90
- package/esm2015/smart-filters/text-filter/text-filter.component.js +78 -78
- package/esm2015/textarea/pepperi-addons-ngx-lib-textarea.js +4 -4
- package/esm2015/textarea/public-api.js +5 -5
- package/esm2015/textarea/textarea.component.js +160 -160
- package/esm2015/textarea/textarea.module.js +50 -50
- package/esm2015/textbox/pepperi-addons-ngx-lib-textbox.js +5 -5
- package/esm2015/textbox/public-api.js +5 -5
- package/esm2015/textbox/textbox-validation.directive.js +85 -85
- package/esm2015/textbox/textbox.component.js +368 -368
- package/esm2015/textbox/textbox.module.js +44 -44
- package/esm2015/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.js +4 -4
- package/esm2015/textbox-icon/public-api.js +5 -5
- package/esm2015/textbox-icon/textbox-icon.component.js +40 -40
- package/esm2015/textbox-icon/textbox-icon.module.js +46 -46
- package/esm2015/top-bar/pepperi-addons-ngx-lib-top-bar.js +4 -4
- package/esm2015/top-bar/public-api.js +6 -6
- package/esm2015/top-bar/top-bar.component.js +98 -98
- package/esm2015/top-bar/top-bar.model.js +1 -1
- package/esm2015/top-bar/top-bar.module.js +40 -40
- package/fesm2015/pepperi-addons-ngx-lib-address.js +116 -116
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js +227 -227
- package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +109 -109
- package/fesm2015/pepperi-addons-ngx-lib-button.js +149 -149
- package/fesm2015/pepperi-addons-ngx-lib-carousel.js +731 -731
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +178 -178
- package/fesm2015/pepperi-addons-ngx-lib-color.js +292 -292
- package/fesm2015/pepperi-addons-ngx-lib-date.js +313 -313
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js +157 -157
- package/fesm2015/pepperi-addons-ngx-lib-draggable-items.js +143 -143
- package/fesm2015/pepperi-addons-ngx-lib-field-title.js +55 -55
- package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +252 -252
- package/fesm2015/pepperi-addons-ngx-lib-form.js +2685 -2677
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +84 -84
- package/fesm2015/pepperi-addons-ngx-lib-icon.js +662 -662
- package/fesm2015/pepperi-addons-ngx-lib-image.js +306 -300
- package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +400 -400
- package/fesm2015/pepperi-addons-ngx-lib-link.js +434 -434
- package/fesm2015/pepperi-addons-ngx-lib-list.js +2657 -2657
- package/fesm2015/pepperi-addons-ngx-lib-menu.js +314 -314
- package/fesm2015/pepperi-addons-ngx-lib-page-layout.js +55 -55
- package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.js +219 -219
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +549 -549
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +976 -976
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +256 -256
- package/fesm2015/pepperi-addons-ngx-lib-search.js +301 -301
- package/fesm2015/pepperi-addons-ngx-lib-select.js +241 -242
- package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js +71 -71
- package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +154 -154
- package/fesm2015/pepperi-addons-ngx-lib-signature.js +267 -267
- package/fesm2015/pepperi-addons-ngx-lib-size-detector.js +103 -103
- package/fesm2015/pepperi-addons-ngx-lib-slider.js +112 -112
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1351 -1351
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js +194 -194
- package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js +78 -78
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js +478 -478
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +125 -125
- package/fesm2015/pepperi-addons-ngx-lib.js +4087 -4087
- package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
- package/field-title/field-title.component.d.ts +11 -11
- package/field-title/field-title.module.d.ts +5 -5
- package/field-title/pepperi-addons-ngx-lib-field-title.d.ts +4 -4
- package/field-title/public-api.d.ts +2 -2
- package/files-uploader/files-uploader.component.d.ts +53 -53
- package/files-uploader/files-uploader.module.d.ts +5 -5
- package/files-uploader/pepperi-addons-ngx-lib-files-uploader.d.ts +4 -4
- package/files-uploader/public-api.d.ts +2 -2
- package/form/field-generator.component.d.ts +36 -36
- package/form/form.component.d.ts +88 -88
- package/form/form.model.d.ts +20 -20
- package/form/form.module.d.ts +5 -5
- package/form/indicators.component.d.ts +7 -7
- package/form/internal-button.component.d.ts +39 -39
- package/form/internal-carusel.component.d.ts +38 -38
- package/form/internal-carusel.service.d.ts +7 -7
- package/form/internal-list.component.d.ts +92 -92
- package/form/internal-menu.component.d.ts +16 -16
- package/form/internal-page.component.d.ts +72 -72
- package/form/internal-page.service.d.ts +19 -19
- package/form/pepperi-addons-ngx-lib-form.d.ts +13 -13
- package/form/public-api.d.ts +3 -3
- package/group-buttons/group-buttons.component.d.ts +20 -20
- package/group-buttons/group-buttons.module.d.ts +5 -5
- package/group-buttons/pepperi-addons-ngx-lib-group-buttons.d.ts +4 -4
- package/group-buttons/public-api.d.ts +2 -2
- package/icon/icon-generated-all.model.d.ts +99 -99
- package/icon/icon-generated.model.d.ts +394 -394
- package/icon/icon-registry.service.d.ts +6 -6
- package/icon/icon.component.d.ts +46 -46
- package/icon/icon.module.d.ts +2 -2
- package/icon/icon.service.d.ts +10 -10
- package/icon/pepperi-addons-ngx-lib-icon.d.ts +4 -4
- package/icon/public-api.d.ts +6 -6
- package/image/image.component.d.ts +63 -62
- package/image/image.module.d.ts +5 -5
- package/image/image.service.d.ts +11 -11
- package/image/pepperi-addons-ngx-lib-image.d.ts +4 -4
- package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
- package/image/public-api.d.ts +3 -3
- package/images-filmstrip/images-filmstrip.component.d.ts +82 -82
- package/images-filmstrip/images-filmstrip.module.d.ts +5 -5
- package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.d.ts +4 -4
- package/images-filmstrip/public-api.d.ts +2 -2
- package/link/link.component.d.ts +136 -136
- package/link/link.module.d.ts +5 -5
- package/link/link.pipes.d.ts +4 -4
- package/link/pepperi-addons-ngx-lib-link.d.ts +5 -5
- package/link/public-api.d.ts +2 -2
- package/list/list-actions.component.d.ts +14 -14
- package/list/list-carousel.component.d.ts +36 -36
- package/list/list-chooser.component.d.ts +25 -25
- package/list/list-pager.component.d.ts +35 -35
- package/list/list-sorting.component.d.ts +26 -26
- package/list/list-total.component.d.ts +7 -7
- package/list/list-views.component.d.ts +31 -31
- package/list/list.component.d.ts +159 -159
- package/list/list.model.d.ts +30 -30
- package/list/list.module.d.ts +5 -5
- package/list/list.pipes.d.ts +11 -11
- package/list/pepperi-addons-ngx-lib-list.d.ts +6 -6
- package/list/public-api.d.ts +10 -10
- package/list/virtual-scroller.d.ts +176 -176
- package/menu/menu-item.component.d.ts +25 -25
- package/menu/menu.component.d.ts +43 -43
- package/menu/menu.model.d.ts +25 -25
- package/menu/menu.module.d.ts +5 -5
- package/menu/pepperi-addons-ngx-lib-menu.d.ts +5 -5
- package/menu/public-api.d.ts +3 -3
- package/ngx-lib.module.d.ts +2 -2
- package/package.json +1 -1
- package/page-layout/page-layout.component.d.ts +16 -16
- package/page-layout/page-layout.module.d.ts +2 -2
- package/page-layout/pepperi-addons-ngx-lib-page-layout.d.ts +4 -4
- package/page-layout/public-api.d.ts +2 -2
- package/pepperi-addons-ngx-lib.d.ts +8 -8
- package/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.d.ts +4 -4
- package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +15 -15
- package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +21 -21
- package/profile-data-views-list/profile-data-views-list.component.d.ts +32 -32
- package/profile-data-views-list/profile-data-views-list.model.d.ts +18 -18
- package/profile-data-views-list/profile-data-views-list.module.d.ts +5 -5
- package/profile-data-views-list/public-api.d.ts +5 -5
- package/public-api.d.ts +2 -2
- package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.d.ts +6 -6
- package/quantity-selector/public-api.d.ts +2 -2
- package/quantity-selector/quantity-selector-validation.directive.d.ts +13 -13
- package/quantity-selector/quantity-selector.component.d.ts +96 -96
- package/quantity-selector/quantity-selector.module.d.ts +5 -5
- package/quantity-selector/quantity-selector.pipes.d.ts +4 -4
- package/query-builder/common/model/field.d.ts +8 -8
- package/query-builder/common/model/filter.d.ts +6 -6
- package/query-builder/common/model/legacy.d.ts +29 -29
- package/query-builder/common/model/operator-unit.d.ts +13 -13
- package/query-builder/common/model/operator.d.ts +21 -21
- package/query-builder/common/model/structure.d.ts +4 -4
- package/query-builder/common/model/type-map.d.ts +12 -12
- package/query-builder/common/model/type.d.ts +4 -4
- package/query-builder/common/services/output-query.service.d.ts +44 -44
- package/query-builder/common/services/type-convertor.service.d.ts +10 -10
- package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +8 -8
- package/query-builder/public-api.d.ts +4 -4
- package/query-builder/query-builder-item/query-builder-item.component.d.ts +37 -37
- package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -27
- package/query-builder/query-builder.component.d.ts +35 -35
- package/query-builder/query-builder.module.d.ts +2 -2
- package/query-builder/query-builder.service.d.ts +94 -94
- package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.d.ts +4 -4
- package/rich-html-textarea/public-api.d.ts +2 -2
- package/rich-html-textarea/rich-html-textarea.component.d.ts +75 -75
- package/rich-html-textarea/rich-html-textarea.module.d.ts +5 -5
- package/search/pepperi-addons-ngx-lib-search.d.ts +4 -4
- package/search/public-api.d.ts +3 -3
- package/search/search.component.d.ts +61 -61
- package/search/search.model.d.ts +14 -14
- package/search/search.module.d.ts +5 -5
- package/select/pepperi-addons-ngx-lib-select.d.ts +4 -4
- package/select/public-api.d.ts +2 -2
- package/select/select.component.d.ts +50 -50
- package/select/select.module.d.ts +5 -5
- package/separator/pepperi-addons-ngx-lib-separator.d.ts +4 -4
- package/separator/public-api.d.ts +2 -2
- package/separator/separator.component.d.ts +19 -19
- package/separator/separator.module.d.ts +2 -2
- package/side-bar/pepperi-addons-ngx-lib-side-bar.d.ts +4 -4
- package/side-bar/public-api.d.ts +3 -3
- package/side-bar/side-bar.component.d.ts +38 -38
- package/side-bar/side-bar.model.d.ts +4 -4
- package/side-bar/side-bar.module.d.ts +5 -5
- package/signature/pepperi-addons-ngx-lib-signature.d.ts +4 -4
- package/signature/public-api.d.ts +2 -2
- package/signature/signature.component.d.ts +64 -64
- package/signature/signature.module.d.ts +5 -5
- package/size-detector/pepperi-addons-ngx-lib-size-detector.d.ts +4 -4
- package/size-detector/public-api.d.ts +2 -2
- package/size-detector/size-detector.component.d.ts +26 -26
- package/size-detector/size-detector.module.d.ts +2 -2
- package/slider/pepperi-addons-ngx-lib-slider.d.ts +4 -4
- package/slider/public-api.d.ts +2 -2
- package/slider/slider.component.d.ts +36 -36
- package/slider/slider.module.d.ts +2 -2
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +12 -12
- package/smart-filters/common/filter-actions.component.d.ts +9 -9
- package/smart-filters/common/model/base-filter-component.d.ts +67 -67
- package/smart-filters/common/model/creator.d.ts +6 -6
- package/smart-filters/common/model/field.d.ts +69 -69
- package/smart-filters/common/model/filter.d.ts +11 -11
- package/smart-filters/common/model/operator.d.ts +38 -38
- package/smart-filters/common/model/type.d.ts +4 -4
- package/smart-filters/date-filter/date-filter.component.d.ts +41 -41
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +39 -39
- package/smart-filters/number-filter/number-filter.component.d.ts +38 -38
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +4 -4
- package/smart-filters/public-api.d.ts +14 -14
- package/smart-filters/smart-filters.component.d.ts +32 -32
- package/smart-filters/smart-filters.module.d.ts +5 -5
- package/smart-filters/text-filter/text-filter.component.d.ts +17 -17
- package/src/core/style/abstracts/functions.scss +10 -10
- package/src/core/style/abstracts/mixins.scss +96 -96
- package/src/core/style/base/typography.scss +8 -0
- package/textarea/pepperi-addons-ngx-lib-textarea.d.ts +4 -4
- package/textarea/public-api.d.ts +2 -2
- package/textarea/textarea.component.d.ts +51 -51
- package/textarea/textarea.module.d.ts +5 -5
- package/textbox/pepperi-addons-ngx-lib-textbox.d.ts +5 -5
- package/textbox/public-api.d.ts +2 -2
- package/textbox/textbox-validation.directive.d.ts +18 -18
- package/textbox/textbox.component.d.ts +131 -131
- package/textbox/textbox.module.d.ts +5 -5
- package/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.d.ts +4 -4
- package/textbox-icon/public-api.d.ts +2 -2
- package/textbox-icon/textbox-icon.component.d.ts +10 -10
- package/textbox-icon/textbox-icon.module.d.ts +5 -5
- package/theming.scss +0 -15
- package/top-bar/pepperi-addons-ngx-lib-top-bar.d.ts +4 -4
- package/top-bar/public-api.d.ts +3 -3
- package/top-bar/top-bar.component.d.ts +36 -36
- package/top-bar/top-bar.model.d.ts +4 -4
- package/top-bar/top-bar.module.d.ts +5 -5
|
@@ -1,351 +1,351 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, ViewContainerRef, TemplateRef, ChangeDetectionStrategy, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
-
import { FormBuilder } from '@angular/forms';
|
|
3
|
-
import { PepInternalPageService } from './internal-page.service';
|
|
4
|
-
import { PepCustomizationService, FIELD_TYPE, } from '@pepperi-addons/ngx-lib';
|
|
5
|
-
import { PepInternalListComponent, } from './internal-list.component';
|
|
6
|
-
import { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';
|
|
7
|
-
import { fromEvent } from 'rxjs';
|
|
8
|
-
import { debounceTime } from 'rxjs/operators';
|
|
9
|
-
import { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';
|
|
10
|
-
export class PepInternalPageComponent {
|
|
11
|
-
constructor(fb, dialogService, internalPageService, customizationService, elementRef, changeDetectorRef) {
|
|
12
|
-
this.fb = fb;
|
|
13
|
-
this.dialogService = dialogService;
|
|
14
|
-
this.internalPageService = internalPageService;
|
|
15
|
-
this.customizationService = customizationService;
|
|
16
|
-
this.elementRef = elementRef;
|
|
17
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
18
|
-
this.controlType = 'internalPage';
|
|
19
|
-
this.layoutType = 'form';
|
|
20
|
-
this.internalFormFieldChange = new EventEmitter();
|
|
21
|
-
this.internalFormFieldClick = new EventEmitter();
|
|
22
|
-
this.checkForChanges = null;
|
|
23
|
-
this.childData = null;
|
|
24
|
-
this.totalsRow = [];
|
|
25
|
-
this.additionalApiNames = null;
|
|
26
|
-
this.currentAdditionalApiName = null;
|
|
27
|
-
this.focusedQS = false;
|
|
28
|
-
this.fieldIdWithFocus = '';
|
|
29
|
-
this.columnWidth = 100;
|
|
30
|
-
this.coverChildTable = false;
|
|
31
|
-
this.currentViewType = null;
|
|
32
|
-
this.sumOfMinColWidth = 0;
|
|
33
|
-
this.totalRowsWidth = 0;
|
|
34
|
-
this.viewWidth = '100%';
|
|
35
|
-
this.viewHeight = 'auto';
|
|
36
|
-
this.displayQSbtns = true;
|
|
37
|
-
this.selectedApiName = '';
|
|
38
|
-
this.showSort = false;
|
|
39
|
-
this.defaultRowSpan = -1;
|
|
40
|
-
}
|
|
41
|
-
fillData(isInDialog = false) {
|
|
42
|
-
var _a, _b, _c, _d, _e;
|
|
43
|
-
const view = this.matrixTemplate.createEmbeddedView(null);
|
|
44
|
-
(_a = this.customList) === null || _a === void 0 ? void 0 : _a.clear();
|
|
45
|
-
(_b = this.orgCont) === null || _b === void 0 ? void 0 : _b.clear();
|
|
46
|
-
if (isInDialog) {
|
|
47
|
-
(_c = this.dialogCont) === null || _c === void 0 ? void 0 : _c.clear();
|
|
48
|
-
(_d = this.dialogCont) === null || _d === void 0 ? void 0 : _d.insert(view);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
(_e = this.orgCont) === null || _e === void 0 ? void 0 : _e.insert(view);
|
|
52
|
-
}
|
|
53
|
-
setTimeout(() => {
|
|
54
|
-
const viewType = this.isTableView()
|
|
55
|
-
? 'table'
|
|
56
|
-
: 'lines';
|
|
57
|
-
this.customList.initListData(this.uiControl, this.childData.TotalRows, this.childData.Rows, viewType);
|
|
58
|
-
this.setTotalsRow();
|
|
59
|
-
// if (!this.childModal.isShown) {
|
|
60
|
-
const childrenCount = this.childData.Rows
|
|
61
|
-
? this.childData.Rows.length
|
|
62
|
-
: 0;
|
|
63
|
-
const isEven = childrenCount % 2 === 0;
|
|
64
|
-
// 3 for matrix & flat matrix because the header + total is 2 more rows.
|
|
65
|
-
const rowsToAdd = this.isMatrixView() || this.isFlatMatrixView()
|
|
66
|
-
? isEven
|
|
67
|
-
? 3
|
|
68
|
-
: 4
|
|
69
|
-
: 1;
|
|
70
|
-
const formRowHeight = this.customizationService.calculateFormFieldHeight() * 16; // convert rem to pixel
|
|
71
|
-
// Set the default only if not set yet.
|
|
72
|
-
if (this.defaultRowSpan === -1) {
|
|
73
|
-
this.defaultRowSpan = this.field.rowSpan;
|
|
74
|
-
}
|
|
75
|
-
this.sumOfMinColWidth = 0;
|
|
76
|
-
this.totalRowsWidth = 0;
|
|
77
|
-
this.childData.UIControl.ControlFields.forEach((uiControlField) => {
|
|
78
|
-
this.totalRowsWidth += uiControlField.ColumnWidth;
|
|
79
|
-
uiControlField.minFieldWidth = this.mmToPx(12); // NEED TO GET THIS PARAM FROM CUSTOMIZATION;
|
|
80
|
-
this.sumOfMinColWidth += 12;
|
|
81
|
-
});
|
|
82
|
-
this.setViewCover(this.childData.Rows);
|
|
83
|
-
if (this.coverChildTable) {
|
|
84
|
-
this.field.rowSpan = this.defaultRowSpan;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
// For line view Add the height of the line (form height).
|
|
88
|
-
if (this.currentViewType.Key === 'OrderCenterFlatMatrixLine') {
|
|
89
|
-
const maxRow = Math.max(...this.uiControl.ControlFields.map((f) => {
|
|
90
|
-
return f.Layout.Y + f.Layout.Height;
|
|
91
|
-
}));
|
|
92
|
-
// * 16 convert rem to pixel
|
|
93
|
-
const cardRowsHeight = this.customizationService.calculateCardRowsHeight(maxRow) * 16;
|
|
94
|
-
// maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.
|
|
95
|
-
// const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 56) / formRowHeight) + rowsToAdd);
|
|
96
|
-
// + 16 is the 1rem margin outside card.
|
|
97
|
-
const rowSpanToAdd = (childrenCount * (cardRowsHeight + 16)) /
|
|
98
|
-
formRowHeight +
|
|
99
|
-
rowsToAdd;
|
|
100
|
-
this.field.rowSpan = rowSpanToAdd;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
// const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;
|
|
104
|
-
// this.field.rowSpan = Math.ceil((tableRowsHeight + (rowsToAdd * 40)) / formRowHeight);
|
|
105
|
-
// * 16 convert rem to pixel
|
|
106
|
-
const rowsToAddHeight = this.customizationService.calculateTableRowsHeight(rowsToAdd, false) * 16;
|
|
107
|
-
const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;
|
|
108
|
-
this.field.rowSpan =
|
|
109
|
-
(rowsToAddHeight + tableRowsHeight) / formRowHeight;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}, 0);
|
|
113
|
-
this.changeDetectorRef.markForCheck();
|
|
114
|
-
}
|
|
115
|
-
fillChildData(res) {
|
|
116
|
-
this.childData = res;
|
|
117
|
-
this.uiControl = res.UIControl;
|
|
118
|
-
this.additionalApiNames = res.AdditionalApiNames;
|
|
119
|
-
this.fillData();
|
|
120
|
-
}
|
|
121
|
-
mmToPx(mm) {
|
|
122
|
-
const height = this.my1mm.nativeElement.clientHeight;
|
|
123
|
-
return Math.floor(mm * height); // returns sizes in PX
|
|
124
|
-
}
|
|
125
|
-
isMatrixView() {
|
|
126
|
-
return (this.currentViewType &&
|
|
127
|
-
this.currentViewType.Key === 'OrderCenterMatrix');
|
|
128
|
-
}
|
|
129
|
-
isFlatMatrixView() {
|
|
130
|
-
return (this.currentViewType &&
|
|
131
|
-
this.currentViewType.Key === 'OrderCenterFlatMatrixGrid');
|
|
132
|
-
}
|
|
133
|
-
isTableView() {
|
|
134
|
-
return this.isMatrixView() || this.isFlatMatrixView();
|
|
135
|
-
}
|
|
136
|
-
changeChildrenViewType(viewTypeKey) {
|
|
137
|
-
this.rows = [];
|
|
138
|
-
this.uiControl = null;
|
|
139
|
-
for (const vt of this.childViewTypes) {
|
|
140
|
-
if (vt.Key === viewTypeKey) {
|
|
141
|
-
this.currentViewType = vt;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
this.currentViewTypeTitle = this.currentViewType.Value;
|
|
146
|
-
this.internalPageService.changeChildrenViewType(this.currentViewType.Key, (res) => {
|
|
147
|
-
if (res.Rows) {
|
|
148
|
-
this.fillChildData(res);
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
setViewCover(rows) {
|
|
153
|
-
if (!rows) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
const matrixCont = this.mainViewCont.nativeElement;
|
|
157
|
-
const viewWidth = matrixCont.clientWidth;
|
|
158
|
-
this.viewWidth = viewWidth ? viewWidth.toString() : '100%';
|
|
159
|
-
// if the matrix located on the bottom / there is nothing under the matrix we dont need to check the height
|
|
160
|
-
if (parseInt(viewWidth, 10) < this.mmToPx(this.sumOfMinColWidth)) {
|
|
161
|
-
this.coverChildTable = true;
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
this.coverChildTable = false;
|
|
165
|
-
}
|
|
166
|
-
this.changeDetectorRef.markForCheck();
|
|
167
|
-
}
|
|
168
|
-
showMatrixDialog() {
|
|
169
|
-
const config = this.dialogService.getDialogConfig({
|
|
170
|
-
disableClose: false,
|
|
171
|
-
}, 'large');
|
|
172
|
-
const dialogRef = this.dialogService.openDialog(this.matrixDialogTemplate, {}, config);
|
|
173
|
-
dialogRef.afterOpened().subscribe(() => {
|
|
174
|
-
this.fillData(true);
|
|
175
|
-
});
|
|
176
|
-
dialogRef.afterClosed().subscribe((value) => {
|
|
177
|
-
this.fillData(false);
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
ngOnInit() {
|
|
181
|
-
// let field = this.field as PepInternalPageField;
|
|
182
|
-
this.internalPageService.initDetails(this.field.objectId, this.field.parentId, this.field.searchCode, (resViewTypes) => {
|
|
183
|
-
// my code DI-7134
|
|
184
|
-
resViewTypes.Rows = resViewTypes.Rows.filter((item) => item.Key !== 'OrderCenterView1');
|
|
185
|
-
if (resViewTypes.Rows && resViewTypes.Rows.length > 0) {
|
|
186
|
-
if (!resViewTypes.Default) {
|
|
187
|
-
resViewTypes.Default = resViewTypes.Rows[0].Key;
|
|
188
|
-
}
|
|
189
|
-
this.childViewTypes = resViewTypes.Rows;
|
|
190
|
-
this.currentViewType = resViewTypes.Rows[0];
|
|
191
|
-
// for (var i = 0; i < resViewTypes.Rows.length; i++) {
|
|
192
|
-
for (const viewTypeRow of resViewTypes.Rows) {
|
|
193
|
-
if (viewTypeRow.Value === resViewTypes.Default) {
|
|
194
|
-
this.currentViewType = viewTypeRow;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
this.loadLastAdditionalApiName();
|
|
198
|
-
this.changeChildrenViewType(this.currentViewType.Key);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
this.resize = fromEvent(window, 'resize')
|
|
202
|
-
.pipe(debounceTime(10))
|
|
203
|
-
.subscribe((event) => {
|
|
204
|
-
this.setViewCover(this.rows);
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
loadLastAdditionalApiName() {
|
|
208
|
-
const daa = sessionStorage.getItem(PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME);
|
|
209
|
-
if (daa && daa.length > 0) {
|
|
210
|
-
const additionalApiName = JSON.parse(daa);
|
|
211
|
-
this.currentAdditionalApiName = additionalApiName;
|
|
212
|
-
this.internalPageService.additionalApiName = additionalApiName === null || additionalApiName === void 0 ? void 0 : additionalApiName.Key;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
ngOnDestroy() {
|
|
216
|
-
if (this.resize) {
|
|
217
|
-
this.resize.unsubscribe();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
changeAdditionalApiName(additionalApiName) {
|
|
221
|
-
this.internalPageService.changeAdditionalApiName(additionalApiName ? additionalApiName.Key : '', (res) => {
|
|
222
|
-
// for (let index = 0; index < res.Rows.length; index++) {
|
|
223
|
-
for (const row of res.Rows) {
|
|
224
|
-
this.updateChanges(row);
|
|
225
|
-
}
|
|
226
|
-
this.changeDetectorRef.markForCheck();
|
|
227
|
-
});
|
|
228
|
-
sessionStorage.setItem(PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME, JSON.stringify(additionalApiName));
|
|
229
|
-
setTimeout(() => {
|
|
230
|
-
this.currentAdditionalApiName = additionalApiName;
|
|
231
|
-
}, 0);
|
|
232
|
-
}
|
|
233
|
-
setTotalsRow() {
|
|
234
|
-
this.totalsRow = [];
|
|
235
|
-
if (this.isMatrixView() || this.isFlatMatrixView()) {
|
|
236
|
-
let totalCol = 0;
|
|
237
|
-
const items = this.customList.items;
|
|
238
|
-
if (items) {
|
|
239
|
-
for (let col = 0; col < items[0].Fields.length; col++) {
|
|
240
|
-
const field = items[0].Fields[col];
|
|
241
|
-
if (field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||
|
|
242
|
-
field.FieldType ===
|
|
243
|
-
FIELD_TYPE.NumberIntegerQuantitySelector ||
|
|
244
|
-
field.FieldType === FIELD_TYPE.NumberRealForMatrix ||
|
|
245
|
-
field.FieldType ===
|
|
246
|
-
FIELD_TYPE.NumberRealQuantitySelector ||
|
|
247
|
-
field.FieldType === FIELD_TYPE.CalculatedInt ||
|
|
248
|
-
field.FieldType === FIELD_TYPE.NumberInteger ||
|
|
249
|
-
field.FieldType === FIELD_TYPE.CalculatedReal ||
|
|
250
|
-
field.FieldType === FIELD_TYPE.NumberReal) {
|
|
251
|
-
totalCol = 0;
|
|
252
|
-
for (const listItem of items) {
|
|
253
|
-
if (listItem.Fields[col] &&
|
|
254
|
-
listItem.Fields[col].Value) {
|
|
255
|
-
const num = parseFloat(listItem.Fields[col].Value);
|
|
256
|
-
totalCol += isNaN(num) ? 0 : num;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
this.totalsRow.push(totalCol);
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
this.totalsRow.push('');
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
updateChanges(elementToUpdate) {
|
|
269
|
-
this.customList.updateItem(elementToUpdate);
|
|
270
|
-
// Update memory data
|
|
271
|
-
for (let index = 0; index < this.childData.Rows.length; index++) {
|
|
272
|
-
if (this.childData.Rows[index].UID === elementToUpdate.UID) {
|
|
273
|
-
this.childData.Rows[index] = elementToUpdate;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
setValueCallback(id, res) {
|
|
278
|
-
if (res.Rows.length === 1) {
|
|
279
|
-
const field = res.Rows[0].Fields.find((f) => f.ApiName === 'ObjectMenu');
|
|
280
|
-
if (field) {
|
|
281
|
-
// HACK : Until "Enabled" returns from the server, we set PepMenu to be
|
|
282
|
-
// Disabled in cart on regular items and not campign items.
|
|
283
|
-
field.Enabled = true;
|
|
284
|
-
}
|
|
285
|
-
this.updateChanges(res.Rows[0]);
|
|
286
|
-
}
|
|
287
|
-
this.setTotalsRow();
|
|
288
|
-
this.checkForChanges = new Date();
|
|
289
|
-
// DI-15985
|
|
290
|
-
this.internalFormFieldChange.emit(res);
|
|
291
|
-
this.changeDetectorRef.markForCheck();
|
|
292
|
-
}
|
|
293
|
-
onCustomizeObjectChanged(customizeObjectChangedData) {
|
|
294
|
-
this.internalPageService.childValueChanged(customizeObjectChangedData.id, customizeObjectChangedData.key, customizeObjectChangedData.value, (res) => {
|
|
295
|
-
this.setValueCallback(customizeObjectChangedData.id, res);
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
onCustomizeFieldClick(fieldClickEvent) {
|
|
299
|
-
let handledEvent = false;
|
|
300
|
-
// For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent
|
|
301
|
-
if (fieldClickEvent.controlType === 'qs') {
|
|
302
|
-
if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {
|
|
303
|
-
handledEvent = true;
|
|
304
|
-
this.internalPageService.childPlusClick(fieldClickEvent.id, fieldClickEvent.key, (res) => {
|
|
305
|
-
this.setValueCallback(fieldClickEvent.id, res);
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
else if (fieldClickEvent.value === PepQuantitySelectorComponent.MINUS) {
|
|
309
|
-
handledEvent = true;
|
|
310
|
-
this.internalPageService.childMinusClick(fieldClickEvent.id, fieldClickEvent.key, (res) => {
|
|
311
|
-
this.setValueCallback(fieldClickEvent.id, res);
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
if (!handledEvent) {
|
|
316
|
-
this.internalFormFieldClick.emit(fieldClickEvent);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME = 'item_details_currentAdditionalApiName';
|
|
321
|
-
PepInternalPageComponent.decorators = [
|
|
322
|
-
{ type: Component, args: [{
|
|
323
|
-
selector: 'pep-internal-page',
|
|
324
|
-
template: "<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\"> {{\n currentAdditionalApiName?.Value }} </span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->",
|
|
325
|
-
providers: [PepInternalPageService],
|
|
326
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
327
|
-
styles: [":host{display:grid;width:inherit;height:inherit}.matrix-title-container{padding:0;height:2.5rem;height:var(--pep-form-field-height,2.5rem);display:flex;align-items:flex-end}.matrix-title-container .block-with-text{width:100%;max-height:inherit;font-weight:600;font-weight:var(--pep-font-weight-bold,600);display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.matrix-title-container .buttons-container{display:flex;align-self:center}.matrix-title-container .buttons-container .pep-button,.matrix-title-container .buttons-container .pepperi-button{width:-webkit-max-content;width:-moz-max-content;width:max-content}#mainViewCont{width:100%;height:inherit;overflow:hidden;padding:0 .25rem;padding:0 var(--pep-spacing-xs,.25rem)}#mainViewCont .table-cover{background-color:#fff;z-index:98;position:absolute;top:0;width:100%;height:inherit;opacity:.5}#mainViewCont .table-cover-button{position:absolute;left:50%;transform:translate(-50%,-50%);top:calc(50% + 2.5rem);top:calc(50% + var(--pep-form-field-height, 2.5rem));z-index:99}#mainViewCont .table-cover-button.lineview-btn{top:calc(2 * 2.5rem);top:calc(2 * var(--pep-form-field-height, 2.5rem));transform:translate(-50%)}#mainViewCont .underCover{max-height:inherit;overflow:hidden}#mainViewCont ::ng-deep.table-header{top:unset!important}"]
|
|
328
|
-
},] }
|
|
329
|
-
];
|
|
330
|
-
PepInternalPageComponent.ctorParameters = () => [
|
|
331
|
-
{ type: FormBuilder },
|
|
332
|
-
{ type: PepDialogService },
|
|
333
|
-
{ type: PepInternalPageService },
|
|
334
|
-
{ type: PepCustomizationService },
|
|
335
|
-
{ type: ElementRef },
|
|
336
|
-
{ type: ChangeDetectorRef }
|
|
337
|
-
];
|
|
338
|
-
PepInternalPageComponent.propDecorators = {
|
|
339
|
-
field: [{ type: Input }],
|
|
340
|
-
layoutType: [{ type: Input }],
|
|
341
|
-
internalFormFieldChange: [{ type: Output }],
|
|
342
|
-
internalFormFieldClick: [{ type: Output }],
|
|
343
|
-
my1mm: [{ type: ViewChild, args: ['my1mm',] }],
|
|
344
|
-
mainViewCont: [{ type: ViewChild, args: ['mainViewCont',] }],
|
|
345
|
-
orgCont: [{ type: ViewChild, args: ['orgCont', { read: ViewContainerRef },] }],
|
|
346
|
-
dialogCont: [{ type: ViewChild, args: ['dialogCont', { read: ViewContainerRef },] }],
|
|
347
|
-
matrixTemplate: [{ type: ViewChild, args: ['matrixTemplate',] }],
|
|
348
|
-
matrixDialogTemplate: [{ type: ViewChild, args: ['matrixDialogTemplate', { read: TemplateRef },] }],
|
|
349
|
-
customList: [{ type: ViewChild, args: [PepInternalListComponent,] }]
|
|
350
|
-
};
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, ViewContainerRef, TemplateRef, ChangeDetectionStrategy, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
+
import { FormBuilder } from '@angular/forms';
|
|
3
|
+
import { PepInternalPageService } from './internal-page.service';
|
|
4
|
+
import { PepCustomizationService, FIELD_TYPE, } from '@pepperi-addons/ngx-lib';
|
|
5
|
+
import { PepInternalListComponent, } from './internal-list.component';
|
|
6
|
+
import { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';
|
|
7
|
+
import { fromEvent } from 'rxjs';
|
|
8
|
+
import { debounceTime } from 'rxjs/operators';
|
|
9
|
+
import { PepQuantitySelectorComponent } from '@pepperi-addons/ngx-lib/quantity-selector';
|
|
10
|
+
export class PepInternalPageComponent {
|
|
11
|
+
constructor(fb, dialogService, internalPageService, customizationService, elementRef, changeDetectorRef) {
|
|
12
|
+
this.fb = fb;
|
|
13
|
+
this.dialogService = dialogService;
|
|
14
|
+
this.internalPageService = internalPageService;
|
|
15
|
+
this.customizationService = customizationService;
|
|
16
|
+
this.elementRef = elementRef;
|
|
17
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
18
|
+
this.controlType = 'internalPage';
|
|
19
|
+
this.layoutType = 'form';
|
|
20
|
+
this.internalFormFieldChange = new EventEmitter();
|
|
21
|
+
this.internalFormFieldClick = new EventEmitter();
|
|
22
|
+
this.checkForChanges = null;
|
|
23
|
+
this.childData = null;
|
|
24
|
+
this.totalsRow = [];
|
|
25
|
+
this.additionalApiNames = null;
|
|
26
|
+
this.currentAdditionalApiName = null;
|
|
27
|
+
this.focusedQS = false;
|
|
28
|
+
this.fieldIdWithFocus = '';
|
|
29
|
+
this.columnWidth = 100;
|
|
30
|
+
this.coverChildTable = false;
|
|
31
|
+
this.currentViewType = null;
|
|
32
|
+
this.sumOfMinColWidth = 0;
|
|
33
|
+
this.totalRowsWidth = 0;
|
|
34
|
+
this.viewWidth = '100%';
|
|
35
|
+
this.viewHeight = 'auto';
|
|
36
|
+
this.displayQSbtns = true;
|
|
37
|
+
this.selectedApiName = '';
|
|
38
|
+
this.showSort = false;
|
|
39
|
+
this.defaultRowSpan = -1;
|
|
40
|
+
}
|
|
41
|
+
fillData(isInDialog = false) {
|
|
42
|
+
var _a, _b, _c, _d, _e;
|
|
43
|
+
const view = this.matrixTemplate.createEmbeddedView(null);
|
|
44
|
+
(_a = this.customList) === null || _a === void 0 ? void 0 : _a.clear();
|
|
45
|
+
(_b = this.orgCont) === null || _b === void 0 ? void 0 : _b.clear();
|
|
46
|
+
if (isInDialog) {
|
|
47
|
+
(_c = this.dialogCont) === null || _c === void 0 ? void 0 : _c.clear();
|
|
48
|
+
(_d = this.dialogCont) === null || _d === void 0 ? void 0 : _d.insert(view);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
(_e = this.orgCont) === null || _e === void 0 ? void 0 : _e.insert(view);
|
|
52
|
+
}
|
|
53
|
+
setTimeout(() => {
|
|
54
|
+
const viewType = this.isTableView()
|
|
55
|
+
? 'table'
|
|
56
|
+
: 'lines';
|
|
57
|
+
this.customList.initListData(this.uiControl, this.childData.TotalRows, this.childData.Rows, viewType);
|
|
58
|
+
this.setTotalsRow();
|
|
59
|
+
// if (!this.childModal.isShown) {
|
|
60
|
+
const childrenCount = this.childData.Rows
|
|
61
|
+
? this.childData.Rows.length
|
|
62
|
+
: 0;
|
|
63
|
+
const isEven = childrenCount % 2 === 0;
|
|
64
|
+
// 3 for matrix & flat matrix because the header + total is 2 more rows.
|
|
65
|
+
const rowsToAdd = this.isMatrixView() || this.isFlatMatrixView()
|
|
66
|
+
? isEven
|
|
67
|
+
? 3
|
|
68
|
+
: 4
|
|
69
|
+
: 1;
|
|
70
|
+
const formRowHeight = this.customizationService.calculateFormFieldHeight() * 16; // convert rem to pixel
|
|
71
|
+
// Set the default only if not set yet.
|
|
72
|
+
if (this.defaultRowSpan === -1) {
|
|
73
|
+
this.defaultRowSpan = this.field.rowSpan;
|
|
74
|
+
}
|
|
75
|
+
this.sumOfMinColWidth = 0;
|
|
76
|
+
this.totalRowsWidth = 0;
|
|
77
|
+
this.childData.UIControl.ControlFields.forEach((uiControlField) => {
|
|
78
|
+
this.totalRowsWidth += uiControlField.ColumnWidth;
|
|
79
|
+
uiControlField.minFieldWidth = this.mmToPx(12); // NEED TO GET THIS PARAM FROM CUSTOMIZATION;
|
|
80
|
+
this.sumOfMinColWidth += 12;
|
|
81
|
+
});
|
|
82
|
+
this.setViewCover(this.childData.Rows);
|
|
83
|
+
if (this.coverChildTable) {
|
|
84
|
+
this.field.rowSpan = this.defaultRowSpan;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// For line view Add the height of the line (form height).
|
|
88
|
+
if (this.currentViewType.Key === 'OrderCenterFlatMatrixLine') {
|
|
89
|
+
const maxRow = Math.max(...this.uiControl.ControlFields.map((f) => {
|
|
90
|
+
return f.Layout.Y + f.Layout.Height;
|
|
91
|
+
}));
|
|
92
|
+
// * 16 convert rem to pixel
|
|
93
|
+
const cardRowsHeight = this.customizationService.calculateCardRowsHeight(maxRow) * 16;
|
|
94
|
+
// maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.
|
|
95
|
+
// const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 56) / formRowHeight) + rowsToAdd);
|
|
96
|
+
// + 16 is the 1rem margin outside card.
|
|
97
|
+
const rowSpanToAdd = (childrenCount * (cardRowsHeight + 16)) /
|
|
98
|
+
formRowHeight +
|
|
99
|
+
rowsToAdd;
|
|
100
|
+
this.field.rowSpan = rowSpanToAdd;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;
|
|
104
|
+
// this.field.rowSpan = Math.ceil((tableRowsHeight + (rowsToAdd * 40)) / formRowHeight);
|
|
105
|
+
// * 16 convert rem to pixel
|
|
106
|
+
const rowsToAddHeight = this.customizationService.calculateTableRowsHeight(rowsToAdd, false) * 16;
|
|
107
|
+
const tableRowsHeight = this.customizationService.calculateTableRowsHeight(childrenCount) * 16;
|
|
108
|
+
this.field.rowSpan =
|
|
109
|
+
(rowsToAddHeight + tableRowsHeight) / formRowHeight;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}, 0);
|
|
113
|
+
this.changeDetectorRef.markForCheck();
|
|
114
|
+
}
|
|
115
|
+
fillChildData(res) {
|
|
116
|
+
this.childData = res;
|
|
117
|
+
this.uiControl = res.UIControl;
|
|
118
|
+
this.additionalApiNames = res.AdditionalApiNames;
|
|
119
|
+
this.fillData();
|
|
120
|
+
}
|
|
121
|
+
mmToPx(mm) {
|
|
122
|
+
const height = this.my1mm.nativeElement.clientHeight;
|
|
123
|
+
return Math.floor(mm * height); // returns sizes in PX
|
|
124
|
+
}
|
|
125
|
+
isMatrixView() {
|
|
126
|
+
return (this.currentViewType &&
|
|
127
|
+
this.currentViewType.Key === 'OrderCenterMatrix');
|
|
128
|
+
}
|
|
129
|
+
isFlatMatrixView() {
|
|
130
|
+
return (this.currentViewType &&
|
|
131
|
+
this.currentViewType.Key === 'OrderCenterFlatMatrixGrid');
|
|
132
|
+
}
|
|
133
|
+
isTableView() {
|
|
134
|
+
return this.isMatrixView() || this.isFlatMatrixView();
|
|
135
|
+
}
|
|
136
|
+
changeChildrenViewType(viewTypeKey) {
|
|
137
|
+
this.rows = [];
|
|
138
|
+
this.uiControl = null;
|
|
139
|
+
for (const vt of this.childViewTypes) {
|
|
140
|
+
if (vt.Key === viewTypeKey) {
|
|
141
|
+
this.currentViewType = vt;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
this.currentViewTypeTitle = this.currentViewType.Value;
|
|
146
|
+
this.internalPageService.changeChildrenViewType(this.currentViewType.Key, (res) => {
|
|
147
|
+
if (res.Rows) {
|
|
148
|
+
this.fillChildData(res);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
setViewCover(rows) {
|
|
153
|
+
if (!rows) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const matrixCont = this.mainViewCont.nativeElement;
|
|
157
|
+
const viewWidth = matrixCont.clientWidth;
|
|
158
|
+
this.viewWidth = viewWidth ? viewWidth.toString() : '100%';
|
|
159
|
+
// if the matrix located on the bottom / there is nothing under the matrix we dont need to check the height
|
|
160
|
+
if (parseInt(viewWidth, 10) < this.mmToPx(this.sumOfMinColWidth)) {
|
|
161
|
+
this.coverChildTable = true;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.coverChildTable = false;
|
|
165
|
+
}
|
|
166
|
+
this.changeDetectorRef.markForCheck();
|
|
167
|
+
}
|
|
168
|
+
showMatrixDialog() {
|
|
169
|
+
const config = this.dialogService.getDialogConfig({
|
|
170
|
+
disableClose: false,
|
|
171
|
+
}, 'large');
|
|
172
|
+
const dialogRef = this.dialogService.openDialog(this.matrixDialogTemplate, {}, config);
|
|
173
|
+
dialogRef.afterOpened().subscribe(() => {
|
|
174
|
+
this.fillData(true);
|
|
175
|
+
});
|
|
176
|
+
dialogRef.afterClosed().subscribe((value) => {
|
|
177
|
+
this.fillData(false);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
ngOnInit() {
|
|
181
|
+
// let field = this.field as PepInternalPageField;
|
|
182
|
+
this.internalPageService.initDetails(this.field.objectId, this.field.parentId, this.field.searchCode, (resViewTypes) => {
|
|
183
|
+
// my code DI-7134
|
|
184
|
+
resViewTypes.Rows = resViewTypes.Rows.filter((item) => item.Key !== 'OrderCenterView1');
|
|
185
|
+
if (resViewTypes.Rows && resViewTypes.Rows.length > 0) {
|
|
186
|
+
if (!resViewTypes.Default) {
|
|
187
|
+
resViewTypes.Default = resViewTypes.Rows[0].Key;
|
|
188
|
+
}
|
|
189
|
+
this.childViewTypes = resViewTypes.Rows;
|
|
190
|
+
this.currentViewType = resViewTypes.Rows[0];
|
|
191
|
+
// for (var i = 0; i < resViewTypes.Rows.length; i++) {
|
|
192
|
+
for (const viewTypeRow of resViewTypes.Rows) {
|
|
193
|
+
if (viewTypeRow.Value === resViewTypes.Default) {
|
|
194
|
+
this.currentViewType = viewTypeRow;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
this.loadLastAdditionalApiName();
|
|
198
|
+
this.changeChildrenViewType(this.currentViewType.Key);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
this.resize = fromEvent(window, 'resize')
|
|
202
|
+
.pipe(debounceTime(10))
|
|
203
|
+
.subscribe((event) => {
|
|
204
|
+
this.setViewCover(this.rows);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
loadLastAdditionalApiName() {
|
|
208
|
+
const daa = sessionStorage.getItem(PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME);
|
|
209
|
+
if (daa && daa.length > 0) {
|
|
210
|
+
const additionalApiName = JSON.parse(daa);
|
|
211
|
+
this.currentAdditionalApiName = additionalApiName;
|
|
212
|
+
this.internalPageService.additionalApiName = additionalApiName === null || additionalApiName === void 0 ? void 0 : additionalApiName.Key;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
ngOnDestroy() {
|
|
216
|
+
if (this.resize) {
|
|
217
|
+
this.resize.unsubscribe();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
changeAdditionalApiName(additionalApiName) {
|
|
221
|
+
this.internalPageService.changeAdditionalApiName(additionalApiName ? additionalApiName.Key : '', (res) => {
|
|
222
|
+
// for (let index = 0; index < res.Rows.length; index++) {
|
|
223
|
+
for (const row of res.Rows) {
|
|
224
|
+
this.updateChanges(row);
|
|
225
|
+
}
|
|
226
|
+
this.changeDetectorRef.markForCheck();
|
|
227
|
+
});
|
|
228
|
+
sessionStorage.setItem(PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME, JSON.stringify(additionalApiName));
|
|
229
|
+
setTimeout(() => {
|
|
230
|
+
this.currentAdditionalApiName = additionalApiName;
|
|
231
|
+
}, 0);
|
|
232
|
+
}
|
|
233
|
+
setTotalsRow() {
|
|
234
|
+
this.totalsRow = [];
|
|
235
|
+
if (this.isMatrixView() || this.isFlatMatrixView()) {
|
|
236
|
+
let totalCol = 0;
|
|
237
|
+
const items = this.customList.items;
|
|
238
|
+
if (items) {
|
|
239
|
+
for (let col = 0; col < items[0].Fields.length; col++) {
|
|
240
|
+
const field = items[0].Fields[col];
|
|
241
|
+
if (field.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||
|
|
242
|
+
field.FieldType ===
|
|
243
|
+
FIELD_TYPE.NumberIntegerQuantitySelector ||
|
|
244
|
+
field.FieldType === FIELD_TYPE.NumberRealForMatrix ||
|
|
245
|
+
field.FieldType ===
|
|
246
|
+
FIELD_TYPE.NumberRealQuantitySelector ||
|
|
247
|
+
field.FieldType === FIELD_TYPE.CalculatedInt ||
|
|
248
|
+
field.FieldType === FIELD_TYPE.NumberInteger ||
|
|
249
|
+
field.FieldType === FIELD_TYPE.CalculatedReal ||
|
|
250
|
+
field.FieldType === FIELD_TYPE.NumberReal) {
|
|
251
|
+
totalCol = 0;
|
|
252
|
+
for (const listItem of items) {
|
|
253
|
+
if (listItem.Fields[col] &&
|
|
254
|
+
listItem.Fields[col].Value) {
|
|
255
|
+
const num = parseFloat(listItem.Fields[col].Value);
|
|
256
|
+
totalCol += isNaN(num) ? 0 : num;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
this.totalsRow.push(totalCol);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this.totalsRow.push('');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
updateChanges(elementToUpdate) {
|
|
269
|
+
this.customList.updateItem(elementToUpdate);
|
|
270
|
+
// Update memory data
|
|
271
|
+
for (let index = 0; index < this.childData.Rows.length; index++) {
|
|
272
|
+
if (this.childData.Rows[index].UID === elementToUpdate.UID) {
|
|
273
|
+
this.childData.Rows[index] = elementToUpdate;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
setValueCallback(id, res) {
|
|
278
|
+
if (res.Rows.length === 1) {
|
|
279
|
+
const field = res.Rows[0].Fields.find((f) => f.ApiName === 'ObjectMenu');
|
|
280
|
+
if (field) {
|
|
281
|
+
// HACK : Until "Enabled" returns from the server, we set PepMenu to be
|
|
282
|
+
// Disabled in cart on regular items and not campign items.
|
|
283
|
+
field.Enabled = true;
|
|
284
|
+
}
|
|
285
|
+
this.updateChanges(res.Rows[0]);
|
|
286
|
+
}
|
|
287
|
+
this.setTotalsRow();
|
|
288
|
+
this.checkForChanges = new Date();
|
|
289
|
+
// DI-15985
|
|
290
|
+
this.internalFormFieldChange.emit(res);
|
|
291
|
+
this.changeDetectorRef.markForCheck();
|
|
292
|
+
}
|
|
293
|
+
onCustomizeObjectChanged(customizeObjectChangedData) {
|
|
294
|
+
this.internalPageService.childValueChanged(customizeObjectChangedData.id, customizeObjectChangedData.key, customizeObjectChangedData.value, (res) => {
|
|
295
|
+
this.setValueCallback(customizeObjectChangedData.id, res);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
onCustomizeFieldClick(fieldClickEvent) {
|
|
299
|
+
let handledEvent = false;
|
|
300
|
+
// For the new custom form, the plus and minus events transform in the IPepFormFieldValueChangeEvent
|
|
301
|
+
if (fieldClickEvent.controlType === 'qs') {
|
|
302
|
+
if (fieldClickEvent.value === PepQuantitySelectorComponent.PLUS) {
|
|
303
|
+
handledEvent = true;
|
|
304
|
+
this.internalPageService.childPlusClick(fieldClickEvent.id, fieldClickEvent.key, (res) => {
|
|
305
|
+
this.setValueCallback(fieldClickEvent.id, res);
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
else if (fieldClickEvent.value === PepQuantitySelectorComponent.MINUS) {
|
|
309
|
+
handledEvent = true;
|
|
310
|
+
this.internalPageService.childMinusClick(fieldClickEvent.id, fieldClickEvent.key, (res) => {
|
|
311
|
+
this.setValueCallback(fieldClickEvent.id, res);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (!handledEvent) {
|
|
316
|
+
this.internalFormFieldClick.emit(fieldClickEvent);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME = 'item_details_currentAdditionalApiName';
|
|
321
|
+
PepInternalPageComponent.decorators = [
|
|
322
|
+
{ type: Component, args: [{
|
|
323
|
+
selector: 'pep-internal-page',
|
|
324
|
+
template: "<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\"> {{\n currentAdditionalApiName?.Value }} </span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->",
|
|
325
|
+
providers: [PepInternalPageService],
|
|
326
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
327
|
+
styles: [":host{display:grid;width:inherit;height:inherit}.matrix-title-container{padding:0;height:2.5rem;height:var(--pep-form-field-height,2.5rem);display:flex;align-items:flex-end}.matrix-title-container .block-with-text{width:100%;max-height:inherit;font-weight:600;font-weight:var(--pep-font-weight-bold,600);display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.matrix-title-container .buttons-container{display:flex;align-self:center}.matrix-title-container .buttons-container .pep-button,.matrix-title-container .buttons-container .pepperi-button{width:-webkit-max-content;width:-moz-max-content;width:max-content}#mainViewCont{width:100%;height:inherit;overflow:hidden;padding:0 .25rem;padding:0 var(--pep-spacing-xs,.25rem)}#mainViewCont .table-cover{background-color:#fff;z-index:98;position:absolute;top:0;width:100%;height:inherit;opacity:.5}#mainViewCont .table-cover-button{position:absolute;left:50%;transform:translate(-50%,-50%);top:calc(50% + 2.5rem);top:calc(50% + var(--pep-form-field-height, 2.5rem));z-index:99}#mainViewCont .table-cover-button.lineview-btn{top:calc(2 * 2.5rem);top:calc(2 * var(--pep-form-field-height, 2.5rem));transform:translate(-50%)}#mainViewCont .underCover{max-height:inherit;overflow:hidden}#mainViewCont ::ng-deep.table-header{top:unset!important}"]
|
|
328
|
+
},] }
|
|
329
|
+
];
|
|
330
|
+
PepInternalPageComponent.ctorParameters = () => [
|
|
331
|
+
{ type: FormBuilder },
|
|
332
|
+
{ type: PepDialogService },
|
|
333
|
+
{ type: PepInternalPageService },
|
|
334
|
+
{ type: PepCustomizationService },
|
|
335
|
+
{ type: ElementRef },
|
|
336
|
+
{ type: ChangeDetectorRef }
|
|
337
|
+
];
|
|
338
|
+
PepInternalPageComponent.propDecorators = {
|
|
339
|
+
field: [{ type: Input }],
|
|
340
|
+
layoutType: [{ type: Input }],
|
|
341
|
+
internalFormFieldChange: [{ type: Output }],
|
|
342
|
+
internalFormFieldClick: [{ type: Output }],
|
|
343
|
+
my1mm: [{ type: ViewChild, args: ['my1mm',] }],
|
|
344
|
+
mainViewCont: [{ type: ViewChild, args: ['mainViewCont',] }],
|
|
345
|
+
orgCont: [{ type: ViewChild, args: ['orgCont', { read: ViewContainerRef },] }],
|
|
346
|
+
dialogCont: [{ type: ViewChild, args: ['dialogCont', { read: ViewContainerRef },] }],
|
|
347
|
+
matrixTemplate: [{ type: ViewChild, args: ['matrixTemplate',] }],
|
|
348
|
+
matrixDialogTemplate: [{ type: ViewChild, args: ['matrixDialogTemplate', { read: TemplateRef },] }],
|
|
349
|
+
customList: [{ type: ViewChild, args: [PepInternalListComponent,] }]
|
|
350
|
+
};
|
|
351
351
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUlILHVCQUF1QixFQUd2QixVQUFVLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0gsd0JBQXdCLEdBRTNCLE1BQU0sMkJBQTJCLENBQUM7QUFLbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXVEakMsWUFDYyxFQUFlLEVBQ2pCLGFBQStCLEVBQy9CLG1CQUEyQyxFQUM1QyxvQkFBNkMsRUFDNUMsVUFBc0IsRUFDdEIsaUJBQW9DO1FBTGxDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM1QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF6RGhELGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBR3BCLGVBQVUsR0FBa0IsTUFBTSxDQUFDO1FBRzVDLDRCQUF1QixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJFLDJCQUFzQixHQUEwQyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQWdCNUcsb0JBQWUsR0FBUSxJQUFJLENBQUM7UUFFNUIsY0FBUyxHQUFRLElBQUksQ0FBQztRQU10QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFRLElBQUksQ0FBQztRQUMvQiw2QkFBd0IsR0FBUSxJQUFJLENBQUM7UUFDckMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZ0JBQVcsR0FBRyxHQUFHLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsb0JBQWUsR0FBeUIsSUFBSSxDQUFDO1FBRTdDLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ25CLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBU2hCLENBQUM7SUFFRyxRQUFRLENBQUMsVUFBVSxHQUFHLEtBQUs7O1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUQsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLEtBQUssRUFBRSxDQUFDO1FBRXRCLElBQUksVUFBVSxFQUFFO1lBQ1osTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0gsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxRQUFRLEdBQW9CLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hELENBQUMsQ0FBQyxPQUFPO2dCQUNULENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FDeEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQ25CLFFBQVEsQ0FDWCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRXBCLGtDQUFrQztZQUNsQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7Z0JBQ3JDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNO2dCQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1IsTUFBTSxNQUFNLEdBQUcsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsd0VBQXdFO1lBQ3hFLE1BQU0sU0FBUyxHQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFDLENBQUMsQ0FBQyxNQUFNO29CQUNKLENBQUMsQ0FBQyxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFWixNQUFNLGFBQWEsR0FDZixJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyx1QkFBdUI7WUFFdEYsdUNBQXVDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUM1QztZQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFFeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDMUMsQ0FBQyxjQUE4QixFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQztnQkFDbEQsY0FBYyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkNBQTZDO2dCQUM3RixJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FDSixDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCwwREFBMEQ7Z0JBQzFELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEtBQUssMkJBQTJCLEVBQUU7b0JBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ25CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQ3hDLENBQUMsQ0FBQyxDQUNMLENBQUM7b0JBRUYsNEJBQTRCO29CQUM1QixNQUFNLGNBQWMsR0FDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUM3QyxNQUFNLENBQ1QsR0FBRyxFQUFFLENBQUM7b0JBRVgsZ0ZBQWdGO29CQUNoRix3R0FBd0c7b0JBQ3hHLHdDQUF3QztvQkFDeEMsTUFBTSxZQUFZLEdBQ2QsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLGFBQWE7d0JBQ2IsU0FBUyxDQUFDO29CQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztpQkFDckM7cUJBQU07b0JBQ0gsa0dBQWtHO29CQUNsRyx3RkFBd0Y7b0JBQ3hGLDRCQUE0QjtvQkFDNUIsTUFBTSxlQUFlLEdBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FDOUMsU0FBUyxFQUNULEtBQUssQ0FDUixHQUFHLEVBQUUsQ0FBQztvQkFDWCxNQUFNLGVBQWUsR0FDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHdCQUF3QixDQUM5QyxhQUFhLENBQ2hCLEdBQUcsRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTzt3QkFDZCxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsR0FBRyxhQUFhLENBQUM7aUJBQzNEO2FBQ0o7UUFDTCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFRO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1FBRWpELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUU7UUFDTCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUMxRCxDQUFDO0lBRU8sWUFBWTtRQUNoQixPQUFPLENBQ0gsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEtBQUssbUJBQW1CLENBQ25ELENBQUM7SUFDTixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE9BQU8sQ0FDSCxJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSywyQkFBMkIsQ0FDM0QsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQW1CO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixNQUFNO2FBQ1Q7U0FDSjtRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUV2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUN4QixDQUFDLEdBQWdCLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzQjtRQUNMLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFJO1FBQ2IsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFFekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRTNELDJHQUEyRztRQUMzRyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUM5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUMvQjthQUFNO1lBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7U0FDaEM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUM3QztZQUNJLFlBQVksRUFBRSxLQUFLO1NBQ3RCLEVBQ0QsT0FBTyxDQUNWLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDM0MsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixFQUFFLEVBQ0YsTUFBTSxDQUNULENBQUM7UUFFRixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLGtEQUFrRDtRQUVsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUNyQixDQUFDLFlBQWlCLEVBQUUsRUFBRTtZQUNsQixrQkFBa0I7WUFDbEIsWUFBWSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssa0JBQWtCLENBQzVDLENBQUM7WUFFRixJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtvQkFDdkIsWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztpQkFDbkQ7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTVDLHVEQUF1RDtnQkFDdkQsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO29CQUN6QyxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBRTt3QkFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7cUJBQ3RDO2lCQUNKO2dCQUVELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6RDtRQUNMLENBQUMsQ0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3RCLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELHlCQUF5QjtRQUNyQixNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUM5Qix3QkFBd0IsQ0FBQywyQkFBMkIsQ0FDdkQsQ0FBQztRQUNGLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUM7WUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLEdBQUcsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxpQkFBaUI7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUM1QyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzlDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDVCwwREFBMEQ7WUFDMUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1lBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FDSixDQUFDO1FBRUYsY0FBYyxDQUFDLE9BQU8sQ0FDbEIsd0JBQXdCLENBQUMsMkJBQTJCLEVBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FDcEMsQ0FBQztRQUVGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUM7UUFDdEQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUNoRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFFakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNuRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQyxJQUNJLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLHNCQUFzQjt3QkFDckQsS0FBSyxDQUFDLFNBQVM7NEJBQ2YsVUFBVSxDQUFDLDZCQUE2Qjt3QkFDeEMsS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsbUJBQW1CO3dCQUNsRCxLQUFLLENBQUMsU0FBUzs0QkFDZixVQUFVLENBQUMsMEJBQTBCO3dCQUNyQyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxhQUFhO3dCQUM1QyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxhQUFhO3dCQUM1QyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxjQUFjO3dCQUM3QyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxVQUFVLEVBQzNDO3dCQUNFLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2IsS0FBSyxNQUFNLFFBQVEsSUFBSSxLQUFLLEVBQUU7NEJBQzFCLElBQ0ksUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0NBQ3BCLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUM1QjtnQ0FDRSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQ2xCLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUM3QixDQUFDO2dDQUNGLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDOzZCQUNwQzt5QkFDSjt3QkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDakM7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQzNCO2lCQUNKO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsZUFBb0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFNUMscUJBQXFCO1FBQ3JCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssZUFBZSxDQUFDLEdBQUcsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsZUFBZSxDQUFDO2FBQ2hEO1NBQ0o7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTyxFQUFFLEdBQVE7UUFDOUIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFlBQVksQ0FBQyxDQUFDO1lBQ3pFLElBQUksS0FBSyxFQUFFO2dCQUNQLHVFQUF1RTtnQkFDdkUsa0VBQWtFO2dCQUNsRSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUN4QjtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVsQyxXQUFXO1FBQ1gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELHdCQUF3QixDQUNwQiwwQkFBeUQ7UUFFekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUN0QywwQkFBMEIsQ0FBQyxFQUFFLEVBQzdCLDBCQUEwQixDQUFDLEdBQUcsRUFDOUIsMEJBQTBCLENBQUMsS0FBSyxFQUNoQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUF3QztRQUMxRCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFekIsb0dBQW9HO1FBQ3BHLElBQUksZUFBZSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxlQUFlLENBQUMsS0FBSyxLQUFLLDRCQUE0QixDQUFDLElBQUksRUFBRTtnQkFDN0QsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FDbkMsZUFBZSxDQUFDLEVBQUUsRUFDbEIsZUFBZSxDQUFDLEdBQUcsRUFDbkIsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUNKLENBQUM7YUFDTDtpQkFBTSxJQUNILGVBQWUsQ0FBQyxLQUFLLEtBQUssNEJBQTRCLENBQUMsS0FBSyxFQUM5RDtnQkFDRSxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUNwQyxlQUFlLENBQUMsRUFBRSxFQUNsQixlQUFlLENBQUMsR0FBRyxFQUNuQixDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQ0osQ0FBQzthQUNMO1NBQ0o7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNyRDtJQUNMLENBQUM7O0FBamRNLG9EQUEyQixHQUM5Qix1Q0FBdUMsQ0FBQzs7WUFUL0MsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLHNvS0FBNkM7Z0JBRTdDLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNuQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQS9CbUIsV0FBVztZQW9CdEIsZ0JBQWdCO1lBbkJoQixzQkFBc0I7WUFNM0IsdUJBQXVCO1lBYnZCLFVBQVU7WUFJVixpQkFBaUI7OztvQkF3Q2hCLEtBQUs7eUJBQ0wsS0FBSztzQ0FFTCxNQUFNO3FDQUVOLE1BQU07b0JBR04sU0FBUyxTQUFDLE9BQU87MkJBQ2pCLFNBQVMsU0FBQyxjQUFjO3NCQUV4QixTQUFTLFNBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO3lCQUMvQyxTQUFTLFNBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQUVsRCxTQUFTLFNBQUMsZ0JBQWdCO21DQUMxQixTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO3lCQUd2RCxTQUFTLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBlcEludGVybmFsUGFnZVNlcnZpY2UgfSBmcm9tICcuL2ludGVybmFsLXBhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBVSUNvbnRyb2wsXG4gICAgS2V5VmFsdWVQYWlyLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFVJQ29udHJvbEZpZWxkLFxuICAgIE9iamVjdHNEYXRhLFxuICAgIEZJRUxEX1RZUEUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50LFxuICAgIFBlcExpc3RWaWV3VHlwZSxcbn0gZnJvbSAnLi9pbnRlcm5hbC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBGb3JtRmllbGRDbGlja0V2ZW50LFxuICAgIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50LFxufSBmcm9tICcuL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgUGVwRGlhbG9nU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RpYWxvZyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9xdWFudGl0eS1zZWxlY3Rvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWludGVybmFsLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwSW50ZXJuYWxQYWdlU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgQ1VSUkVOVF9BRERJVElPTkFMX0FQSV9OQU1FID1cbiAgICAgICAgJ2l0ZW1fZGV0YWlsc19jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUnO1xuXG4gICAgY29udHJvbFR5cGUgPSAnaW50ZXJuYWxQYWdlJztcblxuICAgIEBJbnB1dCgpIGZpZWxkOiBhbnk7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcblxuICAgIEBPdXRwdXQoKVxuICAgIGludGVybmFsRm9ybUZpZWxkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGludGVybmFsRm9ybUZpZWxkQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbXkxbW0nKSBteTFtbTogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdtYWluVmlld0NvbnQnKSBtYWluVmlld0NvbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdvcmdDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIG9yZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGRpYWxvZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnbWF0cml4VGVtcGxhdGUnKSBtYXRyaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhEaWFsb2dUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBtYXRyaXhEaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50KVxuICAgIGN1c3RvbUxpc3Q6IFBlcEludGVybmFsTGlzdENvbXBvbmVudDtcblxuICAgIHJlc2l6ZTogYW55O1xuICAgIGNoZWNrRm9yQ2hhbmdlczogYW55ID0gbnVsbDtcblxuICAgIGNoaWxkRGF0YTogYW55ID0gbnVsbDtcblxuICAgIGVtcHR5Rm9ybTogRm9ybUdyb3VwO1xuICAgIHVpQ29udHJvbDogVUlDb250cm9sO1xuICAgIHJvd3M6IGFueTtcbiAgICBsaW5lVmlld1Jvd3M6IGFueTtcbiAgICB0b3RhbHNSb3c6IGFueSA9IFtdO1xuICAgIGFkZGl0aW9uYWxBcGlOYW1lczogYW55ID0gbnVsbDtcbiAgICBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWU6IGFueSA9IG51bGw7XG4gICAgZm9jdXNlZFFTID0gZmFsc2U7XG4gICAgZmllbGRJZFdpdGhGb2N1cyA9ICcnO1xuICAgIGNvbHVtbldpZHRoID0gMTAwO1xuICAgIGNvdmVyQ2hpbGRUYWJsZSA9IGZhbHNlO1xuICAgIGNoaWxkVmlld1R5cGVzOiBBcnJheTxLZXlWYWx1ZVBhaXI8c3RyaW5nPj47XG4gICAgY3VycmVudFZpZXdUeXBlOiBLZXlWYWx1ZVBhaXI8c3RyaW5nPiA9IG51bGw7XG4gICAgY3VycmVudFZpZXdUeXBlVGl0bGU6IHN0cmluZztcbiAgICBzdW1PZk1pbkNvbFdpZHRoID0gMDtcbiAgICB0b3RhbFJvd3NXaWR0aCA9IDA7XG4gICAgdmlld1dpZHRoID0gJzEwMCUnO1xuICAgIHZpZXdIZWlnaHQgPSAnYXV0byc7XG4gICAgZGlzcGxheVFTYnRucyA9IHRydWU7XG4gICAgc2VsZWN0ZWRBcGlOYW1lID0gJyc7XG4gICAgc2hvd1NvcnQgPSBmYWxzZTtcbiAgICBkZWZhdWx0Um93U3BhbiA9IC0xO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbnRlcm5hbFBhZ2VTZXJ2aWNlOiBQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIHByaXZhdGUgZmlsbERhdGEoaXNJbkRpYWxvZyA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLm1hdHJpeFRlbXBsYXRlLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKTtcblxuICAgICAgICB0aGlzLmN1c3RvbUxpc3Q/LmNsZWFyKCk7XG4gICAgICAgIHRoaXMub3JnQ29udD8uY2xlYXIoKTtcblxuICAgICAgICBpZiAoaXNJbkRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5pbnNlcnQodmlldyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9yZ0NvbnQ/Lmluc2VydCh2aWV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgdmlld1R5cGU6IFBlcExpc3RWaWV3VHlwZSA9IHRoaXMuaXNUYWJsZVZpZXcoKVxuICAgICAgICAgICAgICAgID8gJ3RhYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2xpbmVzJztcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdC5pbml0TGlzdERhdGEoXG4gICAgICAgICAgICAgICAgdGhpcy51aUNvbnRyb2wsXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuVG90YWxSb3dzLFxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlJvd3MsXG4gICAgICAgICAgICAgICAgdmlld1R5cGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldFRvdGFsc1JvdygpO1xuXG4gICAgICAgICAgICAvLyBpZiAoIXRoaXMuY2hpbGRNb2RhbC5pc1Nob3duKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZERhdGEuUm93c1xuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICBjb25zdCBpc0V2ZW4gPSBjaGlsZHJlbkNvdW50ICUgMiA9PT0gMDtcbiAgICAgICAgICAgIC8vIDMgZm9yIG1hdHJpeCAmIGZsYXQgbWF0cml4IGJlY2F1c2UgdGhlIGhlYWRlciArIHRvdGFsIGlzIDIgbW9yZSByb3dzLlxuICAgICAgICAgICAgY29uc3Qgcm93c1RvQWRkID1cbiAgICAgICAgICAgICAgICB0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpXG4gICAgICAgICAgICAgICAgICAgID8gaXNFdmVuXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogNFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1Sb3dIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KCkgKiAxNjsgLy8gY29udmVydCByZW0gdG8gcGl4ZWxcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IG9ubHkgaWYgbm90IHNldCB5ZXQuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Um93U3BhbiA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRSb3dTcGFuID0gdGhpcy5maWVsZC5yb3dTcGFuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN1bU9mTWluQ29sV2lkdGggPSAwO1xuICAgICAgICAgICAgdGhpcy50b3RhbFJvd3NXaWR0aCA9IDA7XG5cbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlVJQ29udHJvbC5Db250cm9sRmllbGRzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKHVpQ29udHJvbEZpZWxkOiBVSUNvbnRyb2xGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUm93c1dpZHRoICs9IHVpQ29udHJvbEZpZWxkLkNvbHVtbldpZHRoO1xuICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xGaWVsZC5taW5GaWVsZFdpZHRoID0gdGhpcy5tbVRvUHgoMTIpOyAvLyBORUVEIFRPIEdFVCBUSElTIFBBUkFNIEZST00gQ1VTVE9NSVpBVElPTjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1PZk1pbkNvbFdpZHRoICs9IDEyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld0NvdmVyKHRoaXMuY2hpbGREYXRhLlJvd3MpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb3ZlckNoaWxkVGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnJvd1NwYW4gPSB0aGlzLmRlZmF1bHRSb3dTcGFuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBGb3IgbGluZSB2aWV3IEFkZCB0aGUgaGVpZ2h0IG9mIHRoZSBsaW5lIChmb3JtIGhlaWdodCkuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeExpbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy51aUNvbnRyb2wuQ29udHJvbEZpZWxkcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5MYXlvdXQuWSArIGYuTGF5b3V0LkhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYXJkUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgKSAqIDE2O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG1heFJvdyAqIDI0ICsgNjAgLSAyNCBmb3IgZWFjaCByb3cgaW4gY2FyZCArIDYwIGZvciB0aGUgcGFkZGluZyBvZiBlYWNoIGNhcmQuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHJvd1NwYW5Ub0FkZCA9IE1hdGguZmxvb3IoY2hpbGRyZW5Db3VudCAqICgoY2FyZFJvd3NIZWlnaHQgKyA1NikgLyBmb3JtUm93SGVpZ2h0KSArIHJvd3NUb0FkZCk7XG4gICAgICAgICAgICAgICAgICAgIC8vICsgMTYgaXMgdGhlIDFyZW0gbWFyZ2luIG91dHNpZGUgY2FyZC5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93U3BhblRvQWRkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZHJlbkNvdW50ICogKGNhcmRSb3dzSGVpZ2h0ICsgMTYpKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUm93SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NUb0FkZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID0gcm93U3BhblRvQWRkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KGNoaWxkcmVuQ291bnQpICogMTY7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZmllbGQucm93U3BhbiA9IE1hdGguY2VpbCgodGFibGVSb3dzSGVpZ2h0ICsgKHJvd3NUb0FkZCAqIDQwKSkgLyBmb3JtUm93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzVG9BZGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvQWRkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucm93U3BhbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAocm93c1RvQWRkSGVpZ2h0ICsgdGFibGVSb3dzSGVpZ2h0KSAvIGZvcm1Sb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsbENoaWxkRGF0YShyZXM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaWxkRGF0YSA9IHJlcztcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSByZXMuVUlDb250cm9sO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxBcGlOYW1lcyA9IHJlcy5BZGRpdGlvbmFsQXBpTmFtZXM7XG5cbiAgICAgICAgdGhpcy5maWxsRGF0YSgpO1xuICAgIH1cblxuICAgIG1tVG9QeChtbSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubXkxbW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKG1tICogaGVpZ2h0KTsgLy8gcmV0dXJucyBzaXplcyBpbiBQWFxuICAgIH1cblxuICAgIHByaXZhdGUgaXNNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyTWF0cml4J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGbGF0TWF0cml4VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlICYmXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgPT09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzVGFibGVWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHZpZXdUeXBlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIHRoaXMudWlDb250cm9sID0gbnVsbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHZ0IG9mIHRoaXMuY2hpbGRWaWV3VHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh2dC5LZXkgPT09IHZpZXdUeXBlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2dDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlVGl0bGUgPSB0aGlzLmN1cnJlbnRWaWV3VHlwZS5WYWx1ZTtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSxcbiAgICAgICAgICAgIChyZXM6IE9iamVjdHNEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsbENoaWxkRGF0YShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRWaWV3Q292ZXIocm93cyk6IHZvaWQge1xuICAgICAgICBpZiAoIXJvd3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdHJpeENvbnQgPSB0aGlzLm1haW5WaWV3Q29udC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB2aWV3V2lkdGggPSBtYXRyaXhDb250LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMudmlld1dpZHRoID0gdmlld1dpZHRoID8gdmlld1dpZHRoLnRvU3RyaW5nKCkgOiAnMTAwJSc7XG5cbiAgICAgICAgLy8gaWYgdGhlIG1hdHJpeCBsb2NhdGVkIG9uIHRoZSBib3R0b20gLyB0aGVyZSBpcyBub3RoaW5nIHVuZGVyIHRoZSBtYXRyaXggd2UgZG9udCBuZWVkIHRvIGNoZWNrIHRoZSBoZWlnaHRcbiAgICAgICAgaWYgKHBhcnNlSW50KHZpZXdXaWR0aCwgMTApIDwgdGhpcy5tbVRvUHgodGhpcy5zdW1PZk1pbkNvbFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgc2hvd01hdHJpeERpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ0NvbmZpZyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdsYXJnZSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZyhcbiAgICAgICAgICAgIHRoaXMubWF0cml4RGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGxldCBmaWVsZCA9IHRoaXMuZmllbGQgYXMgUGVwSW50ZXJuYWxQYWdlRmllbGQ7XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmluaXREZXRhaWxzKFxuICAgICAgICAgICAgdGhpcy5maWVsZC5vYmplY3RJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQucGFyZW50SWQsXG4gICAgICAgICAgICB0aGlzLmZpZWxkLnNlYXJjaENvZGUsXG4gICAgICAgICAgICAocmVzVmlld1R5cGVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBteSBjb2RlIERJLTcxMzRcbiAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuUm93cyA9IHJlc1ZpZXdUeXBlcy5Sb3dzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uS2V5ICE9PSAnT3JkZXJDZW50ZXJWaWV3MSdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc1ZpZXdUeXBlcy5Sb3dzICYmIHJlc1ZpZXdUeXBlcy5Sb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzVmlld1R5cGVzLkRlZmF1bHQgPSByZXNWaWV3VHlwZXMuUm93c1swXS5LZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZFZpZXdUeXBlcyA9IHJlc1ZpZXdUeXBlcy5Sb3dzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2aWV3VHlwZVJvdyBvZiByZXNWaWV3VHlwZXMuUm93cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdUeXBlUm93LlZhbHVlID09PSByZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gdmlld1R5cGVSb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRMYXN0QWRkaXRpb25hbEFwaU5hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVzaXplID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpZXdDb3Zlcih0aGlzLnJvd3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGFhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGRhYSAmJiBkYWEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEFwaU5hbWUgPSBKU09OLnBhcnNlKGRhYSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9IGFkZGl0aW9uYWxBcGlOYW1lO1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU/LktleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQWRkaXRpb25hbEFwaU5hbWUoXG4gICAgICAgICAgICBhZGRpdGlvbmFsQXBpTmFtZSA/IGFkZGl0aW9uYWxBcGlOYW1lLktleSA6ICcnLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlcy5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsQXBpTmFtZSlcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHNldFRvdGFsc1JvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbHNSb3cgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKSkge1xuICAgICAgICAgICAgbGV0IHRvdGFsQ29sID0gMDtcblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmN1c3RvbUxpc3QuaXRlbXM7XG4gICAgICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBpdGVtc1swXS5GaWVsZHMubGVuZ3RoOyBjb2wrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGl0ZW1zWzBdLkZpZWxkc1tjb2xdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlckZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLk51bWJlclJlYWxGb3JNYXRyaXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX1RZUEUuTnVtYmVyUmVhbFF1YW50aXR5U2VsZWN0b3IgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5DYWxjdWxhdGVkSW50IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRSZWFsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlzdEl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5GaWVsZHNbY29sXS5WYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbCArPSBpc05hTihudW0pID8gMCA6IG51bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsc1Jvdy5wdXNoKHRvdGFsQ29sKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2goJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ2hhbmdlcyhlbGVtZW50VG9VcGRhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbUxpc3QudXBkYXRlSXRlbShlbGVtZW50VG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBtZW1vcnkgZGF0YVxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XS5VSUQgPT09IGVsZW1lbnRUb1VwZGF0ZS5VSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XSA9IGVsZW1lbnRUb1VwZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbHVlQ2FsbGJhY2soaWQ6IGFueSwgcmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHJlcy5Sb3dzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSByZXMuUm93c1swXS5GaWVsZHMuZmluZCgoZikgPT4gZi5BcGlOYW1lID09PSAnT2JqZWN0TWVudScpO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gSEFDSyA6IFVudGlsIFwiRW5hYmxlZFwiIHJldHVybnMgZnJvbSB0aGUgc2VydmVyLCB3ZSBzZXQgUGVwTWVudSB0byBiZVxuICAgICAgICAgICAgICAgIC8vICAgICAgICBEaXNhYmxlZCBpbiBjYXJ0IG9uIHJlZ3VsYXIgaXRlbXMgYW5kIG5vdCBjYW1waWduIGl0ZW1zLlxuICAgICAgICAgICAgICAgIGZpZWxkLkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMocmVzLlJvd3NbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUb3RhbHNSb3coKTtcbiAgICAgICAgdGhpcy5jaGVja0ZvckNoYW5nZXMgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIC8vIERJLTE1OTg1XG4gICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDaGFuZ2UuZW1pdChyZXMpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVPYmplY3RDaGFuZ2VkKFxuICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YTogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkVmFsdWVDaGFuZ2VkKFxuICAgICAgICAgICAgY3VzdG9taXplT2JqZWN0Q2hhbmdlZERhdGEuaWQsXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5rZXksXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS52YWx1ZSxcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soZmllbGRDbGlja0V2ZW50OiBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFuZGxlZEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgLy8gRm9yIHRoZSBuZXcgY3VzdG9tIGZvcm0sIHRoZSBwbHVzIGFuZCBtaW51cyBldmVudHMgdHJhbnNmb3JtIGluIHRoZSBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LmNvbnRyb2xUeXBlID09PSAncXMnKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LnZhbHVlID09PSBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LlBMVVMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGlsZFBsdXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuTUlOVVNcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkTWludXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|