@fundamental-ngx/core 0.33.6-rc.3 → 0.33.6-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/date-picker/package.json +1 -1
  16. package/datetime/package.json +1 -1
  17. package/datetime-picker/package.json +1 -1
  18. package/dialog/package.json +1 -1
  19. package/dynamic-page/esm2020/dynamic-page.component.mjs +3 -2
  20. package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -1
  21. package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  22. package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -1
  23. package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  24. package/dynamic-page/package.json +1 -1
  25. package/dynamic-side-content/package.json +1 -1
  26. package/esm2020/dynamic-page/dynamic-page.component.mjs +3 -2
  27. package/facets/package.json +1 -1
  28. package/feed-input/package.json +1 -1
  29. package/feed-list-item/package.json +1 -1
  30. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -1
  31. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  32. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -1
  33. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  34. package/file-uploader/package.json +1 -1
  35. package/fixed-card-layout/package.json +1 -1
  36. package/flexible-column-layout/package.json +1 -1
  37. package/form/package.json +1 -1
  38. package/formatted-text/package.json +1 -1
  39. package/grid-list/package.json +1 -1
  40. package/icon/package.json +1 -1
  41. package/illustrated-message/package.json +1 -1
  42. package/infinite-scroll/package.json +1 -1
  43. package/info-label/package.json +1 -1
  44. package/inline-help/package.json +1 -1
  45. package/input-group/package.json +1 -1
  46. package/layout-grid/package.json +1 -1
  47. package/layout-panel/package.json +1 -1
  48. package/link/package.json +1 -1
  49. package/list/package.json +1 -1
  50. package/menu/package.json +1 -1
  51. package/message-box/package.json +1 -1
  52. package/message-strip/package.json +1 -1
  53. package/message-toast/package.json +1 -1
  54. package/micro-process-flow/package.json +1 -1
  55. package/mobile-mode/package.json +1 -1
  56. package/multi-input/package.json +1 -1
  57. package/nested-list/package.json +1 -1
  58. package/notification/package.json +1 -1
  59. package/object-identifier/package.json +1 -1
  60. package/object-marker/package.json +1 -1
  61. package/object-number/package.json +1 -1
  62. package/object-status/package.json +1 -1
  63. package/package.json +1 -1
  64. package/pagination/package.json +1 -1
  65. package/panel/package.json +1 -1
  66. package/popover/package.json +1 -1
  67. package/product-switch/package.json +1 -1
  68. package/progress-indicator/package.json +1 -1
  69. package/quick-view/package.json +1 -1
  70. package/radio/package.json +1 -1
  71. package/rating-indicator/package.json +1 -1
  72. package/resizable-card-layout/package.json +1 -1
  73. package/scroll-spy/package.json +1 -1
  74. package/scrollbar/package.json +1 -1
  75. package/segmented-button/package.json +1 -1
  76. package/select/package.json +1 -1
  77. package/shared/package.json +1 -1
  78. package/shellbar/package.json +1 -1
  79. package/side-navigation/package.json +1 -1
  80. package/slider/package.json +1 -1
  81. package/split-button/package.json +1 -1
  82. package/splitter/package.json +1 -1
  83. package/status-indicator/package.json +1 -1
  84. package/step-input/package.json +1 -1
  85. package/switch/package.json +1 -1
  86. package/table/package.json +1 -1
  87. package/tabs/package.json +1 -1
  88. package/text/package.json +1 -1
  89. package/tile/package.json +1 -1
  90. package/time/package.json +1 -1
  91. package/time-picker/package.json +1 -1
  92. package/timeline/package.json +1 -1
  93. package/title/package.json +1 -1
  94. package/token/package.json +1 -1
  95. package/toolbar/package.json +1 -1
  96. package/tree/package.json +1 -1
  97. package/upload-collection/package.json +1 -1
  98. package/utils/package.json +1 -1
  99. package/vertical-navigation/package.json +1 -1
  100. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/breadcrumb",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/busy-indicator",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/button",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/calendar",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/card/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/card",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/carousel",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/checkbox",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/combobox",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/date-picker",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/datetime-picker",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/dialog",
3
- "version": "0.33.6-rc.3",
3
+ "version": "0.33.6-rc.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -167,7 +167,8 @@ export class DynamicPageComponent {
167
167
  fromEvent(element, 'scroll')
168
168
  .pipe(debounceTime(10), takeUntil(this._onDestroy$))
169
169
  .subscribe(() => {
170
- const collapse = !this._dynamicPageService.pinned.value && element.scrollTop > 0;
170
+ const collapse = !this._dynamicPageService.pinned.value &&
171
+ (element.scrollTop > 0 || element.scrollHeight <= element.clientHeight);
171
172
  this._dynamicPageService.collapsed.next(collapse);
172
173
  });
173
174
  }
@@ -250,4 +251,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
250
251
  type: ViewChild,
251
252
  args: ['dynamicPageElement']
