ng-prime-tools 0.0.1 → 1.0.4

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.
Files changed (74) hide show
  1. package/README.md +185 -13
  2. package/esm2022/lib/enums/index.mjs +6 -0
  3. package/esm2022/lib/enums/public_api.mjs +4 -0
  4. package/esm2022/lib/enums/search-criteria-type-enum.mjs +10 -0
  5. package/esm2022/lib/models/filter-option.mjs +2 -0
  6. package/esm2022/lib/models/index.mjs +6 -2
  7. package/esm2022/lib/models/public_api.mjs +5 -0
  8. package/esm2022/lib/models/search-criteria.mjs +2 -0
  9. package/esm2022/lib/models/table-column.mjs +2 -0
  10. package/esm2022/lib/multi-search-criteria/index.mjs +6 -0
  11. package/esm2022/lib/multi-search-criteria/multi-search-criteria.component.mjs +128 -0
  12. package/esm2022/lib/multi-search-criteria/multi-search-criteria.module.mjs +48 -0
  13. package/esm2022/lib/multi-search-criteria/public_api.mjs +4 -0
  14. package/esm2022/lib/ng-advanced-prime-table/index.mjs +6 -0
  15. package/esm2022/lib/ng-advanced-prime-table/ng-advanced-prime-table.component.mjs +316 -0
  16. package/esm2022/lib/ng-advanced-prime-table/ng-advanced-prime-table.module.mjs +60 -0
  17. package/esm2022/lib/ng-advanced-prime-table/public_api.mjs +4 -0
  18. package/esm2022/lib/ng-prime-tools.module.mjs +30 -0
  19. package/esm2022/lib/pipes/custom-currency.mjs +4 -4
  20. package/esm2022/lib/pipes/custom-date.pipe.mjs +44 -0
  21. package/esm2022/public-api.mjs +7 -9
  22. package/fesm2022/ng-prime-tools.mjs +393 -73
  23. package/fesm2022/ng-prime-tools.mjs.map +1 -1
  24. package/index.d.ts +1 -0
  25. package/lib/enums/index.d.ts +6 -0
  26. package/lib/enums/index.d.ts.map +1 -0
  27. package/lib/enums/public_api.d.ts +3 -0
  28. package/lib/enums/public_api.d.ts.map +1 -0
  29. package/lib/enums/search-criteria-type-enum.d.ts +9 -0
  30. package/lib/enums/search-criteria-type-enum.d.ts.map +1 -0
  31. package/lib/enums/table-type-enum.d.ts +1 -0
  32. package/lib/enums/table-type-enum.d.ts.map +1 -0
  33. package/lib/models/filter-option.d.ts +5 -0
  34. package/lib/models/filter-option.d.ts.map +1 -0
  35. package/lib/models/index.d.ts +6 -1
  36. package/lib/models/index.d.ts.map +1 -0
  37. package/lib/models/public_api.d.ts +4 -0
  38. package/lib/models/public_api.d.ts.map +1 -0
  39. package/lib/models/search-criteria.d.ts +11 -0
  40. package/lib/models/search-criteria.d.ts.map +1 -0
  41. package/lib/models/{table-column.model.d.ts → table-column.d.ts} +1 -0
  42. package/lib/models/table-column.d.ts.map +1 -0
  43. package/lib/multi-search-criteria/index.d.ts +6 -0
  44. package/lib/multi-search-criteria/index.d.ts.map +1 -0
  45. package/lib/multi-search-criteria/multi-search-criteria.component.d.ts +24 -0
  46. package/lib/multi-search-criteria/multi-search-criteria.component.d.ts.map +1 -0
  47. package/lib/multi-search-criteria/multi-search-criteria.module.d.ts +16 -0
  48. package/lib/multi-search-criteria/multi-search-criteria.module.d.ts.map +1 -0
  49. package/lib/multi-search-criteria/public_api.d.ts +3 -0
  50. package/lib/multi-search-criteria/public_api.d.ts.map +1 -0
  51. package/lib/ng-advanced-prime-table/index.d.ts +6 -0
  52. package/lib/ng-advanced-prime-table/index.d.ts.map +1 -0
  53. package/lib/{advanced-table/advanced-table.component.d.ts → ng-advanced-prime-table/ng-advanced-prime-table.component.d.ts} +6 -4
  54. package/lib/ng-advanced-prime-table/ng-advanced-prime-table.component.d.ts.map +1 -0
  55. package/lib/ng-advanced-prime-table/ng-advanced-prime-table.module.d.ts +20 -0
  56. package/lib/ng-advanced-prime-table/ng-advanced-prime-table.module.d.ts.map +1 -0
  57. package/lib/ng-advanced-prime-table/public_api.d.ts +3 -0
  58. package/lib/ng-advanced-prime-table/public_api.d.ts.map +1 -0
  59. package/lib/ng-prime-tools.module.d.ts +11 -0
  60. package/lib/ng-prime-tools.module.d.ts.map +1 -0
  61. package/lib/pipes/custom-currency.d.ts +1 -0
  62. package/lib/pipes/custom-currency.d.ts.map +1 -0
  63. package/lib/pipes/custom-date.pipe.d.ts +8 -0
  64. package/lib/pipes/custom-date.pipe.d.ts.map +1 -0
  65. package/ng-prime-tools.d.ts.map +1 -0
  66. package/package.json +22 -11
  67. package/public-api.d.ts +6 -5
  68. package/public-api.d.ts.map +1 -0
  69. package/esm2022/lib/advanced-table/advanced-table.component.mjs +0 -288
  70. package/esm2022/lib/models/table-column.model.mjs +0 -2
  71. package/esm2022/lib/ng-prime-tools.component.mjs +0 -11
  72. package/esm2022/lib/ng-prime-tools.service.mjs +0 -14
  73. package/lib/ng-prime-tools.component.d.ts +0 -5
  74. package/lib/ng-prime-tools.service.d.ts +0 -6
