@pepperi-addons/ngx-lib 0.3.15-beta.19 → 0.3.15-beta.21
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 +299 -299
- package/bundles/pepperi-addons-ngx-lib-date.umd.js +667 -667
- package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +184 -184
- 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 +3249 -3249
- 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 -322
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +422 -422
- package/bundles/pepperi-addons-ngx-lib-link.umd.js +388 -388
- package/bundles/pepperi-addons-ngx-lib-list.umd.js +3191 -3191
- 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 +925 -925
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1181 -1170
- package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-remote-loader.umd.js +652 -652
- 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 -575
- 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 +286 -286
- 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 +1974 -1938
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-snack-bar.umd.js +148 -148
- 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 +533 -533
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +129 -129
- package/bundles/pepperi-addons-ngx-lib.umd.js +4819 -4773
- 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 +53 -53
- 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/date-ago.pipe.d.ts +8 -0
- package/core/common/pipes/index.d.ts +1 -1
- package/core/common/pipes/public-api.d.ts +2 -1
- package/core/common/public-api.d.ts +4 -4
- package/core/common/services/addon.service.d.ts +38 -38
- 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 +41 -41
- 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 +17 -17
- 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 +156 -156
- 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 +66 -66
- 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 +9 -9
- package/dialog/dialog.component.d.ts +10 -10
- 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/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 +197 -197
- 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/date-ago.pipe.js +45 -0
- package/esm2015/core/common/pipes/index.js +4 -4
- package/esm2015/core/common/pipes/public-api.js +6 -5
- package/esm2015/core/common/public-api.js +7 -7
- package/esm2015/core/common/services/addon.service.js +160 -160
- 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 +117 -117
- 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 +125 -125
- 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 +289 -289
- package/esm2015/core/customization/customization.service.js +777 -777
- 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 +251 -251
- 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 +31 -31
- package/esm2015/dialog/dialog.component.js +28 -28
- package/esm2015/dialog/dialog.model.js +21 -21
- package/esm2015/dialog/dialog.module.js +39 -39
- package/esm2015/dialog/dialog.service.js +76 -76
- 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 +1196 -1196
- 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 +228 -228
- 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 +372 -372
- 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 +315 -315
- package/esm2015/link/link.module.js +50 -50
- package/esm2015/link/link.pipes.js +13 -13
- 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 +1127 -1127
- 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 +79 -77
- 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 +467 -467
- 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 +2 -2
- package/esm2015/query-builder/common/model/operator-unit.js +41 -41
- package/esm2015/query-builder/common/model/operator.js +266 -255
- package/esm2015/query-builder/common/model/structure.js +1 -1
- package/esm2015/query-builder/common/model/type-map.js +27 -27
- package/esm2015/query-builder/common/model/type.js +5 -5
- package/esm2015/query-builder/common/services/output-query.service.js +112 -112
- package/esm2015/query-builder/common/services/query-structure.service.js +229 -229
- package/esm2015/query-builder/common/services/type-convertor.service.js +39 -39
- package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +9 -9
- package/esm2015/query-builder/public-api.js +8 -8
- package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +118 -118
- package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +63 -63
- package/esm2015/query-builder/query-builder.component.js +107 -107
- package/esm2015/query-builder/query-builder.module.js +34 -34
- package/esm2015/query-builder/query-builder.service.js +102 -102
- package/esm2015/remote-loader/addon-block-loader.component.js +68 -68
- package/esm2015/remote-loader/pepperi-addons-ngx-lib-remote-loader.js +4 -4
- package/esm2015/remote-loader/public-api.js +8 -8
- package/esm2015/remote-loader/remote-loader.component.js +114 -114
- package/esm2015/remote-loader/remote-loader.model.js +1 -1
- package/esm2015/remote-loader/remote-loader.module.js +35 -35
- package/esm2015/remote-loader/remote-loader.service.js +111 -111
- 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 +211 -211
- 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 +233 -233
- 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 +70 -70
- package/esm2015/smart-filters/common/filter-actions.component.js +25 -25
- package/esm2015/smart-filters/common/model/base-filter-component.js +291 -291
- 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 +271 -282
- package/esm2015/smart-filters/common/model/type.js +2 -2
- package/esm2015/smart-filters/date-filter/date-filter.component.js +164 -156
- package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +191 -153
- package/esm2015/smart-filters/number-filter/number-filter.component.js +109 -109
- 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 +130 -130
- package/esm2015/smart-filters/smart-filters.module.js +90 -90
- package/esm2015/smart-filters/text-filter/text-filter.component.js +86 -86
- package/esm2015/snack-bar/default-snack-bar.component.js +27 -27
- package/esm2015/snack-bar/pepperi-addons-ngx-lib-snack-bar.js +5 -5
- package/esm2015/snack-bar/public-api.js +7 -7
- package/esm2015/snack-bar/snack-bar.component.js +25 -25
- package/esm2015/snack-bar/snack-bar.model.js +6 -6
- package/esm2015/snack-bar/snack-bar.module.js +41 -41
- package/esm2015/snack-bar/snack-bar.service.js +62 -62
- 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 +391 -391
- 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 +295 -295
- package/fesm2015/pepperi-addons-ngx-lib-date.js +320 -320
- package/fesm2015/pepperi-addons-ngx-lib-dialog.js +170 -170
- 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 +2693 -2693
- 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 -306
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +409 -409
- package/fesm2015/pepperi-addons-ngx-lib-link.js +358 -358
- package/fesm2015/pepperi-addons-ngx-lib-list.js +2661 -2661
- 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 +556 -556
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +1087 -1076
- package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.js +303 -303
- 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 -241
- 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 +270 -270
- 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 +1539 -1504
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-snack-bar.js +137 -137
- 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 +501 -501
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +125 -125
- package/fesm2015/pepperi-addons-ngx-lib.js +4178 -4134
- 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 +90 -90
- 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 -63
- 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/public-api.d.ts +3 -3
- package/images-filmstrip/images-filmstrip.component.d.ts +84 -84
- 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 +131 -131
- 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 +161 -161
- package/list/list.model.d.ts +31 -31
- 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/pepperi-addons-ngx-lib.metadata.json +1 -1
- 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 +98 -98
- 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/query-structure.service.d.ts +78 -78
- package/query-builder/common/services/type-convertor.service.d.ts +10 -10
- package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +9 -9
- package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +1 -1
- package/query-builder/public-api.d.ts +5 -5
- package/query-builder/query-builder-item/query-builder-item.component.d.ts +38 -38
- package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -27
- package/query-builder/query-builder.component.d.ts +36 -36
- package/query-builder/query-builder.module.d.ts +2 -2
- package/query-builder/query-builder.service.d.ts +27 -27
- package/remote-loader/addon-block-loader.component.d.ts +25 -25
- package/remote-loader/pepperi-addons-ngx-lib-remote-loader.d.ts +4 -4
- package/remote-loader/public-api.d.ts +5 -5
- package/remote-loader/remote-loader.component.d.ts +24 -24
- package/remote-loader/remote-loader.model.d.ts +34 -34
- package/remote-loader/remote-loader.module.d.ts +2 -2
- package/remote-loader/remote-loader.service.d.ts +23 -23
- 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 +65 -65
- 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 +25 -26
- package/smart-filters/common/filter-actions.component.d.ts +9 -9
- package/smart-filters/common/model/base-filter-component.d.ts +70 -70
- 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 +51 -50
- package/smart-filters/common/model/type.d.ts +4 -4
- package/smart-filters/date-filter/date-filter.component.d.ts +56 -54
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +53 -39
- package/smart-filters/number-filter/number-filter.component.d.ts +48 -47
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +4 -4
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
- 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 +25 -26
- package/snack-bar/default-snack-bar.component.d.ts +10 -10
- package/snack-bar/pepperi-addons-ngx-lib-snack-bar.d.ts +5 -5
- package/snack-bar/public-api.d.ts +4 -4
- package/snack-bar/snack-bar.component.d.ts +9 -9
- package/snack-bar/snack-bar.model.d.ts +8 -8
- package/snack-bar/snack-bar.module.d.ts +5 -5
- package/snack-bar/snack-bar.service.d.ts +21 -21
- package/src/assets/i18n/en.ngx-lib.json +16 -1
- 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 +134 -134
- 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/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.js","sources":["../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/common/model/base-filter-component.ts","../../../projects/ngx-lib/smart-filters/text-filter/text-filter.component.ts","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../projects/ngx-lib/smart-filters/smart-filters.module.ts","../../../projects/ngx-lib/smart-filters/common/model/field.ts","../../../projects/ngx-lib/smart-filters/common/model/creator.ts","../../../projects/ngx-lib/smart-filters/public-api.ts","../../../projects/ngx-lib/smart-filters/pepperi-addons-ngx-lib-smart-filters.ts"],"sourcesContent":["import {\n Component,\n Input,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ElementRef,\n} from '@angular/core';\nimport {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n} from './common/model/field';\nimport { PepLayoutService } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterData } from './common/model/filter';\n\n@Component({\n selector: 'pep-smart-filters',\n templateUrl: './smart-filters.component.html',\n styleUrls: ['./smart-filters.component.scss', './smart-filters.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepSmartFiltersComponent {\n\n @Input() title = '';\n\n filtersDataMap: Map<string, IPepSmartFilterData> = new Map<\n string,\n IPepSmartFilterData\n >();\n\n private _filters: IPepSmartFilterData[] = [];\n @Input()\n set filters(value: IPepSmartFilterData[]) {\n this._filters = value;\n this.setupFilters(value);\n }\n get filters(): IPepSmartFilterData[] {\n this._filters = [...this.filtersDataMap.keys()]\n // .filter((key) => this.filtersDataMap.get(key) !== null)\n .map((key) => {\n if (key) {\n return this.filtersDataMap.get(key);\n }\n });\n\n return this._filters;\n }\n\n private _fields: Array<IPepSmartFilterField> = [];\n @Input()\n set fields(value: Array<IPepSmartFilterField>) {\n this._fields = value;\n }\n get fields(): Array<IPepSmartFilterField> {\n return this._fields;\n }\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n // @Output()\n // filtersClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filtersChange: EventEmitter<IPepSmartFilterData[]> = new EventEmitter<\n IPepSmartFilterData[]\n >();\n\n @Output()\n fieldToggleChange: EventEmitter<IPepSmartFilterField> = new EventEmitter<IPepSmartFilterField>();\n\n expansionPanelHeaderHeight = '*';\n\n constructor(\n private hostElement: ElementRef,\n public layoutService: PepLayoutService\n ) { }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(\n this\n );\n this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(\n this\n );\n this.hostElement.nativeElement.toggleField = this.toggleField.bind(\n this\n );\n }\n\n private setupFilters(value: IPepSmartFilterData[]) {\n this.filtersDataMap.clear();\n if (value) {\n value.forEach((filter) => {\n // Validate before add the filter into the map.\n let currentField = null;\n\n if (this.fields && this.fields.length > 0) {\n currentField = this.fields.find(\n (field) => field.id === filter.fieldId\n ) as PepSmartFilterBaseField;\n }\n\n if (currentField) {\n // Only if the operator is from the same type\n if (\n filter.operator.componentType.includes(\n currentField.componentType\n )\n ) {\n let isOperatorUnitValid = true;\n if (filter.operatorUnit) {\n // Only if the operator unit is not from the same type\n if (\n !filter.operatorUnit.componentType.includes(\n currentField.componentType\n )\n ) {\n isOperatorUnitValid = false;\n }\n }\n\n // Add the filter.\n if (isOperatorUnitValid) {\n this.filtersDataMap.set(filter.fieldId, filter);\n }\n }\n }\n });\n }\n }\n\n private raiseFiltersChange(): void {\n this.filtersChange.emit(this.filters);\n }\n\n toggleField(index: number, isOpen: boolean): void {\n this.fields[index].isOpen = isOpen;\n this.fieldToggleChange.emit(this.fields[index]);\n }\n\n clearFilters() {\n this.filtersDataMap.clear();\n }\n\n clearFilter(fieldId: string) {\n this.filtersDataMap.delete(fieldId);\n }\n\n // Clear all the filters and raise event that filters has change.\n onFiltersClear() {\n this.clearFilters();\n this.raiseFiltersChange();\n }\n\n // Clear the filter and raise event that filters has change.\n onFilterClear(field: IPepSmartFilterField) {\n this.clearFilter(field.id);\n this.raiseFiltersChange();\n }\n\n // Set the filter and raise event that filters has change.\n onFilterChange(\n field: IPepSmartFilterField,\n filterData: IPepSmartFilterData\n ) {\n this.clearFilter(field.id);\n this.filtersDataMap.set(field.id, filterData);\n this.raiseFiltersChange();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'pep-filter-actions',\n templateUrl: './filter-actions.component.html',\n styleUrls: ['./filter-actions.component.scss'],\n})\nexport class PepFilterActionsComponent {\n @Input() form: FormGroup;\n\n @Output() clearClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() applyClick: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n clear() {\n this.clearClick.emit();\n }\n\n apply() {\n this.applyClick.emit();\n }\n}\n","import {\n PepSmartFilterComponentType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\nexport class IPepSmartFilterOperator {\n id: PepSmartFilterOperatorType;\n name: string;\n short: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Equals: IPepSmartFilterOperator = {\n id: 'eq',\n name: 'EQUAL',\n short: '=',\n componentType: [\n 'number',\n 'boolean'\n // 'multi-select',\n // 'date',\n // 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst NotEqual: IPepSmartFilterOperator = {\n id: 'neq',\n name: 'NOT_EQUAL',\n short: '<>',\n componentType: [\n 'number',\n // 'multi-select',\n // 'date',\n // 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst LessThan: IPepSmartFilterOperator = {\n id: 'lt',\n name: 'LESS_THEN',\n short: '<',\n componentType: ['number'],\n};\n\n// const LessThanOrEquals: IPepSmartFilterOperator = {\n// id: 'ltoe',\n// name: 'LESS_THEN_OR_EQUAL',\n// short: '<=',\n// type: ['number'],\n// };\n\nconst GreaterThan: IPepSmartFilterOperator = {\n id: 'gt',\n name: 'GREATER_THEN',\n short: '>',\n componentType: ['number'],\n};\n\n// const GreaterThanOrEquals: IPepSmartFilterOperator = {\n// id: 'gtoe',\n// name: 'GREATER_THEN_OR_EQUAL',\n// short: '>=',\n// type: ['number'],\n// };\n\nconst NumberRange: IPepSmartFilterOperator = {\n id: 'numberRange',\n name: 'NUMBER_RANGE',\n short: 'Range',\n componentType: ['number'],\n};\n\nconst Contains: IPepSmartFilterOperator = {\n id: 'contains',\n name: 'CONTAINS',\n short: 'Contains',\n componentType: ['text'],\n};\n\n// const BeginsWith: Operator = {\n// id: 'beginsWith',\n// name: 'Begins With',\n// short: 'Begins With',\n// type: ['text'],\n// };\n\n// const EndsWith: Operator = {\n// id: 'endsWith',\n// name: 'Ends With',\n// short: 'End With',\n// type: ['text'],\n// };\n\n// const After: Operator = {\n// id: 'after',\n// name: 'After',\n// short: 'After',\n// type: ['date'],\n// };\n\n// const Before: Operator = {\n// id: 'before',\n// name: 'Before',\n// short: 'Before',\n// type: ['date'],\n// };\n\nconst InTheLast: IPepSmartFilterOperator = {\n id: 'inTheLast',\n name: 'IN_THE_LAST',\n short: 'In the last',\n componentType: ['date'],\n};\n\nconst Today: IPepSmartFilterOperator = {\n id: 'today',\n name: 'TODAY',\n short: 'Today',\n componentType: ['date'],\n};\n\nconst ThisWeek: IPepSmartFilterOperator = {\n id: 'thisWeek',\n name: 'THIS_WEEK',\n short: 'This week',\n componentType: ['date'],\n};\n\nconst ThisMonth: IPepSmartFilterOperator = {\n id: 'thisMonth',\n name: 'THIS_MONTH',\n short: 'This month',\n componentType: ['date'],\n};\n\nconst DateRange: IPepSmartFilterOperator = {\n id: 'dateRange',\n name: 'DATE_RANGE',\n short: 'Range',\n componentType: ['date'],\n};\n\nconst DueIn: IPepSmartFilterOperator = {\n id: 'dueIn',\n name: 'DUE_IN',\n short: 'Due in',\n componentType: ['date'],\n};\n\nconst On: IPepSmartFilterOperator = {\n id: 'on',\n name: 'ON',\n short: 'On',\n componentType: ['date'],\n};\n\nconst NotInTheLast: IPepSmartFilterOperator = {\n id: 'notInTheLast',\n name: 'NOT_IN_THE_LAST',\n short: 'Not in the last',\n componentType: ['date'],\n};\n\nconst NotDueIn: IPepSmartFilterOperator = {\n id: 'notDueIn',\n name: 'NOT_DUE_IN',\n short: 'Not due in',\n componentType: ['date'],\n};\n\nconst IsEmpty: IPepSmartFilterOperator = {\n id: 'isEmpty',\n name: 'IS_EMPTY',\n short: 'Is empty',\n componentType: ['date'],\n};\n\nconst IsNotEmpty: IPepSmartFilterOperator = {\n id: 'isNotEmpty',\n name: 'IS_NOT_EMPTY',\n short: 'Is not empty',\n componentType: ['date'],\n};\n\nconst In: IPepSmartFilterOperator = {\n id: 'in',\n name: 'IN',\n short: 'In',\n componentType: ['multi-select'],\n};\n\nexport const PepSmartFilterOperators = {\n Equals: Equals,\n NotEqual: NotEqual,\n LessThan: LessThan,\n // LessThanOrEquals: LessThanOrEquals,\n GreaterThan: GreaterThan,\n // GreaterThanOrEquals: GreaterThanOrEquals,\n NumberRange: NumberRange,\n Contains: Contains,\n // BeginsWith: BeginsWith,\n // EndsWith: EndsWith,\n // After: After,\n // Before: Before,\n InTheLast: InTheLast,\n Today: Today,\n ThisWeek: ThisWeek,\n ThisMonth: ThisMonth,\n DateRange: DateRange,\n DueIn: DueIn,\n On: On,\n NotInTheLast: NotInTheLast,\n NotDueIn: NotDueIn,\n IsEmpty: IsEmpty,\n IsNotEmpty: IsNotEmpty,\n In: In,\n};\n\n//additional operators to be added upon input flag\nconst InTheLastCalendar: IPepSmartFilterOperator = {\n id: 'inTheLastCalendar',\n name: 'IN_THE_LAST_CALENDAR',\n short: 'In the last (calendar)',\n componentType: ['date'],\n}\n\nconst NotInTheLastCalendar: IPepSmartFilterOperator = {\n id: 'notInTheLastCalendar',\n name: 'NOT_IN_THE_LAST_CALENDAR',\n short: 'Not in the last (calendar)',\n componentType: ['date'],\n}\n\nexport const PepSmartFilterAdditionalOperators = {\n InTheLastCalendar: InTheLastCalendar,\n NotInTheLastCalendar: NotInTheLastCalendar\n}\n\n//additional variable operators to be added upon input variable fields\nconst EqualsToVariable: IPepSmartFilterOperator = {\n id: 'eqv',\n name: 'EQUAL_TO_VARIABLE',\n short: '=',\n componentType: [\n 'text',\n 'number',\n 'boolean'\n ]\n}\n\nconst NotEqualsToVariable: IPepSmartFilterOperator = {\n id: 'neqv',\n name: 'NOT_EQUAL_TO_VARIABLE',\n short: '<>',\n componentType: ['boolean']\n}\n\nconst LessThanVariable: IPepSmartFilterOperator = {\n id: 'ltv',\n name: 'LESS_THAN_VARIABLE',\n short: '<',\n componentType: ['number'],\n};\n\nconst GreaterThanVariable: IPepSmartFilterOperator = {\n id: 'gtv',\n name: 'GREATER_THAN_VARIABLE',\n short: '>',\n componentType: ['number'],\n};\n\nconst InTheLastVariable: IPepSmartFilterOperator = {\n id: 'inTheLastVariable',\n name: 'IN_THE_LAST_VARIABLE',\n short: 'In the last Variable',\n componentType: ['date'],\n};\n\nconst DateRangeVariable: IPepSmartFilterOperator = {\n id: 'dateRangeVariable',\n name: 'DATE_RANGE_VARIABLE',\n short: 'Range Variable',\n componentType: ['date'],\n};\n\nexport const PepSmartFilterVariableOperators = {\n EqualsToVariable: EqualsToVariable,\n NotEqualsToVariable: NotEqualsToVariable,\n LessThanVariable: LessThanVariable,\n GreaterThanVariable: GreaterThanVariable,\n DateRangeVariable: DateRangeVariable,\n InTheLastVariable: InTheLastVariable\n}\n\nexport class IPepSmartFilterOperatorUnit {\n id: PepSmartFilterOperatorUnitType;\n name: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Days: IPepSmartFilterOperatorUnit = {\n id: 'days',\n name: 'DAYS',\n componentType: ['date'],\n};\n\nconst Weeks: IPepSmartFilterOperatorUnit = {\n id: 'weeks',\n name: 'WEEKS',\n componentType: ['date'],\n};\n\nconst Months: IPepSmartFilterOperatorUnit = {\n id: 'months',\n name: 'MONTHS',\n componentType: ['date'],\n};\n\nconst Years: IPepSmartFilterOperatorUnit = {\n id: 'years',\n name: 'YEARS',\n componentType: ['date'],\n};\n\nexport const PepSmartFilterOperatorUnits = {\n Days: Days,\n Weeks: Weeks,\n Months: Months,\n Years: Years,\n};\n","import {\n Directive,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Output,\n ChangeDetectorRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ViewChild,\n ComponentFactoryResolver,\n ComponentFactory,\n ComponentRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport {\n PepValidatorService,\n IPepOption\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterAdditionalOperators,\n PepSmartFilterVariableOperators,\n PepSmartFilterOperatorUnits,\n} from './operator';\nimport { forwardRef } from '@angular/core';\nimport { IPepSmartFilterData, IPepSmartFilterDataValue } from './filter';\nimport { PepSmartFilterBaseField } from './field';\nimport { takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepFilterActionsComponent } from '../filter-actions.component';\n\n\n@Directive({})\nexport abstract class BaseFilterComponent\n implements OnInit, OnChanges, OnDestroy {\n private readonly _destroyed: Subject<void>;\n private actionsContainerRef: ComponentRef<PepFilterActionsComponent>;\n\n private _fieldIdWithNoDots = '';\n private _field: PepSmartFilterBaseField;\n @Input()\n set field(value: PepSmartFilterBaseField) {\n this._field = value;\n this._fieldIdWithNoDots = value ? value.id.replace(/\\./g, '_') : '';\n this.setupForm();\n }\n get field(): PepSmartFilterBaseField {\n return this._field;\n }\n\n variableFieldOptions: Array<IPepOption> = [];\n @Input()\n set variableField(list: any[]) {\n if (list?.length) {\n this.variableFieldOptions = list.map(item => {\n return {\n key: item,\n value: item\n }\n });\n }\n }\n \n\n private _filter: IPepSmartFilterData;\n @Input()\n set filter(value: IPepSmartFilterData) {\n this._filter = value;\n this.setupFilter();\n }\n get filter(): IPepSmartFilterData {\n return this._filter;\n }\n protected _parentForm: FormGroup;\n @Input()\n set parentForm(form: FormGroup) {\n this._parentForm = form;\n this.updateParentForm();\n }\n @Input() emitOnChange = false;\n @Input() inline = false;\n @Input() showActionButtons = true;\n @Input() renderTitle = true;\n @Input() showAdditionalOperators = false;\n\n @Output() filterClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filterChange: EventEmitter<IPepSmartFilterData> = new EventEmitter<IPepSmartFilterData>();\n\n private _operator: IPepSmartFilterOperator;\n set operator(operator: IPepSmartFilterOperator) {\n if (operator?.id != this._operator?.id) {\n // Validate operator\n const index = this.operators.findIndex((o) => o.id === operator.id);\n if (index >= 0) {\n this._operator = this.operators[index];\n } else {\n this._operator = this.operators[0];\n }\n\n this.form.reset();\n this.updateValidity();\n }\n }\n get operator(): IPepSmartFilterOperator {\n return this._operator;\n }\n\n private _operatorUnit: IPepSmartFilterOperatorUnit;\n set operatorUnit(operatorUnit: IPepSmartFilterOperatorUnit) {\n // Validate operator unit\n if (operatorUnit) {\n const index = this.operatorUnits.findIndex(\n (ou) => ou.id === operatorUnit.id\n );\n if (index >= 0) {\n this._operatorUnit = this.operatorUnits[index];\n } else {\n this._operatorUnit = this.operatorUnits[0];\n }\n } else {\n this._operatorUnit = undefined;\n }\n }\n get operatorUnit(): IPepSmartFilterOperatorUnit {\n return this._operatorUnit;\n }\n\n get firstControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';\n }\n get firstControl(): AbstractControl {\n return this.form.get(this.firstControlKey);\n }\n get secondControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';\n }\n get secondControl(): AbstractControl {\n return this.form.get(this.secondControlKey);\n }\n\n protected operators: IPepSmartFilterOperator[];\n protected operatorUnits: IPepSmartFilterOperatorUnit[];\n\n protected readonly OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';\n protected readonly OPERATOR_UNITS_TRANSLATION_PREFIX =\n 'SMART_FILTERS.OPERATOR_UNITS';\n\n form: FormGroup;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private builder: FormBuilder,\n protected translate: TranslateService,\n protected validator: PepValidatorService,\n protected renderer: Renderer2\n ) {\n this._destroyed = new Subject();\n }\n\n private createActionsComponent() {\n const factory: ComponentFactory<PepFilterActionsComponent> = this.resolver.resolveComponentFactory(\n PepFilterActionsComponent\n );\n\n this.actionsContainerRef = factory.create(this.injector);\n this.actionsContainerRef.instance.form = this.form;\n this.actionsContainerRef.instance.applyClick.subscribe(() =>\n this.applyFilter()\n );\n this.actionsContainerRef.instance.clearClick.subscribe(() =>\n this.clearFilter()\n );\n\n this.viewContainerRef.insert(this.actionsContainerRef.hostView);\n }\n\n private setupForm() {\n const formValue = {};\n formValue[this.firstControlKey] = [];\n formValue[this.secondControlKey] = [];\n // this.form.patchValue(formValue); \n this.form = this.builder.group(formValue);\n // this.form[this.firstControlKey] = [];\n // this.form[this.secondControlKey] = [];\n\n this.setupOperators();\n\n if (this.showActionButtons) {\n this.createActionsComponent();\n }\n }\n\n private setupOperators() {\n // Get the operators by componentType.\n this.operators = Object.keys(PepSmartFilterOperators)\n .filter((key) => {\n return PepSmartFilterOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperators[key]);\n\n // Add additional operators\n if (this.showAdditionalOperators) {\n const additional: IPepSmartFilterOperator[] = Object.keys(PepSmartFilterAdditionalOperators)\n .filter((key) => {\n return PepSmartFilterAdditionalOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterAdditionalOperators[key]);\n\n this.operators = [...this.operators, ...additional];\n }\n\n //add variable operators\n if (this.variableFieldOptions?.length) {\n const variables: IPepSmartFilterOperator[] = Object.keys(PepSmartFilterVariableOperators)\n .filter((key) => {\n return PepSmartFilterVariableOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterVariableOperators[key]);\n\n this.operators = [...this.operators, ...variables];\n }\n\n // Filter by from field.operators input if exist.\n if (this.field.operators?.length > 0) {\n this.operators = this.operators.filter((o1) =>\n this.field.operators.some((o2) => o1.id === o2)\n );\n }\n\n\n\n // Get the operator units by componentType.\n this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)\n .filter((key) => {\n return PepSmartFilterOperatorUnits[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperatorUnits[key]);\n\n // Filter by from field.operatorsUnits input if exist.\n if (this.field.operatorUnits?.length > 0) {\n this.operatorUnits = this.operatorUnits.filter((o1) =>\n this.field.operatorUnits.some((o2) => o1.id === o2)\n );\n }\n\n // Load translation before get the options in the children.\n this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {\n this.loadOperatorsOptions();\n });\n }\n\n private setupFilter() {\n if (this.filter) {\n this.operator = this.filter.operator;\n this.operatorUnit = this.filter.operatorUnit;\n const formValue = {};\n formValue[this.firstControlKey] = this.filter.value.first;\n formValue[this.secondControlKey] = this.filter.value.second;\n this.form.patchValue(formValue);\n } else {\n this.operator = this.getDefaultOperator();\n this.operatorUnit = this.getDefaultOperatorUnit();\n this.clearFilter(false);\n }\n }\n\n protected updateParentForm() {\n this._parentForm.setControl('fieldId', this.builder.control(this.field.id));\n this._parentForm.setControl('fieldType', this.builder.control(this.field.type));\n this._parentForm.setControl('operator', this.builder.control(this.operator));\n this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));\n this._parentForm.setControl('values', this.builder.group({\n first: this.firstControl,\n second: this.secondControl\n }));\n }\n\n protected getDestroyer() {\n return takeUntil(this._destroyed);\n }\n\n private updateValidity() {\n this.setFieldsStateAndValidators();\n\n this.firstControl.updateValueAndValidity();\n this.secondControl.updateValueAndValidity();\n }\n // Load the operators options from the translation.\n protected loadOperatorsOptions(): void {\n // Not implemented in the base\n }\n\n // Set default validators - some childs override this.\n protected setFieldsStateAndValidators(): void {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.setValidators(Validators.required);\n this.secondControl.disable();\n }\n\n // Return undefined - some childs override this.\n protected getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n return undefined;\n }\n\n protected initFilter() {\n // Not implemented in the base\n }\n\n abstract getDefaultOperator(): IPepSmartFilterOperator;\n abstract getFilterValue(): IPepSmartFilterDataValue;\n\n clearFilter(emitEvent = true) {\n this._filter = null;\n this.form.reset();\n this.initFilter();\n\n if (emitEvent) {\n this.filterClear.emit();\n }\n }\n\n applyFilter() {\n const filterValue = this.getFilterValue();\n\n // If the filter is not null declare it, else - clear it.\n if (filterValue) {\n const filter = {\n fieldId: this.field.id,\n operator: this.operator,\n operatorUnit: this.operatorUnit,\n value: filterValue,\n };\n this._filter = filter;\n this.filterChange.emit(filter);\n } else {\n this.clearFilter();\n }\n }\n\n ngOnInit(): void {\n if (this.form) {\n this.updateValidity();\n }\n }\n\n ngOnChanges(): void {\n // if (this.form) {\n // this.updateValidity();\n // }\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n\n if (this.showActionButtons) {\n this.actionsContainerRef.destroy();\n }\n }\n\n // writeValue(value: IPepSmartFilterDataValue): void {\n // if (value) {\n // this.form.setValue(\n // {\n // first: value.first,\n // second: value.second || null,\n // },\n // { emitEvent: false }\n // );\n // } else {\n // this.form.reset();\n // }\n // }\n\n // registerOnChange(fn: any): void {\n // this.form.valueChanges.subscribe(fn);\n // }\n\n // onTouched: () => void = () => {\n // /* Do nothing */\n // };\n\n // registerOnTouched(fn: any): void {\n // this.onTouched = fn;\n // }\n\n // setDisabledState?(isDisabled: boolean): void {\n // isDisabled ? this.form.disable() : this.form.enable();\n // }\n\n // validate(control: AbstractControl): ValidationErrors {\n // return this.form.valid ? null : { PepFilterIsNotValid: true };\n // }\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\n\n@Component({\n selector: 'pep-text-filter',\n templateUrl: './text-filter.component.html',\n styleUrls: ['./text-filter.component.scss'],\n})\nexport class PepTextFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth = '38%';\n firstControlWidth = '62%';\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onVariableChanged(value: any) {\n this.firstControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-boolean-filter',\n templateUrl: './boolean-filter.component.html',\n styleUrls: ['./boolean-filter.component.scss'],\n})\nexport class PepBooleanFilterComponent extends BaseFilterComponent implements OnInit {\n @Input() options: IPepOption[] = [];\n\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth: string;\n valueWidth: string;\n\n ngOnInit() {\n if (this.inline) {\n this.setControlsWidth();\n }\n }\n\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = { first: this.firstControl.value || false };\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n setControlsWidth() {\n if (this.variableFieldOptions?.length) {\n this.operatorWidth = '38%';\n this.valueWidth = '62%';\n\n } else {\n this.valueWidth = '100%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged(value) {\n this.firstControl.setValue(value);\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterAdditionalOperators,\n PepSmartFilterVariableOperators,\n PepSmartFilterOperatorUnits,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n})\nexport class PepDateFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n PepSmartFilterAdditionalOperators = PepSmartFilterAdditionalOperators;\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTimeOptions: Array<IPepOption> = [];\n chooseTimeUnitOptions: Array<IPepOption> = [];\n operatorWidth: string;\n fieldsWidth: string;\n\n ngOnInit() {\n if (this.inline) {\n this.setControlsWidth();\n }\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.InTheLast;\n }\n\n // Override\n getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n if (this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.InTheLastCalendar ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn) {\n return PepSmartFilterOperatorUnits.Months;\n } else {\n return undefined;\n }\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.DateRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTimeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n\n this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {\n return {\n key: operatorUnit.id,\n value: this.translate.instant(\n `${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n this.firstControl.enable();\n\n if (this.operator === PepSmartFilterOperators.DateRange) {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.enable();\n this.secondControl.setValidators(Validators.required);\n } else if (\n this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.InTheLastCalendar || \n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn\n ) {\n this.firstControl.setValidators([\n Validators.required,\n this.validator.numberValidator(),\n ]);\n this.secondControl.disable();\n } else {\n // Disable 'first' field.\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.firstControl.disable();\n }\n\n // Default disable 'second' field.\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.operatorWidth = 'auto';\n this.fieldsWidth = '0%';\n } else if (this.operator === PepSmartFilterOperators.On) {\n this.operatorWidth = '38%';\n this.fieldsWidth = '62%';\n } else {\n this.operatorWidth = '30%';\n this.fieldsWidth = '70%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n\n this.operator = operator;\n this.operatorUnit = this.getDefaultOperatorUnit();\n if (this.inline) {\n this.setControlsWidth();\n }\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onTimeUnitChanged(value: string) {\n const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find(\n (operatorUnit) => operatorUnit.id === value\n );\n this.operatorUnit = operatorUnit;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onVariableChanged(value: any) {\n this.firstControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onDateValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import {\n AfterViewInit,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepSmartFilterFieldOption } from '../common/model/field';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { VirtualScrollerComponent } from 'ngx-virtual-scroller';\n\nclass PepMultiSelectFilterOption implements IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n selected = false;\n}\n\n@Component({\n selector: 'pep-multi-select-filter',\n templateUrl: './multi-select-filter.component.html',\n styleUrls: ['./multi-select-filter.component.scss'],\n})\nexport class PepMultiSelectFilterComponent\n extends BaseFilterComponent\n implements OnInit, AfterViewInit {\n options: PepMultiSelectFilterOption[] = [];\n filteredOptions$: Observable<any>;\n searchControl = new FormControl();\n //inline props\n selected = '';\n inlineOptions: IPepOption[] = [];\n\n @ViewChild('optionsContainer')\n optionsContainer: ElementRef;\n\n private readonly MAX_OPTIONS_TO_SHOW = 6.35;\n @ViewChild(VirtualScrollerComponent)\n private virtualScroller: VirtualScrollerComponent;\n\n numberOptionsToShowSearch = 10;\n\n ngOnInit() {\n super.ngOnInit;\n\n if (this.inline) {\n this.inlineControlInit();\n } else {\n this.noneInlineControlInit();\n }\n }\n\n\n ngAfterViewInit(): void {\n // Calc for the first time.\n this.calcOptionsHeight(this.options.length);\n }\n\n private inlineControlInit() {\n //load options from field \n this.inlineOptions = this.field?.options?.length > 0 ? this.field.options as IPepOption[] : [];\n\n // Init the selected values from first value. \n if (this.firstControl?.value?.length > 0) {\n this.selected = this.firstControl.value.join(';');\n }\n }\n\n private noneInlineControlInit() {\n if (this.field.options?.length > 0) {\n this.options = this.field.options.map((opt) => {\n return { value: opt.value, count: opt.count, selected: false };\n });\n } else {\n this.searchControl.disable();\n }\n\n // Init the selected values from first value.\n const firstControl = this.firstControl;\n if (firstControl.value) {\n this.initOptionsSelectedValues(firstControl.value);\n }\n\n // Add subscription for the first value change to set the selected options.\n firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe((selectedValues: string[]) => {\n this.initOptionsSelectedValues(selectedValues);\n });\n\n // Filter the options by the search control.\n this.filteredOptions$ = this.searchControl.valueChanges.pipe(\n this.getDestroyer(),\n startWith<any>(''),\n map((option) =>\n typeof option === 'string' ? option : option && option.value\n ),\n map((value) => (value ? this.filterOptions(value) : this.options))\n );\n\n // Each time the filter change.\n this.filteredOptions$.subscribe(\n (filterdOptions: PepMultiSelectFilterOption[]) => {\n this.calcOptionsHeight(filterdOptions.length);\n setTimeout(() => {\n // 8 is the padding top of the multi-select-options\n this.virtualScroller.scrollToPosition(-8);\n }, 125);\n }\n );\n\n }\n\n initOptionsSelectedValues(selectedValues: string[]): void {\n this.options.forEach((opt) => {\n const isValueSelected =\n selectedValues && selectedValues.includes(opt.value);\n opt.selected = isValueSelected;\n });\n }\n\n private calcOptionsHeight(optionsCount: number) {\n if (this.optionsContainer) {\n const optionsToShow =\n optionsCount > this.MAX_OPTIONS_TO_SHOW\n ? this.MAX_OPTIONS_TO_SHOW\n : optionsCount;\n // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.\n const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';\n\n this.renderer.setStyle(\n this.optionsContainer.nativeElement,\n 'height',\n optionsHeight\n );\n }\n }\n\n private filterOptions(value: string): any[] {\n const filterValue = value.toLowerCase();\n return this.options.filter(\n (opt) =>\n opt.value &&\n opt.value.toLowerCase().includes(filterValue.toLowerCase())\n );\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.In;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n if (this.inline) {\n return {\n first: this.firstControl.value\n };\n } else {\n const selectedValues = this.options\n .filter((opt) => opt.selected)\n .map((opt) => opt.value);\n const filterValue = {\n first: selectedValues,\n };\n\n return selectedValues.length > 0 ? filterValue : null;\n }\n\n }\n\n // Override\n initFilter() {\n this.options.forEach((opt) => (opt.selected = false));\n this.searchControl.setValue('');\n }\n\n onOptionChange(\n option: PepMultiSelectFilterOption,\n event: MatCheckboxChange\n ) {\n option.selected = event.checked;\n this.firstControl.setValue(\n this.options.filter((opt) => opt.selected).map((opt) => opt.value),\n { emitEvent: false }\n );\n }\n\n onMultiSelectChanged(value: string) {\n if (value) {\n const selected: string[] = value.split(';');\n this.firstControl.setValue(selected);\n } else {\n this.firstControl.setValue(null);\n }\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n selector: 'pep-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.scss'],\n})\nexport class PepNumberFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth = '38%';\n fieldsWidth = '70%';\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n\n this.secondControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n this.setControlsWidth();\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n\n\n this.secondControl.enable();\n const secondValidators = [Validators.required];\n if (this.firstControl.value) {\n secondValidators.push(this.validator.isGreaterThan(this.firstControl));\n }\n this.secondControl.setValidators(secondValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n this.operatorWidth = '30%';\n this.fieldsWidth = '70%';\n } else {\n this.operatorWidth = '38%';\n this.fieldsWidth = '62%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n this.setControlsWidth();\n }\n\n onVariableChanged(value: any) {\n this.firstControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { VirtualScrollerModule } from 'ngx-virtual-scroller';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconNumberMinus,\n pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\n// import { BaseFilterComponent } from './common/model/base-filter-component';\nimport { PepSmartFiltersComponent } from './smart-filters.component';\nimport { PepFilterActionsComponent } from './common/filter-actions.component';\nimport { PepTextFilterComponent } from './text-filter/text-filter.component';\nimport { PepBooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { PepDateFilterComponent } from './date-filter/date-filter.component';\nimport { PepMultiSelectFilterComponent } from './multi-select-filter/multi-select-filter.component';\nimport { PepNumberFilterComponent } from './number-filter/number-filter.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n // Material modules\n MatCommonModule,\n MatCheckboxModule,\n MatChipsModule,\n MatExpansionModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatRadioModule,\n // External modules\n VirtualScrollerModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepCheckboxModule,\n PepDateModule,\n PepSelectModule,\n PepTextboxModule,\n PepSearchModule,\n PepIconModule,\n PepButtonModule,\n PepGroupButtonsModule\n ],\n exports: [\n PepSmartFiltersComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent\n ],\n declarations: [\n // BaseFilterComponent,\n PepSmartFiltersComponent,\n PepFilterActionsComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent\n ],\n})\nexport class PepSmartFiltersModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconNumberMinus,\n pepIconNumberPlus,\n ]);\n }\n}\n","import {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n} from './operator';\nimport {\n PepSmartFilterComponentType,\n PepSmartFilterType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\n\nexport interface IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n}\n\nexport interface IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n}\n\n// Base field\n// ------------------------------\nexport abstract class PepSmartFilterBaseField implements IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n\n protected _componentType: PepSmartFilterComponentType;\n get componentType(): PepSmartFilterComponentType {\n return this._componentType;\n }\n\n private _type: PepSmartFilterType;\n get type(): PepSmartFilterType {\n return this._type;\n }\n\n constructor(field: IPepSmartFilterField) {\n this.id = field.id;\n this.name = field.name;\n this.isOpen = field.isOpen;\n this.options = field.options;\n this.operators = field.operators;\n this.operatorUnits = field.operatorUnits;\n\n this._type = this.getType();\n }\n\n protected abstract getType(): PepSmartFilterType;\n}\n// Text field\n// ------------------------------\nexport class PepSmartFilterTextField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'text';\n }\n\n getType(): PepSmartFilterType {\n return 'text';\n }\n}\n\n\n// Boolean field\n// ------------------------------\nexport class PepSmartFilterBooleanField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'boolean';\n }\n\n getType(): PepSmartFilterType {\n return 'boolean';\n }\n}\n\n// Date fields\n// ------------------------------\nexport abstract class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'date';\n }\n}\nexport class PepSmartFilterDateField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date';\n }\n}\nexport class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date-time';\n }\n}\n\n// Multi select field\n// ------------------------------\nexport class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'multi-select';\n }\n\n getType(): PepSmartFilterType {\n return 'multi-select';\n }\n}\n\n// Number fields\n// ------------------------------\nexport abstract class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'number';\n }\n}\nexport class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'int';\n }\n}\nexport class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'real';\n }\n}\nexport class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'currency';\n }\n}\nexport class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'percentage';\n }\n}\n","import {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n PepSmartFilterTextField,\n PepSmartFilterBooleanField,\n PepSmartFilterDateField,\n PepSmartFilterMultiSelectField,\n PepSmartFilterIntField,\n PepSmartFilterDateTimeField,\n PepSmartFilterPercentageField,\n PepSmartFilterCurrencyField,\n PepSmartFilterRealField,\n} from './field';\nimport { IPepSmartFilterData } from './filter';\nimport { IPepSmartFilterOperator, IPepSmartFilterOperatorUnit } from './operator';\nimport { PepSmartFilterType } from './type';\n\nfunction createTextSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterTextField(data);\n}\n\nfunction createBooleanSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterBooleanField(data);\n}\n\nfunction createDateSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateField(data);\n}\n\nfunction createDateTimeSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateTimeField(data);\n}\n\nfunction createMultiSelectSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterMultiSelectField(data);\n}\n\nfunction createIntSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterIntField(data);\n}\n\nfunction createRealSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterRealField(data);\n}\n\nfunction createCurrencySmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterCurrencyField(data);\n}\n\nfunction createPercentageSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterPercentageField(data);\n}\n\nexport function createSmartFilterField(\n data: IPepSmartFilterField,\n type: PepSmartFilterType\n): PepSmartFilterBaseField {\n let field: PepSmartFilterBaseField;\n\n switch (type) {\n case 'text':\n field = createTextSmartFilterField(data);\n break;\n case 'boolean':\n field = createBooleanSmartFilterField(data);\n break;\n case 'date':\n field = createDateSmartFilterField(data);\n break;\n case 'date-time':\n field = createDateTimeSmartFilterField(data);\n break;\n case 'multi-select':\n field = createMultiSelectSmartFilterField(data);\n break;\n case 'int':\n field = createIntSmartFilterField(data);\n break;\n case 'real':\n field = createRealSmartFilterField(data);\n break;\n case 'currency':\n field = createCurrencySmartFilterField(data);\n break;\n case 'percentage':\n field = createPercentageSmartFilterField(data);\n break;\n default:\n field = createMultiSelectSmartFilterField(data);\n break;\n }\n\n return field;\n}\n\nexport function createSmartFilter(\n fieldId: string,\n operator: IPepSmartFilterOperator,\n first: any,\n second?: any,\n operatorUnit?: IPepSmartFilterOperatorUnit\n): IPepSmartFilterData {\n return {\n fieldId: fieldId,\n operator: operator,\n operatorUnit: operatorUnit,\n value: {\n first: first,\n second: second,\n },\n };\n}","/*\n * Public API Surface of ngx-lib/smart-filters\n */\nexport * from './smart-filters.module';\nexport * from './smart-filters.component';\nexport * from './common/model/base-filter-component';\nexport * from './common/filter-actions.component';\nexport * from './boolean-filter/boolean-filter.component';\nexport * from './date-filter/date-filter.component';\nexport * from './multi-select-filter/multi-select-filter.component';\nexport * from './number-filter/number-filter.component';\nexport * from './text-filter/text-filter.component';\n\n// Model\nexport * from './common/model/creator';\nexport * from './common/model/field';\nexport * from './common/model/filter';\nexport * from './common/model/operator';\nexport * from './common/model/type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAqBa,wBAAwB;IA2DjC,YACY,WAAuB,EACxB,aAA+B;QAD9B,gBAAW,GAAX,WAAW,CAAY;QACxB,kBAAa,GAAb,aAAa,CAAkB;QA3DjC,UAAK,GAAG,EAAE,CAAC;QAEpB,mBAAc,GAAqC,IAAI,GAAG,EAGvD,CAAC;QAEI,aAAQ,GAA0B,EAAE,CAAC;QAkBrC,YAAO,GAAgC,EAAE,CAAC;QAS1C,uBAAkB,GAAG,KAAK,CAAC;;;QAcnC,kBAAa,GAAwC,IAAI,YAAY,EAElE,CAAC;QAGJ,sBAAiB,GAAuC,IAAI,YAAY,EAAwB,CAAC;QAEjG,+BAA0B,GAAG,GAAG,CAAC;KAK5B;IApDL,IACI,OAAO,CAAC,KAA4B;QACpC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD,IAAI,OAAO;QACP,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;;aAE1C,GAAG,CAAC,CAAC,GAAG;YACL,IAAI,GAAG,EAAE;gBACL,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACvC;SACJ,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAGD,IACI,MAAM,CAAC,KAAkC;QACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IACD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAGD,IACI,iBAAiB,CAAC,KAAc;QAChC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACvC;KACJ;IACD,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAmBO,4BAA4B;;QAEhC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAChE,IAAI,CACP,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC9D,IAAI,CACP,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC9D,IAAI,CACP,CAAC;KACL;IAEO,YAAY,CAAC,KAA4B;QAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;;gBAEjB,IAAI,YAAY,GAAG,IAAI,CAAC;gBAExB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3B,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CACd,CAAC;iBAChC;gBAED,IAAI,YAAY,EAAE;;oBAEd,IACI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAClC,YAAY,CAAC,aAAa,CAC7B,EACH;wBACE,IAAI,mBAAmB,GAAG,IAAI,CAAC;wBAC/B,IAAI,MAAM,CAAC,YAAY,EAAE;;4BAErB,IACI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CACvC,YAAY,CAAC,aAAa,CAC7B,EACH;gCACE,mBAAmB,GAAG,KAAK,CAAC;6BAC/B;yBACJ;;wBAGD,IAAI,mBAAmB,EAAE;4BACrB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;yBACnD;qBACJ;iBACJ;aACJ,CAAC,CAAC;SACN;KACJ;IAEO,kBAAkB;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACzC;IAED,WAAW,CAAC,KAAa,EAAE,MAAe;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACnD;IAED,YAAY;QACR,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;KAC/B;IAED,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACvC;;IAGD,cAAc;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;IAGD,aAAa,CAAC,KAA2B;QACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;IAGD,cAAc,CACV,KAA2B,EAC3B,UAA+B;QAE/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;;YAlKJ,SAAS,SAAC;gBACP,QAAQ,EAAE,mBAAmB;gBAC7B,kwIAA6C;gBAE7C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAClD;;;YAdG,UAAU;YAML,gBAAgB;;;oBAWpB,KAAK;sBAQL,KAAK;qBAkBL,KAAK;gCASL,KAAK;4BAYL,MAAM;gCAKN,MAAM;;;MCnEE,yBAAyB;IALtC;QAQc,eAAU,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC1D,eAAU,GAA0B,IAAI,YAAY,EAAW,CAAC;KAS7E;IAPG,KAAK;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,KAAK;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;;;YAjBJ,SAAS,SAAC;gBACP,QAAQ,EAAE,oBAAoB;gBAC9B,kbAA8C;;aAEjD;;;mBAEI,KAAK;yBAEL,MAAM;yBACN,MAAM;;;MCPE,uBAAuB;CAKnC;AAED,MAAM,MAAM,GAA4B;IACpC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,GAAG;IACV,aAAa,EAAE;QACX,QAAQ;QACR,SAAS;;;;;;KAMZ;CACJ,CAAC;AAEF,MAAM,QAAQ,GAA4B;IACtC,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,IAAI;IACX,aAAa,EAAE;QACX,QAAQ;;;;;;KAMX;CACJ,CAAC;AAEF,MAAM,QAAQ,GAA4B;IACtC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,GAAG;IACV,aAAa,EAAE,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAEF;AACA;AACA;AACA;AACA;AACA;AAEA,MAAM,WAAW,GAA4B;IACzC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,GAAG;IACV,aAAa,EAAE,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAEF;AACA;AACA;AACA;AACA;AACA;AAEA,MAAM,WAAW,GAA4B;IACzC,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAEF,MAAM,QAAQ,GAA4B;IACtC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAM,SAAS,GAA4B;IACvC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,aAAa;IACpB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,KAAK,GAA4B;IACnC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,QAAQ,GAA4B;IACtC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,WAAW;IAClB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,SAAS,GAA4B;IACvC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,SAAS,GAA4B;IACvC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,KAAK,GAA4B;IACnC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,EAAE,GAA4B;IAChC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,YAAY,GAA4B;IAC1C,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,iBAAiB;IACxB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,QAAQ,GAA4B;IACtC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IACnB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,OAAO,GAA4B;IACrC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,UAAU,GAA4B;IACxC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,cAAc;IACrB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,EAAE,GAA4B;IAChC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC,cAAc,CAAC;CAClC,CAAC;MAEW,uBAAuB,GAAG;IACnC,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;;IAElB,WAAW,EAAE,WAAW;;IAExB,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,QAAQ;;;;;IAKlB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,KAAK;IACZ,EAAE,EAAE,EAAE;IACN,YAAY,EAAE,YAAY;IAC1B,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,UAAU;IACtB,EAAE,EAAE,EAAE;EACR;AAEF;AACA,MAAM,iBAAiB,GAA4B;IAC/C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,wBAAwB;IAC/B,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAA;AAED,MAAM,oBAAoB,GAA4B;IAClD,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,4BAA4B;IACnC,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAA;MAEY,iCAAiC,GAAG;IAC7C,iBAAiB,EAAE,iBAAiB;IACpC,oBAAoB,EAAE,oBAAoB;EAC7C;AAED;AACA,MAAM,gBAAgB,GAA4B;IAC9C,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,GAAG;IACV,aAAa,EAAE;QACX,MAAM;QACN,QAAQ;QACR,SAAS;KACZ;CACJ,CAAA;AAED,MAAM,mBAAmB,GAA4B;IACjD,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC,SAAS,CAAC;CAC7B,CAAA;AAED,MAAM,gBAAgB,GAA4B;IAC9C,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,GAAG;IACV,aAAa,EAAE,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAEF,MAAM,mBAAmB,GAA4B;IACjD,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,GAAG;IACV,aAAa,EAAE,CAAC,QAAQ,CAAC;CAC5B,CAAC;AAEF,MAAM,iBAAiB,GAA4B;IAC/C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,sBAAsB;IAC7B,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,iBAAiB,GAA4B;IAC/C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,gBAAgB;IACvB,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;MAEW,+BAA+B,GAAG;IAC3C,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,iBAAiB;EACvC;MAEY,2BAA2B;CAIvC;AAED,MAAM,IAAI,GAAgC;IACtC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,KAAK,GAAgC;IACvC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,GAAgC;IACxC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,KAAK,GAAgC;IACvC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,CAAC,MAAM,CAAC;CAC1B,CAAC;MAEW,2BAA2B,GAAG;IACvC,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,KAAK;;;MCvRM,mBAAmB;IAqHrC,YACY,gBAAkC,EAClC,QAAkB,EAClB,QAAkC,EAClC,OAAoB,EAClB,SAA2B,EAC3B,SAA8B,EAC9B,QAAmB;QANrB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,aAAQ,GAAR,QAAQ,CAAU;QAClB,aAAQ,GAAR,QAAQ,CAA0B;QAClC,YAAO,GAAP,OAAO,CAAa;QAClB,cAAS,GAAT,SAAS,CAAkB;QAC3B,cAAS,GAAT,SAAS,CAAqB;QAC9B,aAAQ,GAAR,QAAQ,CAAW;QAvHzB,uBAAkB,GAAG,EAAE,CAAC;QAYhC,yBAAoB,GAAsB,EAAE,CAAC;QA6BpC,iBAAY,GAAG,KAAK,CAAC;QACrB,WAAM,GAAG,KAAK,CAAC;QACf,sBAAiB,GAAG,IAAI,CAAC;QACzB,gBAAW,GAAG,IAAI,CAAC;QACnB,4BAAuB,GAAG,KAAK,CAAC;QAE/B,gBAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAErE,iBAAY,GAAsC,IAAI,YAAY,EAAuB,CAAC;QAyDvE,iCAA4B,GAAG,yBAAyB,CAAC;QACzD,sCAAiC,GAChD,8BAA8B,CAAC;QAa/B,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;KACnC;IAxHD,IACI,KAAK,CAAC,KAA8B;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,kBAAkB,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;QACpE,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IACD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAGD,IACI,aAAa,CAAC,IAAW;QACzB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE;YACd,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI;gBACrC,OAAO;oBACH,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,IAAI;iBACd,CAAA;aACJ,CAAC,CAAC;SACN;KACJ;IAID,IACI,MAAM,CAAC,KAA0B;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IACD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IACI,UAAU,CAAC,IAAe;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAYD,IAAI,QAAQ,CAAC,QAAiC;;QAC1C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,MAAI,MAAA,IAAI,CAAC,SAAS,0CAAE,EAAE,CAAA,EAAE;;YAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC1C;iBAAM;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACtC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;KACJ;IACD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAGD,IAAI,YAAY,CAAC,YAAyC;;QAEtD,IAAI,YAAY,EAAE;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACtC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CACpC,CAAC;YACF,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAClD;iBAAM;gBACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aAC9C;SACJ;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;SAClC;KACJ;IACD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,kBAAkB,QAAQ,GAAG,OAAO,CAAC;KACpE;IACD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC9C;IACD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,kBAAkB,SAAS,GAAG,QAAQ,CAAC;KACtE;IACD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC/C;IAuBO,sBAAsB;QAC1B,MAAM,OAAO,GAAgD,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAC9F,yBAAyB,CAC5B,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MACnD,IAAI,CAAC,WAAW,EAAE,CACrB,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MACnD,IAAI,CAAC,WAAW,EAAE,CACrB,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACnE;IAEO,SAAS;QACb,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;;QAEtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;;QAI1C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;KACJ;IAEO,cAAc;;;QAElB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;aAChD,MAAM,CAAC,CAAC,GAAG;YACR,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CACtD,IAAI,CAAC,KAAK,CAAC,aAAa,CAC3B,CAAC;SACL,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,KAAK,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;;QAGhD,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAC9B,MAAM,UAAU,GAA8B,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC;iBACvF,MAAM,CAAC,CAAC,GAAG;gBACR,OAAO,iCAAiC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAC3B,CAAC;aACL,CAAC;iBACD,GAAG,CAAC,CAAC,GAAG,KAAK,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE1D,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;SACvD;;QAGD,IAAI,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,EAAE;YACnC,MAAM,SAAS,GAA8B,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC;iBACpF,MAAM,CAAC,CAAC,GAAG;gBACR,OAAO,+BAA+B,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAC9D,IAAI,CAAC,KAAK,CAAC,aAAa,CAC3B,CAAC;aACL,CAAC;iBACD,GAAG,CAAC,CAAC,GAAG,KAAK,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;YAExD,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;SACtD;;QAGD,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,MAAM,IAAG,CAAC,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KACtC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAClD,CAAC;SACL;;QAKD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC;aACxD,MAAM,CAAC,CAAC,GAAG;YACR,OAAO,2BAA2B,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAC1D,IAAI,CAAC,KAAK,CAAC,aAAa,CAC3B,CAAC;SACL,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,KAAK,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;;QAGpD,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,MAAM,IAAG,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,KAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CACtD,CAAC;SACL;;QAGD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;YACpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B,CAAC,CAAC;KACN;IAEO,WAAW;QACf,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7C,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1D,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SACnC;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC3B;KACJ;IAES,gBAAgB;QACtB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACrD,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,MAAM,EAAE,IAAI,CAAC,aAAa;SAC7B,CAAC,CAAC,CAAC;KACP;IAES,YAAY;QAClB,OAAO,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACrC;IAEO,cAAc;QAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;KAC/C;;IAES,oBAAoB;;KAE7B;;IAGS,2BAA2B;QACjC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;KAChC;;IAGS,sBAAsB;QAC5B,OAAO,SAAS,CAAC;KACpB;IAES,UAAU;;KAEnB;IAKD,WAAW,CAAC,SAAS,GAAG,IAAI;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC3B;KACJ;IAED,WAAW;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;;QAG1C,IAAI,WAAW,EAAE;YACb,MAAM,MAAM,GAAG;gBACX,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,WAAW;aACrB,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC;aAAM;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;KACJ;IAED,WAAW;;;;KAIV;IAED,WAAW;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;SACtC;KACJ;;;YAjVJ,SAAS,SAAC,EAAE;;;YAvCT,gBAAgB;YAKhB,QAAQ;YAHR,wBAAwB;YAQxB,WAAW;YAyBN,gBAAgB;YAfrB,mBAAmB;YAtBnB,SAAS;;;oBAiDR,KAAK;4BAWL,KAAK;qBAcL,KAAK;yBASL,KAAK;2BAKL,KAAK;qBACL,KAAK;gCACL,KAAK;0BACL,KAAK;sCACL,KAAK;0BAEL,MAAM;2BACN,MAAM;;;MCzFE,sBAAuB,SAAQ,mBAAmB;IAL/D;;QAMI,oCAA+B,GAAG,+BAA+B,CAAC;QAClE,sBAAiB,GAAsB,EAAE,CAAC;QAC1C,kBAAa,GAAG,KAAK,CAAC;QACtB,sBAAiB,GAAG,KAAK,CAAC;KA+E7B;IA7EG,QAAQ;QACJ,IAAI,CAAC,YAAY,CAAC,YAAY;aACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,oBAAoB,EAAE,CAAC;aACjD,SAAS,CAAC;YACP,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACtC,CAAC,CAAC;KACV;;IAGD,kBAAkB;QACd,OAAO,uBAAuB,CAAC,MAAM,CAAC;KACzC;;IAGD,cAAc;QACV,MAAM,WAAW,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;SACjC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,WAAW,EAAE;YACvD,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;SACpD;QAED,OAAO,WAAW,CAAC;KACtB;;IAGD,oBAAoB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ;YACjD,OAAO;gBACH,GAAG,EAAE,QAAQ,CAAC,EAAE;gBAChB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CACzB,GAAG,IAAI,CAAC,4BAA4B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAC1D;aACJ,CAAC;SACL,CAAC,CAAC;KACN;;IAGD,2BAA2B;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,WAAW,EAAE;YACvD,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC1B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;aACvE;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;SACpD;aAAM;YACH,KAAK,CAAC,2BAA2B,EAAE,CAAC;SACvC;KACJ;IAED,iBAAiB,CAAC,KAAa;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC/C,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,CACtC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,iBAAiB,CAAC,KAAU;QACxB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,cAAc;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;;YAtFJ,SAAS,SAAC;gBACP,QAAQ,EAAE,iBAAiB;gBAC3B,i7CAA2C;;aAE9C;;;MCDY,yBAA0B,SAAQ,mBAAmB;IALlE;;QAMa,YAAO,GAAiB,EAAE,CAAC;QAEpC,oCAA+B,GAAG,+BAA+B,CAAC;QAClE,sBAAiB,GAAsB,EAAE,CAAC;KAgE7C;IA5DG,QAAQ;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;KACJ;;IAID,kBAAkB;QACd,OAAO,uBAAuB,CAAC,MAAM,CAAC;KACzC;;IAGD,cAAc;QACV,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;QAChE,OAAO,WAAW,CAAC;KACtB;;IAGD,oBAAoB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ;YACjD,OAAO;gBACH,GAAG,EAAE,QAAQ,CAAC,EAAE;gBAChB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CACzB,GAAG,IAAI,CAAC,4BAA4B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAC1D;aACJ,CAAC;SACL,CAAC,CAAC;KACN;IAED,gBAAgB;;QACZ,IAAI,MAAA,IAAI,CAAC,oBAAoB,0CAAE,MAAM,EAAE;YACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAE3B;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC5B;KACJ;IAED,iBAAiB,CAAC,KAAa;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC/C,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,CACtC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,cAAc,CAAC,KAAK;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;;YAxEJ,SAAS,SAAC;gBACP,QAAQ,EAAE,oBAAoB;gBAC9B,4/EAA8C;;aAEjD;;;sBAEI,KAAK;;;MCGG,sBAAuB,SAAQ,mBAAmB;IAL/D;;QAMI,4BAAuB,GAAG,uBAAuB,CAAC;QAClD,sCAAiC,GAAG,iCAAiC,CAAC;QACtE,oCAA+B,GAAG,+BAA+B,CAAC;QAClE,sBAAiB,GAAsB,EAAE,CAAC;QAC1C,0BAAqB,GAAsB,EAAE,CAAC;KAoKjD;IAhKG,QAAQ;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;KACJ;;IAGD,kBAAkB;QACd,OAAO,uBAAuB,CAAC,SAAS,CAAC;KAC5C;;IAGD,sBAAsB;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS;YACnD,IAAI,CAAC,QAAQ,KAAK,iCAAiC,CAAC,iBAAiB;YACrE,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,YAAY;YACtD,IAAI,CAAC,QAAQ,KAAK,iCAAiC,CAAC,oBAAoB;YACxE,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;YAC/C,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ,EAAE;YACpD,OAAO,2BAA2B,CAAC,MAAM,CAAC;SAC7C;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;KACJ;;IAGD,cAAc;QACV,MAAM,WAAW,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;SACjC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS,EAAE;YACrD,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;SACpD;QAED,OAAO,WAAW,CAAC;KACtB;;IAGD,oBAAoB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ;YACjD,OAAO;gBACH,GAAG,EAAE,QAAQ,CAAC,EAAE;gBAChB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CACzB,GAAG,IAAI,CAAC,4BAA4B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAC1D;aACJ,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY;YAC7D,OAAO;gBACH,GAAG,EAAE,YAAY,CAAC,EAAE;gBACpB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CACzB,GAAG,IAAI,CAAC,iCAAiC,IAAI,YAAY,CAAC,IAAI,EAAE,CACnE;aACJ,CAAC;SACL,CAAC,CAAC;KACN;;IAGD,2BAA2B;QACvB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACzD;aAAM,IACH,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS;YACnD,IAAI,CAAC,QAAQ,KAAK,iCAAiC,CAAC,iBAAiB;YACrE,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,YAAY;YACtD,IAAI,CAAC,QAAQ,KAAK,iCAAiC,CAAC,oBAAoB;YACxE,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;YAC/C,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ,EACpD;YACE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gBAC5B,UAAU,CAAC,QAAQ;gBACnB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;aACnC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAChC;aAAM;;YAEH,IACI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;gBAC/C,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ;gBAClD,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS;gBACnD,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,OAAO;gBACjD,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,UAAU,EACtD;gBACE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aAC/B;;YAGD,KAAK,CAAC,2BAA2B,EAAE,CAAC;SACvC;KACJ;IAED,gBAAgB;QACZ,IACI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;YAC/C,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ;YAClD,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,SAAS;YACnD,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,OAAO;YACjD,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,UAAU,EACtD;YACE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,EAAE,EAAE;YACrD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;KACJ;IAED,iBAAiB,CAAC,KAAa;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC/C,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,CACtC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,iBAAiB,CAAC,KAAa;QAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAChE,CAAC,YAAY,KAAK,YAAY,CAAC,EAAE,KAAK,KAAK,CAC9C,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,iBAAiB,CAAC,KAAU;QACxB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;;YA5KJ,SAAS,SAAC;gBACP,QAAQ,EAAE,iBAAiB;gBAC3B,i9HAA2C;;aAE9C;;;ACKD,MAAM,0BAA0B;IAAhC;QAGI,aAAQ,GAAG,KAAK,CAAC;KACpB;CAAA;MAOY,6BACT,SAAQ,mBAAmB;IAN/B;;QAQI,YAAO,GAAiC,EAAE,CAAC;QAE3C,kBAAa,GAAG,IAAI,WAAW,EAAE,CAAC;;QAElC,aAAQ,GAAG,EAAE,CAAC;QACd,kBAAa,GAAiB,EAAE,CAAC;QAKhB,wBAAmB,GAAG,IAAI,CAAC;QAI5C,8BAAyB,GAAG,EAAE,CAAC;KAiKlC;IA/JG,QAAQ;QACJ,KAAK,CAAC,QAAQ,CAAC;QAEf,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;KACJ;IAGD,eAAe;;QAEX,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAC/C;IAEO,iBAAiB;;;QAErB,IAAI,CAAC,aAAa,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,0CAAE,MAAM,IAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAuB,GAAG,EAAE,CAAC;;QAG/F,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,KAAK,0CAAE,MAAM,IAAG,CAAC,EAAE;YACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrD;KACJ;IAEO,qBAAqB;;QACzB,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,MAAM,IAAG,CAAC,EAAE;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG;gBACtC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;aAClE,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAChC;;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,YAAY,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACtD;;QAGD,YAAY,CAAC,YAAY;aACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,oBAAoB,EAAE,CAAC;aACjD,SAAS,CAAC,CAAC,cAAwB;YAChC,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;SAClD,CAAC,CAAC;;QAGP,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CACxD,IAAI,CAAC,YAAY,EAAE,EACnB,SAAS,CAAM,EAAE,CAAC,EAClB,GAAG,CAAC,CAAC,MAAM,KACP,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAC/D,EACD,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CACrE,CAAC;;QAGF,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAC3B,CAAC,cAA4C;YACzC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9C,UAAU,CAAC;;gBAEP,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C,EAAE,GAAG,CAAC,CAAC;SACX,CACJ,CAAC;KAEL;IAED,yBAAyB,CAAC,cAAwB;QAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG;YACrB,MAAM,eAAe,GACjB,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzD,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC;SAClC,CAAC,CAAC;KACN;IAEO,iBAAiB,CAAC,YAAoB;QAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,MAAM,aAAa,GACf,YAAY,GAAG,IAAI,CAAC,mBAAmB;kBACjC,IAAI,CAAC,mBAAmB;kBACxB,YAAY,CAAC;;YAEvB,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;YAEvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,gBAAgB,CAAC,aAAa,EACnC,QAAQ,EACR,aAAa,CAChB,CAAC;SACL;KACJ;IAEO,aAAa,CAAC,KAAa;QAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACtB,CAAC,GAAG,KACA,GAAG,CAAC,KAAK;YACT,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAClE,CAAC;KACL;;IAGD,kBAAkB;QACd,OAAO,uBAAuB,CAAC,EAAE,CAAC;KACrC;;IAGD,cAAc;QACV,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;aACjC,CAAC;SACL;aAAM;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;iBAC9B,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC;iBAC7B,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG;gBAChB,KAAK,EAAE,cAAc;aACxB,CAAC;YAEF,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;SACzD;KAEJ;;IAGD,UAAU;QACN,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACnC;IAED,cAAc,CACV,MAAkC,EAClC,KAAwB;QAExB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,QAAQ,CACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,EAClE,EAAE,SAAS,EAAE,KAAK,EAAE,CACvB,CAAC;KACL;IAED,oBAAoB,CAAC,KAAa;QAC9B,IAAI,KAAK,EAAE;YACP,MAAM,QAAQ,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACxC;aAAM;YACH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;;YArLJ,SAAS,SAAC;gBACP,QAAQ,EAAE,yBAAyB;gBACnC,k5DAAmD;;aAEtD;;;+BAWI,SAAS,SAAC,kBAAkB;8BAI5B,SAAS,SAAC,wBAAwB;;;MC/B1B,wBAAyB,SAAQ,mBAAmB;IALjE;;QAMI,4BAAuB,GAAG,uBAAuB,CAAC;QAClD,oCAA+B,GAAG,+BAA+B,CAAC;QAClE,sBAAiB,GAAsB,EAAE,CAAC;QAC1C,kBAAa,GAAG,KAAK,CAAC;QACtB,gBAAW,GAAG,KAAK,CAAC;KAyGvB;IAvGG,QAAQ;QACJ,IAAI,CAAC,YAAY,CAAC,YAAY;aACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,oBAAoB,EAAE,CAAC;aACjD,SAAS,CAAC;YACP,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACtC,CAAC,CAAC;QAEP,IAAI,CAAC,aAAa,CAAC,YAAY;aAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,oBAAoB,EAAE,CAAC;aACjD,SAAS,CAAC;YACP,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACtC,CAAC,CAAC;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;;IAGD,kBAAkB;QACd,OAAO,uBAAuB,CAAC,MAAM,CAAC;KACzC;;IAGD,cAAc;QACV,MAAM,WAAW,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;SACjC,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,WAAW,EAAE;YACvD,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;SACpD;QAED,OAAO,WAAW,CAAC;KACtB;;IAGD,oBAAoB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ;YACjD,OAAO;gBACH,GAAG,EAAE,QAAQ,CAAC,EAAE;gBAChB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CACzB,GAAG,IAAI,CAAC,4BAA4B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAC1D;aACJ,CAAC;SACL,CAAC,CAAC;KACN;;IAGD,2BAA2B;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,WAAW,EAAE;YACvD,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC1B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;aACvE;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YAGjD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;gBACzB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aAC1E;YACD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;SACtD;aAAM;YACH,KAAK,CAAC,2BAA2B,EAAE,CAAC;SACvC;KACJ;IAED,gBAAgB;QACZ,IAAI,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC,WAAW,EAAE;YACvD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;KACJ;IAED,iBAAiB,CAAC,KAAa;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC/C,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,CACtC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,KAAU;QACxB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAED,cAAc;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;;;YAjHJ,SAAS,SAAC;gBACP,QAAQ,EAAE,mBAAmB;gBAC7B,qhGAA6C;;aAEhD;;;MCuEY,qBAAqB;IAC9B,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAChD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAC/B,kBAAkB;YAClB,iBAAiB;SACpB,CAAC,CAAC;KACN;;;YApDJ,QAAQ,SAAC;gBACN,OAAO,EAAE;oBACL,YAAY;oBACZ,mBAAmB;oBACnB,gBAAgB;;oBAEhB,eAAe;oBACf,iBAAiB;oBACjB,cAAc;oBACd,kBAAkB;oBAClB,aAAa;oBACb,kBAAkB;oBAClB,cAAc;oBACd,cAAc;;oBAEd,qBAAqB;;oBAErB,eAAe;oBACf,iBAAiB;oBACjB,aAAa;oBACb,eAAe;oBACf,gBAAgB;oBAChB,eAAe;oBACf,aAAa;oBACb,eAAe;oBACf,qBAAqB;iBACxB;gBACD,OAAO,EAAE;oBACL,wBAAwB;oBACxB,sBAAsB;oBACtB,yBAAyB;oBACzB,sBAAsB;oBACtB,6BAA6B;oBAC7B,wBAAwB;iBAC3B;gBACD,YAAY,EAAE;;oBAEV,wBAAwB;oBACxB,yBAAyB;oBACzB,sBAAsB;oBACtB,yBAAyB;oBACzB,sBAAsB;oBACtB,6BAA6B;oBAC7B,wBAAwB;iBAC3B;aACJ;;;YA7DG,eAAe;;;ACAnB;AACA;MACsB,uBAAuB;IAkBzC,YAAY,KAA2B;QACnC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;KAC/B;IAlBD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAGD,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;CAcJ;AACD;AACA;MACa,uBAAwB,SAAQ,uBAAuB;IAChE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;KAChC;IAED,OAAO;QACH,OAAO,MAAM,CAAC;KACjB;CACJ;AAGD;AACA;MACa,0BAA2B,SAAQ,uBAAuB;IACnE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;KACnC;IAED,OAAO;QACH,OAAO,SAAS,CAAC;KACpB;CACJ;AAED;AACA;MACsB,2BAA4B,SAAQ,uBAAuB;IAC7E,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;KAChC;CACJ;MACY,uBAAwB,SAAQ,2BAA2B;IACpE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,OAAO;QACH,OAAO,MAAM,CAAC;KACjB;CACJ;MACY,2BAA4B,SAAQ,2BAA2B;IACxE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,OAAO;QACH,OAAO,WAAW,CAAC;KACtB;CACJ;AAED;AACA;MACa,8BAA+B,SAAQ,uBAAuB;IACvE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACxC;IAED,OAAO;QACH,OAAO,cAAc,CAAC;KACzB;CACJ;AAED;AACA;MACsB,6BAA8B,SAAQ,uBAAuB;IAC/E,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;KAClC;CACJ;MACY,sBAAuB,SAAQ,6BAA6B;IACrE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,OAAO;QACH,OAAO,KAAK,CAAC;KAChB;CACJ;MACY,uBAAwB,SAAQ,6BAA6B;IACtE,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,OAAO;QACH,OAAO,MAAM,CAAC;KACjB;CACJ;MACY,2BAA4B,SAAQ,6BAA6B;IAC1E,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,OAAO;QACH,OAAO,UAAU,CAAC;KACrB;CACJ;MACY,6BAA8B,SAAQ,6BAA6B;IAC5E,YAAY,KAA2B;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,OAAO;QACH,OAAO,YAAY,CAAC;KACvB;;;ACtJL,SAAS,0BAA0B,CAAC,IAA0B;IAC1D,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,6BAA6B,CAAC,IAA0B;IAC7D,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,0BAA0B,CAAC,IAA0B;IAC1D,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,8BAA8B,CAAC,IAA0B;IAC9D,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,iCAAiC,CAAC,IAA0B;IACjE,OAAO,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,yBAAyB,CAAC,IAA0B;IACzD,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,0BAA0B,CAAC,IAA0B;IAC1D,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,8BAA8B,CAAC,IAA0B;IAC9D,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,gCAAgC,CAAC,IAA0B;IAChE,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;SAEe,sBAAsB,CAClC,IAA0B,EAC1B,IAAwB;IAExB,IAAI,KAA8B,CAAC;IAEnC,QAAQ,IAAI;QACR,KAAK,MAAM;YACP,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM;QACV,KAAK,SAAS;YACV,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM;QACV,KAAK,MAAM;YACP,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM;QACV,KAAK,WAAW;YACZ,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM;QACV,KAAK,cAAc;YACf,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM;QACV,KAAK,KAAK;YACN,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM;QACV,KAAK,MAAM;YACP,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM;QACV,KAAK,UAAU;YACX,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM;QACV,KAAK,YAAY;YACb,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM;QACV;YACI,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM;KACb;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;SAEe,iBAAiB,CAC7B,OAAe,EACf,QAAiC,EACjC,KAAU,EACV,MAAY,EACZ,YAA0C;IAE1C,OAAO;QACH,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE;YACH,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;SACjB;KACJ,CAAC;AACN;;AC/GA;;;;ACAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.js","sources":["../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/common/model/base-filter-component.ts","../../../projects/ngx-lib/smart-filters/text-filter/text-filter.component.ts","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../projects/ngx-lib/smart-filters/smart-filters.module.ts","../../../projects/ngx-lib/smart-filters/common/model/field.ts","../../../projects/ngx-lib/smart-filters/common/model/creator.ts","../../../projects/ngx-lib/smart-filters/public-api.ts","../../../projects/ngx-lib/smart-filters/pepperi-addons-ngx-lib-smart-filters.ts"],"sourcesContent":["import {\n Component,\n Input,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ElementRef,\n} from '@angular/core';\nimport {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n} from './common/model/field';\nimport { PepLayoutService } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterData } from './common/model/filter';\n\n@Component({\n selector: 'pep-smart-filters',\n templateUrl: './smart-filters.component.html',\n styleUrls: ['./smart-filters.component.scss', './smart-filters.component.theme.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepSmartFiltersComponent {\n\n @Input() title = '';\n\n filtersDataMap: Map<string, IPepSmartFilterData> = new Map<\n string,\n IPepSmartFilterData\n >();\n\n private _filters: IPepSmartFilterData[] = [];\n @Input()\n set filters(value: IPepSmartFilterData[]) {\n this._filters = value;\n this.setupFilters(value);\n }\n get filters(): IPepSmartFilterData[] {\n this._filters = [...this.filtersDataMap.keys()]\n // .filter((key) => this.filtersDataMap.get(key) !== null)\n .map((key) => {\n if (key) {\n return this.filtersDataMap.get(key);\n }\n });\n\n return this._filters;\n }\n\n private _fields: Array<IPepSmartFilterField> = [];\n @Input()\n set fields(value: Array<IPepSmartFilterField>) {\n this._fields = value;\n }\n get fields(): Array<IPepSmartFilterField> {\n return this._fields;\n }\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n // @Output()\n // filtersClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filtersChange: EventEmitter<IPepSmartFilterData[]> = new EventEmitter<\n IPepSmartFilterData[]\n >();\n\n @Output()\n fieldToggleChange: EventEmitter<IPepSmartFilterField> = new EventEmitter<IPepSmartFilterField>();\n\n expansionPanelHeaderHeight = '*';\n\n constructor(\n private hostElement: ElementRef,\n public layoutService: PepLayoutService\n ) { }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(\n this\n );\n this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(\n this\n );\n this.hostElement.nativeElement.toggleField = this.toggleField.bind(\n this\n );\n }\n\n private setupFilters(value: IPepSmartFilterData[]) {\n this.filtersDataMap.clear();\n if (value) {\n value.forEach((filter) => {\n // Validate before add the filter into the map.\n let currentField = null;\n\n if (this.fields && this.fields.length > 0) {\n currentField = this.fields.find(\n (field) => field.id === filter.fieldId\n ) as PepSmartFilterBaseField;\n }\n\n if (currentField) {\n // Only if the operator is from the same type\n if (\n filter.operator.componentType.includes(\n currentField.componentType\n )\n ) {\n let isOperatorUnitValid = true;\n if (filter.operatorUnit) {\n // Only if the operator unit is not from the same type\n if (\n !filter.operatorUnit.componentType.includes(\n currentField.componentType\n )\n ) {\n isOperatorUnitValid = false;\n }\n }\n\n // Add the filter.\n if (isOperatorUnitValid) {\n this.filtersDataMap.set(filter.fieldId, filter);\n }\n }\n }\n });\n }\n }\n\n private raiseFiltersChange(): void {\n this.filtersChange.emit(this.filters);\n }\n\n toggleField(index: number, isOpen: boolean): void {\n this.fields[index].isOpen = isOpen;\n this.fieldToggleChange.emit(this.fields[index]);\n }\n\n clearFilters() {\n this.filtersDataMap.clear();\n }\n\n clearFilter(fieldId: string) {\n this.filtersDataMap.delete(fieldId);\n }\n\n // Clear all the filters and raise event that filters has change.\n onFiltersClear() {\n this.clearFilters();\n this.raiseFiltersChange();\n }\n\n // Clear the filter and raise event that filters has change.\n onFilterClear(field: IPepSmartFilterField) {\n this.clearFilter(field.id);\n this.raiseFiltersChange();\n }\n\n // Set the filter and raise event that filters has change.\n onFilterChange(\n field: IPepSmartFilterField,\n filterData: IPepSmartFilterData\n ) {\n this.clearFilter(field.id);\n this.filtersDataMap.set(field.id, filterData);\n this.raiseFiltersChange();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'pep-filter-actions',\n templateUrl: './filter-actions.component.html',\n styleUrls: ['./filter-actions.component.scss'],\n})\nexport class PepFilterActionsComponent {\n @Input() form: FormGroup;\n\n @Output() clearClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() applyClick: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n clear() {\n this.clearClick.emit();\n }\n\n apply() {\n this.applyClick.emit();\n }\n}\n","import {\n PepSmartFilterComponentType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\nexport class IPepSmartFilterOperator {\n id: PepSmartFilterOperatorType;\n name: string;\n short: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Equals: IPepSmartFilterOperator = {\n id: 'eq',\n name: 'EQUAL',\n short: '=',\n componentType: [\n 'number',\n 'boolean',\n // 'multi-select',\n // 'date',\n 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst NotEqual: IPepSmartFilterOperator = {\n id: 'neq',\n name: 'NOT_EQUAL',\n short: '<>',\n componentType: [\n 'number',\n // 'multi-select',\n // 'date',\n 'text',\n // 'auto-complete',\n // 'select',\n ],\n};\n\nconst LessThan: IPepSmartFilterOperator = {\n id: 'lt',\n name: 'LESS_THEN',\n short: '<',\n componentType: ['number'],\n};\n\n// const LessThanOrEquals: IPepSmartFilterOperator = {\n// id: 'ltoe',\n// name: 'LESS_THEN_OR_EQUAL',\n// short: '<=',\n// type: ['number'],\n// };\n\nconst GreaterThan: IPepSmartFilterOperator = {\n id: 'gt',\n name: 'GREATER_THEN',\n short: '>',\n componentType: ['number'],\n};\n\n// const GreaterThanOrEquals: IPepSmartFilterOperator = {\n// id: 'gtoe',\n// name: 'GREATER_THEN_OR_EQUAL',\n// short: '>=',\n// type: ['number'],\n// };\n\nconst NumberRange: IPepSmartFilterOperator = {\n id: 'numberRange',\n name: 'NUMBER_RANGE',\n short: 'Range',\n componentType: ['number'],\n};\n\nconst Contains: IPepSmartFilterOperator = {\n id: 'contains',\n name: 'CONTAINS',\n short: 'Contains',\n componentType: ['text'],\n};\n\nconst BeginsWith: IPepSmartFilterOperator = {\n id: 'beginsWith',\n name: 'BEGINS_WITH',\n short: 'Begins With',\n componentType: ['text'],\n};\n\nconst EndsWith: IPepSmartFilterOperator = {\n id: 'endsWith',\n name: 'ENDS_WITH',\n short: 'End With',\n componentType: ['text'],\n};\n\n// const After: Operator = {\n// id: 'after',\n// name: 'After',\n// short: 'After',\n// type: ['date'],\n// };\n\n// const Before: Operator = {\n// id: 'before',\n// name: 'Before',\n// short: 'Before',\n// type: ['date'],\n// };\n\nconst InTheLast: IPepSmartFilterOperator = {\n id: 'inTheLast',\n name: 'IN_THE_LAST',\n short: 'In the last',\n componentType: ['date'],\n};\n\nconst Today: IPepSmartFilterOperator = {\n id: 'today',\n name: 'TODAY',\n short: 'Today',\n componentType: ['date'],\n};\n\nconst ThisWeek: IPepSmartFilterOperator = {\n id: 'thisWeek',\n name: 'THIS_WEEK',\n short: 'This week',\n componentType: ['date'],\n};\n\nconst ThisMonth: IPepSmartFilterOperator = {\n id: 'thisMonth',\n name: 'THIS_MONTH',\n short: 'This month',\n componentType: ['date'],\n};\n\nconst DateRange: IPepSmartFilterOperator = {\n id: 'dateRange',\n name: 'DATE_RANGE',\n short: 'Range',\n componentType: ['date'],\n};\n\nconst DueIn: IPepSmartFilterOperator = {\n id: 'dueIn',\n name: 'DUE_IN',\n short: 'Due in',\n componentType: ['date'],\n};\n\nconst On: IPepSmartFilterOperator = {\n id: 'on',\n name: 'ON',\n short: 'On',\n componentType: ['date'],\n};\n\nconst NotInTheLast: IPepSmartFilterOperator = {\n id: 'notInTheLast',\n name: 'NOT_IN_THE_LAST',\n short: 'Not in the last',\n componentType: ['date'],\n};\n\nconst NotDueIn: IPepSmartFilterOperator = {\n id: 'notDueIn',\n name: 'NOT_DUE_IN',\n short: 'Not due in',\n componentType: ['date'],\n};\n\nconst IsEmpty: IPepSmartFilterOperator = {\n id: 'isEmpty',\n name: 'IS_EMPTY',\n short: 'Is empty',\n componentType: ['date'],\n};\n\nconst IsNotEmpty: IPepSmartFilterOperator = {\n id: 'isNotEmpty',\n name: 'IS_NOT_EMPTY',\n short: 'Is not empty',\n componentType: ['date'],\n};\n\nconst In: IPepSmartFilterOperator = {\n id: 'in',\n name: 'IN',\n short: 'In',\n componentType: ['multi-select'],\n};\n\nexport const PepSmartFilterOperators = {\n Equals: Equals,\n NotEqual: NotEqual,\n LessThan: LessThan,\n // LessThanOrEquals: LessThanOrEquals,\n GreaterThan: GreaterThan,\n // GreaterThanOrEquals: GreaterThanOrEquals,\n NumberRange: NumberRange,\n Contains: Contains,\n BeginsWith: BeginsWith,\n EndsWith: EndsWith,\n // After: After,\n // Before: Before,\n InTheLast: InTheLast,\n Today: Today,\n ThisWeek: ThisWeek,\n ThisMonth: ThisMonth,\n DateRange: DateRange,\n DueIn: DueIn,\n On: On,\n NotInTheLast: NotInTheLast,\n NotDueIn: NotDueIn,\n IsEmpty: IsEmpty,\n IsNotEmpty: IsNotEmpty,\n In: In,\n};\n\n//additional operators to be added upon input flag\nconst InTheLastCalendar: IPepSmartFilterOperator = {\n id: 'inTheLastCalendar',\n name: 'IN_THE_LAST_CALENDAR',\n short: 'In the last (calendar)',\n componentType: ['date'],\n}\n\nconst NotInTheLastCalendar: IPepSmartFilterOperator = {\n id: 'notInTheLastCalendar',\n name: 'NOT_IN_THE_LAST_CALENDAR',\n short: 'Not in the last (calendar)',\n componentType: ['date'],\n}\n\nexport const PepSmartFilterAdditionalOperators = {\n InTheLastCalendar: InTheLastCalendar,\n NotInTheLastCalendar: NotInTheLastCalendar\n}\n\n//additional variable operators to be added upon input variable fields\nconst EqualsToVariable: IPepSmartFilterOperator = {\n id: 'eqv',\n name: 'EQUAL_TO_VARIABLE',\n short: '=',\n componentType: ['text', 'number', 'boolean', 'multi-select']\n}\n\nconst NotEqualsToVariable: IPepSmartFilterOperator = {\n id: 'neqv',\n name: 'NOT_EQUAL_TO_VARIABLE',\n short: '<>',\n componentType: ['boolean', 'multi-select']\n}\n\nconst LessThanVariable: IPepSmartFilterOperator = {\n id: 'ltv',\n name: 'LESS_THAN_VARIABLE',\n short: '<',\n componentType: ['number'],\n};\n\nconst GreaterThanVariable: IPepSmartFilterOperator = {\n id: 'gtv',\n name: 'GREATER_THAN_VARIABLE',\n short: '>',\n componentType: ['number'],\n};\n\nconst DateRangeVariable: IPepSmartFilterOperator = {\n id: 'dateRangeVariable',\n name: 'DATE_RANGE_VARIABLE',\n short: 'Range Variable',\n componentType: ['date'],\n};\n\nexport const PepSmartFilterVariableOperators = {\n EqualsToVariable: EqualsToVariable,\n NotEqualsToVariable: NotEqualsToVariable,\n LessThanVariable: LessThanVariable,\n GreaterThanVariable: GreaterThanVariable,\n DateRangeVariable: DateRangeVariable\n}\n\nexport class IPepSmartFilterOperatorUnit {\n id: PepSmartFilterOperatorUnitType;\n name: string;\n componentType: PepSmartFilterComponentType[];\n}\n\nconst Days: IPepSmartFilterOperatorUnit = {\n id: 'days',\n name: 'DAYS',\n componentType: ['date'],\n};\n\nconst Weeks: IPepSmartFilterOperatorUnit = {\n id: 'weeks',\n name: 'WEEKS',\n componentType: ['date'],\n};\n\nconst Months: IPepSmartFilterOperatorUnit = {\n id: 'months',\n name: 'MONTHS',\n componentType: ['date'],\n};\n\nconst Years: IPepSmartFilterOperatorUnit = {\n id: 'years',\n name: 'YEARS',\n componentType: ['date'],\n};\n\nexport const PepSmartFilterOperatorUnits = {\n Days: Days,\n Weeks: Weeks,\n Months: Months,\n Years: Years,\n};\n","import {\n Directive,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n AfterViewInit,\n Output,\n ChangeDetectorRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ViewChild,\n ComponentFactoryResolver,\n ComponentFactory,\n ComponentRef,\n Injector,\n ElementRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport {\n PepValidatorService,\n IPepOption\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterAdditionalOperators,\n PepSmartFilterVariableOperators,\n PepSmartFilterOperatorUnits,\n} from './operator';\nimport { forwardRef } from '@angular/core';\nimport { IPepSmartFilterData, IPepSmartFilterDataValue } from './filter';\nimport { PepSmartFilterBaseField } from './field';\nimport { takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepFilterActionsComponent } from '../filter-actions.component';\n\n\n@Directive({})\nexport abstract class BaseFilterComponent\n implements OnInit, OnChanges, OnDestroy {\n private readonly _destroyed: Subject<void>;\n private actionsContainerRef: ComponentRef<PepFilterActionsComponent>;\n\n private _fieldIdWithNoDots = '';\n private _field: PepSmartFilterBaseField;\n @Input()\n set field(value: PepSmartFilterBaseField) {\n this._field = value;\n this._fieldIdWithNoDots = value ? value.id.replace(/\\./g, '_') : '';\n this.setupForm();\n }\n get field(): PepSmartFilterBaseField {\n return this._field;\n }\n\n variableFieldOptions: Array<IPepOption> = [];\n @Input()\n set variableField(list: any[]) {\n if (list?.length) {\n this.variableFieldOptions = list.map(item => {\n return {\n key: item,\n value: item\n }\n });\n }\n }\n \n\n private _filter: IPepSmartFilterData;\n @Input()\n set filter(value: IPepSmartFilterData) {\n this._filter = value;\n this.setupFilter();\n }\n get filter(): IPepSmartFilterData {\n return this._filter;\n }\n protected _parentForm: FormGroup;\n @Input()\n set parentForm(form: FormGroup) {\n this._parentForm = form;\n this.updateParentForm();\n }\n @Input() emitOnChange = false;\n @Input() inline = false;\n @Input() showActionButtons = true;\n @Input() renderTitle = true;\n @Input() showAdditionalOperators = false;\n\n @Output() filterClear: EventEmitter<void> = new EventEmitter<void>();\n @Output()\n filterChange: EventEmitter<IPepSmartFilterData> = new EventEmitter<IPepSmartFilterData>();\n\n private _operator: IPepSmartFilterOperator;\n set operator(operator: IPepSmartFilterOperator) {\n if (operator?.id != this._operator?.id) {\n // Validate operator\n const index = this.operators.findIndex((o) => o.id === operator.id);\n if (index >= 0) {\n this._operator = this.operators[index];\n } else {\n this._operator = this.operators[0];\n }\n\n this.form.reset();\n this.updateValidity();\n }\n }\n get operator(): IPepSmartFilterOperator {\n return this._operator;\n }\n\n private _operatorUnit: IPepSmartFilterOperatorUnit;\n set operatorUnit(operatorUnit: IPepSmartFilterOperatorUnit) {\n // Validate operator unit\n if (operatorUnit) {\n const index = this.operatorUnits.findIndex(\n (ou) => ou.id === operatorUnit.id\n );\n if (index >= 0) {\n this._operatorUnit = this.operatorUnits[index];\n } else {\n this._operatorUnit = this.operatorUnits[0];\n }\n } else {\n this._operatorUnit = undefined;\n }\n }\n get operatorUnit(): IPepSmartFilterOperatorUnit {\n return this._operatorUnit;\n }\n\n get firstControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';\n }\n get firstControl(): AbstractControl {\n return this.form.get(this.firstControlKey);\n }\n get secondControlKey() {\n return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';\n }\n get secondControl(): AbstractControl {\n return this.form.get(this.secondControlKey);\n }\n\n protected operators: IPepSmartFilterOperator[];\n protected operatorUnits: IPepSmartFilterOperatorUnit[];\n\n protected readonly OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';\n protected readonly OPERATOR_UNITS_TRANSLATION_PREFIX =\n 'SMART_FILTERS.OPERATOR_UNITS';\n\n form: FormGroup;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector,\n private resolver: ComponentFactoryResolver,\n private builder: FormBuilder,\n protected translate: TranslateService,\n protected validator: PepValidatorService,\n protected renderer: Renderer2\n ) {\n this._destroyed = new Subject();\n }\n\n private createActionsComponent() {\n const factory: ComponentFactory<PepFilterActionsComponent> = this.resolver.resolveComponentFactory(\n PepFilterActionsComponent\n );\n\n this.actionsContainerRef = factory.create(this.injector);\n this.actionsContainerRef.instance.form = this.form;\n this.actionsContainerRef.instance.applyClick.subscribe(() =>\n this.applyFilter()\n );\n this.actionsContainerRef.instance.clearClick.subscribe(() =>\n this.clearFilter()\n );\n\n this.viewContainerRef.insert(this.actionsContainerRef.hostView);\n }\n\n private setupForm() {\n const formValue = {};\n formValue[this.firstControlKey] = [];\n formValue[this.secondControlKey] = [];\n // this.form.patchValue(formValue); \n this.form = this.builder.group(formValue);\n // this.form[this.firstControlKey] = [];\n // this.form[this.secondControlKey] = [];\n\n this.setupOperators();\n\n if (this.showActionButtons) {\n this.createActionsComponent();\n }\n }\n\n private setupOperators() {\n // Get the operators by componentType.\n this.operators = Object.keys(PepSmartFilterOperators)\n .filter((key) => {\n return PepSmartFilterOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperators[key]);\n\n // Add additional operators\n if (this.showAdditionalOperators) {\n const additional: IPepSmartFilterOperator[] = Object.keys(PepSmartFilterAdditionalOperators)\n .filter((key) => {\n return PepSmartFilterAdditionalOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterAdditionalOperators[key]);\n\n this.operators = [...this.operators, ...additional];\n }\n\n //add variable operators\n if (this.variableFieldOptions?.length) {\n const variables: IPepSmartFilterOperator[] = Object.keys(PepSmartFilterVariableOperators)\n .filter((key) => {\n return PepSmartFilterVariableOperators[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterVariableOperators[key]);\n\n this.operators = [...this.operators, ...variables];\n }\n\n // Filter by from field.operators input if exist.\n if (this.field.operators?.length > 0) {\n this.operators = this.operators.filter((o1) =>\n this.field.operators.some((o2) => o1.id === o2)\n );\n }\n\n\n\n // Get the operator units by componentType.\n this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)\n .filter((key) => {\n return PepSmartFilterOperatorUnits[key].componentType.includes(\n this.field.componentType\n );\n })\n .map((key) => PepSmartFilterOperatorUnits[key]);\n\n // Filter by from field.operatorsUnits input if exist.\n if (this.field.operatorUnits?.length > 0) {\n this.operatorUnits = this.operatorUnits.filter((o1) =>\n this.field.operatorUnits.some((o2) => o1.id === o2)\n );\n }\n\n // Load translation before get the options in the children.\n this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {\n this.loadOperatorsOptions();\n });\n }\n\n private setupFilter() {\n if (this.filter) {\n this.operator = this.filter.operator;\n this.operatorUnit = this.filter.operatorUnit;\n const formValue = {};\n formValue[this.firstControlKey] = this.filter.value.first;\n formValue[this.secondControlKey] = this.filter.value.second;\n this.form.patchValue(formValue);\n } else {\n this.operator = this.getDefaultOperator();\n this.operatorUnit = this.getDefaultOperatorUnit();\n this.clearFilter(false);\n }\n }\n\n protected updateParentForm() {\n this._parentForm.setControl('fieldId', this.builder.control(this.field.id));\n this._parentForm.setControl('fieldType', this.builder.control(this.field.type));\n this._parentForm.setControl('operator', this.builder.control(this.operator));\n this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));\n this._parentForm.setControl('values', this.builder.group({\n first: this.firstControl,\n second: this.secondControl\n }));\n }\n\n protected getDestroyer() {\n return takeUntil(this._destroyed);\n }\n\n private updateValidity() {\n this.setFieldsStateAndValidators();\n\n this.firstControl.updateValueAndValidity();\n this.secondControl.updateValueAndValidity();\n }\n // Load the operators options from the translation.\n protected loadOperatorsOptions(): void {\n // Not implemented in the base\n }\n\n // Set default validators - some childs override this.\n protected setFieldsStateAndValidators(): void {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.setValidators(Validators.required);\n this.secondControl.disable();\n }\n\n // Return undefined - some childs override this.\n protected getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n return undefined;\n }\n\n protected initFilter() {\n // Not implemented in the base\n }\n\n abstract getDefaultOperator(): IPepSmartFilterOperator;\n abstract getFilterValue(): IPepSmartFilterDataValue;\n\n clearFilter(emitEvent = true) {\n this._filter = null;\n this.form.reset();\n this.initFilter();\n\n if (emitEvent) {\n this.filterClear.emit();\n }\n }\n\n applyFilter() {\n const filterValue = this.getFilterValue();\n\n // If the filter is not null declare it, else - clear it.\n if (filterValue) {\n const filter = {\n fieldId: this.field.id,\n operator: this.operator,\n operatorUnit: this.operatorUnit,\n value: filterValue,\n };\n this._filter = filter;\n this.filterChange.emit(filter);\n } else {\n this.clearFilter();\n }\n }\n\n ngOnInit(): void {\n if (this.form) {\n this.updateValidity();\n }\n }\n\n ngOnChanges(): void {\n // if (this.form) {\n // this.updateValidity();\n // }\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n\n if (this.showActionButtons) {\n this.actionsContainerRef.destroy();\n }\n }\n\n // writeValue(value: IPepSmartFilterDataValue): void {\n // if (value) {\n // this.form.setValue(\n // {\n // first: value.first,\n // second: value.second || null,\n // },\n // { emitEvent: false }\n // );\n // } else {\n // this.form.reset();\n // }\n // }\n\n // registerOnChange(fn: any): void {\n // this.form.valueChanges.subscribe(fn);\n // }\n\n // onTouched: () => void = () => {\n // /* Do nothing */\n // };\n\n // registerOnTouched(fn: any): void {\n // this.onTouched = fn;\n // }\n\n // setDisabledState?(isDisabled: boolean): void {\n // isDisabled ? this.form.disable() : this.form.enable();\n // }\n\n // validate(control: AbstractControl): ValidationErrors {\n // return this.form.valid ? null : { PepFilterIsNotValid: true };\n // }\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\n\n@Component({\n selector: 'pep-text-filter',\n templateUrl: './text-filter.component.html',\n styleUrls: ['./text-filter.component.scss'],\n})\nexport class PepTextFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth = '38%';\n firstControlWidth = '62%';\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onVariableChanged(value: any) {\n this.firstControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-boolean-filter',\n templateUrl: './boolean-filter.component.html',\n styleUrls: ['./boolean-filter.component.scss'],\n})\nexport class PepBooleanFilterComponent extends BaseFilterComponent implements OnInit {\n @Input() options: IPepOption[] = [];\n\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth: string;\n valueWidth: string;\n\n ngOnInit() {\n if (this.inline) {\n this.setControlsWidth();\n }\n }\n\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = { first: this.firstControl.value || false };\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n setControlsWidth() {\n if (this.variableFieldOptions?.length) {\n this.operatorWidth = '38%';\n this.valueWidth = '62%';\n\n } else {\n this.valueWidth = '100%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged(value) {\n this.firstControl.setValue(value);\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\n PepSmartFilterAdditionalOperators,\n PepSmartFilterVariableOperators,\n PepSmartFilterOperatorUnits,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n})\nexport class PepDateFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n PepSmartFilterAdditionalOperators = PepSmartFilterAdditionalOperators;\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTimeOptions: Array<IPepOption> = [];\n chooseTimeUnitOptions: Array<IPepOption> = [];\n operatorWidth: string;\n fieldsWidth: string;\n\n ngOnInit() {\n if (this.inline) {\n this.setControlsWidth();\n }\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.InTheLast;\n }\n\n // Override\n getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n if (this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.InTheLastCalendar ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn) {\n return PepSmartFilterOperatorUnits.Months;\n } else {\n return undefined;\n }\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.DateRange ||\n PepSmartFilterVariableOperators.DateRangeVariable) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTimeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n\n this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {\n return {\n key: operatorUnit.id,\n value: this.translate.instant(\n `${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n this.firstControl.enable();\n\n if (\n this.operator === PepSmartFilterOperators.DateRange ||\n PepSmartFilterVariableOperators.DateRangeVariable\n ) {\n this.firstControl.setValidators(Validators.required);\n this.secondControl.enable();\n this.secondControl.setValidators(Validators.required);\n } else if (\n this.operator === PepSmartFilterOperators.InTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.InTheLastCalendar ||\n this.operator === PepSmartFilterOperators.NotInTheLast ||\n this.operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar ||\n this.operator === PepSmartFilterOperators.DueIn ||\n this.operator === PepSmartFilterOperators.NotDueIn\n ) {\n this.firstControl.setValidators([\n Validators.required,\n this.validator.numberValidator(),\n ]);\n this.secondControl.disable();\n } else {\n // Disable 'first' field.\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.firstControl.disable();\n }\n\n // Default disable 'second' field.\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (\n this.operator === PepSmartFilterOperators.Today ||\n this.operator === PepSmartFilterOperators.ThisWeek ||\n this.operator === PepSmartFilterOperators.ThisMonth ||\n this.operator === PepSmartFilterOperators.IsEmpty ||\n this.operator === PepSmartFilterOperators.IsNotEmpty\n ) {\n this.operatorWidth = 'auto';\n this.fieldsWidth = '0%';\n } else if (this.operator === PepSmartFilterOperators.On) {\n this.operatorWidth = '38%';\n this.fieldsWidth = '62%';\n } else {\n this.operatorWidth = '30%';\n this.fieldsWidth = '70%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n\n this.operator = operator;\n this.operatorUnit = this.getDefaultOperatorUnit();\n if (this.inline) {\n this.setControlsWidth();\n }\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onTimeUnitChanged(value: string) {\n const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find(\n (operatorUnit) => operatorUnit.id === value\n );\n this.operatorUnit = operatorUnit;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onVariableChanged(value: any) {\n this.firstControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onSecondVariableChanged(value: any) {\n this.secondControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onDateValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import {\n AfterViewInit,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepSmartFilterFieldOption } from '../common/model/field';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { VirtualScrollerComponent } from 'ngx-virtual-scroller';\n\nclass PepMultiSelectFilterOption implements IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n selected = false;\n}\n\n@Component({\n selector: 'pep-multi-select-filter',\n templateUrl: './multi-select-filter.component.html',\n styleUrls: ['./multi-select-filter.component.scss'],\n})\nexport class PepMultiSelectFilterComponent\n extends BaseFilterComponent\n implements OnInit, AfterViewInit {\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n\n options: PepMultiSelectFilterOption[] = [];\n filteredOptions$: Observable<any>;\n chooseTypeOptions: Array<IPepOption> = [];\n searchControl = new FormControl();\n //inline props\n selected = '';\n inlineOptions: IPepOption[] = [];\n operatorWidth: string;\n valueWidth: string;\n\n @ViewChild('optionsContainer')\n optionsContainer: ElementRef;\n\n private readonly MAX_OPTIONS_TO_SHOW = 6.35;\n @ViewChild(VirtualScrollerComponent)\n private virtualScroller: VirtualScrollerComponent;\n\n numberOptionsToShowSearch = 10;\n\n ngOnInit() {\n super.ngOnInit;\n\n if (this.inline) {\n this.inlineControlInit();\n this.setControlsWidth();\n } else {\n this.noneInlineControlInit();\n }\n }\n\n\n ngAfterViewInit(): void {\n // Calc for the first time.\n this.calcOptionsHeight(this.options.length);\n }\n\n private inlineControlInit() {\n //load options from field \n this.inlineOptions = this.field?.options?.length > 0 ? this.field.options as IPepOption[] : [];\n\n // init the selected values from first value. \n if (this.firstControl?.value && Array.isArray(this.firstControl.value)) {\n this.selected = this.firstControl.value.join(';');\n }\n }\n\n private noneInlineControlInit() {\n if (this.field.options?.length > 0) {\n this.options = this.field.options.map((opt) => {\n return { value: opt.value, count: opt.count, selected: false };\n });\n } else {\n this.searchControl.disable();\n }\n\n // Init the selected values from first value.\n const firstControl = this.firstControl;\n if (firstControl.value) {\n this.initOptionsSelectedValues(firstControl.value);\n }\n\n // Add subscription for the first value change to set the selected options.\n firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe((selectedValues: string[]) => {\n this.initOptionsSelectedValues(selectedValues);\n });\n\n // Filter the options by the search control.\n this.filteredOptions$ = this.searchControl.valueChanges.pipe(\n this.getDestroyer(),\n startWith<any>(''),\n map((option) =>\n typeof option === 'string' ? option : option && option.value\n ),\n map((value) => (value ? this.filterOptions(value) : this.options))\n );\n\n // Each time the filter change.\n this.filteredOptions$.subscribe(\n (filterdOptions: PepMultiSelectFilterOption[]) => {\n this.calcOptionsHeight(filterdOptions.length);\n setTimeout(() => {\n // 8 is the padding top of the multi-select-options\n this.virtualScroller.scrollToPosition(-8);\n }, 125);\n }\n );\n\n }\n\n initOptionsSelectedValues(selectedValues: string[]): void {\n this.options.forEach((opt) => {\n const isValueSelected =\n selectedValues && selectedValues.includes(opt.value);\n opt.selected = isValueSelected;\n });\n }\n\n private calcOptionsHeight(optionsCount: number) {\n if (this.optionsContainer) {\n const optionsToShow =\n optionsCount > this.MAX_OPTIONS_TO_SHOW\n ? this.MAX_OPTIONS_TO_SHOW\n : optionsCount;\n // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.\n const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';\n\n this.renderer.setStyle(\n this.optionsContainer.nativeElement,\n 'height',\n optionsHeight\n );\n }\n }\n\n private filterOptions(value: string): any[] {\n const filterValue = value.toLowerCase();\n return this.options.filter(\n (opt) =>\n opt.value &&\n opt.value.toLowerCase().includes(filterValue.toLowerCase())\n );\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.In;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n if (this.inline) {\n return {\n first: this.firstControl.value\n };\n } else {\n const selectedValues = this.options\n .filter((opt) => opt.selected)\n .map((opt) => opt.value);\n const filterValue = {\n first: selectedValues,\n };\n\n return selectedValues.length > 0 ? filterValue : null;\n }\n\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n setControlsWidth() {\n if (this.variableFieldOptions?.length) {\n this.operatorWidth = '38%';\n this.valueWidth = '62%';\n\n } else {\n this.valueWidth = '100%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n\n // Override\n initFilter() {\n this.options.forEach((opt) => (opt.selected = false));\n this.searchControl.setValue('');\n }\n\n onOptionChange(\n option: PepMultiSelectFilterOption,\n event: MatCheckboxChange\n ) {\n option.selected = event.checked;\n this.firstControl.setValue(\n this.options.filter((opt) => opt.selected).map((opt) => opt.value),\n { emitEvent: false }\n );\n }\n\n onMultiSelectChanged(value: string) {\n if (value) {\n const selected: string[] = value.split(';');\n this.firstControl.setValue(selected);\n } else {\n this.firstControl.setValue(null);\n }\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged(value) {\n this.firstControl.setValue(value);\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n selector: 'pep-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.scss'],\n})\nexport class PepNumberFilterComponent extends BaseFilterComponent implements OnInit {\n PepSmartFilterOperators = PepSmartFilterOperators;\n PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n chooseTypeOptions: Array<IPepOption> = [];\n operatorWidth = '38%';\n fieldsWidth = '70%';\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n\n this.secondControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n this.setControlsWidth();\n }\n\n // Override\n getDefaultOperator(): IPepSmartFilterOperator {\n return PepSmartFilterOperators.Equals;\n }\n\n // Override\n getFilterValue(): IPepSmartFilterDataValue {\n const filterValue = {\n first: this.firstControl.value,\n };\n\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\n }\n\n // Override\n loadOperatorsOptions() {\n this.chooseTypeOptions = this.operators.map((operator) => {\n return {\n key: operator.id,\n value: this.translate.instant(\n `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n ),\n };\n });\n }\n\n // Override\n setFieldsStateAndValidators(): void {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n const firstValidators = [Validators.required];\n if (this.secondControl.value) {\n firstValidators.push(this.validator.isLessThan(this.secondControl));\n }\n this.firstControl.setValidators(firstValidators);\n\n\n this.secondControl.enable();\n const secondValidators = [Validators.required];\n if (this.firstControl.value) {\n secondValidators.push(this.validator.isGreaterThan(this.firstControl));\n }\n this.secondControl.setValidators(secondValidators);\n } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n this.operatorWidth = '30%';\n this.fieldsWidth = '70%';\n } else {\n this.operatorWidth = '38%';\n this.fieldsWidth = '62%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(this.operators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n if (this._parentForm) {\n this.updateParentForm();\n }\n if (this.emitOnChange) {\n this.applyFilter();\n }\n this.setControlsWidth();\n }\n\n onVariableChanged(value: any) {\n this.firstControl.setValue(value);\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { VirtualScrollerModule } from 'ngx-virtual-scroller';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconNumberMinus,\n pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\n// import { BaseFilterComponent } from './common/model/base-filter-component';\nimport { PepSmartFiltersComponent } from './smart-filters.component';\nimport { PepFilterActionsComponent } from './common/filter-actions.component';\nimport { PepTextFilterComponent } from './text-filter/text-filter.component';\nimport { PepBooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { PepDateFilterComponent } from './date-filter/date-filter.component';\nimport { PepMultiSelectFilterComponent } from './multi-select-filter/multi-select-filter.component';\nimport { PepNumberFilterComponent } from './number-filter/number-filter.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n // Material modules\n MatCommonModule,\n MatCheckboxModule,\n MatChipsModule,\n MatExpansionModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatRadioModule,\n // External modules\n VirtualScrollerModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepCheckboxModule,\n PepDateModule,\n PepSelectModule,\n PepTextboxModule,\n PepSearchModule,\n PepIconModule,\n PepButtonModule,\n PepGroupButtonsModule\n ],\n exports: [\n PepSmartFiltersComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent\n ],\n declarations: [\n // BaseFilterComponent,\n PepSmartFiltersComponent,\n PepFilterActionsComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent\n ],\n})\nexport class PepSmartFiltersModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconNumberMinus,\n pepIconNumberPlus,\n ]);\n }\n}\n","import {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n} from './operator';\nimport {\n PepSmartFilterComponentType,\n PepSmartFilterType,\n PepSmartFilterOperatorType,\n PepSmartFilterOperatorUnitType,\n} from './type';\n\nexport interface IPepSmartFilterFieldOption {\n value: string;\n count?: number;\n}\n\nexport interface IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n}\n\n// Base field\n// ------------------------------\nexport abstract class PepSmartFilterBaseField implements IPepSmartFilterField {\n id: string;\n name: string;\n isOpen?: boolean;\n options?: IPepSmartFilterFieldOption[];\n operators?: PepSmartFilterOperatorType[];\n operatorUnits?: PepSmartFilterOperatorUnitType[];\n\n protected _componentType: PepSmartFilterComponentType;\n get componentType(): PepSmartFilterComponentType {\n return this._componentType;\n }\n\n private _type: PepSmartFilterType;\n get type(): PepSmartFilterType {\n return this._type;\n }\n\n constructor(field: IPepSmartFilterField) {\n this.id = field.id;\n this.name = field.name;\n this.isOpen = field.isOpen;\n this.options = field.options;\n this.operators = field.operators;\n this.operatorUnits = field.operatorUnits;\n\n this._type = this.getType();\n }\n\n protected abstract getType(): PepSmartFilterType;\n}\n// Text field\n// ------------------------------\nexport class PepSmartFilterTextField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'text';\n }\n\n getType(): PepSmartFilterType {\n return 'text';\n }\n}\n\n\n// Boolean field\n// ------------------------------\nexport class PepSmartFilterBooleanField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'boolean';\n }\n\n getType(): PepSmartFilterType {\n return 'boolean';\n }\n}\n\n// Date fields\n// ------------------------------\nexport abstract class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'date';\n }\n}\nexport class PepSmartFilterDateField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date';\n }\n}\nexport class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'date-time';\n }\n}\n\n// Multi select field\n// ------------------------------\nexport class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'multi-select';\n }\n\n getType(): PepSmartFilterType {\n return 'multi-select';\n }\n}\n\n// Number fields\n// ------------------------------\nexport abstract class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n this._componentType = 'number';\n }\n}\nexport class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'int';\n }\n}\nexport class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'real';\n }\n}\nexport class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'currency';\n }\n}\nexport class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {\n constructor(field: IPepSmartFilterField) {\n super(field);\n }\n\n getType(): PepSmartFilterType {\n return 'percentage';\n }\n}\n","import {\n IPepSmartFilterField,\n PepSmartFilterBaseField,\n PepSmartFilterTextField,\n PepSmartFilterBooleanField,\n PepSmartFilterDateField,\n PepSmartFilterMultiSelectField,\n PepSmartFilterIntField,\n PepSmartFilterDateTimeField,\n PepSmartFilterPercentageField,\n PepSmartFilterCurrencyField,\n PepSmartFilterRealField,\n} from './field';\nimport { IPepSmartFilterData } from './filter';\nimport { IPepSmartFilterOperator, IPepSmartFilterOperatorUnit } from './operator';\nimport { PepSmartFilterType } from './type';\n\nfunction createTextSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterTextField(data);\n}\n\nfunction createBooleanSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterBooleanField(data);\n}\n\nfunction createDateSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateField(data);\n}\n\nfunction createDateTimeSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterDateTimeField(data);\n}\n\nfunction createMultiSelectSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterMultiSelectField(data);\n}\n\nfunction createIntSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterIntField(data);\n}\n\nfunction createRealSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterRealField(data);\n}\n\nfunction createCurrencySmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterCurrencyField(data);\n}\n\nfunction createPercentageSmartFilterField(data: IPepSmartFilterField) {\n return new PepSmartFilterPercentageField(data);\n}\n\nexport function createSmartFilterField(\n data: IPepSmartFilterField,\n type: PepSmartFilterType\n): PepSmartFilterBaseField {\n let field: PepSmartFilterBaseField;\n\n switch (type) {\n case 'text':\n field = createTextSmartFilterField(data);\n break;\n case 'boolean':\n field = createBooleanSmartFilterField(data);\n break;\n case 'date':\n field = createDateSmartFilterField(data);\n break;\n case 'date-time':\n field = createDateTimeSmartFilterField(data);\n break;\n case 'multi-select':\n field = createMultiSelectSmartFilterField(data);\n break;\n case 'int':\n field = createIntSmartFilterField(data);\n break;\n case 'real':\n field = createRealSmartFilterField(data);\n break;\n case 'currency':\n field = createCurrencySmartFilterField(data);\n break;\n case 'percentage':\n field = createPercentageSmartFilterField(data);\n break;\n default:\n field = createMultiSelectSmartFilterField(data);\n break;\n }\n\n return field;\n}\n\nexport function createSmartFilter(\n fieldId: string,\n operator: IPepSmartFilterOperator,\n first: any,\n second?: any,\n operatorUnit?: IPepSmartFilterOperatorUnit\n): IPepSmartFilterData {\n return {\n fieldId: fieldId,\n operator: operator,\n operatorUnit: operatorUnit,\n value: {\n first: first,\n second: second,\n },\n };\n}","/*\n * Public API Surface of ngx-lib/smart-filters\n */\nexport * from './smart-filters.module';\nexport * from './smart-filters.component';\nexport * from './common/model/base-filter-component';\nexport * from './common/filter-actions.component';\nexport * from './boolean-filter/boolean-filter.component';\nexport * from './date-filter/date-filter.component';\nexport * from './multi-select-filter/multi-select-filter.component';\nexport * from './number-filter/number-filter.component';\nexport * from './text-filter/text-filter.component';\n\n// Model\nexport * from './common/model/creator';\nexport * from './common/model/field';\nexport * from './common/model/filter';\nexport * from './common/model/operator';\nexport * from './common/model/type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|