252
253
  }] } });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2R5bmFtaWMtcGFnZS9keW5hbWljLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZHluYW1pYy1wYWdlL2R5bmFtaWMtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQXdELE1BQU0sYUFBYSxDQUFDO0FBQzVHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUU3RixPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1B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QkFBQywwQkFBMEI7Z0JBS3hDLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBS3pDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBEWU5BTUlDX1BBR0VfQ0xBU1NfTkFNRSwgRHluYW1pY1BhZ2VCYWNrZ3JvdW5kVHlwZSwgRHluYW1pY1BhZ2VSZXNwb25zaXZlU2l6ZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IER5bmFtaWNQYWdlQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1wYWdlLWNvbnRlbnQvZHluYW1pYy1wYWdlLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNQYWdlU3ViaGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXBhZ2UtaGVhZGVyL3N1YmhlYWRlci9keW5hbWljLXBhZ2Utc3ViaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1wYWdlLWhlYWRlci9oZWFkZXIvZHluYW1pYy1wYWdlLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1BhZ2VXcmFwcGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9keW5hbWljLXBhZ2Utd3JhcHBlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHluYW1pY1BhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9keW5hbWljLXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBhZGRDbGFzc05hbWVUb0VsZW1lbnQsIGR5bmFtaWNQYWdlV2lkdGhUb1NpemUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRhYkxpc3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFicyc7XG5pbXBvcnQgeyBGbGV4aWJsZUNvbHVtbkxheW91dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0JztcblxuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1keW5hbWljLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2R5bmFtaWMtcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbRHluYW1pY1BhZ2VTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFBhZ2Ugcm9sZSAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICByb2xlID0gJ3JlZ2lvbic7XG5cbiAgICAvKiogYXJpYSBsYWJlbCBmb3IgdGhlIHBhZ2UgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogc2V0cyBiYWNrZ3JvdW5kIGZvciBjb250ZW50IHRvIGBsaXN0YCwgYHRyYW5zcGFyZW50YCwgb3IgYHNvbGlkYCBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgICAqIERlZmF1bHQgaXMgYHNvbGlkYC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGJhY2tncm91bmQ6IER5bmFtaWNQYWdlQmFja2dyb3VuZFR5cGUgPSAnc29saWQnO1xuXG4gICAgLyoqIFdoZXRoZXIgRHluYW1pY1BhZ2Ugc2hvdWxkIGhhdmUgcmVzcG9uc2l2ZSBzaWRlcyBzcGFjaW5nIGNoYW5naW5nIHdpdGggUGFnZSB3aW5kb3cgd2lkdGguXG4gICAgICogbWF4LXdpZHRoOiA1OTlweCAgICAgICAgICAgICAgICAgICAgICAgICAtIHNtYWxsXG4gICAgICogbWluLXdpZHRoOiA2MDBweCBhbmQgbWF4LXdpZHRoOiAxMDIzcHggICAtIG1lZGl1bVxuICAgICAqIG1pbi13aWR0aDogMTAyNHB4IGFuZCBtYXgtd2lkdGg6IDE0MzlweCAgLSBsYXJnZVxuICAgICAqIG1pbi13aWR0aDogMTQ0MHB4ICAgICAgICAgICAgICAgICAgICAgICAgLSBleHRyYSBsYXJnZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXV0b1Jlc3BvbnNpdmUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogc2V0cyBzaXplIHdoaWNoIGluIHR1cm4gYWRkcyBjb3JyZXNwb25kaW5nIHBhZGRpbmcgZm9yIHRoZSBzaXplIHR5cGUuXG4gICAgICogc2l6ZSBjYW4gYmUgYHNtYWxsYCwgYG1lZGl1bWAsIGBsYXJnZWAsIG9yIGBleHRyYS1sYXJnZWAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2l6ZShzaXplOiBEeW5hbWljUGFnZVJlc3BvbnNpdmVTaXplKSB7XG4gICAgICAgIHRoaXMuX3NpemUgPSBzaXplO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVTaXplVG9DaGlsZHJlbigpO1xuICAgIH1cblxuICAgIGdldCBzaXplKCk6IER5bmFtaWNQYWdlUmVzcG9uc2l2ZVNpemUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgICB9XG5cbiAgICBfc2l6ZTogRHluYW1pY1BhZ2VSZXNwb25zaXZlU2l6ZSA9ICdleHRyYS1sYXJnZSc7XG5cbiAgICAvKiogT2Zmc2V0IGluIFBYXG4gICAgICogU2hvdWxkIGJlIGFkZGVkLCB3aGVuIHRoZXJlIGlzIHNvbWV0aGluZyBlbHNlIGF0IHRoZSBib3R0b20gYW5kIGR5bmFtaWMgcGFnZSBpcyBub3QgZXhwYW5kZWQgdG8gYm90dG9tJ3MgY29ybmVyc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgb2Zmc2V0ID0gMDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgZHluYW1pYyBwYWdlIHNob3VsZCBiZSBleHBhbmRlZCBpbiB3aG9sZSBwYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhwYW5kQ29udGVudCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgdG8gaGVhZGVyIGNvbXBvbmVudCAgKi9cbiAgICBAQ29udGVudENoaWxkKER5bmFtaWNQYWdlU3ViaGVhZGVyQ29tcG9uZW50KVxuICAgIF9wYWdlU3ViaGVhZGVyQ29tcG9uZW50OiBEeW5hbWljUGFnZVN1YmhlYWRlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIHJlZmVyZW5jZSB0byB0aXRsZSBjb21wb25lbnQgICovXG4gICAgQENvbnRlbnRDaGlsZChEeW5hbWljUGFnZUhlYWRlckNvbXBvbmVudClcbiAgICBfaGVhZGVyQ29tcG9uZW50OiBEeW5hbWljUGFnZUhlYWRlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIHJlZmVyZW5jZSB0byBjb250ZW50IGNvbXBvbmVudCAgKi9cbiAgICBAQ29udGVudENoaWxkKER5bmFtaWNQYWdlQ29udGVudENvbXBvbmVudClcbiAgICBfY29udGVudENvbXBvbmVudDogRHluYW1pY1BhZ2VDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gcmVmZXJlbmNlIHRvIHRhYiBjb21wb25lbnQgKi9cbiAgICBAQ29udGVudENoaWxkKFRhYkxpc3RDb21wb25lbnQpXG4gICAgX3RhYkNvbXBvbmVudDogVGFiTGlzdENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZHluYW1pY1BhZ2VFbGVtZW50JylcbiAgICBfZHluYW1pY1BhZ2VFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGVhZGVyQ29sbGFwc2libGUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKiovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgX2R5bmFtaWNQYWdlU2VydmljZTogRHluYW1pY1BhZ2VTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb2x1bW5MYXlvdXQ6IEZsZXhpYmxlQ29sdW1uTGF5b3V0Q29tcG9uZW50LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9keW5hbWljUGFnZVdyYXBwZXI6IER5bmFtaWNQYWdlV3JhcHBlckRpcmVjdGl2ZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zaXplQ2hhbmdlSGFuZGxlKCk7XG4gICAgICAgIHRoaXMuX3JlbW92ZVNoYWRvd1doZW5UYWJDb21wb25lbnQoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25SZXNpemUoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25Db2xsYXBzZSgpO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVQcm9wZXJ0aWVzVG9DaGlsZHJlbigpO1xuICAgICAgICBpZiAodGhpcy5fcGFnZVN1YmhlYWRlckNvbXBvbmVudD8uY29sbGFwc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FkZFNjcm9sbExpc3RlbmVycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbHVtbkxheW91dCAmJiB0aGlzLmF1dG9SZXNwb25zaXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Ub0xheW91dENoYW5nZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9zZXRDb250YWluZXJQb3NpdGlvbnMoKSk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiB0b2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGhlYWRlciBvbiBjbGljayBvZiB0aXRsZSBhcmVhLiAqL1xuICAgIHRvZ2dsZUNvbGxhcHNlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faGVhZGVyQ29sbGFwc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlU2VydmljZS50b2dnbGVDb2xsYXBzZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHJlY2hlY2sgZm9yIHNwYWNpbmcgYW5kIHNpemluZyBvZiBlbGVtZW50cyBpbnNpZGUgRHluYW1pY1BhZ2UuXG4gICAgICovXG4gICAgcmVmcmVzaFNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldENvbnRhaW5lclBvc2l0aW9ucygpO1xuICAgICAgICB0aGlzLl9zaXplQ2hhbmdlSGFuZGxlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0aGUgcG9zaXRpb25zIG9mIHRoZSB0YWJzIGFuZCBjb250ZW50IHdpdGggcmVzcGVjdCB0byB0aGUgd2luZG93ICovXG4gICAgcHJpdmF0ZSBfc2V0Q29udGFpbmVyUG9zaXRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXREeW5hbWljUGFnZUhlaWdodCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvcGFnYXRlUHJvcGVydGllc1RvQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hlYWRlckNvbGxhcHNpYmxlID0gdGhpcy5fcGFnZVN1YmhlYWRlckNvbXBvbmVudD8uY29sbGFwc2libGU7XG4gICAgICAgIHRoaXMuX3Byb3BhZ2F0ZVNpemVUb0NoaWxkcmVuKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBGdW5jdGlvbmFsaXR5IGhhbmRsaW5nIGNvbHVtbiBsYXlvdXQgY2hhbmdlcyxcbiAgICAgKiAtIHJlY2FsY3VsYXRlIGhlaWdodCBvZiBjb250ZW50IGVsZW1lbnRcbiAgICAgKiAtIHJlY2hlY2sgc2l6ZSBkZXBlbmRpbmcgb24gd2lkdGggb2YgRHluYW1pY1BhZ2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xheW91dENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uTGF5b3V0LmxheW91dENoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgZGVsYXkoMTUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hTaXplKCk7XG4gICAgICAgICAgICB0aGlzLl9zaXplQ2hhbmdlSGFuZGxlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvcGFnYXRlU2l6ZVRvQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9oZWFkZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hlYWRlckNvbXBvbmVudC5zaXplID0gdGhpcy5zaXplO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldENvbnRhaW5lclBvc2l0aW9ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25Db2xsYXBzZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHluYW1pY1BhZ2VTZXJ2aWNlLnN1YmhlYWRlclZpc2liaWxpdHlDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2V0Q29udGFpbmVyUG9zaXRpb25zKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q2FsY3VsYXRlZEZ1bGxIZWlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbVRvcCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICByZXR1cm4gJ2NhbGMoMTAwdmggLSAnICsgKGRpc3RhbmNlRnJvbVRvcCArIHRoaXMub2Zmc2V0KSArICdweCknO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2l6ZUNoYW5nZUhhbmRsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmIHx8ICF0aGlzLmF1dG9SZXNwb25zaXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZHluYW1pY1BhZ2VXaWR0aCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgdGhpcy5fZHluYW1pY1BhZ2VTZXJ2aWNlLnBpeGVsc1NpemVDaGFuZ2VkLm5leHQoZHluYW1pY1BhZ2VXaWR0aCk7XG4gICAgICAgIGNvbnN0IHNpemUgPSBkeW5hbWljUGFnZVdpZHRoVG9TaXplKGR5bmFtaWNQYWdlV2lkdGgpO1xuXG4gICAgICAgIGlmIChzaXplICE9PSB0aGlzLnNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZFNjcm9sbExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFiRWxlbWVudCA9IHRoaXMuX3RhYkNvbXBvbmVudD8uY29udGVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKHRhYkVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3Rlbk9uU2Nyb2xsKHRhYkVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSB0aGlzLl9jb250ZW50Q29tcG9uZW50Py5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpZiAoY29udGVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3Rlbk9uU2Nyb2xsKGNvbnRlbnRFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25TY3JvbGwoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgZnJvbUV2ZW50KGVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sbGFwc2UgPSAhdGhpcy5fZHluYW1pY1BhZ2VTZXJ2aWNlLnBpbm5lZC52YWx1ZSAmJiBlbGVtZW50LnNjcm9sbFRvcCA+IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHluYW1pY1BhZ2VTZXJ2aWNlLmNvbGxhcHNlZC5uZXh0KGNvbGxhcHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBmb3Igd2luZG93IHJlc2l6ZSBhbmQgYWRqdXN0IHRhYiBhbmQgY29udGVudCBwb3NpdGlvbnMgYWNjb3JkaW5nbHkgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9keW5hbWljUGFnZVdyYXBwZXIgPyB0aGlzLl9saXN0ZW5Ub1dyYXBwZXJSZXNpemUoKSA6IHRoaXMuX2xpc3RlblRvV2luZG93UmVzaXplKCk7XG5cbiAgICAgICAgbGlzdGVuZXIucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyUG9zaXRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9zaXplQ2hhbmdlSGFuZGxlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9XcmFwcGVyUmVzaXplKCk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiB7XG4gICAgICAgIHJldHVybiByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2R5bmFtaWNQYWdlV3JhcHBlci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9XaW5kb3dSZXNpemUoKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKG1hcCgoKSA9PiBbXSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogc2V0IHRvcCBwb3NpdGlvbiBvZiBEeW5hbWljUGFnZSBvbiBzY3JvbGxpbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXREeW5hbWljUGFnZUhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljUGFnZUVsZW1lbnQgfHwgIXRoaXMuZXhwYW5kQ29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9keW5hbWljUGFnZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ2hlaWdodCcsIHRoaXMuX2dldENhbGN1bGF0ZWRGdWxsSGVpZ2h0KGVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZVNoYWRvd1doZW5UYWJDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcGFnZVN1YmhlYWRlckNvbXBvbmVudD8uY29sbGFwc2libGUgfHwgIXRoaXMuX3RhYkNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGluQ29sbGFwc2VTaGFkb3dFbGVtZW50ID0gdGhpcy5fcGFnZVN1YmhlYWRlckNvbXBvbmVudD8ucGluQ29sbGFwc2VDb250YWluZXI7XG5cbiAgICAgICAgaWYgKHBpbkNvbGxhcHNlU2hhZG93RWxlbWVudCkge1xuICAgICAgICAgICAgYWRkQ2xhc3NOYW1lVG9FbGVtZW50KFxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLFxuICAgICAgICAgICAgICAgIHBpbkNvbGxhcHNlU2hhZG93RWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIERZTkFNSUNfUEFHRV9DTEFTU19OQU1FLmR5bmFtaWNQYWdlQ29sbGFwc2libGVIZWFkZXJQaW5Db2xsYXBzZU5vU2hhZG93XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNlY3Rpb25cbiAgICAjZHluYW1pY1BhZ2VFbGVtZW50XG4gICAgY2xhc3M9XCJmZC1keW5hbWljLXBhZ2VcIlxuICAgIFtjbGFzcy5mZC1keW5hbWljLXBhZ2UtLXNtXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgIFtjbGFzcy5mZC1keW5hbWljLXBhZ2UtLW1kXT1cInNpemUgPT09ICdtZWRpdW0nXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS1sZ109XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS14bF09XCJzaXplID09PSAnZXh0cmEtbGFyZ2UnXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS10cmFuc3BhcmVudC1iZ109XCJiYWNrZ3JvdW5kID09PSAndHJhbnNwYXJlbnQnXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS1saXN0LWJnXT1cImJhY2tncm91bmQgPT09ICdsaXN0J1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJmZC1keW5hbWljLXBhZ2VfX2hlYWRlclwiIFtjbGFzcy5mZC1keW5hbWljLXBhZ2VfX2hlYWRlci0tbm90LWNvbGxhcHNpYmxlXT1cIiFfaGVhZGVyQ29sbGFwc2libGVcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZHluYW1pYy1wYWdlLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZHluYW1pYy1wYWdlLXN1YmhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC10YWItbGlzdFwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC1keW5hbWljLXBhZ2UtY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8Zm9vdGVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC1keW5hbWljLXBhZ2UtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZm9vdGVyPlxuPC9zZWN0aW9uPlxuIl19
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2R5bmFtaWMtcGFnZS9keW5hbWljLXBhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZHluYW1pYy1wYWdlL2R5bmFtaWMtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQXdELE1BQU0sYUFBYSxDQUFDO0FBQzVHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUU3RixPQUFPLEVBQUUsU0FBUyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBVXJFLE1BQU0sT0FBTyxvQkFBb0I7SUFnRjdCLGNBQWM7SUFDZCxZQUNjLEdBQXNCLEVBQ3hCLFdBQW9DLEVBQ3BDLFNBQW9CLEVBQ3BCLG1CQUF1QyxFQUMzQixhQUE0QyxFQUM1QyxtQkFBZ0Q7UUFMMUQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBK0I7UUFDNUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE2QjtRQXRGeEUsaUJBQWlCO1FBR2pCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFNaEI7OztXQUdHO1FBRUgsZUFBVSxHQUE4QixPQUFPLENBQUM7UUFFaEQ7Ozs7O1dBS0c7UUFFSCxtQkFBYyxHQUFHLElBQUksQ0FBQztRQWdCdEIsVUFBSyxHQUE4QixhQUFhLENBQUM7UUFFakQ7O1dBRUc7UUFFSCxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRVg7O1dBRUc7UUFFSCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQXNCckIsY0FBYztRQUNkLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUUxQixlQUFlO1FBQ0UsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVUvRCxDQUFDO0lBOURKOzs7T0FHRztJQUNILElBQ0ksSUFBSSxDQUFDLElBQStCO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQW9ERCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxXQUFXLEVBQUU7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDOUI7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMzQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNoQztRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsY0FBYztRQUNWLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsMkVBQTJFO0lBQ25FLHNCQUFzQjtRQUMxQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztJQUNOLDhCQUE4QjtRQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFdBQVcsQ0FBQztRQUNwRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sd0JBQXdCO1FBQzVCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx5QkFBeUI7YUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGNBQWM7SUFDTix3QkFBd0IsQ0FBQyxPQUFvQjtRQUNqRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUM1RCxPQUFPLGVBQWUsR0FBRyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMzQyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRSxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO1FBQ3ZFLElBQUksVUFBVSxFQUFFO1lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNwQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDO1FBQ3pFLElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGVBQWUsQ0FBQyxPQUFvQjtRQUN4QyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQzthQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbkQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sUUFBUSxHQUNWLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN0QyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELHdGQUF3RjtJQUNoRixlQUFlO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXpHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixzQkFBc0I7UUFDMUIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxjQUFjO0lBQ04scUJBQXFCO1FBQ3pCLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsY0FBYztJQUNOLDZCQUE2QjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbkUsT0FBTztTQUNWO1FBRUQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsb0JBQW9CLENBQUM7UUFFcEYsSUFBSSx3QkFBd0IsRUFBRTtZQUMxQixxQkFBcUIsQ0FDakIsSUFBSSxDQUFDLFNBQVMsRUFDZCx3QkFBd0IsQ0FBQyxhQUFhLEVBQ3RDLHVCQUF1QixDQUFDLCtDQUErQyxDQUMxRSxDQUFDO1NBQ0w7SUFDTCxDQUFDOztpSEF2UVEsb0JBQW9CO3FHQUFwQixvQkFBb0IsNFFBRmxCLENBQUMsa0JBQWtCLENBQUMsK0VBeURqQiw2QkFBNkIsbUZBSTdCLDBCQUEwQixvRkFJMUIsMkJBQTJCLGdGQUkzQixnQkFBZ0IsMktDeEdsQywwbUNBMEJBOzJGRFdhLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDSSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLGtCQUFrQixDQUFDOzswQkF3RjFCLFFBQVE7OzBCQUNSLFFBQVE7NENBbkZiLElBQUk7c0JBRkgsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxXQUFXO2dCQUt4QixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sVUFBVTtzQkFEVCxLQUFLO2dCQVVOLGNBQWM7c0JBRGIsS0FBSztnQkFRRixJQUFJO3NCQURQLEtBQUs7Z0JBZ0JOLE1BQU07c0JBREwsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLDZCQUE2QjtnQkFLM0MsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUt4QyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsMkJBQTJCO2dCQUt6QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUs5QixtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc2l6ZU9ic2VydmFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRFlOQU1JQ19QQUdFX0NMQVNTX05BTUUsIER5bmFtaWNQYWdlQmFja2dyb3VuZFR5cGUsIER5bmFtaWNQYWdlUmVzcG9uc2l2ZVNpemUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtcGFnZS1jb250ZW50L2R5bmFtaWMtcGFnZS1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZVN1YmhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1wYWdlLWhlYWRlci9zdWJoZWFkZXIvZHluYW1pYy1wYWdlLXN1YmhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY1BhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtcGFnZS1oZWFkZXIvaGVhZGVyL2R5bmFtaWMtcGFnZS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNQYWdlV3JhcHBlckRpcmVjdGl2ZSB9IGZyb20gJy4vZHluYW1pYy1wYWdlLXdyYXBwZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IER5bmFtaWNQYWdlU2VydmljZSB9IGZyb20gJy4vZHluYW1pYy1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgYWRkQ2xhc3NOYW1lVG9FbGVtZW50LCBkeW5hbWljUGFnZVdpZHRoVG9TaXplIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUYWJMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RhYnMnO1xuaW1wb3J0IHsgRmxleGlibGVDb2x1bW5MYXlvdXRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZmxleGlibGUtY29sdW1uLWxheW91dCc7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZHluYW1pYy1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9keW5hbWljLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0R5bmFtaWNQYWdlU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBQYWdlIHJvbGUgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcm9sZSA9ICdyZWdpb24nO1xuXG4gICAgLyoqIGFyaWEgbGFiZWwgZm9yIHRoZSBwYWdlICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIHNldHMgYmFja2dyb3VuZCBmb3IgY29udGVudCB0byBgbGlzdGAsIGB0cmFuc3BhcmVudGAsIG9yIGBzb2xpZGAgYmFja2dyb3VuZCBjb2xvci5cbiAgICAgKiBEZWZhdWx0IGlzIGBzb2xpZGAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBiYWNrZ3JvdW5kOiBEeW5hbWljUGFnZUJhY2tncm91bmRUeXBlID0gJ3NvbGlkJztcblxuICAgIC8qKiBXaGV0aGVyIER5bmFtaWNQYWdlIHNob3VsZCBoYXZlIHJlc3BvbnNpdmUgc2lkZXMgc3BhY2luZyBjaGFuZ2luZyB3aXRoIFBhZ2Ugd2luZG93IHdpZHRoLlxuICAgICAqIG1heC13aWR0aDogNTk5cHggICAgICAgICAgICAgICAgICAgICAgICAgLSBzbWFsbFxuICAgICAqIG1pbi13aWR0aDogNjAwcHggYW5kIG1heC13aWR0aDogMTAyM3B4ICAgLSBtZWRpdW1cbiAgICAgKiBtaW4td2lkdGg6IDEwMjRweCBhbmQgbWF4LXdpZHRoOiAxNDM5cHggIC0gbGFyZ2VcbiAgICAgKiBtaW4td2lkdGg6IDE0NDBweCAgICAgICAgICAgICAgICAgICAgICAgIC0gZXh0cmEgbGFyZ2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9SZXNwb25zaXZlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIHNldHMgc2l6ZSB3aGljaCBpbiB0dXJuIGFkZHMgY29ycmVzcG9uZGluZyBwYWRkaW5nIGZvciB0aGUgc2l6ZSB0eXBlLlxuICAgICAqIHNpemUgY2FuIGJlIGBzbWFsbGAsIGBtZWRpdW1gLCBgbGFyZ2VgLCBvciBgZXh0cmEtbGFyZ2VgLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNpemUoc2l6ZTogRHluYW1pY1BhZ2VSZXNwb25zaXZlU2l6ZSkge1xuICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlU2l6ZVRvQ2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICBnZXQgc2l6ZSgpOiBEeW5hbWljUGFnZVJlc3BvbnNpdmVTaXplIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgfVxuXG4gICAgX3NpemU6IER5bmFtaWNQYWdlUmVzcG9uc2l2ZVNpemUgPSAnZXh0cmEtbGFyZ2UnO1xuXG4gICAgLyoqIE9mZnNldCBpbiBQWFxuICAgICAqIFNob3VsZCBiZSBhZGRlZCwgd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgZWxzZSBhdCB0aGUgYm90dG9tIGFuZCBkeW5hbWljIHBhZ2UgaXMgbm90IGV4cGFuZGVkIHRvIGJvdHRvbSdzIGNvcm5lcnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG9mZnNldCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGR5bmFtaWMgcGFnZSBzaG91bGQgYmUgZXhwYW5kZWQgaW4gd2hvbGUgcGFnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGV4cGFuZENvbnRlbnQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gcmVmZXJlbmNlIHRvIGhlYWRlciBjb21wb25lbnQgICovXG4gICAgQENvbnRlbnRDaGlsZChEeW5hbWljUGFnZVN1YmhlYWRlckNvbXBvbmVudClcbiAgICBfcGFnZVN1YmhlYWRlckNvbXBvbmVudDogRHluYW1pY1BhZ2VTdWJoZWFkZXJDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgdG8gdGl0bGUgY29tcG9uZW50ICAqL1xuICAgIEBDb250ZW50Q2hpbGQoRHluYW1pY1BhZ2VIZWFkZXJDb21wb25lbnQpXG4gICAgX2hlYWRlckNvbXBvbmVudDogRHluYW1pY1BhZ2VIZWFkZXJDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgdG8gY29udGVudCBjb21wb25lbnQgICovXG4gICAgQENvbnRlbnRDaGlsZChEeW5hbWljUGFnZUNvbnRlbnRDb21wb25lbnQpXG4gICAgX2NvbnRlbnRDb21wb25lbnQ6IER5bmFtaWNQYWdlQ29udGVudENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIHJlZmVyZW5jZSB0byB0YWIgY29tcG9uZW50ICovXG4gICAgQENvbnRlbnRDaGlsZChUYWJMaXN0Q29tcG9uZW50KVxuICAgIF90YWJDb21wb25lbnQ6IFRhYkxpc3RDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2R5bmFtaWNQYWdlRWxlbWVudCcpXG4gICAgX2R5bmFtaWNQYWdlRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hlYWRlckNvbGxhcHNpYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICoqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIF9keW5hbWljUGFnZVNlcnZpY2U6IER5bmFtaWNQYWdlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29sdW1uTGF5b3V0OiBGbGV4aWJsZUNvbHVtbkxheW91dENvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZHluYW1pY1BhZ2VXcmFwcGVyOiBEeW5hbWljUGFnZVdyYXBwZXJEaXJlY3RpdmVcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2l6ZUNoYW5nZUhhbmRsZSgpO1xuICAgICAgICB0aGlzLl9yZW1vdmVTaGFkb3dXaGVuVGFiQ29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUmVzaXplKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uQ29sbGFwc2UoKTtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlUHJvcGVydGllc1RvQ2hpbGRyZW4oKTtcbiAgICAgICAgaWYgKHRoaXMuX3BhZ2VTdWJoZWFkZXJDb21wb25lbnQ/LmNvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRTY3JvbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW5MYXlvdXQgJiYgdGhpcy5hdXRvUmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9MYXlvdXRDaGFuZ2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0Q29udGFpbmVyUG9zaXRpb25zKCkpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogdG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkZXIgb24gY2xpY2sgb2YgdGl0bGUgYXJlYS4gKi9cbiAgICB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2hlYWRlckNvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9keW5hbWljUGFnZVNlcnZpY2UudG9nZ2xlQ29sbGFwc2VkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyByZWNoZWNrIGZvciBzcGFjaW5nIGFuZCBzaXppbmcgb2YgZWxlbWVudHMgaW5zaWRlIER5bmFtaWNQYWdlLlxuICAgICAqL1xuICAgIHJlZnJlc2hTaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRDb250YWluZXJQb3NpdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fc2l6ZUNoYW5nZUhhbmRsZSgpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgdGhlIHBvc2l0aW9ucyBvZiB0aGUgdGFicyBhbmQgY29udGVudCB3aXRoIHJlc3BlY3QgdG8gdGhlIHdpbmRvdyAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lclBvc2l0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0RHluYW1pY1BhZ2VIZWlnaHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZVByb3BlcnRpZXNUb0NoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oZWFkZXJDb2xsYXBzaWJsZSA9IHRoaXMuX3BhZ2VTdWJoZWFkZXJDb21wb25lbnQ/LmNvbGxhcHNpYmxlO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVTaXplVG9DaGlsZHJlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb25hbGl0eSBoYW5kbGluZyBjb2x1bW4gbGF5b3V0IGNoYW5nZXMsXG4gICAgICogLSByZWNhbGN1bGF0ZSBoZWlnaHQgb2YgY29udGVudCBlbGVtZW50XG4gICAgICogLSByZWNoZWNrIHNpemUgZGVwZW5kaW5nIG9uIHdpZHRoIG9mIER5bmFtaWNQYWdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9MYXlvdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbkxheW91dC5sYXlvdXRDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksIGRlbGF5KDE1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoU2l6ZSgpO1xuICAgICAgICAgICAgdGhpcy5fc2l6ZUNoYW5nZUhhbmRsZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb3BhZ2F0ZVNpemVUb0NoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faGVhZGVyQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJDb21wb25lbnQuc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRDb250YWluZXJQb3NpdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uQ29sbGFwc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlU2VydmljZS5zdWJoZWFkZXJWaXNpYmlsaXR5Q2hhbmdlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NldENvbnRhaW5lclBvc2l0aW9ucygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENhbGN1bGF0ZWRGdWxsSGVpZ2h0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Ub3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgICAgcmV0dXJuICdjYWxjKDEwMHZoIC0gJyArIChkaXN0YW5jZUZyb21Ub3AgKyB0aGlzLm9mZnNldCkgKyAncHgpJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NpemVDaGFuZ2VIYW5kbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZWxlbWVudFJlZiB8fCAhdGhpcy5hdXRvUmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGR5bmFtaWNQYWdlV2lkdGggPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlU2VydmljZS5waXhlbHNTaXplQ2hhbmdlZC5uZXh0KGR5bmFtaWNQYWdlV2lkdGgpO1xuICAgICAgICBjb25zdCBzaXplID0gZHluYW1pY1BhZ2VXaWR0aFRvU2l6ZShkeW5hbWljUGFnZVdpZHRoKTtcblxuICAgICAgICBpZiAoc2l6ZSAhPT0gdGhpcy5zaXplKSB7XG4gICAgICAgICAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hZGRTY3JvbGxMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYkVsZW1lbnQgPSB0aGlzLl90YWJDb21wb25lbnQ/LmNvbnRlbnRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0YWJFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5PblNjcm9sbCh0YWJFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5fY29udGVudENvbXBvbmVudD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGNvbnRlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5PblNjcm9sbChjb250ZW50RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uU2Nyb2xsKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGZyb21FdmVudChlbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNlID1cbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuX2R5bmFtaWNQYWdlU2VydmljZS5waW5uZWQudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgKGVsZW1lbnQuc2Nyb2xsVG9wID4gMCB8fCBlbGVtZW50LnNjcm9sbEhlaWdodCA8PSBlbGVtZW50LmNsaWVudEhlaWdodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHluYW1pY1BhZ2VTZXJ2aWNlLmNvbGxhcHNlZC5uZXh0KGNvbGxhcHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBmb3Igd2luZG93IHJlc2l6ZSBhbmQgYWRqdXN0IHRhYiBhbmQgY29udGVudCBwb3NpdGlvbnMgYWNjb3JkaW5nbHkgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9keW5hbWljUGFnZVdyYXBwZXIgPyB0aGlzLl9saXN0ZW5Ub1dyYXBwZXJSZXNpemUoKSA6IHRoaXMuX2xpc3RlblRvV2luZG93UmVzaXplKCk7XG5cbiAgICAgICAgbGlzdGVuZXIucGlwZShkZWJvdW5jZVRpbWUoMTAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyUG9zaXRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9zaXplQ2hhbmdlSGFuZGxlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9XcmFwcGVyUmVzaXplKCk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiB7XG4gICAgICAgIHJldHVybiByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2R5bmFtaWNQYWdlV3JhcHBlci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9XaW5kb3dSZXNpemUoKTogT2JzZXJ2YWJsZTxSZXNpemVPYnNlcnZlckVudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKG1hcCgoKSA9PiBbXSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogc2V0IHRvcCBwb3NpdGlvbiBvZiBEeW5hbWljUGFnZSBvbiBzY3JvbGxpbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXREeW5hbWljUGFnZUhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9keW5hbWljUGFnZUVsZW1lbnQgfHwgIXRoaXMuZXhwYW5kQ29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9keW5hbWljUGFnZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ2hlaWdodCcsIHRoaXMuX2dldENhbGN1bGF0ZWRGdWxsSGVpZ2h0KGVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZVNoYWRvd1doZW5UYWJDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcGFnZVN1YmhlYWRlckNvbXBvbmVudD8uY29sbGFwc2libGUgfHwgIXRoaXMuX3RhYkNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGluQ29sbGFwc2VTaGFkb3dFbGVtZW50ID0gdGhpcy5fcGFnZVN1YmhlYWRlckNvbXBvbmVudD8ucGluQ29sbGFwc2VDb250YWluZXI7XG5cbiAgICAgICAgaWYgKHBpbkNvbGxhcHNlU2hhZG93RWxlbWVudCkge1xuICAgICAgICAgICAgYWRkQ2xhc3NOYW1lVG9FbGVtZW50KFxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLFxuICAgICAgICAgICAgICAgIHBpbkNvbGxhcHNlU2hhZG93RWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIERZTkFNSUNfUEFHRV9DTEFTU19OQU1FLmR5bmFtaWNQYWdlQ29sbGFwc2libGVIZWFkZXJQaW5Db2xsYXBzZU5vU2hhZG93XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNlY3Rpb25cbiAgICAjZHluYW1pY1BhZ2VFbGVtZW50XG4gICAgY2xhc3M9XCJmZC1keW5hbWljLXBhZ2VcIlxuICAgIFtjbGFzcy5mZC1keW5hbWljLXBhZ2UtLXNtXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICAgIFtjbGFzcy5mZC1keW5hbWljLXBhZ2UtLW1kXT1cInNpemUgPT09ICdtZWRpdW0nXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS1sZ109XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS14bF09XCJzaXplID09PSAnZXh0cmEtbGFyZ2UnXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS10cmFuc3BhcmVudC1iZ109XCJiYWNrZ3JvdW5kID09PSAndHJhbnNwYXJlbnQnXCJcbiAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlLS1saXN0LWJnXT1cImJhY2tncm91bmQgPT09ICdsaXN0J1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJmZC1keW5hbWljLXBhZ2VfX2hlYWRlclwiIFtjbGFzcy5mZC1keW5hbWljLXBhZ2VfX2hlYWRlci0tbm90LWNvbGxhcHNpYmxlXT1cIiFfaGVhZGVyQ29sbGFwc2libGVcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZHluYW1pYy1wYWdlLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtZHluYW1pYy1wYWdlLXN1YmhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC10YWItbGlzdFwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC1keW5hbWljLXBhZ2UtY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8Zm9vdGVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC1keW5hbWljLXBhZ2UtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZm9vdGVyPlxuPC9zZWN0aW9uPlxuIl19
@@ -678,7 +678,8 @@ class DynamicPageComponent {
678
678
  fromEvent(element, 'scroll')
679
679
  .pipe(debounceTime(10), takeUntil(this._onDestroy$))
680
680
  .subscribe(() => {
681
- const collapse = !this._dynamicPageService.pinned.value && element.scrollTop > 0;
681
+ const collapse = !this._dynamicPageService.pinned.value &&
682
+ (element.scrollTop > 0 || element.scrollHeight <= element.clientHeight);
682
683
  this._dynamicPageService.collapsed.next(collapse);
683
684
  });
684
685
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-dynamic-page.mjs","sources":["../../../../../libs/core/src/lib/dynamic-page/constants.ts","../../../../../libs/core/src/lib/dynamic-page/utils.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.config.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.service.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-wrapper.directive.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.module.ts","../../../../../libs/core/src/lib/dynamic-page/fundamental-ngx-core-dynamic-page.ts"],"sourcesContent":["export const DYNAMIC_PAGE_CLASS_NAME = {\n dynamicPage: 'fd-dynamic-page',\n dynamicPageTitleArea: 'fd-dynamic-page__title-area',\n dynamicPageMainContainer: 'fd-dynamic-page__main-container',\n dynamicPageBreadcrumbTitleContainer: 'fd-dynamic-page__breadcrumb-title-container',\n dynamicPageTitleAreaCollapsed: 'fd-dynamic-page__title-area--collapsed',\n dynamicPageTitleContainer: 'fd-dynamic-page__title-container',\n dynamicPageTitle: 'fd-dynamic-page__title',\n dynamicPageBreadcrumb: 'fd-dynamic-page__breadcrumb',\n dynamicPageKeyInfo: 'fd-dynamic-page__title-content',\n dynamicPageToolbar: 'fd-dynamic-page__toolbar',\n dynamicPageLayoutActionsToolbar: 'fd-dynamic-page__toolbar--actions',\n dynamicPageLayoutContentToolbar: 'fd-dynamic-page__toolbar--content',\n dynamicPageHeader: 'fd-dynamic-page__header',\n dynamicPageCollapsibleHeader: 'fd-dynamic-page__collapsible-header',\n dynamicPageCollapsibleHeaderPinCollapseNoShadow:\n 'fd-dynamic-page__collapsible-header-visibility-container--no-shadow',\n dynamicPageTabs: 'fd-dynamic-page__tabs',\n dynamicPageTabsAddShadow: 'fd-dynamic-page__tabs--add-shadow',\n dynamicPageContent: 'fd-dynamic-page__content',\n dynamicPageSummarizedTitleArea: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaExtraLarge: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaNoShadow: 'fd-dynamic-page__summarized-title-area--no-shadow',\n dynamicPageSummarizedTitle: 'fd-dynamic-page__summarized-title',\n dynamicPageSummarizedTitleCollapsed: 'fd-dynamic-page__summarized-title-area--collapsed'\n} as const;\n\nexport type DynamicPageBackgroundType = 'solid' | 'list' | 'transparent';\n\nexport type DynamicPageResponsiveSize = 'small' | 'medium' | 'large' | 'extra-large';\n","import { Renderer2 } from '@angular/core';\nimport { DynamicPageResponsiveSize } from './constants';\n\nexport const addClassNameToElement = (renderer: Renderer2, element: Element, className: string): void => {\n renderer.addClass(element, className);\n};\n\n/** @hidden Returns dynamic page size based on width\n * @param width - dynamic page window width\n **/\nexport function dynamicPageWidthToSize(width: number): DynamicPageResponsiveSize {\n if (width < 599) {\n return 'small';\n } else if (width < 1023) {\n return 'medium';\n } else if (width < 1439) {\n return 'large';\n }\n return 'extra-large';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../constants';\nimport { addClassNameToElement } from '../utils';\n\n@Component({\n selector: 'fd-dynamic-page-content',\n templateUrl: './dynamic-page-content.component.html',\n styleUrls: ['./dynamic-page-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageContentComponent implements OnInit {\n /**\n * label for the tab. If label is provided, tab navigation will be internally set up.\n */\n @Input()\n tabLabel: string;\n\n /**\n * a unique identifier for this content\n */\n @Input()\n id: string;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef<HTMLElement>, public _renderer: Renderer2) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageContent);\n }\n\n /** Element reference to host of content dynamic page */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n}\n","<ng-content></ng-content>\n<div class=\"footer-spacer\"></div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Default options for core dynamic-page\n */\n@Injectable({ providedIn: 'root' })\nexport class DynamicPageConfig {\n /**\n * aria label for expand/collapse button when the Dynamic Page is collapsed\n */\n expandLabel = 'Expand Header';\n\n /**\n * aria label for expand/collapse button when the Dynamic Page is expanded\n */\n collapseLabel = 'Collapse Header';\n\n /**\n * aria label for pin button when the Dynamic Page should be pinned\n */\n pinLabel = 'Pin Header';\n\n /**\n * aria label for pin button when the Panel should be unpinned\n */\n unpinLabel = 'Unpin Header';\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable()\nexport class DynamicPageService {\n /** @hidden */\n collapsed = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pinned = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pixelsSizeChanged = new BehaviorSubject<number>(0);\n\n /** @hidden */\n subheaderVisibilityChange = new Subject<void>();\n\n /** @hidden */\n toggleCollapsed(): void {\n this.collapsed.next(!this.collapsed.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n HostBinding,\n ChangeDetectorRef\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { DynamicPageConfig } from '../../dynamic-page.config';\nimport { DynamicPageService } from '../../dynamic-page.service';\n\nlet dynamicPageSubHeaderId = 0;\n@Component({\n selector: 'fd-dynamic-page-subheader',\n templateUrl: './dynamic-page-subheader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageSubheaderComponent {\n /**\n * whether the header can be collapsed. True by default. If set to false, both pin/collapse buttons disappear\n * and the header stays visible\n */\n @Input()\n collapsible = true;\n\n /**\n * whether the header should be allowed to be pinned or unpinned. When set, the pin button shows up.\n * Pinning the header will make the header stay visible and the collapse button(if present) will disappear until unpinned.\n */\n @Input()\n pinnable = false;\n\n /**\n * the initial state of the header. Set to true if header should be collapsed.\n */\n @Input()\n set collapsed(collapsed: boolean) {\n this._handleCollapsedChange(collapsed);\n }\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n /**\n * ARIA label for button when the header is collapsed\n */\n @Input()\n expandLabel: string = this._dynamicPageConfig.expandLabel;\n\n /**\n * ARIA label for button when the header is expanded\n */\n @Input()\n collapseLabel: string = this._dynamicPageConfig.collapseLabel;\n\n /** Header role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /**\n * id for header\n */\n @Input()\n @HostBinding('attr.id')\n id = `fd-dynamic-page-header-id-${dynamicPageSubHeaderId++}`;\n\n /**\n * aria label for header\n */\n @Input()\n headerAriaLabel: string;\n\n /**\n * aria label for pin state of pin button\n */\n @Input()\n pinAriaLabel: string = this._dynamicPageConfig.pinLabel;\n\n /**\n * aria label for unpin state of pin button\n */\n @Input()\n unpinAriaLabel: string = this._dynamicPageConfig.unpinLabel;\n\n /** Collapse/Expand change event raised */\n @Output()\n collapsedChange = new EventEmitter<boolean>();\n\n /** Reference to page header content */\n @ViewChild('pincollapseContainer')\n pinCollapseContainer: ElementRef<HTMLElement>;\n\n /**\n * tracking if pin button is pinned\n */\n _pinned = false;\n\n /**\n * @hidden\n * tracking expand/collapse button\n */\n private _collapsed = false;\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n protected _dynamicPageConfig: DynamicPageConfig,\n private _dynamicPageService: DynamicPageService\n ) {\n this._dynamicPageService.collapsed\n .pipe(distinctUntilChanged())\n .subscribe((collapsed) => this._handleCollapsedChange(collapsed));\n }\n\n /**\n * toggles the state of the header and\n * handles expanded/collapsed event\n */\n toggleCollapse(): void {\n this._pinned = false;\n this._handleCollapsedChange(!this._collapsed);\n }\n\n /**\n * @hidden\n * click action on pin button\n */\n togglePinned(): void {\n this._pinned = !this._pinned;\n this._dynamicPageService.pinned.next(this._pinned);\n }\n\n private _handleCollapsedChange(collapsed: boolean): void {\n if (collapsed === this._collapsed) {\n return;\n }\n\n this._collapsed = collapsed;\n this._dynamicPageService.collapsed.next(collapsed);\n this.collapsedChange.emit(this._collapsed);\n this._cd.detectChanges();\n this._dynamicPageService.subheaderVisibilityChange.next();\n }\n}\n","<div class=\"fd-dynamic-page__collapsible-header-container\">\n <div\n class=\"fd-dynamic-page__collapsible-header\"\n [attr.aria-label]=\"headerAriaLabel\"\n [attr.aria-hidden]=\"collapsed\"\n [attr.id]=\"id\"\n role=\"region\"\n #headerContent\n >\n <ng-content></ng-content>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container\" #pincollapseContainer>\n <ng-container *ngIf=\"collapsible\">\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--left-gradient\"></div>\n <div\n role=\"toolbar\"\n aria-label=\"Pin/Collapse actions\"\n class=\"fd-dynamic-page__collapsible-header-visibility-container--button-group\"\n >\n <button\n fd-button\n class=\"fd-dynamic-page__collapse-button\"\n aria-haspopup=\"true\"\n [ariaLabel]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"id\"\n (click)=\"toggleCollapse()\"\n >\n <i *ngIf=\"!collapsed\" class=\"sap-icon--slim-arrow-up\"></i>\n <i *ngIf=\"collapsed\" class=\"sap-icon--slim-arrow-down\"></i>\n </button>\n <button\n fd-button\n class=\"fd-dynamic-page__pin-button\"\n [ariaLabel]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.title]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.aria-selected]=\"_pinned\"\n (click)=\"togglePinned()\"\n *ngIf=\"pinnable && !collapsed\"\n >\n <i class=\"sap-icon--pushpin-off\"></i>\n </button>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--right-gradient\"></div>\n </ng-container>\n </div>\n</div>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive()\nexport class DynamicPageBaseActions {\n addClassToToolbar(_class: string, elementRef: ElementRef): void {\n // adds global actions classes to its toolbar\n const toolbarEl = elementRef.nativeElement.querySelector('.fd-toolbar');\n if (toolbarEl) {\n toolbarEl.classList.add(_class);\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n ContentChild\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { ToolbarComponent } from '@fundamental-ngx/core/toolbar';\n\n@Component({\n selector: 'fd-dynamic-page-global-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageGlobalActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n /** @hidden */\n @ContentChild(ToolbarComponent)\n _toolbarComponent: ToolbarComponent;\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n if (this._toolbarComponent) {\n this._handleOverflow(size === 'small');\n }\n }\n\n /** @hidden */\n private _handleOverflow(shouldBeHidden: boolean): void {\n this._toolbarComponent.forceOverflow = shouldBeHidden;\n this._toolbarComponent.shouldOverflow = shouldBeHidden;\n this._toolbarComponent.detectChanges();\n setTimeout(() => {\n this._toolbarComponent.updateCollapsibleItems();\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, Input } from '@angular/core';\nimport { DynamicPageResponsiveSize } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-title-content',\n template: `\n <ng-container *ngIf=\"_size === 'small'\">\n <fd-toolbar\n fdType=\"transparent\"\n (click)=\"$event.stopPropagation()\"\n class=\"dynamicPageLayoutContentToolbar\"\n [clearBorder]=\"true\"\n [forceOverflow]=\"true\"\n [shouldOverflow]=\"true\"\n [size]=\"!compact ? 'cozy' : 'compact'\"\n >\n <div fd-toolbar-item>\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n </fd-toolbar>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-content\" *ngIf=\"_size !== 'small'\">\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n\n <ng-template #templateContentRef>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageTitleContentComponent {\n /** Whether should be on compact mode */\n @Input()\n compact = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden */\n constructor(private _changeDetRef: ChangeDetectorRef) {}\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n this._size = size;\n this._changeDetRef.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { DynamicPageService } from '../../dynamic-page.service';\nimport { addClassNameToElement } from '../../utils';\nimport { BreadcrumbComponent } from '@fundamental-ngx/core/breadcrumb';\nimport { DynamicPageGlobalActionsComponent } from '../actions/dynamic-page-global-actions.component';\nimport { DynamicPageTitleContentComponent } from '../actions/dynamic-page-title-content.component';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport const ActionSquashBreakpointPx = 1280;\n\n@Component({\n selector: 'fd-dynamic-page-header',\n templateUrl: './dynamic-page-header.component.html',\n styleUrls: ['./dynamic-page-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': '0'\n }\n})\nexport class DynamicPageHeaderComponent implements OnInit, AfterViewInit, OnDestroy {\n /** @hidden */\n _collapsed = false;\n\n /** Title property for dynamic page */\n @Input()\n title: string;\n\n /** Subtitle property for dynamic page */\n @Input()\n subtitle: string;\n\n /** @hidden */\n @ContentChild(BreadcrumbComponent)\n _breadcrumbComponent: BreadcrumbComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageGlobalActionsComponent)\n _globalActions: DynamicPageGlobalActionsComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageTitleContentComponent)\n _contentToolbar: DynamicPageTitleContentComponent;\n\n /** @hidden */\n _actionsSquashed = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n private _ngZone: NgZone,\n private _changeDetRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageTitleArea);\n this._listenToPageChanges();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._addCustomClassToBreadcrumb();\n\n this._dynamicPageService.collapsed.pipe(takeUntil(this._onDestroy$)).subscribe((collapsed) => {\n this._collapsed = collapsed;\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n set size(sizeType: DynamicPageResponsiveSize) {\n this._setSize(sizeType);\n this._size = sizeType;\n }\n\n /** @hidden */\n stopPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /**\n * @hidden\n * sets the padding classes\n * @param sizeType\n */\n private _setSize(sizeType: DynamicPageResponsiveSize): void {\n setTimeout(() => {\n this._breadcrumbComponent?.onResize();\n this._globalActions?._setSize(sizeType);\n this._contentToolbar?._setSize(sizeType);\n this._changeDetRef.detectChanges();\n });\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n\n /** @hidden */\n private _addClassNameToCustomElement(element: Element, className: string): void {\n addClassNameToElement(this._renderer, element, className);\n }\n\n /** @hidden */\n private _addCustomClassToBreadcrumb(): void {\n if (this._breadcrumbComponent) {\n this._addClassNameToCustomElement(\n this._breadcrumbComponent.elementRef.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageBreadcrumb\n );\n }\n }\n\n /** @hidden */\n private _listenToPageChanges(): void {\n this._dynamicPageService.pixelsSizeChanged.pipe(takeUntil(this._onDestroy$)).subscribe((pixels) => {\n const actionsSquashed: boolean = pixels < ActionSquashBreakpointPx;\n if (actionsSquashed !== this._actionsSquashed) {\n this._actionsSquashed = actionsSquashed;\n this._changeDetRef.detectChanges();\n }\n });\n }\n}\n","<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\">\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\">{{ subtitle }}</div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\">{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdDynamicPageWrapper], [fd-dynamic-page-wrapper]'\n})\nexport class DynamicPageWrapperDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/core/utils';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageBackgroundType, DynamicPageResponsiveSize } from './constants';\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\nimport { DynamicPageService } from './dynamic-page.service';\nimport { addClassNameToElement, dynamicPageWidthToSize } from './utils';\nimport { TabListComponent } from '@fundamental-ngx/core/tabs';\nimport { FlexibleColumnLayoutComponent } from '@fundamental-ngx/core/flexible-column-layout';\n\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, delay, map, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'fd-dynamic-page',\n templateUrl: './dynamic-page.component.html',\n styleUrls: ['./dynamic-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [DynamicPageService]\n})\nexport class DynamicPageComponent implements AfterViewInit, OnDestroy {\n /** Page role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /** aria label for the page */\n @Input()\n ariaLabel: string;\n\n /**\n * sets background for content to `list`, `transparent`, or `solid` background color.\n * Default is `solid`.\n */\n @Input()\n background: DynamicPageBackgroundType = 'solid';\n\n /** Whether DynamicPage should have responsive sides spacing changing with Page window width.\n * max-width: 599px - small\n * min-width: 600px and max-width: 1023px - medium\n * min-width: 1024px and max-width: 1439px - large\n * min-width: 1440px - extra large\n */\n @Input()\n autoResponsive = true;\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n @Input()\n set size(size: DynamicPageResponsiveSize) {\n this._size = size;\n this._propagateSizeToChildren();\n }\n\n get size(): DynamicPageResponsiveSize {\n return this._size;\n }\n\n _size: DynamicPageResponsiveSize = 'extra-large';\n\n /** Offset in PX\n * Should be added, when there is something else at the bottom and dynamic page is not expanded to bottom's corners\n */\n @Input()\n offset = 0;\n\n /**\n * Whether dynamic page should be expanded in whole page.\n */\n @Input()\n expandContent = true;\n\n /** @hidden reference to header component */\n @ContentChild(DynamicPageSubheaderComponent)\n _pageSubheaderComponent: DynamicPageSubheaderComponent;\n\n /** @hidden reference to title component */\n @ContentChild(DynamicPageHeaderComponent)\n _headerComponent: DynamicPageHeaderComponent;\n\n /** @hidden reference to content component */\n @ContentChild(DynamicPageContentComponent)\n _contentComponent: DynamicPageContentComponent;\n\n /** @hidden reference to tab component */\n @ContentChild(TabListComponent)\n _tabComponent: TabListComponent;\n\n /** @hidden */\n @ViewChild('dynamicPageElement')\n _dynamicPageElement: ElementRef;\n\n /** @hidden */\n _headerCollapsible = true;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n @Optional() private _columnLayout: FlexibleColumnLayoutComponent,\n @Optional() private _dynamicPageWrapper: DynamicPageWrapperDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._sizeChangeHandle();\n this._removeShadowWhenTabComponent();\n this._listenOnResize();\n this._listenOnCollapse();\n this._propagatePropertiesToChildren();\n if (this._pageSubheaderComponent?.collapsible) {\n this._addScrollListeners();\n }\n\n if (this._columnLayout && this.autoResponsive) {\n this._listenToLayoutChange();\n }\n\n setTimeout(() => this._setContainerPositions());\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** toggle the visibility of the header on click of title area. */\n toggleCollapse(): void {\n if (this._headerCollapsible) {\n this._dynamicPageService.toggleCollapsed();\n }\n }\n\n /**\n * Triggers recheck for spacing and sizing of elements inside DynamicPage.\n */\n refreshSize(): void {\n this._setContainerPositions();\n this._sizeChangeHandle();\n }\n\n /** Set the positions of the tabs and content with respect to the window */\n private _setContainerPositions(): void {\n this._setDynamicPageHeight();\n }\n\n /** @hidden */\n private _propagatePropertiesToChildren(): void {\n this._headerCollapsible = this._pageSubheaderComponent?.collapsible;\n this._propagateSizeToChildren();\n }\n\n /** @hidden\n * Functionality handling column layout changes,\n * - recalculate height of content element\n * - recheck size depending on width of DynamicPage\n */\n private _listenToLayoutChange(): void {\n this._columnLayout.layoutChange.pipe(takeUntil(this._onDestroy$), delay(1500)).subscribe(() => {\n this.refreshSize();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _propagateSizeToChildren(): void {\n if (this._headerComponent) {\n this._headerComponent.size = this.size;\n }\n this._setContainerPositions();\n }\n\n /** @hidden */\n private _listenOnCollapse(): void {\n this._dynamicPageService.subheaderVisibilityChange\n .pipe(takeUntil(this._onDestroy$))\n .subscribe(() => this._setContainerPositions());\n }\n\n /** @hidden */\n private _getCalculatedFullHeight(element: HTMLElement): string {\n if (!element) {\n return null;\n }\n const distanceFromTop = element.getBoundingClientRect().top;\n return 'calc(100vh - ' + (distanceFromTop + this.offset) + 'px)';\n }\n\n /** @hidden */\n private _sizeChangeHandle(): void {\n if (!this._elementRef || !this.autoResponsive) {\n return;\n }\n const dynamicPageWidth = this._elementRef.nativeElement.getBoundingClientRect().width;\n this._dynamicPageService.pixelsSizeChanged.next(dynamicPageWidth);\n const size = dynamicPageWidthToSize(dynamicPageWidth);\n\n if (size !== this.size) {\n this.size = size;\n this._cd.detectChanges();\n }\n }\n\n /** @hidden */\n private _addScrollListeners(): void {\n const tabElement = this._tabComponent?.contentContainer?.nativeElement;\n if (tabElement) {\n this._listenOnScroll(tabElement);\n }\n\n const contentElement = this._contentComponent?.elementRef?.nativeElement;\n if (contentElement) {\n this._listenOnScroll(contentElement);\n }\n }\n\n /** @hidden */\n private _listenOnScroll(element: HTMLElement): void {\n fromEvent(element, 'scroll')\n .pipe(debounceTime(10), takeUntil(this._onDestroy$))\n .subscribe(() => {\n const collapse = !this._dynamicPageService.pinned.value && element.scrollTop > 0;\n this._dynamicPageService.collapsed.next(collapse);\n });\n }\n\n /** @hidden Listen for window resize and adjust tab and content positions accordingly */\n private _listenOnResize(): void {\n const listener = this._dynamicPageWrapper ? this._listenToWrapperResize() : this._listenToWindowResize();\n\n listener.pipe(debounceTime(100), takeUntil(this._onDestroy$)).subscribe(() => {\n this._setContainerPositions();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _listenToWrapperResize(): Observable<ResizeObserverEntry[]> {\n return resizeObservable(this._dynamicPageWrapper.elementRef.nativeElement);\n }\n\n /** @hidden */\n private _listenToWindowResize(): Observable<ResizeObserverEntry[]> {\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n\n /** @hidden\n * set top position of DynamicPage on scrolling\n */\n private _setDynamicPageHeight(): void {\n if (!this._dynamicPageElement || !this.expandContent) {\n return;\n }\n const element = this._dynamicPageElement.nativeElement;\n this._renderer.setStyle(element, 'height', this._getCalculatedFullHeight(element));\n }\n\n /** @hidden */\n private _removeShadowWhenTabComponent(): void {\n if (!this._pageSubheaderComponent?.collapsible || !this._tabComponent) {\n return;\n }\n\n const pinCollapseShadowElement = this._pageSubheaderComponent?.pinCollapseContainer;\n\n if (pinCollapseShadowElement) {\n addClassNameToElement(\n this._renderer,\n pinCollapseShadowElement.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageCollapsibleHeaderPinCollapseNoShadow\n );\n }\n }\n}\n","<section\n #dynamicPageElement\n class=\"fd-dynamic-page\"\n [class.fd-dynamic-page--sm]=\"size === 'small'\"\n [class.fd-dynamic-page--md]=\"size === 'medium'\"\n [class.fd-dynamic-page--lg]=\"size === 'large'\"\n [class.fd-dynamic-page--xl]=\"size === 'extra-large'\"\n [class.fd-dynamic-page--transparent-bg]=\"background === 'transparent'\"\n [class.fd-dynamic-page--list-bg]=\"background === 'list'\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <header class=\"fd-dynamic-page__header\" [class.fd-dynamic-page__header--not-collapsible]=\"!_headerCollapsible\">\n <div>\n <div (click)=\"toggleCollapse()\" (keydown.enter)=\"toggleCollapse()\">\n <ng-content select=\"fd-dynamic-page-header\"></ng-content>\n </div>\n <ng-content select=\"fd-dynamic-page-subheader\"></ng-content>\n </div>\n </header>\n\n <ng-content select=\"fd-tab-list\"></ng-content>\n <ng-content select=\"fd-dynamic-page-content\"></ng-content>\n <footer>\n <ng-content select=\"fd-dynamic-page-footer\"></ng-content>\n </footer>\n</section>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-layout-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageLayoutActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageLayoutActionsToolbar, this._elementRef);\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-dynamic-page-footer',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageFooterComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageFooterComponent } from './dynamic-page-footer/dynamic-page-footer.component';\nimport { DynamicPageGlobalActionsComponent } from './dynamic-page-header/actions/dynamic-page-global-actions.component';\nimport { DynamicPageLayoutActionsComponent } from './dynamic-page-header/actions/dynamic-page-layout-actions.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageComponent } from './dynamic-page.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicPageTitleContentComponent } from './dynamic-page-header/actions/dynamic-page-title-content.component';\nimport { ToolbarModule } from '@fundamental-ngx/core/toolbar';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\n\n@NgModule({\n declarations: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ],\n imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule],\n exports: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ]\n})\nexport class DynamicPageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-dynamic-page.mjs","sources":["../../../../../libs/core/src/lib/dynamic-page/constants.ts","../../../../../libs/core/src/lib/dynamic-page/utils.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-content/dynamic-page-content.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.config.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.service.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-wrapper.directive.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.component.html","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.ts","../../../../../libs/core/src/lib/dynamic-page/dynamic-page.module.ts","../../../../../libs/core/src/lib/dynamic-page/fundamental-ngx-core-dynamic-page.ts"],"sourcesContent":["export const DYNAMIC_PAGE_CLASS_NAME = {\n dynamicPage: 'fd-dynamic-page',\n dynamicPageTitleArea: 'fd-dynamic-page__title-area',\n dynamicPageMainContainer: 'fd-dynamic-page__main-container',\n dynamicPageBreadcrumbTitleContainer: 'fd-dynamic-page__breadcrumb-title-container',\n dynamicPageTitleAreaCollapsed: 'fd-dynamic-page__title-area--collapsed',\n dynamicPageTitleContainer: 'fd-dynamic-page__title-container',\n dynamicPageTitle: 'fd-dynamic-page__title',\n dynamicPageBreadcrumb: 'fd-dynamic-page__breadcrumb',\n dynamicPageKeyInfo: 'fd-dynamic-page__title-content',\n dynamicPageToolbar: 'fd-dynamic-page__toolbar',\n dynamicPageLayoutActionsToolbar: 'fd-dynamic-page__toolbar--actions',\n dynamicPageLayoutContentToolbar: 'fd-dynamic-page__toolbar--content',\n dynamicPageHeader: 'fd-dynamic-page__header',\n dynamicPageCollapsibleHeader: 'fd-dynamic-page__collapsible-header',\n dynamicPageCollapsibleHeaderPinCollapseNoShadow:\n 'fd-dynamic-page__collapsible-header-visibility-container--no-shadow',\n dynamicPageTabs: 'fd-dynamic-page__tabs',\n dynamicPageTabsAddShadow: 'fd-dynamic-page__tabs--add-shadow',\n dynamicPageContent: 'fd-dynamic-page__content',\n dynamicPageSummarizedTitleArea: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaExtraLarge: 'fd-dynamic-page__summarized-title-area',\n dynamicPageSummarizedTitleAreaNoShadow: 'fd-dynamic-page__summarized-title-area--no-shadow',\n dynamicPageSummarizedTitle: 'fd-dynamic-page__summarized-title',\n dynamicPageSummarizedTitleCollapsed: 'fd-dynamic-page__summarized-title-area--collapsed'\n} as const;\n\nexport type DynamicPageBackgroundType = 'solid' | 'list' | 'transparent';\n\nexport type DynamicPageResponsiveSize = 'small' | 'medium' | 'large' | 'extra-large';\n","import { Renderer2 } from '@angular/core';\nimport { DynamicPageResponsiveSize } from './constants';\n\nexport const addClassNameToElement = (renderer: Renderer2, element: Element, className: string): void => {\n renderer.addClass(element, className);\n};\n\n/** @hidden Returns dynamic page size based on width\n * @param width - dynamic page window width\n **/\nexport function dynamicPageWidthToSize(width: number): DynamicPageResponsiveSize {\n if (width < 599) {\n return 'small';\n } else if (width < 1023) {\n return 'medium';\n } else if (width < 1439) {\n return 'large';\n }\n return 'extra-large';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../constants';\nimport { addClassNameToElement } from '../utils';\n\n@Component({\n selector: 'fd-dynamic-page-content',\n templateUrl: './dynamic-page-content.component.html',\n styleUrls: ['./dynamic-page-content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageContentComponent implements OnInit {\n /**\n * label for the tab. If label is provided, tab navigation will be internally set up.\n */\n @Input()\n tabLabel: string;\n\n /**\n * a unique identifier for this content\n */\n @Input()\n id: string;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef<HTMLElement>, public _renderer: Renderer2) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageContent);\n }\n\n /** Element reference to host of content dynamic page */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n}\n","<ng-content></ng-content>\n<div class=\"footer-spacer\"></div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Default options for core dynamic-page\n */\n@Injectable({ providedIn: 'root' })\nexport class DynamicPageConfig {\n /**\n * aria label for expand/collapse button when the Dynamic Page is collapsed\n */\n expandLabel = 'Expand Header';\n\n /**\n * aria label for expand/collapse button when the Dynamic Page is expanded\n */\n collapseLabel = 'Collapse Header';\n\n /**\n * aria label for pin button when the Dynamic Page should be pinned\n */\n pinLabel = 'Pin Header';\n\n /**\n * aria label for pin button when the Panel should be unpinned\n */\n unpinLabel = 'Unpin Header';\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\n@Injectable()\nexport class DynamicPageService {\n /** @hidden */\n collapsed = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pinned = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n pixelsSizeChanged = new BehaviorSubject<number>(0);\n\n /** @hidden */\n subheaderVisibilityChange = new Subject<void>();\n\n /** @hidden */\n toggleCollapsed(): void {\n this.collapsed.next(!this.collapsed.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n HostBinding,\n ChangeDetectorRef\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { DynamicPageConfig } from '../../dynamic-page.config';\nimport { DynamicPageService } from '../../dynamic-page.service';\n\nlet dynamicPageSubHeaderId = 0;\n@Component({\n selector: 'fd-dynamic-page-subheader',\n templateUrl: './dynamic-page-subheader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageSubheaderComponent {\n /**\n * whether the header can be collapsed. True by default. If set to false, both pin/collapse buttons disappear\n * and the header stays visible\n */\n @Input()\n collapsible = true;\n\n /**\n * whether the header should be allowed to be pinned or unpinned. When set, the pin button shows up.\n * Pinning the header will make the header stay visible and the collapse button(if present) will disappear until unpinned.\n */\n @Input()\n pinnable = false;\n\n /**\n * the initial state of the header. Set to true if header should be collapsed.\n */\n @Input()\n set collapsed(collapsed: boolean) {\n this._handleCollapsedChange(collapsed);\n }\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n /**\n * ARIA label for button when the header is collapsed\n */\n @Input()\n expandLabel: string = this._dynamicPageConfig.expandLabel;\n\n /**\n * ARIA label for button when the header is expanded\n */\n @Input()\n collapseLabel: string = this._dynamicPageConfig.collapseLabel;\n\n /** Header role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /**\n * id for header\n */\n @Input()\n @HostBinding('attr.id')\n id = `fd-dynamic-page-header-id-${dynamicPageSubHeaderId++}`;\n\n /**\n * aria label for header\n */\n @Input()\n headerAriaLabel: string;\n\n /**\n * aria label for pin state of pin button\n */\n @Input()\n pinAriaLabel: string = this._dynamicPageConfig.pinLabel;\n\n /**\n * aria label for unpin state of pin button\n */\n @Input()\n unpinAriaLabel: string = this._dynamicPageConfig.unpinLabel;\n\n /** Collapse/Expand change event raised */\n @Output()\n collapsedChange = new EventEmitter<boolean>();\n\n /** Reference to page header content */\n @ViewChild('pincollapseContainer')\n pinCollapseContainer: ElementRef<HTMLElement>;\n\n /**\n * tracking if pin button is pinned\n */\n _pinned = false;\n\n /**\n * @hidden\n * tracking expand/collapse button\n */\n private _collapsed = false;\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n protected _dynamicPageConfig: DynamicPageConfig,\n private _dynamicPageService: DynamicPageService\n ) {\n this._dynamicPageService.collapsed\n .pipe(distinctUntilChanged())\n .subscribe((collapsed) => this._handleCollapsedChange(collapsed));\n }\n\n /**\n * toggles the state of the header and\n * handles expanded/collapsed event\n */\n toggleCollapse(): void {\n this._pinned = false;\n this._handleCollapsedChange(!this._collapsed);\n }\n\n /**\n * @hidden\n * click action on pin button\n */\n togglePinned(): void {\n this._pinned = !this._pinned;\n this._dynamicPageService.pinned.next(this._pinned);\n }\n\n private _handleCollapsedChange(collapsed: boolean): void {\n if (collapsed === this._collapsed) {\n return;\n }\n\n this._collapsed = collapsed;\n this._dynamicPageService.collapsed.next(collapsed);\n this.collapsedChange.emit(this._collapsed);\n this._cd.detectChanges();\n this._dynamicPageService.subheaderVisibilityChange.next();\n }\n}\n","<div class=\"fd-dynamic-page__collapsible-header-container\">\n <div\n class=\"fd-dynamic-page__collapsible-header\"\n [attr.aria-label]=\"headerAriaLabel\"\n [attr.aria-hidden]=\"collapsed\"\n [attr.id]=\"id\"\n role=\"region\"\n #headerContent\n >\n <ng-content></ng-content>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container\" #pincollapseContainer>\n <ng-container *ngIf=\"collapsible\">\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--left-gradient\"></div>\n <div\n role=\"toolbar\"\n aria-label=\"Pin/Collapse actions\"\n class=\"fd-dynamic-page__collapsible-header-visibility-container--button-group\"\n >\n <button\n fd-button\n class=\"fd-dynamic-page__collapse-button\"\n aria-haspopup=\"true\"\n [ariaLabel]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.title]=\"collapsed ? expandLabel : collapseLabel\"\n [attr.aria-expanded]=\"!collapsed\"\n [attr.aria-controls]=\"id\"\n (click)=\"toggleCollapse()\"\n >\n <i *ngIf=\"!collapsed\" class=\"sap-icon--slim-arrow-up\"></i>\n <i *ngIf=\"collapsed\" class=\"sap-icon--slim-arrow-down\"></i>\n </button>\n <button\n fd-button\n class=\"fd-dynamic-page__pin-button\"\n [ariaLabel]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.title]=\"_pinned ? unpinAriaLabel : pinAriaLabel\"\n [attr.aria-selected]=\"_pinned\"\n (click)=\"togglePinned()\"\n *ngIf=\"pinnable && !collapsed\"\n >\n <i class=\"sap-icon--pushpin-off\"></i>\n </button>\n </div>\n <div class=\"fd-dynamic-page__collapsible-header-visibility-container--right-gradient\"></div>\n </ng-container>\n </div>\n</div>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive()\nexport class DynamicPageBaseActions {\n addClassToToolbar(_class: string, elementRef: ElementRef): void {\n // adds global actions classes to its toolbar\n const toolbarEl = elementRef.nativeElement.querySelector('.fd-toolbar');\n if (toolbarEl) {\n toolbarEl.classList.add(_class);\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n ContentChild\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { ToolbarComponent } from '@fundamental-ngx/core/toolbar';\n\n@Component({\n selector: 'fd-dynamic-page-global-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageGlobalActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n /** @hidden */\n @ContentChild(ToolbarComponent)\n _toolbarComponent: ToolbarComponent;\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n if (this._toolbarComponent) {\n this._handleOverflow(size === 'small');\n }\n }\n\n /** @hidden */\n private _handleOverflow(shouldBeHidden: boolean): void {\n this._toolbarComponent.forceOverflow = shouldBeHidden;\n this._toolbarComponent.shouldOverflow = shouldBeHidden;\n this._toolbarComponent.detectChanges();\n setTimeout(() => {\n this._toolbarComponent.updateCollapsibleItems();\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, Input } from '@angular/core';\nimport { DynamicPageResponsiveSize } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-title-content',\n template: `\n <ng-container *ngIf=\"_size === 'small'\">\n <fd-toolbar\n fdType=\"transparent\"\n (click)=\"$event.stopPropagation()\"\n class=\"dynamicPageLayoutContentToolbar\"\n [clearBorder]=\"true\"\n [forceOverflow]=\"true\"\n [shouldOverflow]=\"true\"\n [size]=\"!compact ? 'cozy' : 'compact'\"\n >\n <div fd-toolbar-item>\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n </fd-toolbar>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-content\" *ngIf=\"_size !== 'small'\">\n <ng-container *ngTemplateOutlet=\"templateContentRef\"></ng-container>\n </div>\n\n <ng-template #templateContentRef>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageTitleContentComponent {\n /** Whether should be on compact mode */\n @Input()\n compact = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden */\n constructor(private _changeDetRef: ChangeDetectorRef) {}\n\n /** @hidden */\n _setSize(size: DynamicPageResponsiveSize): void {\n this._size = size;\n this._changeDetRef.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageResponsiveSize } from '../../constants';\nimport { DynamicPageService } from '../../dynamic-page.service';\nimport { addClassNameToElement } from '../../utils';\nimport { BreadcrumbComponent } from '@fundamental-ngx/core/breadcrumb';\nimport { DynamicPageGlobalActionsComponent } from '../actions/dynamic-page-global-actions.component';\nimport { DynamicPageTitleContentComponent } from '../actions/dynamic-page-title-content.component';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport const ActionSquashBreakpointPx = 1280;\n\n@Component({\n selector: 'fd-dynamic-page-header',\n templateUrl: './dynamic-page-header.component.html',\n styleUrls: ['./dynamic-page-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.tabindex]': '0'\n }\n})\nexport class DynamicPageHeaderComponent implements OnInit, AfterViewInit, OnDestroy {\n /** @hidden */\n _collapsed = false;\n\n /** Title property for dynamic page */\n @Input()\n title: string;\n\n /** Subtitle property for dynamic page */\n @Input()\n subtitle: string;\n\n /** @hidden */\n @ContentChild(BreadcrumbComponent)\n _breadcrumbComponent: BreadcrumbComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageGlobalActionsComponent)\n _globalActions: DynamicPageGlobalActionsComponent;\n\n /** @hidden */\n @ContentChild(DynamicPageTitleContentComponent)\n _contentToolbar: DynamicPageTitleContentComponent;\n\n /** @hidden */\n _actionsSquashed = false;\n\n /** @hidden */\n _size: DynamicPageResponsiveSize;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n private _ngZone: NgZone,\n private _changeDetRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._addClassNameToHostElement(DYNAMIC_PAGE_CLASS_NAME.dynamicPageTitleArea);\n this._listenToPageChanges();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._addCustomClassToBreadcrumb();\n\n this._dynamicPageService.collapsed.pipe(takeUntil(this._onDestroy$)).subscribe((collapsed) => {\n this._collapsed = collapsed;\n this._changeDetRef.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n set size(sizeType: DynamicPageResponsiveSize) {\n this._setSize(sizeType);\n this._size = sizeType;\n }\n\n /** @hidden */\n stopPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /**\n * @hidden\n * sets the padding classes\n * @param sizeType\n */\n private _setSize(sizeType: DynamicPageResponsiveSize): void {\n setTimeout(() => {\n this._breadcrumbComponent?.onResize();\n this._globalActions?._setSize(sizeType);\n this._contentToolbar?._setSize(sizeType);\n this._changeDetRef.detectChanges();\n });\n }\n\n /** @hidden */\n private _addClassNameToHostElement(className: string): void {\n addClassNameToElement(this._renderer, this._elementRef.nativeElement, className);\n }\n\n /** @hidden */\n private _addClassNameToCustomElement(element: Element, className: string): void {\n addClassNameToElement(this._renderer, element, className);\n }\n\n /** @hidden */\n private _addCustomClassToBreadcrumb(): void {\n if (this._breadcrumbComponent) {\n this._addClassNameToCustomElement(\n this._breadcrumbComponent.elementRef.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageBreadcrumb\n );\n }\n }\n\n /** @hidden */\n private _listenToPageChanges(): void {\n this._dynamicPageService.pixelsSizeChanged.pipe(takeUntil(this._onDestroy$)).subscribe((pixels) => {\n const actionsSquashed: boolean = pixels < ActionSquashBreakpointPx;\n if (actionsSquashed !== this._actionsSquashed) {\n this._actionsSquashed = actionsSquashed;\n this._changeDetRef.detectChanges();\n }\n });\n }\n}\n","<div class=\"fd-dynamic-page__main-container\">\n <div class=\"fd-dynamic-page__breadcrumb-title-container\">\n <div class=\"fd-dynamic-page__breadcrumb-container\">\n <nav aria-label=\"Breadcrumbs\" class=\"fd-dynamic-page__breadcrumb-wrapper\" (click)=\"stopPropagation($event)\">\n <ng-content select=\"fd-breadcrumb\"></ng-content>\n </nav>\n <ng-container *ngIf=\"_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n <div class=\"fd-dynamic-page__title-container\">\n <ng-container *ngIf=\"_collapsed\">\n <ng-content select=\"fd-facet\"></ng-content>\n </ng-container>\n\n <div class=\"fd-dynamic-page__title-subtitle-container\">\n <div class=\"fd-dynamic-page__title-container\">\n <span class=\"fd-dynamic-page__title\">\n {{ title }}\n </span>\n <ng-content select=\"fd-dynamic-page-title-content\"></ng-content>\n <div class=\"fd-dynamic-page__toolbar-container\" (click)=\"stopPropagation($event)\">\n <ng-container *ngTemplateOutlet=\"dynamicPageGlobalActionsRef\"></ng-container>\n <ng-container *ngIf=\"!_actionsSquashed\">\n <ng-container *ngTemplateOutlet=\"dynamicPageLayoutActionsRef\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"fd-dynamic-page__subtitle\" *ngIf=\"_collapsed && subtitle\">{{ subtitle }}</div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"fd-dynamic-page__subtitle\" *ngIf=\"!_collapsed && subtitle\">{{ subtitle }}</div>\n\n<ng-template #dynamicPageGlobalActionsRef>\n <ng-content select=\"fd-dynamic-page-global-actions\"></ng-content>\n</ng-template>\n<ng-template #dynamicPageLayoutActionsRef>\n <ng-content select=\"fd-dynamic-page-layout-actions\"></ng-content>\n</ng-template>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdDynamicPageWrapper], [fd-dynamic-page-wrapper]'\n})\nexport class DynamicPageWrapperDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/core/utils';\nimport { DYNAMIC_PAGE_CLASS_NAME, DynamicPageBackgroundType, DynamicPageResponsiveSize } from './constants';\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\nimport { DynamicPageService } from './dynamic-page.service';\nimport { addClassNameToElement, dynamicPageWidthToSize } from './utils';\nimport { TabListComponent } from '@fundamental-ngx/core/tabs';\nimport { FlexibleColumnLayoutComponent } from '@fundamental-ngx/core/flexible-column-layout';\n\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, delay, map, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'fd-dynamic-page',\n templateUrl: './dynamic-page.component.html',\n styleUrls: ['./dynamic-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [DynamicPageService]\n})\nexport class DynamicPageComponent implements AfterViewInit, OnDestroy {\n /** Page role */\n @Input()\n @HostBinding('attr.role')\n role = 'region';\n\n /** aria label for the page */\n @Input()\n ariaLabel: string;\n\n /**\n * sets background for content to `list`, `transparent`, or `solid` background color.\n * Default is `solid`.\n */\n @Input()\n background: DynamicPageBackgroundType = 'solid';\n\n /** Whether DynamicPage should have responsive sides spacing changing with Page window width.\n * max-width: 599px - small\n * min-width: 600px and max-width: 1023px - medium\n * min-width: 1024px and max-width: 1439px - large\n * min-width: 1440px - extra large\n */\n @Input()\n autoResponsive = true;\n\n /**\n * sets size which in turn adds corresponding padding for the size type.\n * size can be `small`, `medium`, `large`, or `extra-large`.\n */\n @Input()\n set size(size: DynamicPageResponsiveSize) {\n this._size = size;\n this._propagateSizeToChildren();\n }\n\n get size(): DynamicPageResponsiveSize {\n return this._size;\n }\n\n _size: DynamicPageResponsiveSize = 'extra-large';\n\n /** Offset in PX\n * Should be added, when there is something else at the bottom and dynamic page is not expanded to bottom's corners\n */\n @Input()\n offset = 0;\n\n /**\n * Whether dynamic page should be expanded in whole page.\n */\n @Input()\n expandContent = true;\n\n /** @hidden reference to header component */\n @ContentChild(DynamicPageSubheaderComponent)\n _pageSubheaderComponent: DynamicPageSubheaderComponent;\n\n /** @hidden reference to title component */\n @ContentChild(DynamicPageHeaderComponent)\n _headerComponent: DynamicPageHeaderComponent;\n\n /** @hidden reference to content component */\n @ContentChild(DynamicPageContentComponent)\n _contentComponent: DynamicPageContentComponent;\n\n /** @hidden reference to tab component */\n @ContentChild(TabListComponent)\n _tabComponent: TabListComponent;\n\n /** @hidden */\n @ViewChild('dynamicPageElement')\n _dynamicPageElement: ElementRef;\n\n /** @hidden */\n _headerCollapsible = true;\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n constructor(\n protected _cd: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n private _renderer: Renderer2,\n private _dynamicPageService: DynamicPageService,\n @Optional() private _columnLayout: FlexibleColumnLayoutComponent,\n @Optional() private _dynamicPageWrapper: DynamicPageWrapperDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._sizeChangeHandle();\n this._removeShadowWhenTabComponent();\n this._listenOnResize();\n this._listenOnCollapse();\n this._propagatePropertiesToChildren();\n if (this._pageSubheaderComponent?.collapsible) {\n this._addScrollListeners();\n }\n\n if (this._columnLayout && this.autoResponsive) {\n this._listenToLayoutChange();\n }\n\n setTimeout(() => this._setContainerPositions());\n this._cd.detectChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** toggle the visibility of the header on click of title area. */\n toggleCollapse(): void {\n if (this._headerCollapsible) {\n this._dynamicPageService.toggleCollapsed();\n }\n }\n\n /**\n * Triggers recheck for spacing and sizing of elements inside DynamicPage.\n */\n refreshSize(): void {\n this._setContainerPositions();\n this._sizeChangeHandle();\n }\n\n /** Set the positions of the tabs and content with respect to the window */\n private _setContainerPositions(): void {\n this._setDynamicPageHeight();\n }\n\n /** @hidden */\n private _propagatePropertiesToChildren(): void {\n this._headerCollapsible = this._pageSubheaderComponent?.collapsible;\n this._propagateSizeToChildren();\n }\n\n /** @hidden\n * Functionality handling column layout changes,\n * - recalculate height of content element\n * - recheck size depending on width of DynamicPage\n */\n private _listenToLayoutChange(): void {\n this._columnLayout.layoutChange.pipe(takeUntil(this._onDestroy$), delay(1500)).subscribe(() => {\n this.refreshSize();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _propagateSizeToChildren(): void {\n if (this._headerComponent) {\n this._headerComponent.size = this.size;\n }\n this._setContainerPositions();\n }\n\n /** @hidden */\n private _listenOnCollapse(): void {\n this._dynamicPageService.subheaderVisibilityChange\n .pipe(takeUntil(this._onDestroy$))\n .subscribe(() => this._setContainerPositions());\n }\n\n /** @hidden */\n private _getCalculatedFullHeight(element: HTMLElement): string {\n if (!element) {\n return null;\n }\n const distanceFromTop = element.getBoundingClientRect().top;\n return 'calc(100vh - ' + (distanceFromTop + this.offset) + 'px)';\n }\n\n /** @hidden */\n private _sizeChangeHandle(): void {\n if (!this._elementRef || !this.autoResponsive) {\n return;\n }\n const dynamicPageWidth = this._elementRef.nativeElement.getBoundingClientRect().width;\n this._dynamicPageService.pixelsSizeChanged.next(dynamicPageWidth);\n const size = dynamicPageWidthToSize(dynamicPageWidth);\n\n if (size !== this.size) {\n this.size = size;\n this._cd.detectChanges();\n }\n }\n\n /** @hidden */\n private _addScrollListeners(): void {\n const tabElement = this._tabComponent?.contentContainer?.nativeElement;\n if (tabElement) {\n this._listenOnScroll(tabElement);\n }\n\n const contentElement = this._contentComponent?.elementRef?.nativeElement;\n if (contentElement) {\n this._listenOnScroll(contentElement);\n }\n }\n\n /** @hidden */\n private _listenOnScroll(element: HTMLElement): void {\n fromEvent(element, 'scroll')\n .pipe(debounceTime(10), takeUntil(this._onDestroy$))\n .subscribe(() => {\n const collapse =\n !this._dynamicPageService.pinned.value &&\n (element.scrollTop > 0 || element.scrollHeight <= element.clientHeight);\n this._dynamicPageService.collapsed.next(collapse);\n });\n }\n\n /** @hidden Listen for window resize and adjust tab and content positions accordingly */\n private _listenOnResize(): void {\n const listener = this._dynamicPageWrapper ? this._listenToWrapperResize() : this._listenToWindowResize();\n\n listener.pipe(debounceTime(100), takeUntil(this._onDestroy$)).subscribe(() => {\n this._setContainerPositions();\n this._sizeChangeHandle();\n });\n }\n\n /** @hidden */\n private _listenToWrapperResize(): Observable<ResizeObserverEntry[]> {\n return resizeObservable(this._dynamicPageWrapper.elementRef.nativeElement);\n }\n\n /** @hidden */\n private _listenToWindowResize(): Observable<ResizeObserverEntry[]> {\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n\n /** @hidden\n * set top position of DynamicPage on scrolling\n */\n private _setDynamicPageHeight(): void {\n if (!this._dynamicPageElement || !this.expandContent) {\n return;\n }\n const element = this._dynamicPageElement.nativeElement;\n this._renderer.setStyle(element, 'height', this._getCalculatedFullHeight(element));\n }\n\n /** @hidden */\n private _removeShadowWhenTabComponent(): void {\n if (!this._pageSubheaderComponent?.collapsible || !this._tabComponent) {\n return;\n }\n\n const pinCollapseShadowElement = this._pageSubheaderComponent?.pinCollapseContainer;\n\n if (pinCollapseShadowElement) {\n addClassNameToElement(\n this._renderer,\n pinCollapseShadowElement.nativeElement,\n DYNAMIC_PAGE_CLASS_NAME.dynamicPageCollapsibleHeaderPinCollapseNoShadow\n );\n }\n }\n}\n","<section\n #dynamicPageElement\n class=\"fd-dynamic-page\"\n [class.fd-dynamic-page--sm]=\"size === 'small'\"\n [class.fd-dynamic-page--md]=\"size === 'medium'\"\n [class.fd-dynamic-page--lg]=\"size === 'large'\"\n [class.fd-dynamic-page--xl]=\"size === 'extra-large'\"\n [class.fd-dynamic-page--transparent-bg]=\"background === 'transparent'\"\n [class.fd-dynamic-page--list-bg]=\"background === 'list'\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <header class=\"fd-dynamic-page__header\" [class.fd-dynamic-page__header--not-collapsible]=\"!_headerCollapsible\">\n <div>\n <div (click)=\"toggleCollapse()\" (keydown.enter)=\"toggleCollapse()\">\n <ng-content select=\"fd-dynamic-page-header\"></ng-content>\n </div>\n <ng-content select=\"fd-dynamic-page-subheader\"></ng-content>\n </div>\n </header>\n\n <ng-content select=\"fd-tab-list\"></ng-content>\n <ng-content select=\"fd-dynamic-page-content\"></ng-content>\n <footer>\n <ng-content select=\"fd-dynamic-page-footer\"></ng-content>\n </footer>\n</section>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n AfterContentInit,\n ElementRef,\n Renderer2,\n ChangeDetectorRef\n} from '@angular/core';\nimport { DynamicPageBaseActions } from './dynamic-page-base-actions';\nimport { DYNAMIC_PAGE_CLASS_NAME } from '../../constants';\n\n@Component({\n selector: 'fd-dynamic-page-layout-actions',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageLayoutActionsComponent extends DynamicPageBaseActions implements AfterContentInit {\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _changeDetRef: ChangeDetectorRef\n ) {\n super();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageLayoutActionsToolbar, this._elementRef);\n this.addClassToToolbar(DYNAMIC_PAGE_CLASS_NAME.dynamicPageToolbar, this._elementRef);\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-dynamic-page-footer',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DynamicPageFooterComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';\nimport { DynamicPageFooterComponent } from './dynamic-page-footer/dynamic-page-footer.component';\nimport { DynamicPageGlobalActionsComponent } from './dynamic-page-header/actions/dynamic-page-global-actions.component';\nimport { DynamicPageLayoutActionsComponent } from './dynamic-page-header/actions/dynamic-page-layout-actions.component';\nimport { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';\nimport { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';\nimport { DynamicPageComponent } from './dynamic-page.component';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { DynamicPageTitleContentComponent } from './dynamic-page-header/actions/dynamic-page-title-content.component';\nimport { ToolbarModule } from '@fundamental-ngx/core/toolbar';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';\n\n@NgModule({\n declarations: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ],\n imports: [CommonModule, ButtonModule, ToolbarModule, PopoverModule],\n exports: [\n DynamicPageComponent,\n DynamicPageHeaderComponent,\n DynamicPageGlobalActionsComponent,\n DynamicPageLayoutActionsComponent,\n DynamicPageSubheaderComponent,\n DynamicPageContentComponent,\n DynamicPageFooterComponent,\n DynamicPageTitleContentComponent,\n DynamicPageWrapperDirective\n ]\n})\nexport class DynamicPageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -674,7 +674,8 @@ class DynamicPageComponent {
674
674
  fromEvent(element, 'scroll')
675
675
  .pipe(debounceTime(10), takeUntil(this._onDestroy$))
676
676
  .subscribe(() => {
677
- const collapse = !this._dynamicPageService.pinned.value && element.scrollTop > 0;
677
+ const collapse = !this._dynamicPageService.pinned.value &&
678
+ (element.scrollTop > 0 || element.scrollHeight <= element.clientHeight);
678
679
  this._dynamicPageService.collapsed.next(collapse);
679
680
  });
680
681
  }