package/README.md CHANGED
@@ -1,25 +1,197 @@
1
- # AdvancedPrimeTools
1
+ # NG Prime Tools
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.0.0.
3
+ An advanced PrimeNG tools library for Angular.
4
4
 
5
- ## Code scaffolding
5
+ ## Table of Contents
6
6
 
7
- Run `ng generate component component-name --project ng-prime-tools` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ng-prime-tools`.
7
+ - [Introduction](#introduction)
8
+ - [Installation](#installation)
9
+ - [Compatibility](#compatibility)
10
+ - [Usage](#usage)
11
+ - [ng-advanced-prime-table](#ng-advanced-prime-table)
12
+ - [Inputs](#inputs)
13
+ - [Outputs](#outputs)
14
+ - [Example](#example)
15
+ - [Changelog](#changelog)
16
+ - [License](#license)
8
17
 
9
- > Note: Don't forget to add `--project ng-prime-tools` or else it will be added to the default project in your `angular.json` file.
18
+ ## Introduction
10
19
 
11
- ## Build
20
+ `ng-prime-tools` is a collection of advanced tools built on top of PrimeNG for Angular applications.
12
21
 
13
- Run `ng build ng-prime-tools` to build the project. The build artifacts will be stored in the `dist/` directory.
22
+ ## Installation
14
23
 
15
- ## Publishing
24
+ To install `ng-prime-tools`, use the following command:
16
25
 
17
- After building your library with `ng build ng-prime-tools`, go to the dist folder `cd dist/ng-prime-tools` and run `npm publish`.
26
+ ```bash
27
+ npm install ng-prime-tools
28
+ ```
18
29
 
19
- ## Running unit tests
30
+ ## Compatibility
20
31
 
21
- Run `ng test ng-prime-tools` to execute the unit tests via [Karma](https://karma-runner.github.io).
32
+ - **Angular Version**: 17.3.1 or higher
33
+ - **PrimeNG Version**: 17.18.0 or higher
22
34
 
23
- ## Further help
35
+ ## Usage
24
36
 
25
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
37
+ ### ng-advanced-prime-table
38
+
39
+ To use the `ng-advanced-prime-table` component, follow these steps:
40
+
41
+ 1. **Import the Module:**
42
+
43
+ Import the `NgAdvancedPrimeTableModule` in your Angular module or standalone component.
44
+
45
+ ```typescript
46
+ import { NgAdvancedPrimeTableModule, TableColumn, TableTypeEnum } from "ng-prime-tools";
47
+ ```
48
+
49
+ 2. **Add the Component:**
50
+
51
+ Add the `ng-advanced-prime-table` component to your template:
52
+
53
+ ```html
54
+ <ng-advanced-prime-table [columns]="columns" [data]="data" [hasSearchFilter]="true" [hasColumnFilter]="true" [isPaginated]="true" [totalRecords]="totalRecords" [isSortable]="true"></ng-advanced-prime-table>
55
+ ```
56
+
57
+ 3. **Define the Inputs:**
58
+
59
+ In your component, define the necessary inputs for the table:
60
+
61
+ ```typescript
62
+ import { Component, OnInit } from "@angular/core";
63
+ import { NgAdvancedPrimeTableModule } from "ng-prime-tools/ng-advanced-prime-table";
64
+ import { TableColumn } from "ng-prime-tools/models";
65
+ import { TableTypeEnum } from "ng-prime-tools/enums";
66
+
67
+ @Component({
68
+ selector: "app-root",
69
+ standalone: true,
70
+ imports: [NgAdvancedPrimeTableModule],
71
+ templateUrl: "./app.component.html",
72
+ styleUrls: ["./app.component.css"],
73
+ })
74
+ export class AppComponent implements OnInit {
75
+ columns: TableColumn[] = [];
76
+ data: any[] = [];
77
+ totalRecords: number = 0;
78
+
79
+ ngOnInit(): void {
80
+ this.columns = [
81
+ {
82
+ title: "Name",
83
+ code: "name",
84
+ type: TableTypeEnum.STRING,
85
+ isEditable: true,
86
+ },
87
+ {
88
+ title: "Date",
89
+ code: "date",
90
+ type: TableTypeEnum.DATE,
91
+ isEditable: true,
92
+ },
93
+ {
94
+ title: "Amount",
95
+ code: "amount",
96
+ type: TableTypeEnum.AMOUNT,
97
+ currency: "USD",
98
+ isEditable: true,
99
+ },
100
+ ];
101
+
102
+ this.data = [
103
+ { name: "John Doe", date: "11/06/2024", amount: 100 },
104
+ { name: "Jane Doe", date: "20/06/2024", amount: 200 },
105
+ ];
106
+
107
+ this.totalRecords = this.data.length;
108
+ }
109
+ }
110
+ ```
111
+
112
+ ### Inputs
113
+
114
+ - **data** (`any[]`): The data to be displayed in the table.
115
+ - **columns** (`TableColumn[]`): The columns configuration for the table.
116
+ - **totalRecords** (`number`): The total number of records.
117
+ - **rowsPerPage** (`number[]`): The number of rows per page options for pagination.
118
+ - **hasSearchFilter** (`boolean`): Whether the table has a global search filter.
119
+ - **hasColumnFilter** (`boolean`): Whether the table has column-specific filters.
120
+ - **isPaginated** (`boolean`): Whether the table is paginated.
121
+ - **actions** (`any[]`): The actions available for the table rows.
122
+ - **isSortable** (`boolean`): Whether the table columns are sortable.
123
+
124
+ ### Outputs
125
+
126
+ - **filter** (`EventEmitter`): Emitted when the table is filtered.
127
+ - **search** (`EventEmitter<any>`): Emitted when a global search is performed.
128
+
129
+ ### Example
130
+
131
+ Here's a complete example of how to use the `ng-advanced-prime-table` component:
132
+
133
+ ```typescript
134
+ import { Component, OnInit } from "@angular/core";
135
+ import { CommonModule } from "@angular/common";
136
+ import { NgAdvancedPrimeTableModule } from "ng-prime-tools/ng-advanced-prime-table";
137
+ import { TableColumn } from "ng-prime-tools/models";
138
+ import { TableTypeEnum } from "ng-prime-tools/enums";
139
+
140
+ @Component({
141
+ selector: "app-root",
142
+ standalone: true,
143
+ imports: [CommonModule, NgAdvancedPrimeTableModule],
144
+ templateUrl: "./app.component.html",
145
+ styleUrls: ["./app.component.css"],
146
+ })
147
+ export class AppComponent implements OnInit {
148
+ columns: TableColumn[] = [];
149
+ data: any[] = [];
150
+ totalRecords: number = 0;
151
+
152
+ ngOnInit(): void {
153
+ this.columns = [
154
+ {
155
+ title: "Name",
156
+ code: "name",
157
+ type: TableTypeEnum.STRING,
158
+ isEditable: true,
159
+ },
160
+ {
161
+ title: "Date",
162
+ code: "date",
163
+ type: TableTypeEnum.DATE,
164
+ isEditable: true,
165
+ },
166
+ {
167
+ title: "Amount",
168
+ code: "amount",
169
+ type: TableTypeEnum.AMOUNT,
170
+ currency: "USD",
171
+ isEditable: true,
172
+ },
173
+ ];
174
+
175
+ this.data = [
176
+ { name: "ZAK JAAI", date: "11/06/2024", amount: 100 },
177
+ { name: "ZAK2 JAAI", date: "20/06/2024", amount: 200 },
178
+ ];
179
+
180
+ this.totalRecords = this.data.length;
181
+ }
182
+ }
183
+ ```
184
+
185
+ ```html
186
+ <ng-advanced-prime-table [columns]="columns" [data]="data" [hasSearchFilter]="true" [hasColumnFilter]="true" [isPaginated]="true" [totalRecords]="totalRecords" [isSortable]="true"></ng-advanced-prime-table>
187
+ ```
188
+
189
+ ## Changelog
190
+
191
+ ### Version 1.0.3
192
+
193
+ - Initial release with `ng-advanced-prime-table` component.
194
+
195
+ ## License
196
+
197
+ This project is licensed under the MIT License.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ng-prime-tools/enums" />
5
+ export * from './public_api';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL2VudW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsOENBQThDO0FBQzlDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuLy8vIDxhbWQtbW9kdWxlIG5hbWU9XCJuZy1wcmltZS10b29scy9lbnVtc1wiIC8+XG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -0,0 +1,4 @@
1
+ // projects/ng-prime-tools/src/lib/enums/public_api.ts
2
+ export * from './table-type-enum';
3
+ export * from './search-criteria-type-enum';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvZW51bXMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9lbnVtcy9wdWJsaWNfYXBpLnRzXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLXR5cGUtZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1jcml0ZXJpYS10eXBlLWVudW0nO1xuIl19
@@ -0,0 +1,10 @@
1
+ export var SearchCriteriaTypeEnum;
2
+ (function (SearchCriteriaTypeEnum) {
3
+ SearchCriteriaTypeEnum["DATE"] = "DATE";
4
+ SearchCriteriaTypeEnum["DATERANGE"] = "DATERANGE";
5
+ SearchCriteriaTypeEnum["STRING"] = "STRING";
6
+ SearchCriteriaTypeEnum["AMOUNT"] = "AMOUNT";
7
+ SearchCriteriaTypeEnum["NUMBER"] = "NUMBER";
8
+ SearchCriteriaTypeEnum["MULTISELECT"] = "MULTISELECT";
9
+ })(SearchCriteriaTypeEnum || (SearchCriteriaTypeEnum = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNyaXRlcmlhLXR5cGUtZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvZW51bXMvc2VhcmNoLWNyaXRlcmlhLXR5cGUtZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxzQkFPWDtBQVBELFdBQVksc0JBQXNCO0lBQ2hDLHVDQUFhLENBQUE7SUFDYixpREFBdUIsQ0FBQTtJQUN2QiwyQ0FBaUIsQ0FBQTtJQUNqQiwyQ0FBaUIsQ0FBQTtJQUNqQiwyQ0FBaUIsQ0FBQTtJQUNqQixxREFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBUFcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQU9qQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNlYXJjaENyaXRlcmlhVHlwZUVudW0ge1xuICBEQVRFID0gJ0RBVEUnLFxuICBEQVRFUkFOR0UgPSAnREFURVJBTkdFJyxcbiAgU1RSSU5HID0gJ1NUUklORycsXG4gIEFNT1VOVCA9ICdBTU9VTlQnLFxuICBOVU1CRVIgPSAnTlVNQkVSJyxcbiAgTVVMVElTRUxFQ1QgPSAnTVVMVElTRUxFQ1QnLFxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW9wdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL2ZpbHRlci1vcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cbiJdfQ==
@@ -1,2 +1,6 @@
1
- export * from './table-column.model';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jb2x1bW4ubW9kZWwnO1xuIl19
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ng-prime-tools/models" />
5
+ export * from './public_api';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILCtDQUErQztBQUMvQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cbi8vLyA8YW1kLW1vZHVsZSBuYW1lPVwibmctcHJpbWUtdG9vbHMvbW9kZWxzXCIgLz5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ // projects/ng-prime-tools/src/lib/models/public_api.ts
2
+ export * from './table-column';
3
+ export * from './search-criteria';
4
+ export * from './filter-option';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbW9kZWxzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvcHVibGljX2FwaS50c1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtY3JpdGVyaWEnO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXItb3B0aW9uJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNyaXRlcmlhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvc2VhcmNoLWNyaXRlcmlhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvc2VhcmNoLWNyaXRlcmlhLXR5cGUtZW51bSc7XG5pbXBvcnQgeyBGaWx0ZXJPcHRpb24gfSBmcm9tICcuL2ZpbHRlci1vcHRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaENyaXRlcmlhIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICB0eXBlOiBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtO1xuICB2YWx1ZT86IGFueTtcbiAgZmlsdGVyT3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBjdXJyZW5jeT86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZVR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvdGFibGUtdHlwZS1lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIHR5cGU/OiBUYWJsZVR5cGVFbnVtO1xuICBvcHRpb25zPzogYW55W107XG4gIGlzRWRpdGFibGU/OiBib29sZWFuO1xuICBpc0ZpbHRlcj86IGJvb2xlYW47XG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xuICBmaWx0ZXJPcHRpb25zPzogYW55W107XG4gIGRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ng-prime-tools/multi-search-criteria" />
5
+ export * from './public_api';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL211bHRpLXNlYXJjaC1jcml0ZXJpYS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILDhEQUE4RDtBQUM5RCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cbi8vLyA8YW1kLW1vZHVsZSBuYW1lPVwibmctcHJpbWUtdG9vbHMvbXVsdGktc2VhcmNoLWNyaXRlcmlhXCIgLz5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,128 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { SearchCriteriaTypeEnum } from '../enums';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "primeng/calendar";
6
+ import * as i3 from "primeng/button";
7
+ import * as i4 from "primeng/api";
8
+ import * as i5 from "primeng/inputtext";
9
+ import * as i6 from "primeng/multiselect";
10
+ import * as i7 from "@angular/forms";
11
+ import * as i8 from "primeng/inputnumber";
12
+ import * as i9 from "primeng/panel";
13
+ export class MultiSearchCriteriaComponent {
14
+ constructor() {
15
+ this.SearchCriteriaTypeEnum = SearchCriteriaTypeEnum;
16
+ this.title = '';
17
+ this.criteria = [];
18
+ this.inputsPerRow = 3;
19
+ this.data = [];
20
+ this.filteredData = new EventEmitter();
21
+ this.selectAll = false;
22
+ this.selected = [];
23
+ }
24
+ ngOnInit() {
25
+ this.criteria.forEach((item) => {
26
+ if (item.type === SearchCriteriaTypeEnum.MULTISELECT &&
27
+ item.filterOptions) {
28
+ this.selected = [...item.filterOptions];
29
+ item.value = this.selected;
30
+ }
31
+ });
32
+ }
33
+ getCurrencySymbol(input) {
34
+ return input.currency || 'EUR';
35
+ }
36
+ search() {
37
+ console.log('Original Data:', this.data);
38
+ const filtered = this.data.filter((item) => {
39
+ return this.criteria.every((criterion) => {
40
+ console.log('Criterion:', criterion);
41
+ if (criterion.type === SearchCriteriaTypeEnum.DATERANGE) {
42
+ const [startDate, endDate] = criterion.value || [
43
+ undefined,
44
+ undefined,
45
+ ];
46
+ const itemDate = this.parseDate(item[criterion.code] || item['date']);
47
+ console.log('Item Date:', itemDate, 'Start Date:', startDate, 'End Date:', endDate);
48
+ if (!startDate && !endDate) {
49
+ return true;
50
+ }
51
+ if (itemDate === null) {
52
+ return false;
53
+ }
54
+ const parsedStartDate = startDate ? this.parseDate(startDate) : null;
55
+ const parsedEndDate = endDate ? this.parseDate(endDate) : null;
56
+ console.log('Parsed Start Date:', parsedStartDate, 'Parsed End Date:', parsedEndDate);
57
+ return ((!parsedStartDate || itemDate >= parsedStartDate) &&
58
+ (!parsedEndDate || itemDate <= parsedEndDate));
59
+ }
60
+ else if (criterion.type === SearchCriteriaTypeEnum.AMOUNT) {
61
+ return !criterion.value || item[criterion.code] === criterion.value;
62
+ }
63
+ else if (criterion.type === SearchCriteriaTypeEnum.MULTISELECT) {
64
+ return (!criterion.value ||
65
+ criterion.value.some((option) => option.label === item[criterion.code]));
66
+ }
67
+ else if (criterion.type === SearchCriteriaTypeEnum.STRING) {
68
+ return (!criterion.value ||
69
+ item[criterion.code]
70
+ .toString()
71
+ .toLowerCase()
72
+ .includes(criterion.value.toString().toLowerCase()));
73
+ }
74
+ return true;
75
+ });
76
+ });
77
+ console.log('Filtered Data:', filtered);
78
+ this.filteredData.emit(filtered);
79
+ }
80
+ clear() {
81
+ this.criteria.forEach((input) => {
82
+ input.value = null;
83
+ });
84
+ this.filteredData.emit(this.data);
85
+ }
86
+ onSelectAllChange(event) {
87
+ this.selectAll = event.checked;
88
+ this.selected = event.checked
89
+ ? [
90
+ ...(this.criteria.find((criterion) => criterion.type === SearchCriteriaTypeEnum.MULTISELECT)?.filterOptions || []),
91
+ ]
92
+ : [];
93
+ }
94
+ parseDate(dateString) {
95
+ if (!dateString) {
96
+ return null;
97
+ }
98
+ if (Object.prototype.toString.call(dateString) === '[object Date]') {
99
+ return dateString;
100
+ }
101
+ const parts = dateString.split('/');
102
+ if (parts.length === 3) {
103
+ const day = parseInt(parts[0], 10);
104
+ const month = parseInt(parts[1], 10) - 1;
105
+ const year = parseInt(parts[2], 10);
106
+ const date = new Date(year, month, day);
107
+ return isNaN(date.getTime()) ? null : date;
108
+ }
109
+ return null;
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MultiSearchCriteriaComponent, selector: "multi-search-criteria", inputs: { title: "title", criteria: "criteria", inputsPerRow: "inputsPerRow", data: "data" }, outputs: { filteredData: "filteredData" }, ngImport: i0, template: "<p-panel header=\"{{ title }}\" [toggleable]=\"true\" [collapsed]=\"true\">\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n inputId=\"minmaxfraction\"\n [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"5\"\n [placeholder]=\"getCurrencySymbol(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n", styles: ["::ng-deep .p-element .p-hidden-accessible input{display:none}::ng-deep .bsc-label{display:block;margin-bottom:5px;font-weight:700}::ng-deep .custom-multiselect{width:100%}::ng-deep .p-multiselect .p-multiselect-label{font-size:14px;color:#333}::ng-deep .p-inputtext{width:100%}::ng-deep .p-calendar .p-inputtext{width:100%}::ng-deep .p-inputnumber{width:100%}.criteria-container{display:grid;gap:10px}.criteria-item{margin-bottom:10px;box-sizing:border-box}.full-width-input,::ng-deep .p-calendar,::ng-deep .p-multiselect{width:100%}::ng-deep .p-calendar .p-inputtext,::ng-deep .p-multiselect .p-multiselect-label{width:100%}.footer-buttons{display:flex;justify-content:flex-end;gap:10px}::ng-deep .footer-button button{width:140px;cursor:pointer}::ng-deep .p-panel .p-panel-footer{background:#f8f9fa}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i9.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }] }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaComponent, decorators: [{
115
+ type: Component,
116
+ args: [{ selector: 'multi-search-criteria', template: "<p-panel header=\"{{ title }}\" [toggleable]=\"true\" [collapsed]=\"true\">\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n inputId=\"minmaxfraction\"\n [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"5\"\n [placeholder]=\"getCurrencySymbol(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n", styles: ["::ng-deep .p-element .p-hidden-accessible input{display:none}::ng-deep .bsc-label{display:block;margin-bottom:5px;font-weight:700}::ng-deep .custom-multiselect{width:100%}::ng-deep .p-multiselect .p-multiselect-label{font-size:14px;color:#333}::ng-deep .p-inputtext{width:100%}::ng-deep .p-calendar .p-inputtext{width:100%}::ng-deep .p-inputnumber{width:100%}.criteria-container{display:grid;gap:10px}.criteria-item{margin-bottom:10px;box-sizing:border-box}.full-width-input,::ng-deep .p-calendar,::ng-deep .p-multiselect{width:100%}::ng-deep .p-calendar .p-inputtext,::ng-deep .p-multiselect .p-multiselect-label{width:100%}.footer-buttons{display:flex;justify-content:flex-end;gap:10px}::ng-deep .footer-button button{width:140px;cursor:pointer}::ng-deep .p-panel .p-panel-footer{background:#f8f9fa}\n"] }]
117
+ }], propDecorators: { title: [{
118
+ type: Input
119
+ }], criteria: [{
120
+ type: Input
121
+ }], inputsPerRow: [{
122
+ type: Input
123
+ }], data: [{
124
+ type: Input
125
+ }], filteredData: [{
126
+ type: Output
127
+ }] } });
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VhcmNoLWNyaXRlcmlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbXVsdGktc2VhcmNoLWNyaXRlcmlhL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL211bHRpLXNlYXJjaC1jcml0ZXJpYS9tdWx0aS1zZWFyY2gtY3JpdGVyaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7O0FBU2xELE1BQU0sT0FBTyw0QkFBNEI7SUFMekM7UUFNRSwyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUV2QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRW5ELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFtQixFQUFFLENBQUM7S0FxSC9CO0lBbkhDLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdCLElBQ0UsSUFBSSxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxXQUFXO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxFQUNsQixDQUFDO2dCQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFxQjtRQUNyQyxPQUFPLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssc0JBQXNCLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3hELE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssSUFBSTt3QkFDOUMsU0FBUzt3QkFDVCxTQUFTO3FCQUNWLENBQUM7b0JBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN0RSxPQUFPLENBQUMsR0FBRyxDQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsYUFBYSxFQUNiLFNBQVMsRUFDVCxXQUFXLEVBQ1gsT0FBTyxDQUNSLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMzQixPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUNELElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUN0QixPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO29CQUNELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNyRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLENBQ2QsQ0FBQztvQkFDRixPQUFPLENBQ0wsQ0FBQyxDQUFDLGVBQWUsSUFBSSxRQUFRLElBQUksZUFBZSxDQUFDO3dCQUNqRCxDQUFDLENBQUMsYUFBYSxJQUFJLFFBQVEsSUFBSSxhQUFhLENBQUMsQ0FDOUMsQ0FBQztnQkFDSixDQUFDO3FCQUFNLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDNUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDO2dCQUN0RSxDQUFDO3FCQUFNLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxDQUNMLENBQUMsU0FBUyxDQUFDLEtBQUs7d0JBQ2hCLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNsQixDQUFDLE1BQW9CLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDaEUsQ0FDRixDQUFDO2dCQUNKLENBQUM7cUJBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1RCxPQUFPLENBQ0wsQ0FBQyxTQUFTLENBQUMsS0FBSzt3QkFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7NkJBQ2pCLFFBQVEsRUFBRTs2QkFDVixXQUFXLEVBQUU7NkJBQ2IsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDdEQsQ0FBQztnQkFDSixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPO1lBQzNCLENBQUMsQ0FBQztnQkFDRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3BCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLHNCQUFzQixDQUFDLFdBQVcsQ0FDckUsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDO2FBQ3hCO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFTyxTQUFTLENBQUMsVUFBNEM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQ25FLE9BQU8sVUFBa0IsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUksVUFBcUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQTlIVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixzTUNWekMsZ3ZGQXFGQTs7NEZEM0VhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx1QkFBdUI7OEJBT3hCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgU2VhcmNoQ3JpdGVyaWEgfSBmcm9tICcuLi9tb2RlbHMvc2VhcmNoLWNyaXRlcmlhJztcbmltcG9ydCB7IEZpbHRlck9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9maWx0ZXItb3B0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXVsdGktc2VhcmNoLWNyaXRlcmlhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VhcmNoQ3JpdGVyaWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtID0gU2VhcmNoQ3JpdGVyaWFUeXBlRW51bTtcblxuICBASW5wdXQoKSB0aXRsZTogU3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNyaXRlcmlhOiBTZWFyY2hDcml0ZXJpYVtdID0gW107XG4gIEBJbnB1dCgpIGlucHV0c1BlclJvdzogbnVtYmVyID0gMztcbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcbiAgQE91dHB1dCgpIGZpbHRlcmVkRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgc2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkOiBGaWx0ZXJPcHRpb25bXSA9IFtdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3JpdGVyaWEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnR5cGUgPT09IFNlYXJjaENyaXRlcmlhVHlwZUVudW0uTVVMVElTRUxFQ1QgJiZcbiAgICAgICAgaXRlbS5maWx0ZXJPcHRpb25zXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFsuLi5pdGVtLmZpbHRlck9wdGlvbnNdO1xuICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEN1cnJlbmN5U3ltYm9sKGlucHV0OiBTZWFyY2hDcml0ZXJpYSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlucHV0LmN1cnJlbmN5IHx8ICdFVVInO1xuICB9XG5cbiAgc2VhcmNoKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdPcmlnaW5hbCBEYXRhOicsIHRoaXMuZGF0YSk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmRhdGEuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jcml0ZXJpYS5ldmVyeSgoY3JpdGVyaW9uKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDcml0ZXJpb246JywgY3JpdGVyaW9uKTtcbiAgICAgICAgaWYgKGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLkRBVEVSQU5HRSkge1xuICAgICAgICAgIGNvbnN0IFtzdGFydERhdGUsIGVuZERhdGVdID0gY3JpdGVyaW9uLnZhbHVlIHx8IFtcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IGl0ZW1EYXRlID0gdGhpcy5wYXJzZURhdGUoaXRlbVtjcml0ZXJpb24uY29kZV0gfHwgaXRlbVsnZGF0ZSddKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICdJdGVtIERhdGU6JyxcbiAgICAgICAgICAgIGl0ZW1EYXRlLFxuICAgICAgICAgICAgJ1N0YXJ0IERhdGU6JyxcbiAgICAgICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICdFbmQgRGF0ZTonLFxuICAgICAgICAgICAgZW5kRGF0ZVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFzdGFydERhdGUgJiYgIWVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlbURhdGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGFyc2VkU3RhcnREYXRlID0gc3RhcnREYXRlID8gdGhpcy5wYXJzZURhdGUoc3RhcnREYXRlKSA6IG51bGw7XG4gICAgICAgICAgY29uc3QgcGFyc2VkRW5kRGF0ZSA9IGVuZERhdGUgPyB0aGlzLnBhcnNlRGF0ZShlbmREYXRlKSA6IG51bGw7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAnUGFyc2VkIFN0YXJ0IERhdGU6JyxcbiAgICAgICAgICAgIHBhcnNlZFN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICdQYXJzZWQgRW5kIERhdGU6JyxcbiAgICAgICAgICAgIHBhcnNlZEVuZERhdGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXBhcnNlZFN0YXJ0RGF0ZSB8fCBpdGVtRGF0ZSA+PSBwYXJzZWRTdGFydERhdGUpICYmXG4gICAgICAgICAgICAoIXBhcnNlZEVuZERhdGUgfHwgaXRlbURhdGUgPD0gcGFyc2VkRW5kRGF0ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLkFNT1VOVCkge1xuICAgICAgICAgIHJldHVybiAhY3JpdGVyaW9uLnZhbHVlIHx8IGl0ZW1bY3JpdGVyaW9uLmNvZGVdID09PSBjcml0ZXJpb24udmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3JpdGVyaW9uLnR5cGUgPT09IFNlYXJjaENyaXRlcmlhVHlwZUVudW0uTVVMVElTRUxFQ1QpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIWNyaXRlcmlvbi52YWx1ZSB8fFxuICAgICAgICAgICAgY3JpdGVyaW9uLnZhbHVlLnNvbWUoXG4gICAgICAgICAgICAgIChvcHRpb246IEZpbHRlck9wdGlvbikgPT4gb3B0aW9uLmxhYmVsID09PSBpdGVtW2NyaXRlcmlvbi5jb2RlXVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3JpdGVyaW9uLnR5cGUgPT09IFNlYXJjaENyaXRlcmlhVHlwZUVudW0uU1RSSU5HKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICFjcml0ZXJpb24udmFsdWUgfHxcbiAgICAgICAgICAgIGl0ZW1bY3JpdGVyaW9uLmNvZGVdXG4gICAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgIC5pbmNsdWRlcyhjcml0ZXJpb24udmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnRmlsdGVyZWQgRGF0YTonLCBmaWx0ZXJlZCk7XG4gICAgdGhpcy5maWx0ZXJlZERhdGEuZW1pdChmaWx0ZXJlZCk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNyaXRlcmlhLmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICBpbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJlZERhdGEuZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0QWxsID0gZXZlbnQuY2hlY2tlZDtcbiAgICB0aGlzLnNlbGVjdGVkID0gZXZlbnQuY2hlY2tlZFxuICAgICAgPyBbXG4gICAgICAgICAgLi4uKHRoaXMuY3JpdGVyaWEuZmluZChcbiAgICAgICAgICAgIChjcml0ZXJpb24pID0+IGNyaXRlcmlvbi50eXBlID09PSBTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLk1VTFRJU0VMRUNUXG4gICAgICAgICAgKT8uZmlsdGVyT3B0aW9ucyB8fCBbXSksXG4gICAgICAgIF1cbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZShkYXRlU3RyaW5nOiBzdHJpbmcgfCBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZGF0ZVN0cmluZykgPT09ICdbb2JqZWN0IERhdGVdJykge1xuICAgICAgcmV0dXJuIGRhdGVTdHJpbmcgYXMgRGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0cyA9IChkYXRlU3RyaW5nIGFzIHN0cmluZykuc3BsaXQoJy8nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0c1swXSwgMTApO1xuICAgICAgY29uc3QgbW9udGggPSBwYXJzZUludChwYXJ0c1sxXSwgMTApIC0gMTtcbiAgICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChwYXJ0c1syXSwgMTApO1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgICAgcmV0dXJuIGlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IG51bGwgOiBkYXRlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPHAtcGFuZWwgaGVhZGVyPVwie3sgdGl0bGUgfX1cIiBbdG9nZ2xlYWJsZV09XCJ0cnVlXCIgW2NvbGxhcHNlZF09XCJ0cnVlXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNyaXRlcmlhLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwieyAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogJ3JlcGVhdCgnICsgaW5wdXRzUGVyUm93ICsgJywgMWZyKScgfVwiXG4gID5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBjcml0ZXJpYVwiIGNsYXNzPVwiY3JpdGVyaWEtaXRlbVwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiYnNjLWxhYmVsXCI+e3sgaW5wdXQudGl0bGUgfX08L2xhYmVsPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpbnB1dC50eXBlXCI+XG4gICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uREFURVJBTkdFXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9tbS95eSdcIlxuICAgICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlucHV0LnZhbHVlID0gJGV2ZW50XCJcbiAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5EQVRFXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJpbnB1dC52YWx1ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaW5wdXQudmFsdWUgPSAkZXZlbnRcIlxuICAgICAgICAgIFtkYXRlRm9ybWF0XT1cIidkZC9tbS95eSdcIlxuICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGgtaW5wdXRcIlxuICAgICAgICA+PC9wLWNhbGVuZGFyPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU2VhcmNoQ3JpdGVyaWFUeXBlRW51bS5TVFJJTkdcIlxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dC52YWx1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoLWlucHV0XCJcbiAgICAgICAgLz5cblxuICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTZWFyY2hDcml0ZXJpYVR5cGVFbnVtLkFNT1VOVFwiXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dC52YWx1ZVwiXG4gICAgICAgICAgbW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgIGlucHV0SWQ9XCJtaW5tYXhmcmFjdGlvblwiXG4gICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIlxuICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCI1XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0Q3VycmVuY3lTeW1ib2woaW5wdXQpXCJcbiAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGgtaW5wdXRcIlxuICAgICAgICA+PC9wLWlucHV0TnVtYmVyPlxuXG4gICAgICAgIDxwLWlucHV0TnVtYmVyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uTlVNQkVSXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGgtaW5wdXRcIlxuICAgICAgICA+PC9wLWlucHV0TnVtYmVyPlxuXG4gICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlNlYXJjaENyaXRlcmlhVHlwZUVudW0uTVVMVElTRUxFQ1RcIlxuICAgICAgICAgIFtvcHRpb25zXT1cImlucHV0LmZpbHRlck9wdGlvbnNcIlxuICAgICAgICAgIFtkaXNwbGF5XT1cIidjaGlwJ1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgIFtzZWxlY3RBbGxdPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0LnZhbHVlXCJcbiAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAob25TZWxlY3RBbGxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJjdXN0b20tbXVsdGlzZWxlY3QgZnVsbC13aWR0aC1pbnB1dFwiXG4gICAgICAgID48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYnV0dG9uc1wiPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgIGxhYmVsPVwiRWZmYWNlclwiXG4gICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgICAgY2xhc3M9XCJmb290ZXItYnV0dG9uXCJcbiAgICAgID48L3AtYnV0dG9uPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgIGxhYmVsPVwiUmVjaGVyY2hlclwiXG4gICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICBjbGFzcz1cImZvb3Rlci1idXR0b25cIlxuICAgICAgPjwvcC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L3AtcGFuZWw+XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ButtonModule } from 'primeng/button';
5
+ import { CalendarModule } from 'primeng/calendar';
6
+ import { InputTextModule } from 'primeng/inputtext';
7
+ import { MultiSelectModule } from 'primeng/multiselect';
8
+ import { InputNumberModule } from 'primeng/inputnumber';
9
+ import { PanelModule } from 'primeng/panel';
10
+ import { MultiSearchCriteriaComponent } from './multi-search-criteria.component';
11
+ import * as i0 from "@angular/core";
12
+ export class MultiSearchCriteriaModule {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaModule, declarations: [MultiSearchCriteriaComponent], imports: [CommonModule,
15
+ CalendarModule,
16
+ InputTextModule,
17
+ MultiSelectModule,
18
+ ButtonModule,
19
+ FormsModule,
20
+ InputNumberModule,
21
+ PanelModule], exports: [MultiSearchCriteriaComponent] }); }
22
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaModule, imports: [CommonModule,
23
+ CalendarModule,
24
+ InputTextModule,
25
+ MultiSelectModule,
26
+ ButtonModule,
27
+ FormsModule,
28
+ InputNumberModule,
29
+ PanelModule] }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MultiSearchCriteriaModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [MultiSearchCriteriaComponent],
35
+ imports: [
36
+ CommonModule,
37
+ CalendarModule,
38
+ InputTextModule,
39
+ MultiSelectModule,
40
+ ButtonModule,
41
+ FormsModule,
42
+ InputNumberModule,
43
+ PanelModule,
44
+ ],
45
+ exports: [MultiSearchCriteriaComponent],
46
+ }]
47
+ }] });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VhcmNoLWNyaXRlcmlhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbXVsdGktc2VhcmNoLWNyaXRlcmlhL211bHRpLXNlYXJjaC1jcml0ZXJpYS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBZ0JqRixNQUFNLE9BQU8seUJBQXlCOytHQUF6Qix5QkFBeUI7Z0hBQXpCLHlCQUF5QixpQkFickIsNEJBQTRCLGFBRXpDLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixZQUFZO1lBQ1osV0FBVztZQUNYLGlCQUFpQjtZQUNqQixXQUFXLGFBRUgsNEJBQTRCO2dIQUUzQix5QkFBeUIsWUFYbEMsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLFdBQVc7OzRGQUlGLHlCQUF5QjtrQkFkckMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsV0FBVztxQkFDWjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhbmVsJztcbmltcG9ydCB7IE11bHRpU2VhcmNoQ3JpdGVyaWFDb21wb25lbnQgfSBmcm9tICcuL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNdWx0aVNlYXJjaENyaXRlcmlhQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDYWxlbmRhck1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgTXVsdGlTZWxlY3RNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElucHV0TnVtYmVyTW9kdWxlLFxuICAgIFBhbmVsTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbTXVsdGlTZWFyY2hDcml0ZXJpYUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VhcmNoQ3JpdGVyaWFNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ // projects/ng-prime-tools/src/lib/ng-advanced-prime-table/index.ts
2
+ export * from './multi-search-criteria.module';
3
+ export * from './multi-search-criteria.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbXVsdGktc2VhcmNoLWNyaXRlcmlhL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUVBQW1FO0FBQ25FLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHByb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvbmctYWR2YW5jZWQtcHJpbWUtdGFibGUvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vbXVsdGktc2VhcmNoLWNyaXRlcmlhLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL211bHRpLXNlYXJjaC1jcml0ZXJpYS5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ng-prime-tools/multi-search-criteria" />
5
+ export * from './public_api';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL25nLWFkdmFuY2VkLXByaW1lLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsOERBQThEO0FBQzlELGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuLy8vIDxhbWQtbW9kdWxlIG5hbWU9XCJuZy1wcmltZS10b29scy9tdWx0aS1zZWFyY2gtY3JpdGVyaWFcIiAvPlxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==