@bryntum/grid-angular-thin 7.2.3 → 7.3.0

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 (43) hide show
  1. package/README.md +4 -4
  2. package/bundles/bryntum-grid-angular-thin.umd.js +761 -230
  3. package/bundles/bryntum-grid-angular-thin.umd.js.map +1 -1
  4. package/esm2015/lib/bryntum-a-i-filter-field.component.js +62 -14
  5. package/esm2015/lib/bryntum-checklist-filter-combo.component.js +62 -14
  6. package/esm2015/lib/bryntum-grid-base.component.js +78 -35
  7. package/esm2015/lib/bryntum-grid-chart-designer.component.js +61 -12
  8. package/esm2015/lib/bryntum-grid-field-filter-picker-group.component.js +65 -21
  9. package/esm2015/lib/bryntum-grid-field-filter-picker.component.js +65 -21
  10. package/esm2015/lib/bryntum-grid.component.js +78 -35
  11. package/esm2015/lib/bryntum-group-bar.component.js +61 -12
  12. package/esm2015/lib/bryntum-tree-combo.component.js +62 -14
  13. package/esm2015/lib/bryntum-tree-grid.component.js +78 -35
  14. package/esm2015/lib/grid.module.js +5 -4
  15. package/esm2015/lib/shadowdom.helper.js +82 -0
  16. package/fesm2015/bryntum-grid-angular-thin.js +738 -207
  17. package/fesm2015/bryntum-grid-angular-thin.js.map +1 -1
  18. package/lib/bryntum-a-i-filter-field.component.d.ts +87 -133
  19. package/lib/bryntum-checklist-filter-combo.component.d.ts +106 -166
  20. package/lib/bryntum-grid-base.component.d.ts +238 -303
  21. package/lib/bryntum-grid-chart-designer.component.d.ts +71 -108
  22. package/lib/bryntum-grid-field-filter-picker-group.component.d.ts +93 -143
  23. package/lib/bryntum-grid-field-filter-picker.component.d.ts +94 -145
  24. package/lib/bryntum-grid.component.d.ts +238 -303
  25. package/lib/bryntum-group-bar.component.d.ts +77 -118
  26. package/lib/bryntum-tree-combo.component.d.ts +107 -168
  27. package/lib/bryntum-tree-grid.component.d.ts +238 -303
  28. package/lib/grid.module.d.ts +2 -1
  29. package/lib/shadowdom.helper.d.ts +3 -0
  30. package/package.json +1 -1
  31. package/src/lib/bryntum-a-i-filter-field.component.ts +146 -141
  32. package/src/lib/bryntum-checklist-filter-combo.component.ts +166 -175
  33. package/src/lib/bryntum-grid-base.component.ts +275 -319
  34. package/src/lib/bryntum-grid-chart-designer.component.ts +126 -112
  35. package/src/lib/bryntum-grid-field-filter-picker-group.component.ts +152 -152
  36. package/src/lib/bryntum-grid-field-filter-picker.component.ts +152 -153
  37. package/src/lib/bryntum-grid.component.ts +275 -319
  38. package/src/lib/bryntum-group-bar.component.ts +132 -122
  39. package/src/lib/bryntum-theme-combo.component.ts +128 -0
  40. package/src/lib/bryntum-tree-combo.component.ts +166 -176
  41. package/src/lib/bryntum-tree-grid.component.ts +275 -319
  42. package/src/lib/grid.module.ts +2 -1
  43. package/src/lib/shadowdom.helper.ts +91 -0
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Angular Bryntum Grid Shared module
3
3
  */
4
+ import { CommonModule } from '@angular/common';
4
5
  import { NgModule } from '@angular/core';
5
6
  import { BryntumAIFilterFieldComponent } from './bryntum-a-i-filter-field.component';
6
7
  import { BryntumChecklistFilterComboComponent } from './bryntum-checklist-filter-combo.component';
