@dev-tcloud/tcloud-ui 0.0.36 → 0.0.37

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.
@@ -40,15 +40,44 @@ export class TCloudUiFiltersComponent {
40
40
  const v = (((`${text}`).normalize('NFD').replace(/[\u0300-\u036f]/g, "")).trim()).toLowerCase();
41
41
  return v;
42
42
  }
43
- fetchFromObject(obj, prop) {
44
- if (typeof obj === 'undefined') {
45
- return false;
46
- }
47
- var _index = `${prop}`.indexOf('.');
48
- if (_index > -1) {
49
- return this.fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));
43
+ collectionFind(obj, path) {
44
+ const pathArray = path.split(".");
45
+ let current = obj;
46
+ for (let i = 0; i < pathArray.length; i++) {
47
+ const key = pathArray[i];
48
+ if (key.includes('[') && key.includes(']')) {
49
+ const nextKeys = pathArray.slice(i + 1);
50
+ const index = key.substring(key.indexOf('[') + 1, key.indexOf(']'));
51
+ const arrayKey = key.substring(0, key.indexOf('['));
52
+ if (current[arrayKey][index]) {
53
+ console.log('current[arrayKey][index]', current[arrayKey][index]);
54
+ return this.collectionFind(current[arrayKey][index], nextKeys.join("."));
55
+ }
56
+ }
57
+ if (key.includes("[]")) {
58
+ const arrayKey = key.replace("[]", "");
59
+ current = current[arrayKey] || [];
60
+ const nextKeys = pathArray.slice(i + 1);
61
+ const results = [];
62
+ for (let j = 0; j < current.length; j++) {
63
+ let result = this.collectionFind(current[j], nextKeys.join("."));
64
+ if (result !== undefined) {
65
+ results.push(result);
66
+ }
67
+ }
68
+ if (results.length === 0) {
69
+ return undefined;
70
+ }
71
+ return results;
72
+ }
73
+ else {
74
+ current = current[key];
75
+ if (current === undefined) {
76
+ return undefined;
77
+ }
78
+ }
50
79
  }
51
- return obj[prop];
80
+ return current;
52
81
  }
