@scion/components 15.0.2 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dimension/dimension.directive.d.ts +2 -2
  2. package/dimension/dimension.module.d.ts +1 -2
  3. package/esm2022/dimension/dimension.directive.mjs +85 -0
  4. package/esm2022/dimension/dimension.module.mjs +35 -0
  5. package/esm2022/sashbox/element-ref.directive.mjs +32 -0
  6. package/esm2022/sashbox/public_api.mjs +18 -0
  7. package/esm2022/sashbox/sash-initializer.directive.mjs +36 -0
  8. package/esm2022/sashbox/sash.directive.mjs +146 -0
  9. package/esm2022/sashbox/sashbox.component.mjs +286 -0
  10. package/esm2022/sashbox/sashbox.module.mjs +56 -0
  11. package/esm2022/splitter/public_api.mjs +17 -0
  12. package/esm2022/splitter/splitter.component.mjs +226 -0
  13. package/esm2022/splitter/splitter.module.mjs +39 -0
  14. package/esm2022/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +26 -0
  15. package/esm2022/throbber/ripple-throbber/ripple-throbber.component.mjs +26 -0
  16. package/esm2022/throbber/roller-throbber/roller-throbber.component.mjs +26 -0
  17. package/esm2022/throbber/spinner-throbber/spinner-throbber.component.mjs +27 -0
  18. package/esm2022/throbber/throbber.component.mjs +76 -0
  19. package/esm2022/throbber/throbber.module.mjs +33 -0
  20. package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +113 -0
  21. package/esm2022/viewport/public_api.mjs +19 -0
  22. package/esm2022/viewport/scrollable.directive.mjs +95 -0
  23. package/esm2022/viewport/scrollbar/scrollbar.component.mjs +323 -0
  24. package/esm2022/viewport/viewport.component.mjs +289 -0
  25. package/esm2022/viewport/viewport.module.mjs +43 -0
  26. package/{fesm2015 → fesm2022}/scion-components-dimension.mjs +13 -11
  27. package/fesm2022/scion-components-dimension.mjs.map +1 -0
  28. package/{fesm2020 → fesm2022}/scion-components-sashbox.mjs +69 -61
  29. package/fesm2022/scion-components-sashbox.mjs.map +1 -0
  30. package/{fesm2020 → fesm2022}/scion-components-splitter.mjs +25 -25
  31. package/fesm2022/scion-components-splitter.mjs.map +1 -0
  32. package/fesm2022/scion-components-throbber.mjs +215 -0
  33. package/fesm2022/scion-components-throbber.mjs.map +1 -0
  34. package/{fesm2020 → fesm2022}/scion-components-viewport.mjs +164 -161
  35. package/fesm2022/scion-components-viewport.mjs.map +1 -0
  36. package/package.json +27 -43
  37. package/sashbox/element-ref.directive.d.ts +1 -1
  38. package/sashbox/public_api.d.ts +3 -3
  39. package/sashbox/sash-initializer.directive.d.ts +1 -1
  40. package/sashbox/sash.directive.d.ts +2 -2
  41. package/sashbox/sashbox.component.d.ts +1 -3
  42. package/sashbox/sashbox.module.d.ts +1 -5
  43. package/splitter/public_api.d.ts +2 -2
  44. package/splitter/splitter.component.d.ts +1 -3
  45. package/splitter/splitter.module.d.ts +1 -2
  46. package/throbber/ellipsis-throbber/ellipsis-throbber.component.d.ts +1 -1
  47. package/throbber/ripple-throbber/ripple-throbber.component.d.ts +1 -1
  48. package/throbber/roller-throbber/roller-throbber.component.d.ts +1 -1
  49. package/throbber/spinner-throbber/spinner-throbber.component.d.ts +1 -1
  50. package/throbber/throbber.component.d.ts +1 -1
  51. package/throbber/throbber.module.d.ts +1 -6
  52. package/viewport/native-scrollbar-track-size-provider.service.d.ts +0 -2
  53. package/viewport/public_api.d.ts +3 -4
  54. package/viewport/scrollable.directive.d.ts +1 -1
  55. package/viewport/scrollbar/scrollbar.component.d.ts +2 -2
  56. package/viewport/viewport.component.d.ts +2 -2
  57. package/viewport/viewport.module.d.ts +1 -3
  58. package/esm2020/dimension/dimension.directive.mjs +0 -83
  59. package/esm2020/dimension/dimension.module.mjs +0 -38
  60. package/esm2020/sashbox/element-ref.directive.mjs +0 -27
  61. package/esm2020/sashbox/public_api.mjs +0 -18
  62. package/esm2020/sashbox/sash-initializer.directive.mjs +0 -32
  63. package/esm2020/sashbox/sash.directive.mjs +0 -144
  64. package/esm2020/sashbox/sashbox.component.mjs +0 -278
  65. package/esm2020/sashbox/sashbox.module.mjs +0 -69
  66. package/esm2020/splitter/public_api.mjs +0 -17
  67. package/esm2020/splitter/splitter.component.mjs +0 -227
  68. package/esm2020/splitter/splitter.module.mjs +0 -42
  69. package/esm2020/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +0 -25
  70. package/esm2020/throbber/ripple-throbber/ripple-throbber.component.mjs +0 -25
  71. package/esm2020/throbber/roller-throbber/roller-throbber.component.mjs +0 -25
  72. package/esm2020/throbber/spinner-throbber/spinner-throbber.component.mjs +0 -26
  73. package/esm2020/throbber/throbber.component.mjs +0 -67
  74. package/esm2020/throbber/throbber.module.mjs +0 -48
  75. package/esm2020/viewport/native-scrollbar-track-size-provider.service.mjs +0 -114
  76. package/esm2020/viewport/public_api.mjs +0 -20
  77. package/esm2020/viewport/scrollable.directive.mjs +0 -93
  78. package/esm2020/viewport/scrollbar/scrollbar.component.mjs +0 -322
  79. package/esm2020/viewport/viewport.component.mjs +0 -281
  80. package/esm2020/viewport/viewport.module.mjs +0 -50
  81. package/fesm2015/scion-components-dimension.mjs.map +0 -1
  82. package/fesm2015/scion-components-sashbox.mjs +0 -554
  83. package/fesm2015/scion-components-sashbox.mjs.map +0 -1
  84. package/fesm2015/scion-components-splitter.mjs +0 -284
  85. package/fesm2015/scion-components-splitter.mjs.map +0 -1
  86. package/fesm2015/scion-components-throbber.mjs +0 -214
  87. package/fesm2015/scion-components-throbber.mjs.map +0 -1
  88. package/fesm2015/scion-components-viewport.mjs +0 -861
  89. package/fesm2015/scion-components-viewport.mjs.map +0 -1
  90. package/fesm2015/scion-components.mjs +0 -4
  91. package/fesm2015/scion-components.mjs.map +0 -1
  92. package/fesm2020/scion-components-dimension.mjs +0 -135
  93. package/fesm2020/scion-components-dimension.mjs.map +0 -1
  94. package/fesm2020/scion-components-sashbox.mjs.map +0 -1
  95. package/fesm2020/scion-components-splitter.mjs.map +0 -1
  96. package/fesm2020/scion-components-throbber.mjs +0 -214
  97. package/fesm2020/scion-components-throbber.mjs.map +0 -1
  98. package/fesm2020/scion-components-viewport.mjs.map +0 -1
  99. /package/{esm2020 → esm2022}/dimension/public_api.mjs +0 -0
  100. /package/{esm2020 → esm2022}/dimension/scion-components-dimension.mjs +0 -0
  101. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  102. /package/{esm2020 → esm2022}/sashbox/sashbox-accessor.mjs +0 -0
  103. /package/{esm2020 → esm2022}/sashbox/scion-components-sashbox.mjs +0 -0
  104. /package/{esm2020 → esm2022}/scion-components.mjs +0 -0
  105. /package/{esm2020 → esm2022}/splitter/scion-components-splitter.mjs +0 -0
  106. /package/{esm2020 → esm2022}/throbber/public_api.mjs +0 -0
  107. /package/{esm2020 → esm2022}/throbber/scion-components-throbber.mjs +0 -0
  108. /package/{esm2020 → esm2022}/viewport/scion-components-viewport.mjs +0 -0
  109. /package/{fesm2020 → fesm2022}/scion-components.mjs +0 -0
  110. /package/{fesm2020 → fesm2022}/scion-components.mjs.map +0 -0
