@sd-angular/core 1.1.75 → 1.1.78

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 (47) hide show
  1. package/bundles/sd-angular-core-filter.umd.js +1 -1
  2. package/bundles/sd-angular-core-filter.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-filter.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-grid-material.umd.js +4 -4
  5. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  6. package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
  7. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  8. package/bundles/sd-angular-core-grid.umd.js +5 -5
  9. package/bundles/sd-angular-core-grid.umd.js.map +1 -1
  10. package/bundles/sd-angular-core-grid.umd.min.js +1 -1
  11. package/bundles/sd-angular-core-grid.umd.min.js.map +1 -1
  12. package/bundles/sd-angular-core-input-number.umd.js +29 -16
  13. package/bundles/sd-angular-core-input-number.umd.js.map +1 -1
  14. package/bundles/sd-angular-core-input-number.umd.min.js +1 -1
  15. package/bundles/sd-angular-core-input-number.umd.min.js.map +1 -1
  16. package/bundles/sd-angular-core-popover.umd.js +1 -1
  17. package/bundles/sd-angular-core-popover.umd.min.js +1 -1
  18. package/bundles/sd-angular-core-popover.umd.min.js.map +1 -1
  19. package/esm2015/filter/src/lib/filter.component.js +2 -2
  20. package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +2 -2
  21. package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +2 -2
  22. package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +2 -2
  23. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +2 -2
  24. package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +2 -2
  25. package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +2 -2
  26. package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +2 -2
  27. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +2 -2
  28. package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +2 -2
  29. package/esm2015/input-number/src/lib/input-number.component.js +32 -19
  30. package/esm2015/popover/src/lib/popover/popover.component.js +1 -1
  31. package/fesm2015/sd-angular-core-filter.js +1 -1
  32. package/fesm2015/sd-angular-core-filter.js.map +1 -1
  33. package/fesm2015/sd-angular-core-grid-material.js +4 -4
  34. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  35. package/fesm2015/sd-angular-core-grid.js +5 -5
  36. package/fesm2015/sd-angular-core-grid.js.map +1 -1
  37. package/fesm2015/sd-angular-core-input-number.js +31 -18
  38. package/fesm2015/sd-angular-core-input-number.js.map +1 -1
  39. package/fesm2015/sd-angular-core-popover.js +1 -1
  40. package/filter/sd-angular-core-filter.metadata.json +1 -1
  41. package/grid/sd-angular-core-grid.metadata.json +1 -1
  42. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  43. package/input-number/sd-angular-core-input-number.metadata.json +1 -1
  44. package/input-number/src/lib/input-number.component.d.ts +2 -0
  45. package/package.json +1 -1
  46. package/popover/sd-angular-core-popover.metadata.json +1 -1
  47. package/{sd-angular-core-1.1.75.tgz → sd-angular-core-1.1.78.tgz} +0 -0