53
82
  searchIn(item, event) {
54
83
  if (typeof event === 'boolean') {
@@ -68,7 +97,7 @@ export class TCloudUiFiltersComponent {
68
97
  const filter_item = this.filters[j];
69
98
  if (filter_item.searchText && typeof (filter_item.searchText) === 'string' && filter_item.searchText !== '') {
70
99
  filter_item.searchText = this.normalize(filter_item.searchText);
71
- let item_value = this.fetchFromObject(this.data[i], filter_item.searchIn);
100
+ let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
72
101
  if (item_value) {
73
102
  item_value = this.normalize(item_value);
74
103
  if (!(item_value.includes(filter_item.searchText) || item_value === filter_item.searchText)) {
@@ -76,9 +105,21 @@ export class TCloudUiFiltersComponent {
76
105
  }
77
106
  }
78
107
  }
79
- if (typeof (filter_item.searchText) === 'boolean') {
80
- let item_value = this.fetchFromObject(this.data[i], filter_item.searchIn);
81
- if (filter_item.searchText) {
108
+ if (typeof (filter_item.searchText) === 'boolean' && filter_item.searchText) {
109
+ let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
110
+ if (item_value && (item_value).length > 0) {
111
+ let qtd_is_true = 0;
112
+ for (let i = 0; i < ((item_value).length); i++) {
113
+ const item = item_value[i];
114
+ if (item === filter_item.searchText) {
115
+ qtd_is_true++;
116
+ }
117
+ }
118
+ if (qtd_is_true === 0) {
119
+ this.data[i]['tc_filter_accept'] = false;
120
+ }
121
+ }
122
+ else {
82
123
  if (!(item_value === filter_item.searchText)) {
83
124
  this.data[i]['tc_filter_accept'] = false;
84
125
  }
@@ -120,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
120
161
  }], result: [{
121
162
  type: Output
122
163
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRekcsTUFBTSxPQUFPLHdCQUF3QjtJQW9CbkM7UUFsQkEsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUV0QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQWtCcEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFGM0IsQ0FBQztJQVhqQixJQUFhLElBQUksQ0FBQyxJQUFTO1FBQ3pCLG9CQUFvQjtJQUN0QixDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQVMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUdyQyxJQUFhLE9BQU8sQ0FBQyxPQUFZO1FBQy9CLDBCQUEwQjtJQUM1QixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQVMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQU0zQyxRQUFRO0lBRVIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJ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aW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUQ0RhdGFGaWx0ZXJzIH0gZnJvbSAnLi90Y2xvdWQtdWktZmlsdGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgaW5wdXRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHNob3dfZmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNlYXJjaF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfZGF0YTogYW55IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZGF0YShkYXRhOiBhbnkpe1xuICAgIC8vdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cbiAgZ2V0IGRhdGEoKTogYW55eyByZXR1cm4gdGhpcy5fZGF0YTsgfVxuXG4gIHByaXZhdGUgX2ZpbHRlcnM6IFRDRGF0YUZpbHRlcnMgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJzKGZpbHRlcnM6IGFueSl7XG4gICAgLy90aGlzLl9maWx0ZXJzID0gZmlsdGVycztcbiAgfVxuICBnZXQgZmlsdGVycygpOiBhbnl7IHJldHVybiB0aGlzLl9maWx0ZXJzOyB9XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcbiAgICBpZiggdGhpcy5fZGF0YSAhPT0gZGF0YSApe1xuICAgICAgdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgdGhpcy5zZWFyY2hfZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGNoYW5nZXNbJ2ZpbHRlcnMnXS5jdXJyZW50VmFsdWU7XG4gICAgaWYoIHRoaXMuX2ZpbHRlcnMgIT09IGZpbHRlcnMgKXtcbiAgICAgIHRoaXMuX2ZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKTtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5maWx0ZXJzICl7XG4gICAgICB0aGlzLnNob3dfZmlsdGVycyA9IHRydWU7XG4gICAgICB0aGlzLnRvUmVzdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemUodGV4dDogYW55KTogc3RyaW5ne1xuICAgIGNvbnN0IHYgPSAoICggKGAke3RleHR9YCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKSApLnRyaW0oKSApLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBwcml2YXRlIGZldGNoRnJvbU9iamVjdChvYmo6IGFueSwgcHJvcDogYW55KTogYW55e1xuXG4gICAgaWYodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBfaW5kZXggPSBgJHtwcm9wfWAuaW5kZXhPZignLicpO1xuICAgIGlmKF9pbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoRnJvbU9iamVjdChvYmpbcHJvcC5zdWJzdHJpbmcoMCwgX2luZGV4KV0sIHByb3Auc3Vic3RyKF9pbmRleCArIDEpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqW3Byb3BdO1xuICB9XG5cbiAgc2VhcmNoSW4oaXRlbTogVENEYXRhRmlsdGVycywgZXZlbnQ6IGFueSl7XG5cbiAgICBpZiggdHlwZW9mIGV2ZW50ID09PSAnYm9vbGVhbicgKXtcbiAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IGV2ZW50O1xuICAgIH1lbHNle1xuXG4gICAgICBpZiggZXZlbnQgPT09IG51bGwgKXtcbiAgICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgaXRlbS5zZWFyY2hUZXh0ID0gKGV2ZW50LnRhcmdldC52YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cblxuICAgIH1cbiAgIFxuXG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xuXG4gICAgICB0aGlzLmRhdGFbaV1bJ3RjX2ZpbHRlcl9hY2NlcHQnXSA9IHRydWU7XG5cbiAgICAgIGZvciggbGV0IGogPSAwOyBqIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBqKysgKXsgICAgICAgIFxuICAgICAgICBjb25zdCBmaWx0ZXJfaXRlbSA9IHRoaXMuZmlsdGVyc1tqXTtcbiAgICAgICAgXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdzdHJpbmcnICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgIT09ICcnICl7XG4gICAgICAgICAgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCA9IHRoaXMubm9ybWFsaXplKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpO1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5mZXRjaEZyb21PYmplY3QodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgaWYoIGl0ZW1fdmFsdWUgKXtcbiAgICAgICAgICAgIGl0ZW1fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZShpdGVtX3ZhbHVlKTsgICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKCAhKCBpdGVtX3ZhbHVlLmluY2x1ZGVzKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpIHx8IGl0ZW1fdmFsdWUgPT09IGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKSApe1xuICAgICAgICAgICAgICB0aGlzLmRhdGFbaV1bJ3RjX2ZpbHRlcl9hY2NlcHQnXSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSAgICAgICAgIFxuICAgICAgICBcbiAgICAgICAgaWYoIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdib29sZWFuJyApe1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5mZXRjaEZyb21PYmplY3QodGhpcy5kYXRhW2ldLCBmaWx0ZXJfaXRlbS5zZWFyY2hJbik7XG4gICAgICAgICAgaWYoIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKXtcbiAgICAgICAgICAgIGlmKCAhKCBpdGVtX3ZhbHVlID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICkgKXtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2ldWyd0Y19maWx0ZXJfYWNjZXB0J10gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFxuICAgICAgfVxuXG4gICAgfVxuICAgIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSB0b1Jlc3VsdCgpe1xuICAgIGNvbnN0IHNlYXJjaF9kYXRhID0gW107XG5cbiAgICBsZXQgaXNfZmlsdGVyID0gZmFsc2U7XG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyApe1xuICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ICYmIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ICE9PSAnJyApe1xuICAgICAgICBpc19maWx0ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKCBpc19maWx0ZXIgKXtcbiAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZGF0YSkubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgaWYoIHRoaXMuZGF0YVtpXT8uWyd0Y19maWx0ZXJfYWNjZXB0J10gKXtcbiAgICAgICAgICAoc2VhcmNoX2RhdGEpLnB1c2godGhpcy5kYXRhW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZXN1bHQuZW1pdChzZWFyY2hfZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQuZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93X2ZpbHRlcnNcIiBjbGFzcz1cImFyZWEtZmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLnR5cGUgfHwgKGl0ZW0udHlwZSAmJiBpdGVtLnR5cGUgIT09ICdib29sZWFuJylcIj5cbiAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgKGl0ZW0ucGxhY2Vob2xkZXIgIT09ICcnKSA/IGl0ZW0ucGxhY2Vob2xkZXIgOiAnJyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGMtZm9ybS1jb250cm9sXCIgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hJbihpdGVtLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCJfaW5wdXQudmFsdWUgPT09ICcnXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBfaW5wdXQudmFsdWUgPSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgJiYgaXRlbS50eXBlID09PSAnYm9vbGVhbidcIj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXRcIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uXCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQuY2hlY2tlZCA9PT0gdHJ1ZVwiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtaW5wdXQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgX2lucHV0LmNoZWNrZWQpXCI+ICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjwhLS0gPHByZT57eyBpbnB1dHMgfCBqc29uIH19PC9wcmU+IC0tPlxuICAgIDwhLS0gPHByZT4ge3sgZGF0YSB8IGpzb24gfX0gPC9wcmU+IC0tPlxuXG48IS0tIDxwPkZJTFRFUlM8L3A+XG48cHJlPiB7eyBmaWx0ZXJzIHwganNvbiB9fTwvcHJlPiAtLT4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLWZpbHRlcnMvdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRekcsTUFBTSxPQUFPLHdCQUF3QjtJQW9CbkM7UUFsQkEsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUV0QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQWtCcEIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFGM0IsQ0FBQztJQVhqQixJQUFhLElBQUksQ0FBQyxJQUFTO1FBQ3pCLG9CQUFvQjtJQUN0QixDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQVMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUdyQyxJQUFhLE9BQU8sQ0FBQyxPQUFZO1FBQy9CLDBCQUEwQjtJQUM1QixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQVMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQU0zQyxRQUFRO0lBRVIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJ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RyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7Z0JBQ25FLFNBQVMsR0FBRyxJQUFJLENBQUM7YUFDbEI7U0FDRjtRQUVELElBQUksU0FBUyxFQUFFO1lBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRTtvQkFDdEMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNsQzthQUNGO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7O3NIQXZMVSx3QkFBd0I7MEdBQXhCLHdCQUF3QiwySkNSckMsbzdFQW9Eb0M7NEZENUN2Qix3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsbUJBQW1COzBFQWFoQixJQUFJO3NCQUFoQixLQUFLO2dCQU1PLE9BQU87c0JBQW5CLEtBQUs7Z0JBT0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUQ0RhdGFGaWx0ZXJzIH0gZnJvbSAnLi90Y2xvdWQtdWktZmlsdGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaUZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgaW5wdXRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHNob3dfZmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNlYXJjaF9kYXRhOiBhbnkgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfZGF0YTogYW55IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBzZXQgZGF0YShkYXRhOiBhbnkpe1xuICAgIC8vdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cbiAgZ2V0IGRhdGEoKTogYW55eyByZXR1cm4gdGhpcy5fZGF0YTsgfVxuXG4gIHByaXZhdGUgX2ZpbHRlcnM6IFRDRGF0YUZpbHRlcnMgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJzKGZpbHRlcnM6IGFueSl7XG4gICAgLy90aGlzLl9maWx0ZXJzID0gZmlsdGVycztcbiAgfVxuICBnZXQgZmlsdGVycygpOiBhbnl7IHJldHVybiB0aGlzLl9maWx0ZXJzOyB9XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBAT3V0cHV0KCkgcmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcbiAgICBpZiggdGhpcy5fZGF0YSAhPT0gZGF0YSApe1xuICAgICAgdGhpcy5fZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgdGhpcy5zZWFyY2hfZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGNoYW5nZXNbJ2ZpbHRlcnMnXS5jdXJyZW50VmFsdWU7XG4gICAgaWYoIHRoaXMuX2ZpbHRlcnMgIT09IGZpbHRlcnMgKXtcbiAgICAgIHRoaXMuX2ZpbHRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKTtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpe1xuICAgIGlmKCB0aGlzLmRhdGEgJiYgdGhpcy5maWx0ZXJzICl7XG4gICAgICB0aGlzLnNob3dfZmlsdGVycyA9IHRydWU7XG4gICAgICB0aGlzLnRvUmVzdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemUodGV4dDogYW55KTogc3RyaW5ne1xuICAgIGNvbnN0IHYgPSAoICggKGAke3RleHR9YCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKSApLnRyaW0oKSApLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuXG4gIHByaXZhdGUgY29sbGVjdGlvbkZpbmQob2JqOiBhbnksIHBhdGg6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aC5zcGxpdChcIi5cIik7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHBhdGhBcnJheVtpXTtcblxuICAgICAgaWYgKGtleS5pbmNsdWRlcygnWycpICYmIGtleS5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKCdbJykgKyAxLCBrZXkuaW5kZXhPZignXScpKTtcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkuc3Vic3RyaW5nKDAsIGtleS5pbmRleE9mKCdbJykpO1xuICAgICAgICBpZiggY3VycmVudFthcnJheUtleV1baW5kZXhdICl7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnRbYXJyYXlLZXldW2luZGV4XScsIGN1cnJlbnRbYXJyYXlLZXldW2luZGV4XSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkZpbmQoY3VycmVudFthcnJheUtleV1baW5kZXhdLCBuZXh0S2V5cy5qb2luKFwiLlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiW11cIikpIHtcbiAgICAgICAgY29uc3QgYXJyYXlLZXkgPSBrZXkucmVwbGFjZShcIltdXCIsIFwiXCIpO1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFthcnJheUtleV0gfHwgW107XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gcGF0aEFycmF5LnNsaWNlKGkgKyAxKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGN1cnJlbnQubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5jb2xsZWN0aW9uRmluZChjdXJyZW50W2pdLCBuZXh0S2V5cy5qb2luKFwiLlwiKSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuICAgIFxuXG4gIHNlYXJjaEluKGl0ZW06IFRDRGF0YUZpbHRlcnMsIGV2ZW50OiBhbnkpe1xuXG4gICAgaWYoIHR5cGVvZiBldmVudCA9PT0gJ2Jvb2xlYW4nICl7XG4gICAgICBpdGVtLnNlYXJjaFRleHQgPSBldmVudDtcbiAgICB9ZWxzZXtcblxuICAgICAgaWYoIGV2ZW50ID09PSBudWxsICl7XG4gICAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGl0ZW0uc2VhcmNoVGV4dCA9IChldmVudC50YXJnZXQudmFsdWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9XG5cbiAgICB9XG4gIFxuXG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5kYXRhKS5sZW5ndGg7IGkrKyApe1xuXG4gICAgICB0aGlzLmRhdGFbaV1bJ3RjX2ZpbHRlcl9hY2NlcHQnXSA9IHRydWU7XG5cbiAgICAgIGZvciggbGV0IGogPSAwOyBqIDwgKHRoaXMuZmlsdGVycykubGVuZ3RoOyBqKysgKXsgICAgICAgIFxuICAgICAgICBjb25zdCBmaWx0ZXJfaXRlbSA9IHRoaXMuZmlsdGVyc1tqXTtcbiAgICAgICAgXG4gICAgICAgIGlmKCBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICYmIHR5cGVvZiAoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgPT09ICdzdHJpbmcnICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgIT09ICcnICl7XG4gICAgICAgICAgZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCA9IHRoaXMubm9ybWFsaXplKGZpbHRlcl9pdGVtLnNlYXJjaFRleHQpO1xuICAgICAgICAgIGxldCBpdGVtX3ZhbHVlID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcbiAgICAgICAgICBpZiggaXRlbV92YWx1ZSApe1xuICAgICAgICAgICAgaXRlbV92YWx1ZSA9IHRoaXMubm9ybWFsaXplKGl0ZW1fdmFsdWUpOyAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYoICEoIGl0ZW1fdmFsdWUuaW5jbHVkZXMoZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCkgfHwgaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9ICAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBpZiggdHlwZW9mIChmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0KSA9PT0gJ2Jvb2xlYW4nICYmIGZpbHRlcl9pdGVtLnNlYXJjaFRleHQgKXtcbiAgICAgICAgICBsZXQgaXRlbV92YWx1ZTogYW55ID0gdGhpcy5jb2xsZWN0aW9uRmluZCh0aGlzLmRhdGFbaV0sIGZpbHRlcl9pdGVtLnNlYXJjaEluKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiggaXRlbV92YWx1ZSAmJiAoaXRlbV92YWx1ZSkubGVuZ3RoID4gMCApeyAgXG4gICAgICAgICAgICBsZXQgcXRkX2lzX3RydWUgPSAwOyAgICAgICAgICBcbiAgICAgICAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKChpdGVtX3ZhbHVlKS5sZW5ndGgpOyBpKysgKXtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1fdmFsdWVbaV07XG4gICAgICAgICAgICAgIGlmKCBpdGVtID09PSBmaWx0ZXJfaXRlbS5zZWFyY2hUZXh0ICl7XG4gICAgICAgICAgICAgICAgcXRkX2lzX3RydWUrKztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoIHF0ZF9pc190cnVlID09PSAwICl7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpZiggISggaXRlbV92YWx1ZSA9PT0gZmlsdGVyX2l0ZW0uc2VhcmNoVGV4dCApICl7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpXVsndGNfZmlsdGVyX2FjY2VwdCddID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgIFxuICAgICAgfVxuXG4gICAgfVxuICAgIHRoaXMudG9SZXN1bHQoKTtcbiAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSB0b1Jlc3VsdCgpe1xuICAgIGNvbnN0IHNlYXJjaF9kYXRhID0gW107XG5cbiAgICBsZXQgaXNfZmlsdGVyID0gZmFsc2U7XG4gICAgZm9yKCBsZXQgaSA9IDA7IGkgPCAodGhpcy5maWx0ZXJzKS5sZW5ndGg7IGkrKyApe1xuICAgICAgaWYoIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ICYmIHRoaXMuZmlsdGVyc1tpXS5zZWFyY2hUZXh0ICE9PSAnJyApe1xuICAgICAgICBpc19maWx0ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKCBpc19maWx0ZXIgKXtcbiAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgKHRoaXMuZGF0YSkubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgaWYoIHRoaXMuZGF0YVtpXT8uWyd0Y19maWx0ZXJfYWNjZXB0J10gKXtcbiAgICAgICAgICAoc2VhcmNoX2RhdGEpLnB1c2godGhpcy5kYXRhW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZXN1bHQuZW1pdChzZWFyY2hfZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQuZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG93X2ZpbHRlcnNcIiBjbGFzcz1cImFyZWEtZmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJzOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLnR5cGUgfHwgKGl0ZW0udHlwZSAmJiBpdGVtLnR5cGUgIT09ICdib29sZWFuJylcIj5cbiAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWZpbHRlci1pbnB1dFwiIFtzdHlsZV09XCIoaXRlbS53aWR0aCAhPT0gJycpID8gJ3dpZHRoOicraXRlbS53aWR0aCA6ICcnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZGVzY3JpcHRpb25cIj48aSBbY2xhc3MudG8tYWN0aXZlXT1cIl9pbnB1dC52YWx1ZSAhPT0gJydcIiBjbGFzcz1cImZhcyBmYS1maWx0ZXIgaWNvbi1maWx0ZXJcIj48L2k+Jm5ic3A7e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgKGl0ZW0ucGxhY2Vob2xkZXIgIT09ICcnKSA/IGl0ZW0ucGxhY2Vob2xkZXIgOiAnJyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW5wdXRfe3tpKzF9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGMtZm9ybS1jb250cm9sXCIgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hJbihpdGVtLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xlYXItZmlsdGVyLXRleHRcIiBbY2xhc3MudG8taGlkZV09XCJfaW5wdXQudmFsdWUgPT09ICcnXCIgKGNsaWNrKT1cInNlYXJjaEluKGl0ZW0sIG51bGwpOyBfaW5wdXQudmFsdWUgPSAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgJiYgaXRlbS50eXBlID09PSAnYm9vbGVhbidcIj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1maWx0ZXItaW5wdXRcIiBbc3R5bGVdPVwiKGl0ZW0ud2lkdGggIT09ICcnKSA/ICd3aWR0aDonK2l0ZW0ud2lkdGggOiAnJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWRlc2NyaXB0aW9uXCI+PGkgW2NsYXNzLnRvLWFjdGl2ZV09XCJfaW5wdXQuY2hlY2tlZCA9PT0gdHJ1ZVwiIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBpY29uLWZpbHRlclwiPjwvaT4mbmJzcDt7eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZWEtaW5wdXQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRjLWZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ucGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNfaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAoaXRlbS5wbGFjZWhvbGRlciAhPT0gJycpID8gaXRlbS5wbGFjZWhvbGRlciA6ICcnIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlucHV0X3t7aSsxfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VhcmNoSW4oaXRlbSwgX2lucHV0LmNoZWNrZWQpXCI+ICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjwhLS0gPHByZT57eyBpbnB1dHMgfCBqc29uIH19PC9wcmU+IC0tPlxuICAgIDwhLS0gPHByZT4ge3sgZGF0YSB8IGpzb24gfX0gPC9wcmU+IC0tPlxuXG48IS0tIDxwPkZJTFRFUlM8L3A+XG48cHJlPiB7eyBmaWx0ZXJzIHwganNvbiB9fTwvcHJlPiAtLT4iXX0=
@@ -2797,15 +2797,44 @@ class TCloudUiFiltersComponent {
2797
2797
  const v = (((`${text}`).normalize('NFD').replace(/[\u0300-\u036f]/g, "")).trim()).toLowerCase();
2798
2798
  return v;
2799
2799
  }
2800
- fetchFromObject(obj, prop) {
2801
- if (typeof obj === 'undefined') {
2802
- return false;
2803
- }
2804
- var _index = `${prop}`.indexOf('.');
2805
- if (_index > -1) {
2806
- return this.fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));
2800
+ collectionFind(obj, path) {
2801
+ const pathArray = path.split(".");
2802
+ let current = obj;
2803
+ for (let i = 0; i < pathArray.length; i++) {
2804
+ const key = pathArray[i];
2805
+ if (key.includes('[') && key.includes(']')) {
2806
+ const nextKeys = pathArray.slice(i + 1);
2807
+ const index = key.substring(key.indexOf('[') + 1, key.indexOf(']'));
2808
+ const arrayKey = key.substring(0, key.indexOf('['));
2809
+ if (current[arrayKey][index]) {
2810
+ console.log('current[arrayKey][index]', current[arrayKey][index]);
2811
+ return this.collectionFind(current[arrayKey][index], nextKeys.join("."));
2812
+ }
2813
+ }
2814
+ if (key.includes("[]")) {
2815
+ const arrayKey = key.replace("[]", "");
2816
+ current = current[arrayKey] || [];
2817
+ const nextKeys = pathArray.slice(i + 1);
2818
+ const results = [];
2819
+ for (let j = 0; j < current.length; j++) {
2820
+ let result = this.collectionFind(current[j], nextKeys.join("."));
2821
+ if (result !== undefined) {
2822
+ results.push(result);
2823
+ }
2824
+ }
2825
+ if (results.length === 0) {
2826
+ return undefined;
2827
+ }
2828
+ return results;
2829
+ }
2830
+ else {
2831
+ current = current[key];
2832
+ if (current === undefined) {
2833
+ return undefined;
2834
+ }
2835
+ }
2807
2836
  }
2808
- return obj[prop];
2837
+ return current;
2809
2838
  }
2810
2839
  searchIn(item, event) {
2811
2840
  if (typeof event === 'boolean') {
@@ -2825,7 +2854,7 @@ class TCloudUiFiltersComponent {
2825
2854
  const filter_item = this.filters[j];
2826
2855
  if (filter_item.searchText && typeof (filter_item.searchText) === 'string' && filter_item.searchText !== '') {
2827
2856
  filter_item.searchText = this.normalize(filter_item.searchText);
2828
- let item_value = this.fetchFromObject(this.data[i], filter_item.searchIn);
2857
+ let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
2829
2858
  if (item_value) {
2830
2859
  item_value = this.normalize(item_value);
2831
2860
  if (!(item_value.includes(filter_item.searchText) || item_value === filter_item.searchText)) {
@@ -2833,9 +2862,21 @@ class TCloudUiFiltersComponent {
2833
2862
  }
2834
2863
  }
2835
2864
  }
2836
- if (typeof (filter_item.searchText) === 'boolean') {
2837
- let item_value = this.fetchFromObject(this.data[i], filter_item.searchIn);
2838
- if (filter_item.searchText) {
2865
+ if (typeof (filter_item.searchText) === 'boolean' && filter_item.searchText) {
2866
+ let item_value = this.collectionFind(this.data[i], filter_item.searchIn);
2867
+ if (item_value && (item_value).length > 0) {
2868
+ let qtd_is_true = 0;
2869
+ for (let i = 0; i < ((item_value).length); i++) {
2870
+ const item = item_value[i];
2871
+ if (item === filter_item.searchText) {
2872
+ qtd_is_true++;
2873
+ }
2874
+ }
2875
+ if (qtd_is_true === 0) {
2876
+ this.data[i]['tc_filter_accept'] = false;
2877
+ }
2878
+ }
2879
+ else {
2839
2880
  if (!(item_value === filter_item.searchText)) {
2840
2881
  this.data[i]['tc_filter_accept'] = false;
2841
2882
  }