@@ -25,7 +26,7 @@ BryntumGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
25
26
  BryntumGridFieldFilterPickerGroupComponent,
26
27
  BryntumGroupBarComponent,
27
28
  BryntumTreeComboComponent,
28
- BryntumTreeGridComponent], exports: [BryntumAIFilterFieldComponent,
29
+ BryntumTreeGridComponent], imports: [CommonModule], exports: [BryntumAIFilterFieldComponent,
29
30
  BryntumChecklistFilterComboComponent,
30
31
  BryntumGridComponent,
31
32
  BryntumGridBaseComponent,
@@ -35,7 +36,7 @@ BryntumGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
35
36
  BryntumGroupBarComponent,
36
37
  BryntumTreeComboComponent,
37
38
  BryntumTreeGridComponent] });
38
- BryntumGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: BryntumGridModule, imports: [[]] });
39
+ BryntumGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: BryntumGridModule, imports: [[CommonModule]] });
39
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: BryntumGridModule, decorators: [{
40
41
  type: NgModule,
41
42
  args: [{
@@ -51,7 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImpor
51
52
  BryntumTreeComboComponent,
52
53
  BryntumTreeGridComponent
53
54
  ],
54
- imports: [],
55
+ imports: [CommonModule],
55
56
  exports: [
56
57
  BryntumAIFilterFieldComponent,
57
58
  BryntumChecklistFilterComboComponent,
@@ -66,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImpor
66
67
  ]
67
68
  }]
68
69
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnQvc3JjL2xpYi9ncmlkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7RUFFRTtBQUNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckcsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBK0J6RSxNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBMUJ0Qiw2QkFBNkI7UUFDN0Isb0NBQW9DO1FBQ3BDLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsaUNBQWlDO1FBQ2pDLHFDQUFxQztRQUNyQywwQ0FBMEM7UUFDMUMsd0JBQXdCO1FBQ3hCLHlCQUF5QjtRQUN6Qix3QkFBd0IsYUFLeEIsNkJBQTZCO1FBQzdCLG9DQUFvQztRQUNwQyxvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLGlDQUFpQztRQUNqQyxxQ0FBcUM7UUFDckMsMENBQTBDO1FBQzFDLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsd0JBQXdCOytHQUduQixpQkFBaUIsWUFmaEIsRUFBRTsyRkFlSCxpQkFBaUI7a0JBN0I3QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRzt3QkFFWCw2QkFBNkI7d0JBQzdCLG9DQUFvQzt3QkFDcEMsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMscUNBQXFDO3dCQUNyQywwQ0FBMEM7d0JBQzFDLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7cUJBQzNCO29CQUNELE9BQU8sRUFBRyxFQUFFO29CQUNaLE9BQU8sRUFBRzt3QkFFTiw2QkFBNkI7d0JBQzdCLG9DQUFvQzt3QkFDcEMsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMscUNBQXFDO3dCQUNyQywwQ0FBMEM7d0JBQzFDLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7cUJBQzNCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIEFuZ3VsYXIgQnJ5bnR1bSBHcmlkIFNoYXJlZCBtb2R1bGVcbiovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCcnludHVtQUlGaWx0ZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vYnJ5bnR1bS1hLWktZmlsdGVyLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcnludHVtQ2hlY2tsaXN0RmlsdGVyQ29tYm9Db21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tY2hlY2tsaXN0LWZpbHRlci1jb21iby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bUdyaWRDb21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bUdyaWRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWdyaWQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bUdyaWRDaGFydERlc2lnbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWdyaWQtY2hhcnQtZGVzaWduZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJyeW50dW1HcmlkRmllbGRGaWx0ZXJQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tZ3JpZC1maWVsZC1maWx0ZXItcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcnludHVtR3JpZEZpZWxkRmlsdGVyUGlja2VyR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tZ3JpZC1maWVsZC1maWx0ZXItcGlja2VyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcnludHVtR3JvdXBCYXJDb21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tZ3JvdXAtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcnludHVtVHJlZUNvbWJvQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLXRyZWUtY29tYm8uY29tcG9uZW50JztcbmltcG9ydCB7IEJyeW50dW1UcmVlR3JpZENvbXBvbmVudCB9IGZyb20gJy4vYnJ5bnR1bS10cmVlLWdyaWQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnMgOiBbXG5cbiAgICAgICAgQnJ5bnR1bUFJRmlsdGVyRmllbGRDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1DaGVja2xpc3RGaWx0ZXJDb21ib0NvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1HcmlkQmFzZUNvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRDaGFydERlc2lnbmVyQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZEZpZWxkRmlsdGVyUGlja2VyQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZEZpZWxkRmlsdGVyUGlja2VyR3JvdXBDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1Hcm91cEJhckNvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bVRyZWVDb21ib0NvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bVRyZWVHcmlkQ29tcG9uZW50XG4gICAgXSxcbiAgICBpbXBvcnRzIDogW10sXG4gICAgZXhwb3J0cyA6IFtcblxuICAgICAgICBCcnludHVtQUlGaWx0ZXJGaWVsZENvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUNoZWNrbGlzdEZpbHRlckNvbWJvQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZENvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRCYXNlQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZENoYXJ0RGVzaWduZXJDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1HcmlkRmllbGRGaWx0ZXJQaWNrZXJDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1HcmlkRmllbGRGaWx0ZXJQaWNrZXJHcm91cENvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyb3VwQmFyQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtVHJlZUNvbWJvQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtVHJlZUdyaWRDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEJyeW50dW1HcmlkTW9kdWxlIHsgfVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnQvc3JjL2xpYi9ncmlkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7RUFFRTtBQUNGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQStCekUsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQTFCdEIsNkJBQTZCO1FBQzdCLG9DQUFvQztRQUNwQyxvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLGlDQUFpQztRQUNqQyxxQ0FBcUM7UUFDckMsMENBQTBDO1FBQzFDLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsd0JBQXdCLGFBRWpCLFlBQVksYUFHbkIsNkJBQTZCO1FBQzdCLG9DQUFvQztRQUNwQyxvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLGlDQUFpQztRQUNqQyxxQ0FBcUM7UUFDckMsMENBQTBDO1FBQzFDLHdCQUF3QjtRQUN4Qix5QkFBeUI7UUFDekIsd0JBQXdCOytHQUduQixpQkFBaUIsWUFmaEIsQ0FBQyxZQUFZLENBQUM7MkZBZWYsaUJBQWlCO2tCQTdCN0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUc7d0JBRVgsNkJBQTZCO3dCQUM3QixvQ0FBb0M7d0JBQ3BDLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixpQ0FBaUM7d0JBQ2pDLHFDQUFxQzt3QkFDckMsMENBQTBDO3dCQUMxQyx3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUcsQ0FBQyxZQUFZLENBQUM7b0JBQ3hCLE9BQU8sRUFBRzt3QkFFTiw2QkFBNkI7d0JBQzdCLG9DQUFvQzt3QkFDcEMsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMscUNBQXFDO3dCQUNyQywwQ0FBMEM7d0JBQzFDLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7cUJBQzNCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4qIEFuZ3VsYXIgQnJ5bnR1bSBHcmlkIFNoYXJlZCBtb2R1bGVcbiovXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnJ5bnR1bUFJRmlsdGVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tYS1pLWZpbHRlci1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bUNoZWNrbGlzdEZpbHRlckNvbWJvQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWNoZWNrbGlzdC1maWx0ZXItY29tYm8uY29tcG9uZW50JztcbmltcG9ydCB7IEJyeW50dW1HcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEJyeW50dW1HcmlkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYnJ5bnR1bS1ncmlkLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJyeW50dW1HcmlkQ2hhcnREZXNpZ25lckNvbXBvbmVudCB9IGZyb20gJy4vYnJ5bnR1bS1ncmlkLWNoYXJ0LWRlc2lnbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcnludHVtR3JpZEZpZWxkRmlsdGVyUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWdyaWQtZmllbGQtZmlsdGVyLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bUdyaWRGaWVsZEZpbHRlclBpY2tlckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWdyaWQtZmllbGQtZmlsdGVyLXBpY2tlci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bUdyb3VwQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9icnludHVtLWdyb3VwLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJ5bnR1bVRyZWVDb21ib0NvbXBvbmVudCB9IGZyb20gJy4vYnJ5bnR1bS10cmVlLWNvbWJvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcnludHVtVHJlZUdyaWRDb21wb25lbnQgfSBmcm9tICcuL2JyeW50dW0tdHJlZS1ncmlkLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zIDogW1xuXG4gICAgICAgIEJyeW50dW1BSUZpbHRlckZpZWxkQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtQ2hlY2tsaXN0RmlsdGVyQ29tYm9Db21wb25lbnQsXG4gICAgICAgIEJyeW50dW1HcmlkQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZEJhc2VDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1HcmlkQ2hhcnREZXNpZ25lckNvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRGaWVsZEZpbHRlclBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRGaWVsZEZpbHRlclBpY2tlckdyb3VwQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JvdXBCYXJDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1UcmVlQ29tYm9Db21wb25lbnQsXG4gICAgICAgIEJyeW50dW1UcmVlR3JpZENvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0cyA6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHMgOiBbXG5cbiAgICAgICAgQnJ5bnR1bUFJRmlsdGVyRmllbGRDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1DaGVja2xpc3RGaWx0ZXJDb21ib0NvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1HcmlkQmFzZUNvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bUdyaWRDaGFydERlc2lnbmVyQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZEZpZWxkRmlsdGVyUGlja2VyQ29tcG9uZW50LFxuICAgICAgICBCcnludHVtR3JpZEZpZWxkRmlsdGVyUGlja2VyR3JvdXBDb21wb25lbnQsXG4gICAgICAgIEJyeW50dW1Hcm91cEJhckNvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bVRyZWVDb21ib0NvbXBvbmVudCxcbiAgICAgICAgQnJ5bnR1bVRyZWVHcmlkQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBCcnludHVtR3JpZE1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,82 @@
1
+ import { GlobalEvents } from '@bryntum/core-thin';
2
+ // Module-level registry of all open shadow roots that host Bryntum widgets.
3
+ // Populated lazily by collectOpenShadowRoots() the first time it is called, and
4
+ // kept up to date via registerShadowRoot / unregisterShadowRoot.
5
+ const openShadowRoots = new Set();
6
+ // Walks the DOM tree starting from `root` and collects every open shadow root found.
7
+ // Results are cached in openShadowRoots after the first traversal so subsequent calls
8
+ // are O(1). Recursive so nested shadow roots are also discovered.
9
+ function collectOpenShadowRoots(root = document) {
10
+ if (openShadowRoots.size > 0) {
11
+ return Array.from(openShadowRoots);
12
+ }
13
+ const roots = [];
14
+ Array.from(root.querySelectorAll('*')).forEach(el => {
15
+ if (el.shadowRoot) {
16
+ roots.push(el.shadowRoot);
17
+ roots.push(...collectOpenShadowRoots(el.shadowRoot));
18
+ }
19
+ });
20
+ roots.forEach(r => openShadowRoots.add(r));
21
+ return roots;
22
+ }
23
+ // Updates the href and data-bryntum-theme attribute of every theme <link> inside all
24
+ // registered shadow roots to mirror the new head link after a theme change.
25
+ function syncThemeToShadowRoots(headLink) {
26
+ var _a;
27
+ const href = headLink.href;
28
+ const themeAttr = (_a = headLink.getAttribute('data-bryntum-theme')) !== null && _a !== void 0 ? _a : '';
29
+ collectOpenShadowRoots().forEach(shadowRoot => {
30
+ Array.from(shadowRoot.querySelectorAll('link[data-bryntum-theme]')).forEach(link => {
31
+ link.setAttribute('data-bryntum-theme', themeAttr);
32
+ link.href = href;
33
+ });
34
+ });
35
+ }
36
+ // Adds a shadow root to the registry so it is included in theme sync operations.
37
+ // Called by BryntumThemeComboComponent.ngOnInit when it detects it is inside a shadow root.
38
+ export function registerShadowRoot(shadowRoot) {
39
+ openShadowRoots.add(shadowRoot);
40
+ }
41
+ // Removes a shadow root from the registry.
42
+ // Called by BryntumThemeComboComponent.ngOnDestroy to clean up on component teardown.
43
+ export function unregisterShadowRoot(shadowRoot) {
44
+ openShadowRoots.delete(shadowRoot);
45
+ }
46
+ // Injects a clone of each document.head theme <link> into every registered shadow root
47
+ // that does not already have one. This is required because CSS from document.head does
48
+ // not cascade into shadow DOM, so Bryntum theme styles would be absent without this.
49
+ // Safe to call multiple times — the presence check prevents duplicate injection.
50
+ export function initThemeInShadowRoots() {
51
+ const headThemeLinks = Array.from(document.head.querySelectorAll('link[data-bryntum-theme]'));
52
+ if (!headThemeLinks.length) {
53
+ return;
54
+ }
55
+ collectOpenShadowRoots().forEach(shadowRoot => {
56
+ if (shadowRoot.querySelector('link[data-bryntum-theme]')) {
57
+ return;
58
+ }
59
+ headThemeLinks.forEach(headLink => {
60
+ if (!headLink.href) {
61
+ return;
62
+ }
63
+ // Clone the head link to preserve all attributes, then ensure absolute href
64
+ const clone = headLink.cloneNode();
65
+ clone.href = headLink.href;
66
+ shadowRoot.appendChild(clone);
67
+ });
68
+ });
69
+ }
70
+ // Listens for Bryntum's internal theme-change event and keeps every shadow root's
71
+ // theme link in sync with the new document.head link. Fires after the old <link>s
72
+ // are removed and the new one is fully loaded in document.head.
73
+ // @ts-ignore - ion() is public but not present on GlobalEventsSingleton typings
74
+ GlobalEvents.ion({
75
+ theme() {
76
+ const link = document.head.querySelector('link[data-bryntum-theme]');
77
+ if (link === null || link === void 0 ? void 0 : link.href) {
78
+ syncThemeToShadowRoots(link);
79
+ }
80
+ }
81
+ });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93ZG9tLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudC9zcmMvbGliL3NoYWRvd2RvbS5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFDaEYsaUVBQWlFO0FBQ2pFLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFjLENBQUM7QUFFOUMscUZBQXFGO0FBQ3JGLHNGQUFzRjtBQUN0RixrRUFBa0U7QUFDbEUsU0FBUyxzQkFBc0IsQ0FBQyxPQUErQixRQUFRO0lBQ25FLElBQUksZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7UUFDMUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RDO0lBQ0QsTUFBTSxLQUFLLEdBQWtCLEVBQUUsQ0FBQztJQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNoRCxJQUFLLEVBQTZDLENBQUMsVUFBVSxFQUFFO1lBQzNELEtBQUssQ0FBQyxJQUFJLENBQUUsRUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsQ0FBRSxFQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQscUZBQXFGO0FBQ3JGLDRFQUE0RTtBQUM1RSxTQUFTLHNCQUFzQixDQUFDLFFBQTBCOztJQUN0RCxNQUFNLElBQUksR0FBUyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2pDLE1BQU0sU0FBUyxHQUFJLE1BQUEsUUFBUSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7SUFFckUsc0JBQXNCLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDMUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQWtCLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELGlGQUFpRjtBQUNqRiw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFVBQXVCO0lBQ3RELGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELDJDQUEyQztBQUMzQyxzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFVBQXVCO0lBQ3hELGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELHVGQUF1RjtBQUN2Rix1RkFBdUY7QUFDdkYscUZBQXFGO0FBQ3JGLGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsc0JBQXNCO0lBQ2xDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBa0IsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBRS9HLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1FBQ3hCLE9BQU87S0FDVjtJQUVELHNCQUFzQixFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzFDLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFO1lBQ3RELE9BQU87U0FDVjtRQUVELGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU87YUFDVjtZQUNELDRFQUE0RTtZQUM1RSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFxQixDQUFDO1lBQ3RELEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQixVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLGtGQUFrRjtBQUNsRixnRUFBZ0U7QUFDaEUsZ0ZBQWdGO0FBQ2hGLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDYixLQUFLO1FBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQWtCLDBCQUEwQixDQUFDLENBQUM7UUFDdEYsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBSSxFQUFFO1lBQ1osc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2xvYmFsRXZlbnRzIH0gZnJvbSAnQGJyeW50dW0vY29yZS10aGluJztcblxuLy8gTW9kdWxlLWxldmVsIHJlZ2lzdHJ5IG9mIGFsbCBvcGVuIHNoYWRvdyByb290cyB0aGF0IGhvc3QgQnJ5bnR1bSB3aWRnZXRzLlxuLy8gUG9wdWxhdGVkIGxhemlseSBieSBjb2xsZWN0T3BlblNoYWRvd1Jvb3RzKCkgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLCBhbmRcbi8vIGtlcHQgdXAgdG8gZGF0ZSB2aWEgcmVnaXN0ZXJTaGFkb3dSb290IC8gdW5yZWdpc3RlclNoYWRvd1Jvb3QuXG5jb25zdCBvcGVuU2hhZG93Um9vdHMgPSBuZXcgU2V0PFNoYWRvd1Jvb3Q+KCk7XG5cbi8vIFdhbGtzIHRoZSBET00gdHJlZSBzdGFydGluZyBmcm9tIGByb290YCBhbmQgY29sbGVjdHMgZXZlcnkgb3BlbiBzaGFkb3cgcm9vdCBmb3VuZC5cbi8vIFJlc3VsdHMgYXJlIGNhY2hlZCBpbiBvcGVuU2hhZG93Um9vdHMgYWZ0ZXIgdGhlIGZpcnN0IHRyYXZlcnNhbCBzbyBzdWJzZXF1ZW50IGNhbGxzXG4vLyBhcmUgTygxKS4gUmVjdXJzaXZlIHNvIG5lc3RlZCBzaGFkb3cgcm9vdHMgYXJlIGFsc28gZGlzY292ZXJlZC5cbmZ1bmN0aW9uIGNvbGxlY3RPcGVuU2hhZG93Um9vdHMocm9vdCA6IERvY3VtZW50IHwgU2hhZG93Um9vdCA9IGRvY3VtZW50KSA6IFNoYWRvd1Jvb3RbXSB7XG4gICAgaWYgKG9wZW5TaGFkb3dSb290cy5zaXplID4gMCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShvcGVuU2hhZG93Um9vdHMpO1xuICAgIH1cbiAgICBjb25zdCByb290cyA6IFNoYWRvd1Jvb3RbXSA9IFtdO1xuICAgIEFycmF5LmZyb20ocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcqJykpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBpZiAoKGVsIGFzIEVsZW1lbnQgJiB7IHNoYWRvd1Jvb3Q/IDogU2hhZG93Um9vdCB9KS5zaGFkb3dSb290KSB7XG4gICAgICAgICAgICByb290cy5wdXNoKChlbCBhcyBhbnkpLnNoYWRvd1Jvb3QpO1xuICAgICAgICAgICAgcm9vdHMucHVzaCguLi5jb2xsZWN0T3BlblNoYWRvd1Jvb3RzKChlbCBhcyBhbnkpLnNoYWRvd1Jvb3QpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJvb3RzLmZvckVhY2gociA9PiBvcGVuU2hhZG93Um9vdHMuYWRkKHIpKTtcbiAgICByZXR1cm4gcm9vdHM7XG59XG5cbi8vIFVwZGF0ZXMgdGhlIGhyZWYgYW5kIGRhdGEtYnJ5bnR1bS10aGVtZSBhdHRyaWJ1dGUgb2YgZXZlcnkgdGhlbWUgPGxpbms+IGluc2lkZSBhbGxcbi8vIHJlZ2lzdGVyZWQgc2hhZG93IHJvb3RzIHRvIG1pcnJvciB0aGUgbmV3IGhlYWQgbGluayBhZnRlciBhIHRoZW1lIGNoYW5nZS5cbmZ1bmN0aW9uIHN5bmNUaGVtZVRvU2hhZG93Um9vdHMoaGVhZExpbmsgOiBIVE1MTGlua0VsZW1lbnQpIDogdm9pZCB7XG4gICAgY29uc3QgaHJlZiAgICAgICA9IGhlYWRMaW5rLmhyZWY7XG4gICAgY29uc3QgdGhlbWVBdHRyICA9IGhlYWRMaW5rLmdldEF0dHJpYnV0ZSgnZGF0YS1icnludHVtLXRoZW1lJykgPz8gJyc7XG5cbiAgICBjb2xsZWN0T3BlblNoYWRvd1Jvb3RzKCkuZm9yRWFjaChzaGFkb3dSb290ID0+IHtcbiAgICAgICAgQXJyYXkuZnJvbShzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTExpbmtFbGVtZW50PignbGlua1tkYXRhLWJyeW50dW0tdGhlbWVdJykpLmZvckVhY2gobGluayA9PiB7XG4gICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZGF0YS1icnludHVtLXRoZW1lJywgdGhlbWVBdHRyKTtcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IGhyZWY7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG4vLyBBZGRzIGEgc2hhZG93IHJvb3QgdG8gdGhlIHJlZ2lzdHJ5IHNvIGl0IGlzIGluY2x1ZGVkIGluIHRoZW1lIHN5bmMgb3BlcmF0aW9ucy5cbi8vIENhbGxlZCBieSBCcnludHVtVGhlbWVDb21ib0NvbXBvbmVudC5uZ09uSW5pdCB3aGVuIGl0IGRldGVjdHMgaXQgaXMgaW5zaWRlIGEgc2hhZG93IHJvb3QuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QgOiBTaGFkb3dSb290KSA6IHZvaWQge1xuICAgIG9wZW5TaGFkb3dSb290cy5hZGQoc2hhZG93Um9vdCk7XG59XG5cbi8vIFJlbW92ZXMgYSBzaGFkb3cgcm9vdCBmcm9tIHRoZSByZWdpc3RyeS5cbi8vIENhbGxlZCBieSBCcnludHVtVGhlbWVDb21ib0NvbXBvbmVudC5uZ09uRGVzdHJveSB0byBjbGVhbiB1cCBvbiBjb21wb25lbnQgdGVhcmRvd24uXG5leHBvcnQgZnVuY3Rpb24gdW5yZWdpc3RlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdCA6IFNoYWRvd1Jvb3QpIDogdm9pZCB7XG4gICAgb3BlblNoYWRvd1Jvb3RzLmRlbGV0ZShzaGFkb3dSb290KTtcbn1cblxuLy8gSW5qZWN0cyBhIGNsb25lIG9mIGVhY2ggZG9jdW1lbnQuaGVhZCB0aGVtZSA8bGluaz4gaW50byBldmVyeSByZWdpc3RlcmVkIHNoYWRvdyByb290XG4vLyB0aGF0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBvbmUuIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBDU1MgZnJvbSBkb2N1bWVudC5oZWFkIGRvZXNcbi8vIG5vdCBjYXNjYWRlIGludG8gc2hhZG93IERPTSwgc28gQnJ5bnR1bSB0aGVtZSBzdHlsZXMgd291bGQgYmUgYWJzZW50IHdpdGhvdXQgdGhpcy5cbi8vIFNhZmUgdG8gY2FsbCBtdWx0aXBsZSB0aW1lcyDigJQgdGhlIHByZXNlbmNlIGNoZWNrIHByZXZlbnRzIGR1cGxpY2F0ZSBpbmplY3Rpb24uXG5leHBvcnQgZnVuY3Rpb24gaW5pdFRoZW1lSW5TaGFkb3dSb290cygpIDogdm9pZCB7XG4gICAgY29uc3QgaGVhZFRoZW1lTGlua3MgPSBBcnJheS5mcm9tKGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvckFsbDxIVE1MTGlua0VsZW1lbnQ+KCdsaW5rW2RhdGEtYnJ5bnR1bS10aGVtZV0nKSk7XG5cbiAgICBpZiAoIWhlYWRUaGVtZUxpbmtzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29sbGVjdE9wZW5TaGFkb3dSb290cygpLmZvckVhY2goc2hhZG93Um9vdCA9PiB7XG4gICAgICAgIGlmIChzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbZGF0YS1icnludHVtLXRoZW1lXScpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBoZWFkVGhlbWVMaW5rcy5mb3JFYWNoKGhlYWRMaW5rID0+IHtcbiAgICAgICAgICAgIGlmICghaGVhZExpbmsuaHJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENsb25lIHRoZSBoZWFkIGxpbmsgdG8gcHJlc2VydmUgYWxsIGF0dHJpYnV0ZXMsIHRoZW4gZW5zdXJlIGFic29sdXRlIGhyZWZcbiAgICAgICAgICAgIGNvbnN0IGNsb25lID0gaGVhZExpbmsuY2xvbmVOb2RlKCkgYXMgSFRNTExpbmtFbGVtZW50O1xuICAgICAgICAgICAgY2xvbmUuaHJlZiA9IGhlYWRMaW5rLmhyZWY7XG4gICAgICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbi8vIExpc3RlbnMgZm9yIEJyeW50dW0ncyBpbnRlcm5hbCB0aGVtZS1jaGFuZ2UgZXZlbnQgYW5kIGtlZXBzIGV2ZXJ5IHNoYWRvdyByb290J3Ncbi8vIHRoZW1lIGxpbmsgaW4gc3luYyB3aXRoIHRoZSBuZXcgZG9jdW1lbnQuaGVhZCBsaW5rLiBGaXJlcyBhZnRlciB0aGUgb2xkIDxsaW5rPnNcbi8vIGFyZSByZW1vdmVkIGFuZCB0aGUgbmV3IG9uZSBpcyBmdWxseSBsb2FkZWQgaW4gZG9jdW1lbnQuaGVhZC5cbi8vIEB0cy1pZ25vcmUgLSBpb24oKSBpcyBwdWJsaWMgYnV0IG5vdCBwcmVzZW50IG9uIEdsb2JhbEV2ZW50c1NpbmdsZXRvbiB0eXBpbmdzXG5HbG9iYWxFdmVudHMuaW9uKHtcbiAgICB0aGVtZSgpIDogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3I8SFRNTExpbmtFbGVtZW50PignbGlua1tkYXRhLWJyeW50dW0tdGhlbWVdJyk7XG4gICAgICAgIGlmIChsaW5rPy5ocmVmKSB7XG4gICAgICAgICAgICBzeW5jVGhlbWVUb1NoYWRvd1Jvb3RzKGxpbmspO1xuICAgICAgICB9XG4gICAgfVxufSk7XG4iXX0=