@@ -16,7 +16,7 @@ export class SdGridDesktopInlineFilter {
16
16
  SdGridDesktopInlineFilter.decorators = [
17
17
  { type: Component, args: [{
18
18
  selector: 'sd-grid-desktop-inline-filter',
19
- template: "<ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <ng-container *ngIf=\"columns?.length && filterOption?.columnInline === 'outside'\">\r\n <ng-container *ngFor=\"let item of columns\">\r\n <ng-container\r\n *ngIf=\"item.type !== 'children' && item.type !== 'image' && !item?.filter?.disabled && item.priority !== 'low'\">\r\n <ng-container *ngIf=\"inlineColumn[item.field] || inlineColumn[item.field] === undefined\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[item.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\"\r\n [(model)]=\"filter[item.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"filter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"filter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'values' && !item?.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item?.editor?.autocomplete\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"item.type === 'date' || item.type === 'datetime' || item.type === 'time'\"\r\n [label]=\"item.title\" [(model)]=\"filter[item.field]\" type=\"date\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"item.type === 'children' && item.children?.length && !item?.filter?.disabled && item.priority !== 'low'\">\r\n <ng-container *ngFor=\"let childColumn of item.children\">\r\n <ng-container\r\n *ngIf=\"inlineColumn[childColumn.field] && !childColumn?.filter?.disabled && childColumn.priority !== 'low' && childColumn.type !== 'image'\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[childColumn.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'number'\" type=\"number\"\r\n [(model)]=\"filter[childColumn.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'bool'\" [items]=\"[{value:'1',display:childColumn.trueValue || 'True' },\r\n {value:'0',display:childColumn.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'radio'\"\r\n [items]=\"childColumn.values\" [valueField]=\"childColumn.valueField\"\r\n [displayField]=\"childColumn.displayField\" [(model)]=\"filter[childColumn.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select *ngIf=\"childColumn.type === 'values' && !item?.editor?.autocomplete\"\r\n [label]=\"childColumn.title\" [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"childColumn.type === 'values' && item?.editor?.autocomplete\"\r\n [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-autocomplete>\r\n <sd-date-time\r\n *ngIf=\"childColumn.type === 'date' || childColumn.type === 'datetime' || childColumn.type === 'time'\"\r\n [label]=\"childColumn.title\" [(model)]=\"filter[childColumn.field]\" type=\"date\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"filterOption?.externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of filterOption.externalFilters\">\r\n <ng-container\r\n *ngIf=\"(inlineExternal[item.field] || inlineExternal[item.field] === undefined) && item.priority !== 'low'\">\r\n <div *ngIf=\"item.type !=='daterange' && item.type !=='numberrange';else elseFilterRange\"\r\n class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\"\r\n [(model)]=\"externalFilter[item.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'custom'\"\r\n [(model)]=\"externalFilter[displayKey + item.field]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.field, displayKey + item.field)\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\" multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.values\" [valueField]=\"item.valueField\" [displayField]=\"item.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.values\" [valueField]=\"item.valueField\" [displayField]=\"item.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onUpdateFilter()\" filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\"\r\n [(model)]=\"externalFilter[item.field]\" type=\"date\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-range>\r\n </div>\r\n <ng-template #elseFilterRange>\r\n <ng-container *ngIf=\"item.type ==='daterange' && externalFilter[item.field]\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.field].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.field].to || item.maxDate\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.field].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.field].from\" [maxDate]=\"item.maxDate\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.type ==='numberrange' && externalFilter[item.field]\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].from\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].to\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-input>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>",
19
+ template: "<ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <ng-container *ngIf=\"columns?.length && filterOption?.columnInline === 'outside'\">\r\n <ng-container *ngFor=\"let item of columns\">\r\n <ng-container\r\n *ngIf=\"item.type !== 'children' && item.type !== 'image' && !item?.filter?.disabled && item.priority !== 'low'\">\r\n <ng-container *ngIf=\"inlineColumn[item.field] || inlineColumn[item.field] === undefined\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\" [(model)]=\"filter[item.field]\"\r\n (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"filter[item.field]\"\r\n (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"filter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"filter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'values' && !item?.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item?.editor?.autocomplete\" [items]=\"item.values\"\r\n valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"item.type === 'date' || item.type === 'datetime' || item.type === 'time'\"\r\n [label]=\"item.title\" [(model)]=\"filter[item.field]\" type=\"date\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"item.type === 'children' && item.children?.length && !item?.filter?.disabled && item.priority !== 'low'\">\r\n <ng-container *ngFor=\"let childColumn of item.children\">\r\n <ng-container\r\n *ngIf=\"inlineColumn[childColumn.field] && !childColumn?.filter?.disabled && childColumn.priority !== 'low' && childColumn.type !== 'image'\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[childColumn.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-input-number [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'number'\"\r\n [(model)]=\"filter[childColumn.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input-number>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'bool'\" [items]=\"[{value:'1',display:childColumn.trueValue || 'True' },\r\n {value:'0',display:childColumn.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'radio'\" [items]=\"childColumn.values\"\r\n [valueField]=\"childColumn.valueField\" [displayField]=\"childColumn.displayField\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select *ngIf=\"childColumn.type === 'values' && !item?.editor?.autocomplete\"\r\n [label]=\"childColumn.title\" [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"childColumn.type === 'values' && item?.editor?.autocomplete\"\r\n [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-autocomplete>\r\n <sd-date-time\r\n *ngIf=\"childColumn.type === 'date' || childColumn.type === 'datetime' || childColumn.type === 'time'\"\r\n [label]=\"childColumn.title\" [(model)]=\"filter[childColumn.field]\" type=\"date\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"filterOption?.externalFilters?.length\">\r\n <ng-container *ngFor=\"let item of filterOption.externalFilters\">\r\n <ng-container\r\n *ngIf=\"(inlineExternal[item.field] || inlineExternal[item.field] === undefined) && item.priority !== 'low'\">\r\n <div *ngIf=\"item.type !=='daterange' && item.type !=='numberrange';else elseFilterRange\"\r\n class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.field]\" (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.field]\"\r\n (keyupEnter)=\"onUpdateFilter()\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'custom'\"\r\n [(model)]=\"externalFilter[displayKey + item.field]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.field, displayKey + item.field)\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-input>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\" multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n (sdChange)=\"onUpdateFilter()\" filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\" [valueField]=\"item.valueField\"\r\n [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.field]\"\r\n type=\"date\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-range>\r\n </div>\r\n <ng-template #elseFilterRange>\r\n <ng-container *ngIf=\"item.type ==='daterange' && externalFilter[item.field]\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.field].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.field].to || item.maxDate\" (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.field].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.field].from\" [maxDate]=\"item.maxDate\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-date-time>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.type ==='numberrange' && externalFilter[item.field]\">\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].from\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-lg-2 col-md-3 col-sm-6 px-4\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].to\"\r\n (sdChange)=\"onUpdateFilter()\">\r\n </sd-input>\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>",
20
20
  styles: [""]
21
21
  },] }
22
22
  ];
@@ -30,4 +30,4 @@ SdGridDesktopInlineFilter.propDecorators = {
30
30
  inlineColumn: [{ type: Input }],
31
31
  sdChange: [{ type: Output }]
32
32
  };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1kZXNrdG9wLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtZGVza3RvcC1pbmxpbmUtZmlsdGVyL2dyaWQtZGVza3RvcC1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBU3ZFLE1BQU0sT0FBTyx5QkFBeUI7SUFjcEM7UUFiUyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUM3QixtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBRWpCLG1CQUFjLEdBRW5CLEVBQUUsQ0FBQztRQUNFLGlCQUFZLEdBRWpCLEVBQUUsQ0FBQztRQUNHLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFHeEIsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUE7SUFKZSxDQUFDOzs7WUFuQmxCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6Qyw0MFZBQTBEOzthQUUzRDs7OztzQkFFRSxLQUFLOzZCQUNMLEtBQUs7cUJBQ0wsS0FBSzsyQkFDTCxLQUFLOzZCQUNMLEtBQUs7MkJBR0wsS0FBSzt1QkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgR3JpZEJhc2VPcHRpb25GaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZC1kZXNrdG9wLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWRlc2t0b3AtaW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1kZXNrdG9wLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkRGVza3RvcElubGluZUZpbHRlciB7XHJcbiAgQElucHV0KCkgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgQElucHV0KCkgZmlsdGVyOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBmaWx0ZXJPcHRpb246IEdyaWRCYXNlT3B0aW9uRmlsdGVyO1xyXG4gIEBJbnB1dCgpIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xyXG4gIH0gPSB7fTtcclxuICBASW5wdXQoKSBpbmxpbmVDb2x1bW46IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XHJcbiAgfSA9IHt9O1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBpc0Rlc2t0b3A6IGJvb2xlYW47XHJcbiAgZGlzcGxheUtleSA9ICdTRENVU1RPTSc7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgb25VcGRhdGVGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNkQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1kZXNrdG9wLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtZGVza3RvcC1pbmxpbmUtZmlsdGVyL2dyaWQtZGVza3RvcC1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBU3ZFLE1BQU0sT0FBTyx5QkFBeUI7SUFjcEM7UUFiUyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUM3QixtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBRWpCLG1CQUFjLEdBRW5CLEVBQUUsQ0FBQztRQUNFLGlCQUFZLEdBRWpCLEVBQUUsQ0FBQztRQUNHLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFHeEIsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUE7SUFKZSxDQUFDOzs7WUFuQmxCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6QyxpeFZBQTBEOzthQUUzRDs7OztzQkFFRSxLQUFLOzZCQUNMLEtBQUs7cUJBQ0wsS0FBSzsyQkFDTCxLQUFLOzZCQUNMLEtBQUs7MkJBR0wsS0FBSzt1QkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgR3JpZEJhc2VPcHRpb25GaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZC1kZXNrdG9wLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWRlc2t0b3AtaW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1kZXNrdG9wLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkRGVza3RvcElubGluZUZpbHRlciB7XHJcbiAgQElucHV0KCkgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKSBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgQElucHV0KCkgZmlsdGVyOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBmaWx0ZXJPcHRpb246IEdyaWRCYXNlT3B0aW9uRmlsdGVyO1xyXG4gIEBJbnB1dCgpIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xyXG4gIH0gPSB7fTtcclxuICBASW5wdXQoKSBpbmxpbmVDb2x1bW46IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XHJcbiAgfSA9IHt9O1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBpc0Rlc2t0b3A6IGJvb2xlYW47XHJcbiAgZGlzcGxheUtleSA9ICdTRENVU1RPTSc7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgb25VcGRhdGVGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNkQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -35,7 +35,7 @@ export class SdGridPopupEditor {
35
35
  SdGridPopupEditor.decorators = [
36
36
  { type: Component, args: [{
37
37
  selector: 'sd-grid-popup-editor',
38
- template: "<sd-modal [title]=\"(isModified ? 'Edit' : 'Create')\" width=\"sm\" #modal>\r\n <sd-modal-body *ngIf=\"item && columns?.length\">\r\n <form #formEditor=\"ngForm\">\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div *ngIf=\"column | editorPopupVisible:item\" class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [(model)]=\"item[column.field]\"></sd-input>\r\n <sd-input *ngIf=\"column.type === 'number'\" [(model)]=\"item[column.field]\" type=\"number\">\r\n </sd-input>\r\n <sd-select *ngIf=\"column.type === 'values'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n <sd-switch *ngIf=\"column.type === 'boolean'\" [(model)]=\"item[column.field]\">\r\n </sd-switch>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </form>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\"></sd-button>\r\n <sd-button (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\"\r\n width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>"
38
+ template: "<sd-modal [title]=\"(isModified ? 'Edit' : 'Create')\" width=\"sm\" #modal>\r\n <sd-modal-body *ngIf=\"item && columns?.length\">\r\n <form #formEditor=\"ngForm\">\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div *ngIf=\"column | editorPopupVisible:item\" class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [(model)]=\"item[column.field]\"></sd-input>\r\n <sd-input-number *ngIf=\"column.type === 'number'\" [(model)]=\"item[column.field]\">\r\n </sd-input-number>\r\n <sd-select *ngIf=\"column.type === 'values'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n <sd-switch *ngIf=\"column.type === 'boolean'\" [(model)]=\"item[column.field]\">\r\n </sd-switch>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </form>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\"\r\n width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>"
39
39
  },] }
40
40
  ];
41
41
  SdGridPopupEditor.ctorParameters = () => [];
@@ -43,4 +43,4 @@ SdGridPopupEditor.propDecorators = {
43
43
  modal: [{ type: ViewChild, args: ['modal',] }],
44
44
  save: [{ type: Output }]
45
45
  };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZWRpdG9yL2dyaWQtcG9wdXAtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5GLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFMVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUM5QyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQVM3QixTQUFJLEdBQUcsQ0FBQyxJQUFjLEVBQUUsT0FBdUIsRUFBRSxVQUFvQixFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO29CQUM5QixNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDckMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQ2hDO29CQUNILENBQUMsRUFBRTtpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFBO1FBRUQsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTtJQTlCZSxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzs7WUFmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsMDFEQUFpRDthQUNsRDs7OztvQkFHRSxTQUFTLFNBQUMsT0FBTzttQkFDakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RHcmlkT3B0aW9uLCBTZEdyaWRDb2x1bW4sIEdyaWRJdGVtIH0gZnJvbSAnLi4vLi4vZ3JpZC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRQb3B1cEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRJdGVtPigpO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkT3B0aW9uO1xyXG4gIGl0ZW06IEdyaWRJdGVtO1xyXG4gIGlzTW9kaWZpZWQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKGl0ZW06IEdyaWRJdGVtLCBjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgaXNNb2RpZmllZD86IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuaXRlbSA9IGl0ZW07XHJcbiAgICB0aGlzLmlzTW9kaWZpZWQgPSBpc01vZGlmaWVkID8/IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnaW1hZ2UnICYmIGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gICAgdGhpcy5zYXZlLmVtaXQodGhpcy5pdGVtKTtcclxuICB9XHJcbn1cclxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZWRpdG9yL2dyaWQtcG9wdXAtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5GLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFMVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUM5QyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQVM3QixTQUFJLEdBQUcsQ0FBQyxJQUFjLEVBQUUsT0FBdUIsRUFBRSxVQUFvQixFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO29CQUM5QixNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDckMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQ2hDO29CQUNILENBQUMsRUFBRTtpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFBO1FBRUQsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTtJQTlCZSxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzs7WUFmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsZzJEQUFpRDthQUNsRDs7OztvQkFHRSxTQUFTLFNBQUMsT0FBTzttQkFDakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RHcmlkT3B0aW9uLCBTZEdyaWRDb2x1bW4sIEdyaWRJdGVtIH0gZnJvbSAnLi4vLi4vZ3JpZC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRQb3B1cEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRJdGVtPigpO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkT3B0aW9uO1xyXG4gIGl0ZW06IEdyaWRJdGVtO1xyXG4gIGlzTW9kaWZpZWQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKGl0ZW06IEdyaWRJdGVtLCBjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgaXNNb2RpZmllZD86IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuaXRlbSA9IGl0ZW07XHJcbiAgICB0aGlzLmlzTW9kaWZpZWQgPSBpc01vZGlmaWVkID8/IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnaW1hZ2UnICYmIGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gICAgdGhpcy5zYXZlLmVtaXQodGhpcy5pdGVtKTtcclxuICB9XHJcbn1cclxuIl19
@@ -290,7 +290,7 @@ _loadConfiguration = new WeakMap();
290
290
  SdGridPopupFilter.decorators = [
291
291
  { type: Component, args: [{
292
292
  selector: 'sd-grid-popup-filter',
293
- template: "<sd-modal width=\"sm\" [title]=\"'Filter' | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div\r\n *ngIf=\"key && filterOption?.multiple !== false && (!filterOption?.quickFilterVisibility || filterOption?.quickFilterVisibility === 'popup')\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-label>{{'Quick filters' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedCode\" (selectionChange)=\"onSelectionChange($event)\" #matSelect>\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let quickFilter of quickFilters\" [value]=\"quickFilter.code\">\r\n <div style=\"display:flex; justify-content: space-between\">\r\n <span>{{quickFilter.code}}</span>\r\n <div>\r\n <mat-icon class=\"mr-1 c-fa-icon\" (click)=\"onEditQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-pencil\"></mat-icon>\r\n <mat-icon class=\"mr-0 c-fa-icon\" (click)=\"onDeleteQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-trash-o\"></mat-icon>\r\n </div>\r\n </div>\r\n </mat-option>\r\n <mat-option [value]=\"newQuickFilter\">\r\n <div (click)=\"onCreateQuickFilter($event)\">\r\n <mat-icon class=\"mr-1\" fontSet=\"material-icons-outlined\">add</mat-icon>\r\n <span>{{'Create quick filter' | sdTranslate}}</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngIf=\"filterOption?.multiple === false\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>{{'Select field' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedField\">\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let item of externalFilters\" [value]=\"'external' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let item of columns\">\r\n <mat-option *ngIf=\"item.type !== 'children'\" [value]=\"'column' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngIf=\"item.type === 'children' && item.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of item.children\">\r\n <mat-option [value]=\"'column' + childColumn.field\">\r\n {{childColumn.title}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of externalFilters\">\r\n <div *ngIf=\"filterOption?.multiple !== false || selectedField === 'external' + item.field\"\r\n class=\"d-flex align-items-baseline\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineExternal[item.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.values\" [valueField]=\"item.valueField\" [displayField]=\"item.displayField\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\"\r\n [items]=\"item.values\" [valueField]=\"item.valueField\" [displayField]=\"item.displayField\"\r\n [(model)]=\"externalFilter[item.field]\" filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.field]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.field, displayKey + item.field)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\"\r\n [(model)]=\"externalFilter[item.field]\" type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\"\r\n [min]=\"item.minDate\" [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.field].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.field].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.field].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.field].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"column.type !== 'children' && (filterOption?.multiple !== false || selectedField === 'column' + column.field)\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[column.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [label]=\"column.title\" type=\"text\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"column.type === 'number'\" [label]=\"column.title\" type=\" number\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"column.type === 'bool'\" [label]=\"column.title\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:column.falseValue || 'False' }]\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [label]=\"column.title\" [items]=\"column.values\"\r\n [valueField]=\"column.valueField\" [displayField]=\"column.displayField\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'values' && !column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"column.type === 'values' && column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"column.type ==='date' || column.type==='datetime' ||\r\n column.type==='time'\" [label]=\"column.title\" [(model)]=\" filter[column.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"column.type === 'children' && column.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of column.children\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"filterOption?.multiple !== false || selectedField === 'column' + childColumn.field\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[childColumn.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'number'\" type=\" number\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'bool'\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:childColumn.falseValue || 'False' }]\" [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'radio'\"\r\n [items]=\"childColumn.values\" [valueField]=\"childColumn.valueField\"\r\n [displayField]=\"childColumn.displayField\" [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-autocomplete [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'values'\"\r\n [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time [label]=\"childColumn.title\" *ngIf=\"childColumn.type ==='date' || childColumn.type==='datetime' ||\r\n childColumn.type==='time'\" [(model)]=\" filter[childColumn.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onClear()\" icon=\"clear\" [title]=\"'Clear filter' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onClear()\" icon=\"clear\"\r\n [title]=\"'Clear filter' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n<sd-grid-popup-quick-filter-detail #popupQuickFilterDetail (accept)=\"onAcceptQuickFilter($event)\">\r\n</sd-grid-popup-quick-filter-detail>",
293
+ template: "<sd-modal width=\"sm\" [title]=\"'Filter' | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div\r\n *ngIf=\"key && filterOption?.multiple !== false && (!filterOption?.quickFilterVisibility || filterOption?.quickFilterVisibility === 'popup')\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-label>{{'Quick filters' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedCode\" (selectionChange)=\"onSelectionChange($event)\" #matSelect>\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let quickFilter of quickFilters\" [value]=\"quickFilter.code\">\r\n <div style=\"display:flex; justify-content: space-between\">\r\n <span>{{quickFilter.code}}</span>\r\n <div>\r\n <mat-icon class=\"mr-1 c-fa-icon\" (click)=\"onEditQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-pencil\"></mat-icon>\r\n <mat-icon class=\"mr-0 c-fa-icon\" (click)=\"onDeleteQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-trash-o\"></mat-icon>\r\n </div>\r\n </div>\r\n </mat-option>\r\n <mat-option [value]=\"newQuickFilter\">\r\n <div (click)=\"onCreateQuickFilter($event)\">\r\n <mat-icon class=\"mr-1\" fontSet=\"material-icons-outlined\">add</mat-icon>\r\n <span>{{'Create quick filter' | sdTranslate}}</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngIf=\"filterOption?.multiple === false\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>{{'Select field' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedField\">\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let item of externalFilters\" [value]=\"'external' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let item of columns\">\r\n <mat-option *ngIf=\"item.type !== 'children'\" [value]=\"'column' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngIf=\"item.type === 'children' && item.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of item.children\">\r\n <mat-option [value]=\"'column' + childColumn.field\">\r\n {{childColumn.title}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of externalFilters\">\r\n <div *ngIf=\"filterOption?.multiple !== false || selectedField === 'external' + item.field\"\r\n class=\"d-flex align-items-baseline\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineExternal[item.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\" [valueField]=\"item.valueField\"\r\n [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.field]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.field, displayKey + item.field)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.field]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.field].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.field].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.field].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.field].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"column.type !== 'children' && (filterOption?.multiple !== false || selectedField === 'column' + column.field)\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[column.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [label]=\"column.title\" type=\"text\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"column.type === 'number'\" [label]=\"column.title\" type=\" number\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"column.type === 'bool'\" [label]=\"column.title\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:column.falseValue || 'False' }]\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [label]=\"column.title\" [items]=\"column.values\"\r\n [valueField]=\"column.valueField\" [displayField]=\"column.displayField\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'values' && !column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"column.type === 'values' && column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"column.type ==='date' || column.type==='datetime' ||\r\n column.type==='time'\" [label]=\"column.title\" [(model)]=\" filter[column.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"column.type === 'children' && column.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of column.children\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"filterOption?.multiple !== false || selectedField === 'column' + childColumn.field\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[childColumn.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'number'\" type=\" number\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'bool'\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:childColumn.falseValue || 'False' }]\" [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'radio'\" [items]=\"childColumn.values\"\r\n [valueField]=\"childColumn.valueField\" [displayField]=\"childColumn.displayField\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-autocomplete [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'values'\"\r\n [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time [label]=\"childColumn.title\" *ngIf=\"childColumn.type ==='date' || childColumn.type==='datetime' ||\r\n childColumn.type==='time'\" [(model)]=\" filter[childColumn.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onClear()\" icon=\"clear\" [title]=\"'Clear filter' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onClear()\" icon=\"clear\"\r\n [title]=\"'Clear filter' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n<sd-grid-popup-quick-filter-detail #popupQuickFilterDetail (accept)=\"onAcceptQuickFilter($event)\">\r\n</sd-grid-popup-quick-filter-detail>",
294
294
  encapsulation: ViewEncapsulation.None,
295
295
  styles: [".c-fa-icon{color:grey;font-size:20px}.c-checkable{width:50px}.c-filterable{flex:1}"]
296
296
  },] }
@@ -314,4 +314,4 @@ SdGridPopupFilter.propDecorators = {
314
314
  inlineExternal: [{ type: Input }],
315
315
  inlineColumn: [{ type: Input }]
316
316
  };
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZmlsdGVyL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0ksT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVzVELE1BQU0sT0FBTyxpQkFBaUI7SUEyQjVCLFlBQ1UsR0FBc0IsRUFDOUIsYUFBb0MsRUFDNUIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDOUIsZ0JBQW9DO1FBSnBDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQS9CdEMsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNsQyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUloQixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO1FBQ2xF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V0FBVztrQkFDckIsS0FBSzsyQkFDTCxLQUFLO3FCQUNMLE1BQU07b0JBQ04sTUFBTTsrQkFDTixNQUFNOzZCQVVOLEtBQUs7MkJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RHcmlkQ29sdW1uLCBTZEdyaWRFeHRlcm5hbEZpbHRlciwgR3JpZEJhc2VPcHRpb25GaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuaW1wb3J0IHsgUXVpY2tGaWx0ZXIsIEZpbHRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2dyaWQtcG9wdXAtZmlsdGVyLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFNldHRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbCB9IGZyb20gJy4uL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkUG9wdXBGaWx0ZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUga2V5UHJlZml4ID0gJ1BvcHVwRmlsdGVyJztcclxuICBkaXNwbGF5S2V5ID0gJ1NEQ1VTVE9NJztcclxuICBpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogU2RNb2RhbDtcclxuICBAVmlld0NoaWxkKCdwb3B1cFF1aWNrRmlsdGVyRGV0YWlsJykgcG9wdXBRdWlja0ZpbHRlckRldGFpbDogU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbDtcclxuICBAVmlld0NoaWxkKCdtYXRTZWxlY3QnKSBtYXRTZWxlY3Q6IE1hdFNlbGVjdDtcclxuICBASW5wdXQoKSBrZXkgPSAnJztcclxuICBASW5wdXQoKSBmaWx0ZXJPcHRpb246IEdyaWRCYXNlT3B0aW9uRmlsdGVyO1xyXG4gIEBPdXRwdXQoKSBhY2NlcHQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWRJbmxpbmVGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ3VyYXRpb24+KCk7XHJcbiAgc2VsZWN0ZWRGaWVsZDogc3RyaW5nO1xyXG4gIG5ld1F1aWNrRmlsdGVyID0gJ2UxZWYxZDQzLWQ2ODktNDI0Zi05NTllLWU2Y2QxNTRjZmVlNyc7XHJcbiAgZmlsdGVyOiBhbnkgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBleHRlcm5hbEZpbHRlcnM6IFNkR3JpZEV4dGVybmFsRmlsdGVyW10gPSBbXTtcclxuICBxdWlja0ZpbHRlcnM6IFF1aWNrRmlsdGVyW10gPSBbXTtcclxuICBzZWxlY3RlZENvZGU6IHN0cmluZztcclxuICBtYXhRdWlja0ZpbHRlcnMgPSA1O1xyXG4gIEBJbnB1dCgpIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIGlubGluZUNvbHVtbjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNkU2V0dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jbG9hZENvbmZpZ3VyYXRpb24oKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICAgIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMgfHwgW10sXHJcbiAgICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogdGhpcy5zZWxlY3RlZENvZGUgfHwgJycsXHJcbiAgICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgaW5saW5lQ29sdW1uOiB0aGlzLmlubGluZUNvbHVtblxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIG9wZW4gPSAoXHJcbiAgICBmaXhlZENvbHVtczogU2RHcmlkQ29sdW1uW10sXHJcbiAgICBub3JtYWxDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIGZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI6IGFueSxcclxuICAgIGV4dGVybmFsRmlsdGVycz86IFNkR3JpZEV4dGVybmFsRmlsdGVyW10pID0+IHtcclxuICAgIHRoaXMuaW5pdChmaXhlZENvbHVtcywgbm9ybWFsQ29sdW1ucywgZmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZXh0ZXJuYWxGaWx0ZXJzKTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCA9IChcclxuICAgIGZpeGVkQ29sdW1zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIG5vcm1hbENvbHVtbnM6IFNkR3JpZENvbHVtbltdLFxyXG4gICAgZmlsdGVyOiBhbnksXHJcbiAgICBleHRlcm5hbEZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzPzogU2RHcmlkRXh0ZXJuYWxGaWx0ZXJbXSkgPT4ge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLmZpeGVkQ29sdW1zLCAuLi5ub3JtYWxDb2x1bW5zXS5maWx0ZXIoZSA9PiAhZS5maWx0ZXI/LmRpc2FibGVkICYmIGUudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4gPSBjb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGUgPT4gIWUuZmlsdGVyPy5kaXNhYmxlZCAmJiBlLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChleHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBleHRlcm5hbEZpbHRlcnMuZmlsdGVyKGUgPT4gIWUuZGlzYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKGV4dGVybmFsRmlsdGVycywgZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgZm9yIChjb25zdCBlRmlsdGVyIG9mIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm1vZGFsLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjY2VwdCgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlck9wdGlvbj8ubXVsdGlwbGUgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLnN0YXJ0c1dpdGgoJ2NvbHVtbicpKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuc2VsZWN0ZWRGaWVsZC5yZXBsYWNlKCdjb2x1bW4nLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5maWx0ZXJbZmllbGRdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyOiB7fVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuc3RhcnRzV2l0aCgnZXh0ZXJuYWwnKSkge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLnNlbGVjdGVkRmllbGQucmVwbGFjZSgnZXh0ZXJuYWwnLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7fSxcclxuICAgICAgICAgICAgZXh0ZXJuYWxGaWx0ZXI6IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKHRoaXMuZXh0ZXJuYWxGaWx0ZXJzLCB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY2NlcHQuZW1pdCh7XHJcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlclxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKSB7XHJcbiAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvZGU7XHJcbiAgICB0aGlzLmNsZWFyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gICNsb2FkQ29uZmlndXJhdGlvbiA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gW107XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZ2V0LCBoYXMgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIWF3YWl0IGhhcygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXQoKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnF1aWNrRmlsdGVycykpIHtcclxuICAgICAgdGhpcy5xdWlja0ZpbHRlcnMgPSBjb25maWd1cmF0aW9uLnF1aWNrRmlsdGVycztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2RlID0gY29uZmlndXJhdGlvbj8uc2VsZWN0ZWRRdWlja0ZpbHRlciB8fCAnJztcclxuICAgIHRoaXMuaW5saW5lRXh0ZXJuYWwgPSBjb25maWd1cmF0aW9uPy5pbmxpbmVFeHRlcm5hbCB8fCB7fTtcclxuICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbj8uaW5saW5lQ29sdW1uIHx8IHt9O1xyXG4gICAgZm9yIChjb25zdCBleHRlcm5hbEZpbHRlciBvZiB0aGlzLmV4dGVybmFsRmlsdGVycykge1xyXG4gICAgICBpZiAodGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuaW5saW5lRXh0ZXJuYWxbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQ29uZmlndXJhdGlvbihzZWxlY3RlZFF1aWNrRmlsdGVyQ29kZT86IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRRdWlja0ZpbHRlckNvZGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9IHNlbGVjdGVkUXVpY2tGaWx0ZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBzZXQgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCBzZXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzIHx8IFtdLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSB8fCAnJyxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25DaGFuZ2UgPSAoY2hhbmdlOiBNYXRTZWxlY3RDaGFuZ2UpID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlPy52YWx1ZSB8fCAnJztcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5uZXdRdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ3JlYXRlUXVpY2tGaWx0ZXIoKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSB2YWx1ZSk7XHJcbiAgICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICAgIHRoaXMub25EZXRhaWxRdWlja0ZpbHRlcihxdWlja0ZpbHRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ3JlYXRlUXVpY2tGaWx0ZXIgPSAoZXY/OiBFdmVudCkgPT4ge1xyXG4gICAgZXY/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXY/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucywgdGhpcy5leHRlcm5hbEZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgb25EZXRhaWxRdWlja0ZpbHRlciA9IGFzeW5jIChxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBpZiAocXVpY2tGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSBxdWlja0ZpbHRlci5jb2RlO1xyXG4gICAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHF1aWNrRmlsdGVyLmZpbHRlcik7XHJcbiAgICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlciA9IEpTT04ucGFyc2UoZjEpO1xyXG4gICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIEpTT04ucGFyc2UoZjIpKTtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRRdWlja0ZpbHRlciA9IChldjogRXZlbnQsIHF1aWNrRmlsdGVyPzogUXVpY2tGaWx0ZXIpID0+IHtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMubWF0U2VsZWN0Py5jbG9zZSgpO1xyXG4gICAgaWYgKHF1aWNrRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucyxcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICBxdWlja0ZpbHRlci5maWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuY29kZSk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlUXVpY2tGaWx0ZXIgPSAoZXY6IEV2ZW50LCBxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdSZW1vdmUgZmlsdGVyJykpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmIChxdWlja0ZpbHRlci5jb2RlID09PSB0aGlzLnNlbGVjdGVkQ29kZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZEluZGV4KGUgPT4gZS5jb2RlID09PSBxdWlja0ZpbHRlci5jb2RlKTtcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRRdWlja0ZpbHRlciA9IGFzeW5jIChhcmdzOiB7IGNvZGU6IHN0cmluZywgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfSkgPT4ge1xyXG4gICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSBhcmdzLmNvZGUpO1xyXG4gICAgaWYgKCFxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnF1aWNrRmlsdGVycy5wdXNoKHtcclxuICAgICAgICBjb2RlOiBhcmdzLmNvZGUsXHJcbiAgICAgICAgZmlsdGVyOiBhcmdzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVpY2tGaWx0ZXIuZmlsdGVyID0gYXJncy5maWx0ZXI7XHJcbiAgICAgIHF1aWNrRmlsdGVyLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbklubGluZUNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RXh0ZXJuYWxGaWx0ZXIgPSAoZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBleHRlcm5hbEZpbHRlcjogYW55KSA9PiB7XHJcbiAgICBleHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyIHx8IHt9O1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzID0gZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LmZyb20gPz8gZS5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LnRvID8/IGUuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXJyYW5nZScpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAndmFsdWVzJykgeyAvLyBhbmRuMVxyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0gKGV4dGVybmFsRmlsdGVyW2UuZmllbGRdIHx8IGUuZGVmYXVsdCkgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBleHRlcm5hbEZpbHRlcjtcclxuICB9XHJcbn1cclxuIl19
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZmlsdGVyL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0ksT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVzVELE1BQU0sT0FBTyxpQkFBaUI7SUEyQjVCLFlBQ1UsR0FBc0IsRUFDOUIsYUFBb0MsRUFDNUIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDOUIsZ0JBQW9DO1FBSnBDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQS9CdEMsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNsQyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUloQixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO1FBQ2xF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V0FBVztrQkFDckIsS0FBSzsyQkFDTCxLQUFLO3FCQUNMLE1BQU07b0JBQ04sTUFBTTsrQkFDTixNQUFNOzZCQVVOLEtBQUs7MkJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RHcmlkQ29sdW1uLCBTZEdyaWRFeHRlcm5hbEZpbHRlciwgR3JpZEJhc2VPcHRpb25GaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuaW1wb3J0IHsgUXVpY2tGaWx0ZXIsIEZpbHRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2dyaWQtcG9wdXAtZmlsdGVyLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFNldHRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbCB9IGZyb20gJy4uL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkUG9wdXBGaWx0ZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUga2V5UHJlZml4ID0gJ1BvcHVwRmlsdGVyJztcclxuICBkaXNwbGF5S2V5ID0gJ1NEQ1VTVE9NJztcclxuICBpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogU2RNb2RhbDtcclxuICBAVmlld0NoaWxkKCdwb3B1cFF1aWNrRmlsdGVyRGV0YWlsJykgcG9wdXBRdWlja0ZpbHRlckRldGFpbDogU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbDtcclxuICBAVmlld0NoaWxkKCdtYXRTZWxlY3QnKSBtYXRTZWxlY3Q6IE1hdFNlbGVjdDtcclxuICBASW5wdXQoKSBrZXkgPSAnJztcclxuICBASW5wdXQoKSBmaWx0ZXJPcHRpb246IEdyaWRCYXNlT3B0aW9uRmlsdGVyO1xyXG4gIEBPdXRwdXQoKSBhY2NlcHQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWRJbmxpbmVGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ3VyYXRpb24+KCk7XHJcbiAgc2VsZWN0ZWRGaWVsZDogc3RyaW5nO1xyXG4gIG5ld1F1aWNrRmlsdGVyID0gJ2UxZWYxZDQzLWQ2ODktNDI0Zi05NTllLWU2Y2QxNTRjZmVlNyc7XHJcbiAgZmlsdGVyOiBhbnkgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBleHRlcm5hbEZpbHRlcnM6IFNkR3JpZEV4dGVybmFsRmlsdGVyW10gPSBbXTtcclxuICBxdWlja0ZpbHRlcnM6IFF1aWNrRmlsdGVyW10gPSBbXTtcclxuICBzZWxlY3RlZENvZGU6IHN0cmluZztcclxuICBtYXhRdWlja0ZpbHRlcnMgPSA1O1xyXG4gIEBJbnB1dCgpIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIGlubGluZUNvbHVtbjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNkU2V0dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jbG9hZENvbmZpZ3VyYXRpb24oKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICAgIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMgfHwgW10sXHJcbiAgICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogdGhpcy5zZWxlY3RlZENvZGUgfHwgJycsXHJcbiAgICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgaW5saW5lQ29sdW1uOiB0aGlzLmlubGluZUNvbHVtblxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIG9wZW4gPSAoXHJcbiAgICBmaXhlZENvbHVtczogU2RHcmlkQ29sdW1uW10sXHJcbiAgICBub3JtYWxDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIGZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI6IGFueSxcclxuICAgIGV4dGVybmFsRmlsdGVycz86IFNkR3JpZEV4dGVybmFsRmlsdGVyW10pID0+IHtcclxuICAgIHRoaXMuaW5pdChmaXhlZENvbHVtcywgbm9ybWFsQ29sdW1ucywgZmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZXh0ZXJuYWxGaWx0ZXJzKTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCA9IChcclxuICAgIGZpeGVkQ29sdW1zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIG5vcm1hbENvbHVtbnM6IFNkR3JpZENvbHVtbltdLFxyXG4gICAgZmlsdGVyOiBhbnksXHJcbiAgICBleHRlcm5hbEZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzPzogU2RHcmlkRXh0ZXJuYWxGaWx0ZXJbXSkgPT4ge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLmZpeGVkQ29sdW1zLCAuLi5ub3JtYWxDb2x1bW5zXS5maWx0ZXIoZSA9PiAhZS5maWx0ZXI/LmRpc2FibGVkICYmIGUudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4gPSBjb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGUgPT4gIWUuZmlsdGVyPy5kaXNhYmxlZCAmJiBlLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChleHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBleHRlcm5hbEZpbHRlcnMuZmlsdGVyKGUgPT4gIWUuZGlzYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKGV4dGVybmFsRmlsdGVycywgZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgZm9yIChjb25zdCBlRmlsdGVyIG9mIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm1vZGFsLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjY2VwdCgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlck9wdGlvbj8ubXVsdGlwbGUgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLnN0YXJ0c1dpdGgoJ2NvbHVtbicpKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuc2VsZWN0ZWRGaWVsZC5yZXBsYWNlKCdjb2x1bW4nLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5maWx0ZXJbZmllbGRdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyOiB7fVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuc3RhcnRzV2l0aCgnZXh0ZXJuYWwnKSkge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLnNlbGVjdGVkRmllbGQucmVwbGFjZSgnZXh0ZXJuYWwnLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7fSxcclxuICAgICAgICAgICAgZXh0ZXJuYWxGaWx0ZXI6IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKHRoaXMuZXh0ZXJuYWxGaWx0ZXJzLCB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY2NlcHQuZW1pdCh7XHJcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlclxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKSB7XHJcbiAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvZGU7XHJcbiAgICB0aGlzLmNsZWFyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gICNsb2FkQ29uZmlndXJhdGlvbiA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gW107XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZ2V0LCBoYXMgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIWF3YWl0IGhhcygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXQoKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnF1aWNrRmlsdGVycykpIHtcclxuICAgICAgdGhpcy5xdWlja0ZpbHRlcnMgPSBjb25maWd1cmF0aW9uLnF1aWNrRmlsdGVycztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2RlID0gY29uZmlndXJhdGlvbj8uc2VsZWN0ZWRRdWlja0ZpbHRlciB8fCAnJztcclxuICAgIHRoaXMuaW5saW5lRXh0ZXJuYWwgPSBjb25maWd1cmF0aW9uPy5pbmxpbmVFeHRlcm5hbCB8fCB7fTtcclxuICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbj8uaW5saW5lQ29sdW1uIHx8IHt9O1xyXG4gICAgZm9yIChjb25zdCBleHRlcm5hbEZpbHRlciBvZiB0aGlzLmV4dGVybmFsRmlsdGVycykge1xyXG4gICAgICBpZiAodGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuaW5saW5lRXh0ZXJuYWxbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQ29uZmlndXJhdGlvbihzZWxlY3RlZFF1aWNrRmlsdGVyQ29kZT86IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRRdWlja0ZpbHRlckNvZGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9IHNlbGVjdGVkUXVpY2tGaWx0ZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBzZXQgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCBzZXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzIHx8IFtdLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSB8fCAnJyxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25DaGFuZ2UgPSAoY2hhbmdlOiBNYXRTZWxlY3RDaGFuZ2UpID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlPy52YWx1ZSB8fCAnJztcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5uZXdRdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ3JlYXRlUXVpY2tGaWx0ZXIoKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSB2YWx1ZSk7XHJcbiAgICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICAgIHRoaXMub25EZXRhaWxRdWlja0ZpbHRlcihxdWlja0ZpbHRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ3JlYXRlUXVpY2tGaWx0ZXIgPSAoZXY/OiBFdmVudCkgPT4ge1xyXG4gICAgZXY/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXY/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucywgdGhpcy5leHRlcm5hbEZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgb25EZXRhaWxRdWlja0ZpbHRlciA9IGFzeW5jIChxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBpZiAocXVpY2tGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSBxdWlja0ZpbHRlci5jb2RlO1xyXG4gICAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHF1aWNrRmlsdGVyLmZpbHRlcik7XHJcbiAgICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlciA9IEpTT04ucGFyc2UoZjEpO1xyXG4gICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIEpTT04ucGFyc2UoZjIpKTtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRRdWlja0ZpbHRlciA9IChldjogRXZlbnQsIHF1aWNrRmlsdGVyPzogUXVpY2tGaWx0ZXIpID0+IHtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMubWF0U2VsZWN0Py5jbG9zZSgpO1xyXG4gICAgaWYgKHF1aWNrRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucyxcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICBxdWlja0ZpbHRlci5maWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuY29kZSk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlUXVpY2tGaWx0ZXIgPSAoZXY6IEV2ZW50LCBxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdSZW1vdmUgZmlsdGVyJykpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmIChxdWlja0ZpbHRlci5jb2RlID09PSB0aGlzLnNlbGVjdGVkQ29kZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZEluZGV4KGUgPT4gZS5jb2RlID09PSBxdWlja0ZpbHRlci5jb2RlKTtcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRRdWlja0ZpbHRlciA9IGFzeW5jIChhcmdzOiB7IGNvZGU6IHN0cmluZywgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfSkgPT4ge1xyXG4gICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSBhcmdzLmNvZGUpO1xyXG4gICAgaWYgKCFxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnF1aWNrRmlsdGVycy5wdXNoKHtcclxuICAgICAgICBjb2RlOiBhcmdzLmNvZGUsXHJcbiAgICAgICAgZmlsdGVyOiBhcmdzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVpY2tGaWx0ZXIuZmlsdGVyID0gYXJncy5maWx0ZXI7XHJcbiAgICAgIHF1aWNrRmlsdGVyLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbklubGluZUNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RXh0ZXJuYWxGaWx0ZXIgPSAoZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBleHRlcm5hbEZpbHRlcjogYW55KSA9PiB7XHJcbiAgICBleHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyIHx8IHt9O1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzID0gZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LmZyb20gPz8gZS5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LnRvID8/IGUuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXJyYW5nZScpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAndmFsdWVzJykgeyAvLyBhbmRuMVxyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0gKGV4dGVybmFsRmlsdGVyW2UuZmllbGRdIHx8IGUuZGVmYXVsdCkgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBleHRlcm5hbEZpbHRlcjtcclxuICB9XHJcbn1cclxuIl19
@@ -162,7 +162,7 @@ export class SdGridPopupQuickFilterDetail {
162
162
  SdGridPopupQuickFilterDetail.decorators = [
163
163
  { type: Component, args: [{
164
164
  selector: 'sd-grid-popup-quick-filter-detail',
165
- template: "<sd-modal width=\"sm\" [title]=\"(page === 1 ? 'Select filtered fields':'Input filtered fields') | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"page === 1\">\r\n <div *ngFor=\"let field of selectableFields\" class=\"col-12\">\r\n <sd-switch [(model)]=\"selectedField[field.id]\" [label]=\"field.title\" (sdChange)=\"onSelectFields()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <div class=\"col-12\" *ngFor=\"let item of fields\">\r\n <ng-container *ngIf=\"item.group === 'external'\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-input>\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'number'\" type=\"number\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-input>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.code]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.code, displayKey + item.code)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.code]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.code].from\" [(to)]=\"externalFilter[item.code].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.code].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.code].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.code].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.code].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.group === 'column'\">\r\n <sd-input *ngIf=\"item.type === 'string'\" [label]=\"item.title\" type=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"item.type === 'number'\" [label]=\"item.title\" type=\" number\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"item.type === 'bool'\" [label]=\"item.title\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'radio'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.type === 'values' && !item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-date-time *ngIf=\"item.type ==='date' || item.type==='datetime' ||\r\n item.type==='time'\" [label]=\"item.title\" [(model)]=\" filter[item.code]\" type=\"date\">\r\n </sd-date-time>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </sd-modal-body>\r\n <ng-container *ngIf=\"page === 1\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"clear\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"page = 2\" icon=\"arrow_forward\" [title]=\"'Next' | sdTranslate\" color=\"primary\"\r\n iconSuffix=\"true\" [disabled]=\"!fields.length\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"clear\"\r\n [title]=\"'Cancel' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"page = 2\" icon=\"arrow_forward\"\r\n [title]=\"'Next' | sdTranslate\" color=\"primary\" width=\"100%\" iconSuffix=\"true\" [disabled]=\"!fields.length\"\r\n size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"page = 1\" icon=\"arrow_back\" [title]=\"'Back' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"page = 1\" icon=\"arrow_back\"\r\n [title]=\"'Back' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n</sd-modal>",
165
+ template: "<sd-modal width=\"sm\" [title]=\"(page === 1 ? 'Select filtered fields':'Input filtered fields') | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"page === 1\">\r\n <div *ngFor=\"let field of selectableFields\" class=\"col-12\">\r\n <sd-switch [(model)]=\"selectedField[field.id]\" [label]=\"field.title\" (sdChange)=\"onSelectFields()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <div class=\"col-12\" *ngFor=\"let item of fields\">\r\n <ng-container *ngIf=\"item.group === 'external'\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.code]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.code, displayKey + item.code)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.code]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.code].from\" [(to)]=\"externalFilter[item.code].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.code].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.code].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.code].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.code].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.group === 'column'\">\r\n <sd-input *ngIf=\"item.type === 'string'\" [label]=\"item.title\" type=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"item.type === 'number'\" [label]=\"item.title\" type=\" number\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"item.type === 'bool'\" [label]=\"item.title\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'radio'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.type === 'values' && !item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-date-time *ngIf=\"item.type ==='date' || item.type==='datetime' ||\r\n item.type==='time'\" [label]=\"item.title\" [(model)]=\" filter[item.code]\" type=\"date\">\r\n </sd-date-time>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </sd-modal-body>\r\n <ng-container *ngIf=\"page === 1\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"clear\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"page = 2\" icon=\"arrow_forward\" [title]=\"'Next' | sdTranslate\" color=\"primary\"\r\n iconSuffix=\"true\" [disabled]=\"!fields.length\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"clear\"\r\n [title]=\"'Cancel' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"page = 2\" icon=\"arrow_forward\"\r\n [title]=\"'Next' | sdTranslate\" color=\"primary\" width=\"100%\" iconSuffix=\"true\" [disabled]=\"!fields.length\"\r\n size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"page = 1\" icon=\"arrow_back\" [title]=\"'Back' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"page = 1\" icon=\"arrow_back\"\r\n [title]=\"'Back' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n</sd-modal>",
166
166
  styles: [""]
167
167
  },] }
168
168
  ];
@@ -176,4 +176,4 @@ SdGridPopupQuickFilterDetail.propDecorators = {
176
176
  quickFilters: [{ type: Input }],
177
177
  accept: [{ type: Output }]
178
178
  };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwvZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekcsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTNUQsTUFBTSxPQUFPLDRCQUE0QjtJQWlCdkMsWUFDRSxhQUFvQyxFQUM1QixhQUE4QixFQUM5QixnQkFBb0M7UUFEcEMsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFuQjlDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR2YsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBWSxFQUFFLENBQUM7UUFDL0IsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0Isb0JBQWUsR0FBMkIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FFVCxFQUFF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LEVBQUUsUUFBUSxFQUNmLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQ25CLENBQUM7YUFDSjtRQUNILENBQUMsRUFBRTtRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7WUEzSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLGttUkFBOEQ7O2FBRS9EOzs7WUFSUSxxQkFBcUI7WUFMNUIsZUFBZTtZQUdmLGtCQUFrQjs7O29CQWNqQixTQUFTLFNBQUMsT0FBTzsyQkFDakIsS0FBSztxQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgU2RHcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFF1aWNrRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1wb3B1cC1maWx0ZXIvZ3JpZC1wb3B1cC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZFBvcHVwUXVpY2tGaWx0ZXJEZXRhaWwgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIGRpc3BsYXlLZXkgPSAnU0RDVVNUT00nO1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVyczogUXVpY2tGaWx0ZXJbXTtcclxuICBAT3V0cHV0KCkgYWNjZXB0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XHJcbiAgc2VsZWN0YWJsZUZpZWxkczogRmllbGRbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdID0gW107XHJcbiAgZmlsdGVyOiBGaWx0ZXIgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogRmlsdGVyID0ge307XHJcbiAgc2VsZWN0ZWRGaWVsZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgcGFnZTogMSB8IDIgPSAxO1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb3Blbihjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBmaWx0ZXI/OiBGaWx0ZXIsIGV4dGVybmFsRmlsdGVyPzogRmlsdGVyLCBjb2RlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmV4dGVybmFsRmlsdGVycyA9IGV4dGVybmFsRmlsdGVycztcclxuICAgIHRoaXMuY29kZSA9IGNvZGU7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcltrZXldID09PSBudWxsIHx8IGZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBrZXkpO1xyXG4gICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsdGVyW2tleV0gPSBmaWx0ZXJba2V5XTtcclxuICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgIC4uLmNvbHVtbixcclxuICAgICAgICAgIGlkOiAnY29sdW1uJyArIGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIGdyb3VwOiAnY29sdW1uJyxcclxuICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gICAgICAgICAgY29kZTogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChleHRlcm5hbEZpbHRlcikge1xyXG4gICAgICBPYmplY3Qua2V5cyhleHRlcm5hbEZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChleHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gbnVsbCB8fCBleHRlcm5hbEZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgodGhpcy5kaXNwbGF5S2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID0gZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGV4dGVybmFsRmlsdGVycy5maW5kKGUgPT4gZS5maWVsZCA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGVyYW5nZScgfHwgaXRlbS50eXBlID09PSAnbnVtYmVycmFuZ2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2tleV0gPSB7IC4uLmV4dGVybmFsRmlsdGVyW2tleV0gfTtcclxuICAgICAgICAgIGlmICghZXh0ZXJuYWxGaWx0ZXJba2V5XT8uZnJvbSAmJiAhZXh0ZXJuYWxGaWx0ZXJba2V5XT8udG8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5maWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGlkOiAnZXh0ZXJuYWwnICsgaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdleHRlcm5hbCcsXHJcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgY29kZTogaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgICAgICAgIGZyb21UaXRsZTogaXRlbS5mcm9tVGl0bGUsXHJcbiAgICAgICAgICAgIHRvVGl0bGU6IGl0ZW0udG9UaXRsZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHsgLi4uZXh0ZXJuYWxGaWx0ZXJba2V5XSB9O1xyXG4gICAgICAgICAgaWYgKCFleHRlcm5hbEZpbHRlcltrZXldPy5mcm9tICYmICFleHRlcm5hbEZpbHRlcltrZXldPy50bykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IGV4dGVybmFsRmlsdGVyW2tleV07XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGV4dGVybmFsRmllbGRzOiBGaWVsZFtdID0gZXh0ZXJuYWxGaWx0ZXJzPy5tYXAoZSA9PiAoe1xyXG4gICAgICAuLi5lLFxyXG4gICAgICBpZDogJ2V4dGVybmFsJyArIGUuZmllbGQsXHJcbiAgICAgIGdyb3VwOiAnZXh0ZXJuYWwnLFxyXG4gICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICB9KSkgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuICAgIGNvbHVtbnM/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjb2x1bW4pIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgIGNvbHVtbkZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uZSxcclxuICAgICAgICAgICAgaWQ6ICdjb2x1bW4nICsgZS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdjb2x1bW4nLFxyXG4gICAgICAgICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICAgICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2x1bW5GaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAuLi5jb2x1bW4sXHJcbiAgICAgICAgICBpZDogJ2NvbHVtbicgKyBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICBncm91cDogJ2NvbHVtbicsXHJcbiAgICAgICAgICBjb2RlOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGFibGVGaWVsZHMgPSBbLi4uZXh0ZXJuYWxGaWVsZHMsIC4uLmNvbHVtbkZpZWxkc107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB7fTtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0gPSB0cnVlKTtcclxuICAgIHRoaXMucGFnZSA9IHRoaXMuZmllbGRzLmxlbmd0aCA+IDAgPyAyIDogMTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBleGVjdXRlID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7fTtcclxuICAgICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZmlsdGVyW2tleV0gPT09IG51bGwgfHwgdGhpcy5maWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkcy5zb21lKGUgPT4gZS5ncm91cCA9PT0gJ2NvbHVtbicgJiYgZS5jb2RlID09PSBrZXkpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcltrZXldID0gdGhpcy5maWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZXJuYWxGaWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSBudWxsIHx8IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYWNjZXB0LmVtaXQoe1xyXG4gICAgICAgIGNvZGU6IHRoaXMuY29kZSxcclxuICAgICAgICBmaWx0ZXIsXHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuY29kZSkge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybVdpdGhJbnB1dCgnRW50ZXIgeW91ciBxdWljayBmaWx0ZXIgbmFtZScpLnRoZW4oKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnF1aWNrRmlsdGVycz8uc29tZShlID0+IGUuY29kZSA9PT0gdmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb2RlIGlzIGV4aXN0ZWQnKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgZXhlY3V0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleGVjdXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0RmllbGQgPSAodmFsdWVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLnNlbGVjdGFibGVGaWVsZHMuZmlsdGVyKGUgPT4gdmFsdWVzLnNvbWUodiA9PiBlLmNvZGUgPT09IHYpKTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmdyb3VwID09PSAnZXh0ZXJuYWwnICYmIGZpZWxkLnR5cGUuaW5jbHVkZXMoJ3JhbmdlJykpIHtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdID0gdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZC5jb2RlXSB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RGaWVsZHMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkcy5maWx0ZXIoZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0pO1xyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuZ3JvdXAgPT09ICdleHRlcm5hbCcgJiYgZmllbGQudHlwZS5pbmNsdWRlcygncmFuZ2UnKSkge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZmllbGQuY29kZV0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRmllbGQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgZ3JvdXA6ICdjb2x1bW4nIHwgJ2V4dGVybmFsJztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGZyb21UaXRsZT86IHN0cmluZztcclxuICB0b1RpdGxlPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIEZpbHRlciB7XHJcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwvZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekcsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTNUQsTUFBTSxPQUFPLDRCQUE0QjtJQWlCdkMsWUFDRSxhQUFvQyxFQUM1QixhQUE4QixFQUM5QixnQkFBb0M7UUFEcEMsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFuQjlDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR2YsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBWSxFQUFFLENBQUM7UUFDL0IsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0Isb0JBQWUsR0FBMkIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FFVCxFQUFF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LEVBQUUsUUFBUSxFQUNmLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQ25CLENBQUM7YUFDSjtRQUNILENBQUMsRUFBRTtRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7WUEzSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLCtrUkFBOEQ7O2FBRS9EOzs7WUFSUSxxQkFBcUI7WUFMNUIsZUFBZTtZQUdmLGtCQUFrQjs7O29CQWNqQixTQUFTLFNBQUMsT0FBTzsyQkFDakIsS0FBSztxQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgU2RHcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFF1aWNrRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1wb3B1cC1maWx0ZXIvZ3JpZC1wb3B1cC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZFBvcHVwUXVpY2tGaWx0ZXJEZXRhaWwgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIGRpc3BsYXlLZXkgPSAnU0RDVVNUT00nO1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVyczogUXVpY2tGaWx0ZXJbXTtcclxuICBAT3V0cHV0KCkgYWNjZXB0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XHJcbiAgc2VsZWN0YWJsZUZpZWxkczogRmllbGRbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdID0gW107XHJcbiAgZmlsdGVyOiBGaWx0ZXIgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogRmlsdGVyID0ge307XHJcbiAgc2VsZWN0ZWRGaWVsZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgcGFnZTogMSB8IDIgPSAxO1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb3Blbihjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBmaWx0ZXI/OiBGaWx0ZXIsIGV4dGVybmFsRmlsdGVyPzogRmlsdGVyLCBjb2RlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmV4dGVybmFsRmlsdGVycyA9IGV4dGVybmFsRmlsdGVycztcclxuICAgIHRoaXMuY29kZSA9IGNvZGU7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcltrZXldID09PSBudWxsIHx8IGZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBrZXkpO1xyXG4gICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsdGVyW2tleV0gPSBmaWx0ZXJba2V5XTtcclxuICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgIC4uLmNvbHVtbixcclxuICAgICAgICAgIGlkOiAnY29sdW1uJyArIGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIGdyb3VwOiAnY29sdW1uJyxcclxuICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gICAgICAgICAgY29kZTogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChleHRlcm5hbEZpbHRlcikge1xyXG4gICAgICBPYmplY3Qua2V5cyhleHRlcm5hbEZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChleHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gbnVsbCB8fCBleHRlcm5hbEZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgodGhpcy5kaXNwbGF5S2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID0gZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGV4dGVybmFsRmlsdGVycy5maW5kKGUgPT4gZS5maWVsZCA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGVyYW5nZScgfHwgaXRlbS50eXBlID09PSAnbnVtYmVycmFuZ2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2tleV0gPSB7IC4uLmV4dGVybmFsRmlsdGVyW2tleV0gfTtcclxuICAgICAgICAgIGlmICghZXh0ZXJuYWxGaWx0ZXJba2V5XT8uZnJvbSAmJiAhZXh0ZXJuYWxGaWx0ZXJba2V5XT8udG8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5maWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGlkOiAnZXh0ZXJuYWwnICsgaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdleHRlcm5hbCcsXHJcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgY29kZTogaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgICAgICAgIGZyb21UaXRsZTogaXRlbS5mcm9tVGl0bGUsXHJcbiAgICAgICAgICAgIHRvVGl0bGU6IGl0ZW0udG9UaXRsZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHsgLi4uZXh0ZXJuYWxGaWx0ZXJba2V5XSB9O1xyXG4gICAgICAgICAgaWYgKCFleHRlcm5hbEZpbHRlcltrZXldPy5mcm9tICYmICFleHRlcm5hbEZpbHRlcltrZXldPy50bykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IGV4dGVybmFsRmlsdGVyW2tleV07XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGV4dGVybmFsRmllbGRzOiBGaWVsZFtdID0gZXh0ZXJuYWxGaWx0ZXJzPy5tYXAoZSA9PiAoe1xyXG4gICAgICAuLi5lLFxyXG4gICAgICBpZDogJ2V4dGVybmFsJyArIGUuZmllbGQsXHJcbiAgICAgIGdyb3VwOiAnZXh0ZXJuYWwnLFxyXG4gICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICB9KSkgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuICAgIGNvbHVtbnM/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjb2x1bW4pIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgIGNvbHVtbkZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uZSxcclxuICAgICAgICAgICAgaWQ6ICdjb2x1bW4nICsgZS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdjb2x1bW4nLFxyXG4gICAgICAgICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICAgICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2x1bW5GaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAuLi5jb2x1bW4sXHJcbiAgICAgICAgICBpZDogJ2NvbHVtbicgKyBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICBncm91cDogJ2NvbHVtbicsXHJcbiAgICAgICAgICBjb2RlOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGFibGVGaWVsZHMgPSBbLi4uZXh0ZXJuYWxGaWVsZHMsIC4uLmNvbHVtbkZpZWxkc107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB7fTtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0gPSB0cnVlKTtcclxuICAgIHRoaXMucGFnZSA9IHRoaXMuZmllbGRzLmxlbmd0aCA+IDAgPyAyIDogMTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBleGVjdXRlID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7fTtcclxuICAgICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZmlsdGVyW2tleV0gPT09IG51bGwgfHwgdGhpcy5maWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkcy5zb21lKGUgPT4gZS5ncm91cCA9PT0gJ2NvbHVtbicgJiYgZS5jb2RlID09PSBrZXkpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcltrZXldID0gdGhpcy5maWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZXJuYWxGaWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSBudWxsIHx8IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYWNjZXB0LmVtaXQoe1xyXG4gICAgICAgIGNvZGU6IHRoaXMuY29kZSxcclxuICAgICAgICBmaWx0ZXIsXHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuY29kZSkge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybVdpdGhJbnB1dCgnRW50ZXIgeW91ciBxdWljayBmaWx0ZXIgbmFtZScpLnRoZW4oKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnF1aWNrRmlsdGVycz8uc29tZShlID0+IGUuY29kZSA9PT0gdmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb2RlIGlzIGV4aXN0ZWQnKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgZXhlY3V0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleGVjdXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0RmllbGQgPSAodmFsdWVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLnNlbGVjdGFibGVGaWVsZHMuZmlsdGVyKGUgPT4gdmFsdWVzLnNvbWUodiA9PiBlLmNvZGUgPT09IHYpKTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmdyb3VwID09PSAnZXh0ZXJuYWwnICYmIGZpZWxkLnR5cGUuaW5jbHVkZXMoJ3JhbmdlJykpIHtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdID0gdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZC5jb2RlXSB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RGaWVsZHMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkcy5maWx0ZXIoZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0pO1xyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuZ3JvdXAgPT09ICdleHRlcm5hbCcgJiYgZmllbGQudHlwZS5pbmNsdWRlcygncmFuZ2UnKSkge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZmllbGQuY29kZV0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRmllbGQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgZ3JvdXA6ICdjb2x1bW4nIHwgJ2V4dGVybmFsJztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGZyb21UaXRsZT86IHN0cmluZztcclxuICB0b1RpdGxlPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIEZpbHRlciB7XHJcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuIl19
@@ -22,7 +22,7 @@ export class SdColumnInlineFilter {
22
22
  SdColumnInlineFilter.decorators = [
23
23
  { type: Component, args: [{
24
24
  selector: 'sd-column-inline-filter',
25
- template: "<div class=\"c-inline-column\">\r\n <ng-container *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\">\r\n <sd-input *ngIf=\"column.type === 'string'\" size=\"sm\" type=\"text\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input *ngIf=\"column.type === 'number'\" size=\"sm\" type=\"number\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-select *ngIf=\"column.type === 'bool'\" size=\"sm\" [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\">\r\n </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\">\r\n </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select *ngIf=\"\r\n column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\" [multiple]=\"\r\n column?.option?.selection === 'MULTIPLE' ||\r\n column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\r\n \" [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"\r\n column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range *ngIf=\"!column.option?.useFilterDate\" size=\"sm\" [(from)]=\"columnFilter[column.field].from\"\r\n [(to)]=\"columnFilter[column.field].to\" (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time *ngIf=\"column.option?.useFilterDate\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>",
25
+ template: "<div class=\"c-inline-column\">\r\n <ng-container *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\">\r\n <sd-input *ngIf=\"column.type === 'string'\" size=\"sm\" type=\"text\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number *ngIf=\"column.type === 'number'\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select *ngIf=\"column.type === 'bool'\" size=\"sm\" [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\">\r\n </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\">\r\n </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select *ngIf=\"\r\n column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\" [multiple]=\"\r\n column?.option?.selection === 'MULTIPLE' ||\r\n column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\r\n \" [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"\r\n column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range *ngIf=\"!column.option?.useFilterDate\" size=\"sm\" [(from)]=\"columnFilter[column.field].from\"\r\n [(to)]=\"columnFilter[column.field].to\" (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time *ngIf=\"column.option?.useFilterDate\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>",
26
26
  changeDetection: ChangeDetectionStrategy.OnPush,
27
27
  styles: [":host ::ng-deep .c-inline-column .mat-form-field-wrapper{background-color:#fff;border-radius:8px;margin:8px 0 0!important;padding:0!important}"]
28
28
  },] }
@@ -34,4 +34,4 @@ SdColumnInlineFilter.propDecorators = {
34
34
  column: [{ type: Input }],
35
35
  filterChange: [{ type: Output }]
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1pbmxpbmUtZmlsdGVyL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBU25ILE1BQU0sT0FBTyxvQkFBb0I7SUFPL0I7UUFMUyxpQkFBWSxHQUVqQixFQUFFLENBQUM7UUFFRyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFlNUMsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUE7SUFmRyxDQUFDO0lBRUwsUUFBUTs7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ2pHLElBQUksY0FBQyxJQUFJLENBQUMsTUFBTSwwQ0FBRSxNQUFNLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO29CQUM3RSxJQUFJLEVBQUUsSUFBSTtvQkFDVixFQUFFLEVBQUUsSUFBSTtpQkFDVCxDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7OztZQXpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsNHlHQUFvRDtnQkFFcEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7O29CQUVFLEtBQUs7MkJBQ0wsS0FBSztxQkFHTCxLQUFLOzJCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtY29sdW1uLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RDb2x1bW5JbmxpbmVGaWx0ZXIgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XHJcbiAgQElucHV0KCkgY29sdW1uRmlsdGVyOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcclxuICB9ID0ge307XHJcbiAgQElucHV0KCkgY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbjtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCB0aGlzLmNvbHVtbi50eXBlID09PSAndGltZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICBpZiAoIXRoaXMuY29sdW1uPy5vcHRpb24/LnVzZUZpbHRlckRhdGUpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gPSB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gfHwge1xyXG4gICAgICAgICAgZnJvbTogbnVsbCxcclxuICAgICAgICAgIHRvOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1pbmxpbmUtZmlsdGVyL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBU25ILE1BQU0sT0FBTyxvQkFBb0I7SUFPL0I7UUFMUyxpQkFBWSxHQUVqQixFQUFFLENBQUM7UUFFRyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFlNUMsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUE7SUFmRyxDQUFDO0lBRUwsUUFBUTs7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ2pHLElBQUksY0FBQyxJQUFJLENBQUMsTUFBTSwwQ0FBRSxNQUFNLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO29CQUM3RSxJQUFJLEVBQUUsSUFBSTtvQkFDVixFQUFFLEVBQUUsSUFBSTtpQkFDVCxDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7OztZQXpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsMHlHQUFvRDtnQkFFcEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7O29CQUVFLEtBQUs7MkJBQ0wsS0FBSztxQkFHTCxLQUFLOzJCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtY29sdW1uLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RDb2x1bW5JbmxpbmVGaWx0ZXIgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XHJcbiAgQElucHV0KCkgY29sdW1uRmlsdGVyOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcclxuICB9ID0ge307XHJcbiAgQElucHV0KCkgY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbjtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCB0aGlzLmNvbHVtbi50eXBlID09PSAndGltZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICBpZiAoIXRoaXMuY29sdW1uPy5vcHRpb24/LnVzZUZpbHRlckRhdGUpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gPSB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gfHwge1xyXG4gICAgICAgICAgZnJvbTogbnVsbCxcclxuICAgICAgICAgIHRvOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==