@@ -1,114 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2019 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { Inject, Injectable } from '@angular/core';
11
- import { DOCUMENT } from '@angular/common';
12
- import { BehaviorSubject, fromEvent, Subject } from 'rxjs';
13
- import { debounceTime, distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';
14
- import * as i0 from "@angular/core";
15
- /**
16
- * Provides the native scrollbar tracksize.
17
- *
18
- * @dynamic ignore 'strictMetadataEmit' errors due to the usage of {@link Document} as ambient type for DI.
19
- */
20
- export class SciNativeScrollbarTrackSizeProvider {
21
- constructor(_document, _zone) {
22
- this._document = _document;
23
- this._zone = _zone;
24
- this._trackSize$ = new BehaviorSubject(null);
25
- this._destroy$ = new Subject();
26
- this.installNativeScrollbarTrackSizeListener();
27
- }
28
- /**
29
- * Returns an {Observable} which emits the native scrollbar track size, if any, or else `null`.
30
- *
31
- * Upon subscription, it emits the track size immediately, and then continuously emits when the track size changes.
32
- */
33
- get trackSize$() {
34
- return this._trackSize$;
35
- }
36
- /**
37
- * Returns the native scrollbar track size, if any, or else `null`.
38
- */
39
- get trackSize() {
40
- return this._trackSize$.getValue();
41
- }
42
- /**
43
- * Computes the native scrollbar track size.
44
- *
45
- * @returns native track size, or `null` if the native scrollbars sit on top of the content.
46
- */
47
- computeTrackSize() {
48
- // create temporary viewport and viewport client with native scrollbars to compute scrolltrack width
49
- const viewportDiv = this._document.createElement('div');
50
- setStyle(viewportDiv, {
51
- position: 'absolute',
52
- overflow: 'scroll',
53
- height: '100px',
54
- width: '100px',
55
- border: 0,
56
- visibility: 'hidden',
57
- });
58
- const viewportClientDiv = this._document.createElement('div');
59
- setStyle(viewportClientDiv, {
60
- height: '100%',
61
- width: '100%',
62
- border: 0,
63
- });
64
- viewportDiv.appendChild(viewportClientDiv);
65
- this._document.body.appendChild(viewportDiv);
66
- const trackSize = {
67
- hScrollbarTrackHeight: viewportDiv.offsetHeight - viewportClientDiv.offsetHeight,
68
- vScrollbarTrackWidth: viewportDiv.offsetWidth - viewportClientDiv.offsetWidth,
69
- };
70
- // destroy temporary viewport
71
- this._document.body.removeChild(viewportDiv);
72
- if (trackSize.hScrollbarTrackHeight === 0 && trackSize.vScrollbarTrackWidth === 0) {
73
- return null;
74
- }
75
- return trackSize;
76
- }
77
- installNativeScrollbarTrackSizeListener() {
78
- // We compute the size of the native scrollbar track when the browser fires the onresize window event.
79
- // This event is also fired on page zoom or when displaying a hidden document. Hidden documents do not have
80
- // a scrollbar track size until being displayed, e.g., after showing hidden iframes.
81
- this._zone.runOutsideAngular(() => {
82
- fromEvent(window, 'resize')
83
- .pipe(debounceTime(5), startWith(null), // trigger the initial computation
84
- map(() => this.computeTrackSize()), distinctUntilChanged((t1, t2) => JSON.stringify(t1) === JSON.stringify(t2)), takeUntil(this._destroy$))
85
- .subscribe(trackSize => {
86
- this._zone.run(() => this._trackSize$.next(trackSize));
87
- });
88
- });
89
- }
90
- ngOnDestroy() {
91
- this._destroy$.next();
92
- }
93
- }
94
- SciNativeScrollbarTrackSizeProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, deps: [{ token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
95
- SciNativeScrollbarTrackSizeProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, providedIn: 'root' });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, decorators: [{
97
- type: Injectable,
98
- args: [{ providedIn: 'root' }]
99
- }], ctorParameters: function () { return [{ type: Document, decorators: [{
100
- type: Inject,
101
- args: [DOCUMENT]
102
- }] }, { type: i0.NgZone }]; } });
103
- /**
104
- * Applies the given style(s) to the given element.
105
- *
106
- * Specify styles to be modified by passing a dictionary containing CSS property names (hyphen case).
107
- * To remove a style, set its value to `null`.
108
- *
109
- * @ignore
110
- */
111
- function setStyle(element, style) {
112
- Object.keys(style).forEach(key => element.style.setProperty(key, style[key]));
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNjcm9sbGJhci10cmFjay1zaXplLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFN0Y7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxtQ0FBbUM7SUFLOUMsWUFBc0MsU0FBbUIsRUFBVSxLQUFhO1FBQTFDLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBSC9ELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWtDLElBQUksQ0FBQyxDQUFDO1FBQ3pFLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRy9DLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JB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QUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHRyYWNrc2l6ZS5cbiAqXG4gKiBAZHluYW1pYyBpZ25vcmUgJ3N0cmljdE1ldGFkYXRhRW1pdCcgZXJyb3JzIGR1ZSB0byB0aGUgdXNhZ2Ugb2Yge0BsaW5rIERvY3VtZW50fSBhcyBhbWJpZW50IHR5cGUgZm9yIERJLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhY2tTaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuaW5zdGFsbE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZUxpc3RlbmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiB7T2JzZXJ2YWJsZX0gd2hpY2ggZW1pdHMgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2sgc2l6ZSwgaWYgYW55LCBvciBlbHNlIGBudWxsYC5cbiAgICpcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGl0IGVtaXRzIHRoZSB0cmFjayBzaXplIGltbWVkaWF0ZWx5LCBhbmQgdGhlbiBjb250aW51b3VzbHkgZW1pdHMgd2hlbiB0aGUgdHJhY2sgc2l6ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCB0cmFja1NpemUkKCk6IE9ic2VydmFibGU8TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl90cmFja1NpemUkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2sgc2l6ZSwgaWYgYW55LCBvciBlbHNlIGBudWxsYC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdHJhY2tTaXplKCk6IE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90cmFja1NpemUkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2sgc2l6ZS5cbiAgICpcbiAgICogQHJldHVybnMgbmF0aXZlIHRyYWNrIHNpemUsIG9yIGBudWxsYCBpZiB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgc2l0IG9uIHRvcCBvZiB0aGUgY29udGVudC5cbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVRyYWNrU2l6ZSgpOiBOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgfCBudWxsIHtcbiAgICAvLyBjcmVhdGUgdGVtcG9yYXJ5IHZpZXdwb3J0IGFuZCB2aWV3cG9ydCBjbGllbnQgd2l0aCBuYXRpdmUgc2Nyb2xsYmFycyB0byBjb21wdXRlIHNjcm9sbHRyYWNrIHdpZHRoXG4gICAgY29uc3Qgdmlld3BvcnREaXYgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzZXRTdHlsZSh2aWV3cG9ydERpdiwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICBoZWlnaHQ6ICcxMDBweCcsXG4gICAgICB3aWR0aDogJzEwMHB4JyxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgdmlld3BvcnRDbGllbnREaXYgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzZXRTdHlsZSh2aWV3cG9ydENsaWVudERpdiwge1xuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgYm9yZGVyOiAwLFxuICAgIH0pO1xuXG4gICAgdmlld3BvcnREaXYuYXBwZW5kQ2hpbGQodmlld3BvcnRDbGllbnREaXYpO1xuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlld3BvcnREaXYpO1xuXG4gICAgY29uc3QgdHJhY2tTaXplOiBOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPSB7XG4gICAgICBoU2Nyb2xsYmFyVHJhY2tIZWlnaHQ6IHZpZXdwb3J0RGl2Lm9mZnNldEhlaWdodCAtIHZpZXdwb3J0Q2xpZW50RGl2Lm9mZnNldEhlaWdodCxcbiAgICAgIHZTY3JvbGxiYXJUcmFja1dpZHRoOiB2aWV3cG9ydERpdi5vZmZzZXRXaWR0aCAtIHZpZXdwb3J0Q2xpZW50RGl2Lm9mZnNldFdpZHRoLFxuICAgIH07XG5cbiAgICAvLyBkZXN0cm95IHRlbXBvcmFyeSB2aWV3cG9ydFxuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodmlld3BvcnREaXYpO1xuICAgIGlmICh0cmFja1NpemUuaFNjcm9sbGJhclRyYWNrSGVpZ2h0ID09PSAwICYmIHRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYWNrU2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIC8vIFdlIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2sgd2hlbiB0aGUgYnJvd3NlciBmaXJlcyB0aGUgb25yZXNpemUgd2luZG93IGV2ZW50LlxuICAgIC8vIFRoaXMgZXZlbnQgaXMgYWxzbyBmaXJlZCBvbiBwYWdlIHpvb20gb3Igd2hlbiBkaXNwbGF5aW5nIGEgaGlkZGVuIGRvY3VtZW50LiBIaWRkZW4gZG9jdW1lbnRzIGRvIG5vdCBoYXZlXG4gICAgLy8gYSBzY3JvbGxiYXIgdHJhY2sgc2l6ZSB1bnRpbCBiZWluZyBkaXNwbGF5ZWQsIGUuZy4sIGFmdGVyIHNob3dpbmcgaGlkZGVuIGlmcmFtZXMuXG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDUpLFxuICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSwgLy8gdHJpZ2dlciB0aGUgaW5pdGlhbCBjb21wdXRhdGlvblxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmNvbXB1dGVUcmFja1NpemUoKSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHQxLCB0MikgPT4gSlNPTi5zdHJpbmdpZnkodDEpID09PSBKU09OLnN0cmluZ2lmeSh0MikpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh0cmFja1NpemUgPT4ge1xuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHRoaXMuX3RyYWNrU2l6ZSQubmV4dCh0cmFja1NpemUpKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG59XG5cbi8qKlxuICogQXBwbGllcyB0aGUgZ2l2ZW4gc3R5bGUocykgdG8gdGhlIGdpdmVuIGVsZW1lbnQuXG4gKlxuICogU3BlY2lmeSBzdHlsZXMgdG8gYmUgbW9kaWZpZWQgYnkgcGFzc2luZyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBDU1MgcHJvcGVydHkgbmFtZXMgKGh5cGhlbiBjYXNlKS5cbiAqIFRvIHJlbW92ZSBhIHN0eWxlLCBzZXQgaXRzIHZhbHVlIHRvIGBudWxsYC5cbiAqXG4gKiBAaWdub3JlXG4gKi9cbmZ1bmN0aW9uIHNldFN0eWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzdHlsZToge1tzdHlsZTogc3RyaW5nXTogYW55IHwgbnVsbH0pOiB2b2lkIHtcbiAgT2JqZWN0LmtleXMoc3R5bGUpLmZvckVhY2goa2V5ID0+IGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCBzdHlsZVtrZXldKSk7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbmF0aXZlIHNjcm9sbGJhciB0cmFjayBzaXplLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSB7XG4gIGhTY3JvbGxiYXJUcmFja0hlaWdodDogbnVtYmVyO1xuICB2U2Nyb2xsYmFyVHJhY2tXaWR0aDogbnVtYmVyO1xufVxuIl19
@@ -1,20 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2019 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- /*
11
- * Secondary entrypoint: '@scion/components/viewport'
12
- *
13
- * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md
14
- */
15
- export { SciViewportModule } from './viewport.module';
16
- export * from './viewport.component';
17
- export * from './scrollable.directive';
18
- export * from './scrollbar/scrollbar.component';
19
- export * from './native-scrollbar-track-size-provider.service';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSDs7OztHQUlHO0FBQ0gsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnREFBZ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbi8qXG4gKiBTZWNvbmRhcnkgZW50cnlwb2ludDogJ0BzY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0J1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9ibG9iL21hc3Rlci9kb2NzL3NlY29uZGFyeS1lbnRyeXBvaW50cy5tZFxuICovXG5leHBvcnQge1NjaVZpZXdwb3J0TW9kdWxlfSBmcm9tICcuL3ZpZXdwb3J0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsYmFyL3Njcm9sbGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG4iXX0=
@@ -1,93 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2019 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { Directive, Input } from '@angular/core';
11
- import { map, takeUntil } from 'rxjs/operators';
12
- import { merge, Subject } from 'rxjs';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "./native-scrollbar-track-size-provider.service";
15
- /**
16
- * Makes the host element natively scrollable and hides native scrollbars by default, unless native scrollbars
17
- * already sit on top of the viewport (e.g. in OS X).
18
- *
19
- * Because there is no cross-browser API to hide scrollbars without losing native scroll support, we set 'overflow'
20
- * to 'scroll' but shift the native scrollbars out of the visible viewport area. The shift offset is computed upfront.
21
- *
22
- * This directive expects its host element to be the only child in document flow in its parent DOM element. It makes the host element
23
- * fill up the entire space (width and height set to 100%). The parent element must have its CSS `overflow` property set to `hidden`
24
- * to hide the pushed out native scrollbars.
25
- */
26
- export class SciScrollableDirective {
27
- constructor(_host, _renderer, nativeScrollbarTrackSizeProvider) {
28
- this._host = _host;
29
- this._renderer = _renderer;
30
- this._destroy$ = new Subject();
31
- this._inputChange$ = new Subject();
32
- /**
33
- * Controls whether to display native scrollbars.
34
- * Has no effect if the native scrollbar sits on top of the content, e.g. in OS X.
35
- */
36
- this.isDisplayNativeScrollbar = false;
37
- merge(nativeScrollbarTrackSizeProvider.trackSize$, this._inputChange$.pipe(map(() => nativeScrollbarTrackSizeProvider.trackSize)))
38
- .pipe(takeUntil(this._destroy$))
39
- .subscribe(nativeScrollbarTrackSize => {
40
- if (nativeScrollbarTrackSize === null) { // the native scrollbar sits on top of the content
41
- this.useNativeScrollbars();
42
- }
43
- else {
44
- this.isDisplayNativeScrollbar ? this.useNativeScrollbars() : this.shiftNativeScrollbars(nativeScrollbarTrackSize);
45
- }
46
- });
47
- }
48
- /**
49
- * Uses the native scrollbars when content overflows.
50
- */
51
- useNativeScrollbars() {
52
- this.setStyle(this._host.nativeElement, {
53
- overflow: 'auto',
54
- width: '100%',
55
- height: '100%',
56
- marginRight: 0,
57
- marginBottom: 0,
58
- });
59
- }
60
- /**
61
- * Shifts the native scrollbars out of the visible viewport area.
62
- */
63
- shiftNativeScrollbars(nativeScrollbarTrackSize) {
64
- this.setStyle(this._host.nativeElement, {
65
- overflow: 'scroll',
66
- width: `calc(100% + ${nativeScrollbarTrackSize.vScrollbarTrackWidth}px`,
67
- height: `calc(100% + ${nativeScrollbarTrackSize.hScrollbarTrackHeight}px`,
68
- marginRight: `-${nativeScrollbarTrackSize.vScrollbarTrackWidth}px`,
69
- marginBottom: `-${nativeScrollbarTrackSize.hScrollbarTrackHeight}px`,
70
- });
71
- }
72
- setStyle(element, style) {
73
- Object.keys(style).forEach(key => this._renderer.setStyle(element, key, style[key]));
74
- }
75
- ngOnChanges(changes) {
76
- this._inputChange$.next();
77
- }
78
- ngOnDestroy() {
79
- this._destroy$.next();
80
- }
81
- }
82
- SciScrollableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SciScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SciNativeScrollbarTrackSizeProvider }], target: i0.ɵɵFactoryTarget.Directive });
83
- SciScrollableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: SciScrollableDirective, selector: "[sciScrollable]", inputs: { isDisplayNativeScrollbar: ["sciScrollableDisplayNativeScrollbar", "isDisplayNativeScrollbar"] }, usesOnChanges: true, ngImport: i0 });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SciScrollableDirective, decorators: [{
85
- type: Directive,
86
- args: [{
87
- selector: '[sciScrollable]',
88
- }]
89
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SciNativeScrollbarTrackSizeProvider }]; }, propDecorators: { isDisplayNativeScrollbar: [{
90
- type: Input,
91
- args: ['sciScrollableDisplayNativeScrollbar']
92
- }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFHcEM7Ozs7Ozs7Ozs7R0FVRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFZakMsWUFBb0IsS0FBaUMsRUFDakMsU0FBb0IsRUFDNUIsZ0NBQXFFO1FBRjdELFVBQUssR0FBTCxLQUFLLENBQTRCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFYaEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTVDOzs7V0FHRztRQUVJLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQUsvQyxLQUFLLENBQ0gsZ0NBQWdDLENBQUMsVUFBVSxFQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDL0U7YUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNwQyxJQUFJLHdCQUF3QixLQUFLLElBQUksRUFBRSxFQUFFLGtEQUFrRDtnQkFDekYsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDNUI7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDbkg7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLHdCQUFrRDtRQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3RDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxlQUFlLHdCQUF3QixDQUFDLG9CQUFvQixJQUFJO1lBQ3ZFLE1BQU0sRUFBRSxlQUFlLHdCQUF3QixDQUFDLHFCQUFxQixJQUFJO1lBQ3pFLFdBQVcsRUFBRSxJQUFJLHdCQUF3QixDQUFDLG9CQUFvQixJQUFJO1lBQ2xFLFlBQVksRUFBRSxJQUFJLHdCQUF3QixDQUFDLHFCQUFxQixJQUFJO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBZ0IsRUFBRSxLQUFpQjtRQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzttSEFsRVUsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjsyS0FXUSx3QkFBd0I7c0JBRDlCLEtBQUs7dUJBQUMscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLCBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcn0gZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge21hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge21lcmdlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGljdGlvbmFyeX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogTWFrZXMgdGhlIGhvc3QgZWxlbWVudCBuYXRpdmVseSBzY3JvbGxhYmxlIGFuZCBoaWRlcyBuYXRpdmUgc2Nyb2xsYmFycyBieSBkZWZhdWx0LCB1bmxlc3MgbmF0aXZlIHNjcm9sbGJhcnNcbiAqIGFscmVhZHkgc2l0IG9uIHRvcCBvZiB0aGUgdmlld3BvcnQgKGUuZy4gaW4gT1MgWCkuXG4gKlxuICogQmVjYXVzZSB0aGVyZSBpcyBubyBjcm9zcy1icm93c2VyIEFQSSB0byBoaWRlIHNjcm9sbGJhcnMgd2l0aG91dCBsb3NpbmcgbmF0aXZlIHNjcm9sbCBzdXBwb3J0LCB3ZSBzZXQgJ292ZXJmbG93J1xuICogdG8gJ3Njcm9sbCcgYnV0IHNoaWZ0IHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBvdXQgb2YgdGhlIHZpc2libGUgdmlld3BvcnQgYXJlYS4gVGhlIHNoaWZ0IG9mZnNldCBpcyBjb21wdXRlZCB1cGZyb250LlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIGV4cGVjdHMgaXRzIGhvc3QgZWxlbWVudCB0byBiZSB0aGUgb25seSBjaGlsZCBpbiBkb2N1bWVudCBmbG93IGluIGl0cyBwYXJlbnQgRE9NIGVsZW1lbnQuIEl0IG1ha2VzIHRoZSBob3N0IGVsZW1lbnRcbiAqIGZpbGwgdXAgdGhlIGVudGlyZSBzcGFjZSAod2lkdGggYW5kIGhlaWdodCBzZXQgdG8gMTAwJSkuIFRoZSBwYXJlbnQgZWxlbWVudCBtdXN0IGhhdmUgaXRzIENTUyBgb3ZlcmZsb3dgIHByb3BlcnR5IHNldCB0byBgaGlkZGVuYFxuICogdG8gaGlkZSB0aGUgcHVzaGVkIG91dCBuYXRpdmUgc2Nyb2xsYmFycy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NjaVNjcm9sbGFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2NpU2Nyb2xsYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2lucHV0Q2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdG8gZGlzcGxheSBuYXRpdmUgc2Nyb2xsYmFycy5cbiAgICogSGFzIG5vIGVmZmVjdCBpZiB0aGUgbmF0aXZlIHNjcm9sbGJhciBzaXRzIG9uIHRvcCBvZiB0aGUgY29udGVudCwgZS5nLiBpbiBPUyBYLlxuICAgKi9cbiAgQElucHV0KCdzY2lTY3JvbGxhYmxlRGlzcGxheU5hdGl2ZVNjcm9sbGJhcicpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBwdWJsaWMgaXNEaXNwbGF5TmF0aXZlU2Nyb2xsYmFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyOiBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcikge1xuICAgIG1lcmdlKFxuICAgICAgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXIudHJhY2tTaXplJCxcbiAgICAgIHRoaXMuX2lucHV0Q2hhbmdlJC5waXBlKG1hcCgoKSA9PiBuYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlci50cmFja1NpemUpKSxcbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPT4ge1xuICAgICAgICBpZiAobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplID09PSBudWxsKSB7IC8vIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHNpdHMgb24gdG9wIG9mIHRoZSBjb250ZW50XG4gICAgICAgICAgdGhpcy51c2VOYXRpdmVTY3JvbGxiYXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc0Rpc3BsYXlOYXRpdmVTY3JvbGxiYXIgPyB0aGlzLnVzZU5hdGl2ZVNjcm9sbGJhcnMoKSA6IHRoaXMuc2hpZnROYXRpdmVTY3JvbGxiYXJzKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHdoZW4gY29udGVudCBvdmVyZmxvd3MuXG4gICAqL1xuICBwcml2YXRlIHVzZU5hdGl2ZVNjcm9sbGJhcnMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLl9ob3N0Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBtYXJnaW5SaWdodDogMCxcbiAgICAgIG1hcmdpbkJvdHRvbTogMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGlmdHMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIG91dCBvZiB0aGUgdmlzaWJsZSB2aWV3cG9ydCBhcmVhLlxuICAgKi9cbiAgcHJpdmF0ZSBzaGlmdE5hdGl2ZVNjcm9sbGJhcnMobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplOiBOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0eWxlKHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudCwge1xuICAgICAgb3ZlcmZsb3c6ICdzY3JvbGwnLFxuICAgICAgd2lkdGg6IGBjYWxjKDEwMCUgKyAke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aH1weGAsXG4gICAgICBoZWlnaHQ6IGBjYWxjKDEwMCUgKyAke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS5oU2Nyb2xsYmFyVHJhY2tIZWlnaHR9cHhgLFxuICAgICAgbWFyZ2luUmlnaHQ6IGAtJHtuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUudlNjcm9sbGJhclRyYWNrV2lkdGh9cHhgLFxuICAgICAgbWFyZ2luQm90dG9tOiBgLSR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodH1weGAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0eWxlKGVsZW1lbnQ6IEVsZW1lbnQsIHN0eWxlOiBEaWN0aW9uYXJ5KTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXMoc3R5bGUpLmZvckVhY2goa2V5ID0+IHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIGtleSwgc3R5bGVba2V5XSkpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dENoYW5nZSQubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxufVxuIl19