@scion/components 18.1.1 → 19.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 (68) hide show
  1. package/dimension/dimension.directive.d.ts +2 -2
  2. package/dimension/dimension.module.d.ts +2 -0
  3. package/dimension/public_api.d.ts +1 -1
  4. package/fesm2022/scion-components-dimension.mjs +18 -17
  5. package/fesm2022/scion-components-dimension.mjs.map +1 -1
  6. package/fesm2022/scion-components-sashbox.mjs +222 -215
  7. package/fesm2022/scion-components-sashbox.mjs.map +1 -1
  8. package/fesm2022/scion-components-splitter.mjs +69 -74
  9. package/fesm2022/scion-components-splitter.mjs.map +1 -1
  10. package/fesm2022/scion-components-throbber.mjs +43 -45
  11. package/fesm2022/scion-components-throbber.mjs.map +1 -1
  12. package/fesm2022/scion-components-viewport.mjs +94 -99
  13. package/fesm2022/scion-components-viewport.mjs.map +1 -1
  14. package/package.json +4 -16
  15. package/sashbox/element-ref.directive.d.ts +1 -4
  16. package/sashbox/sash-initializer.directive.d.ts +4 -7
  17. package/sashbox/sash.directive.d.ts +21 -20
  18. package/sashbox/sashbox-accessor.d.ts +3 -4
  19. package/sashbox/sashbox.component.d.ts +36 -27
  20. package/sashbox/sashbox.module.d.ts +2 -0
  21. package/splitter/public_api.d.ts +1 -1
  22. package/splitter/splitter.component.d.ts +22 -26
  23. package/splitter/splitter.module.d.ts +2 -0
  24. package/throbber/spinner-throbber/spinner-throbber.component.d.ts +1 -1
  25. package/throbber/throbber.component.d.ts +2 -2
  26. package/throbber/throbber.module.d.ts +2 -0
  27. package/viewport/native-scrollbar-track-size-provider.service.d.ts +2 -2
  28. package/viewport/public_api.d.ts +1 -1
  29. package/viewport/scrollable.directive.d.ts +4 -4
  30. package/viewport/scrollbar/scrollbar.component.d.ts +16 -22
  31. package/viewport/viewport.component.d.ts +13 -12
  32. package/viewport/viewport.module.d.ts +2 -0
  33. package/esm2022/dimension/bounding-client-rect.signal.mjs +0 -54
  34. package/esm2022/dimension/dimension.directive.mjs +0 -67
  35. package/esm2022/dimension/dimension.mjs +0 -11
  36. package/esm2022/dimension/dimension.module.mjs +0 -34
  37. package/esm2022/dimension/dimension.signal.mjs +0 -63
  38. package/esm2022/dimension/public_api.mjs +0 -19
  39. package/esm2022/dimension/scion-components-dimension.mjs +0 -5
  40. package/esm2022/public-api.mjs +0 -11
  41. package/esm2022/sashbox/element-ref.directive.mjs +0 -31
  42. package/esm2022/sashbox/public_api.mjs +0 -18
  43. package/esm2022/sashbox/sash-initializer.directive.mjs +0 -35
  44. package/esm2022/sashbox/sash.directive.mjs +0 -145
  45. package/esm2022/sashbox/sashbox-accessor.mjs +0 -6
  46. package/esm2022/sashbox/sashbox.component.mjs +0 -282
  47. package/esm2022/sashbox/sashbox.module.mjs +0 -55
  48. package/esm2022/sashbox/scion-components-sashbox.mjs +0 -5
  49. package/esm2022/scion-components.mjs +0 -5
  50. package/esm2022/splitter/public_api.mjs +0 -17
  51. package/esm2022/splitter/scion-components-splitter.mjs +0 -5
  52. package/esm2022/splitter/splitter.component.mjs +0 -226
  53. package/esm2022/splitter/splitter.module.mjs +0 -38
  54. package/esm2022/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +0 -25
  55. package/esm2022/throbber/public_api.mjs +0 -17
  56. package/esm2022/throbber/ripple-throbber/ripple-throbber.component.mjs +0 -25
  57. package/esm2022/throbber/roller-throbber/roller-throbber.component.mjs +0 -25
  58. package/esm2022/throbber/scion-components-throbber.mjs +0 -5
  59. package/esm2022/throbber/spinner-throbber/spinner-throbber.component.mjs +0 -26
  60. package/esm2022/throbber/throbber.component.mjs +0 -72
  61. package/esm2022/throbber/throbber.module.mjs +0 -32
  62. package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +0 -91
  63. package/esm2022/viewport/public_api.mjs +0 -19
  64. package/esm2022/viewport/scion-components-viewport.mjs +0 -5
  65. package/esm2022/viewport/scrollable.directive.mjs +0 -92
  66. package/esm2022/viewport/scrollbar/scrollbar.component.mjs +0 -305
  67. package/esm2022/viewport/viewport.component.mjs +0 -264
  68. package/esm2022/viewport/viewport.module.mjs +0 -42
@@ -1,32 +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 { NgModule } from '@angular/core';
11
- import { SciThrobberComponent } from './throbber.component';
12
- import * as i0 from "@angular/core";
13
- /**
14
- * Provides {@link SciThrobberComponent}, an animated graphical control to indicate the execution of an action.
15
- */
16
- export class SciThrobberModule {
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciThrobberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: SciThrobberModule, imports: [SciThrobberComponent], exports: [SciThrobberComponent] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciThrobberModule }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciThrobberModule, decorators: [{
22
- type: NgModule,
23
- args: [{
24
- imports: [
25
- SciThrobberComponent,
26
- ],
27
- exports: [
28
- SciThrobberComponent,
29
- ],
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb2JiZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy90aHJvYmJlci9zcmMvdGhyb2JiZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFTSCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQU4xQixvQkFBb0IsYUFHcEIsb0JBQW9COytHQUdYLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFSN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTY2lUaHJvYmJlckNvbXBvbmVudH0gZnJvbSAnLi90aHJvYmJlci5jb21wb25lbnQnO1xuXG4vKipcbiAqIFByb3ZpZGVzIHtAbGluayBTY2lUaHJvYmJlckNvbXBvbmVudH0sIGFuIGFuaW1hdGVkIGdyYXBoaWNhbCBjb250cm9sIHRvIGluZGljYXRlIHRoZSBleGVjdXRpb24gb2YgYW4gYWN0aW9uLlxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU2NpVGhyb2JiZXJDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTY2lUaHJvYmJlckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2NpVGhyb2JiZXJNb2R1bGUge1xufVxuIl19
@@ -1,91 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2024 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, NgZone } from '@angular/core';
11
- import { DOCUMENT } from '@angular/common';
12
- import { fromEvent } from 'rxjs';
13
- import { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';
14
- import { toSignal } from '@angular/core/rxjs-interop';
15
- import { subscribeIn } from '@scion/toolkit/operators';
16
- import * as i0 from "@angular/core";
17
- /**
18
- * Provides the native scrollbar tracksize.
19
- */
20
- export class SciNativeScrollbarTrackSizeProvider {
21
- constructor() {
22
- this._document = inject(DOCUMENT);
23
- this._zone = inject(NgZone);
24
- this.trackSize = this.createNativeScrollbarTrackSizeSignal();
25
- }
26
- /**
27
- * Computes the native scrollbar track size.
28
- *
29
- * @returns native track size, or `null` if the native scrollbars sit on top of the content.
30
- */
31
- computeTrackSize() {
32
- // Create temporary viewport and viewport client with native scrollbars to compute the scrolltrack width.
33
- const viewportDiv = this._document.createElement('div');
34
- setStyle(viewportDiv, {
35
- position: 'absolute',
36
- overflow: 'scroll',
37
- height: '100px',
38
- width: '100px',
39
- border: 0,
40
- visibility: 'hidden',
41
- });
42
- const viewportClientDiv = this._document.createElement('div');
43
- setStyle(viewportClientDiv, {
44
- height: '100%',
45
- width: '100%',
46
- border: 0,
47
- });
48
- viewportDiv.appendChild(viewportClientDiv);
49
- this._document.body.appendChild(viewportDiv);
50
- // Do not use client and offset width/height to calculate the size of the scrollbar, as they are rounded, resulting in unwanted spacing when zooming the page.
51
- const viewportBounds = viewportDiv.getBoundingClientRect();
52
- const viewportClientBounds = viewportClientDiv.getBoundingClientRect();
53
- const trackSize = {
54
- hScrollbarTrackHeight: viewportBounds.height - viewportClientBounds.height,
55
- vScrollbarTrackWidth: viewportBounds.width - viewportClientBounds.width,
56
- };
57
- // Destroy temporary viewport.
58
- this._document.body.removeChild(viewportDiv);
59
- if (trackSize.hScrollbarTrackHeight === 0 && trackSize.vScrollbarTrackWidth === 0) {
60
- return null;
61
- }
62
- return trackSize;
63
- }
64
- createNativeScrollbarTrackSizeSignal() {
65
- // We compute the size of the native scrollbar track when the browser fires the onresize window event.
66
- // This event is also fired on page zoom or when displaying a hidden document. Hidden documents do not have
67
- // a scrollbar track size until being displayed, e.g., after showing hidden iframes.
68
- const trackSize$ = fromEvent(window, 'resize')
69
- .pipe(subscribeIn(fn => this._zone.runOutsideAngular(fn)), debounceTime(5), startWith(null), // trigger the initial computation
70
- map(() => this.computeTrackSize()), distinctUntilChanged((t1, t2) => t1?.hScrollbarTrackHeight === t2?.hScrollbarTrackHeight && t1?.vScrollbarTrackWidth === t2?.vScrollbarTrackWidth));
71
- return toSignal(trackSize$, { initialValue: null });
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
74
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, providedIn: 'root' }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, decorators: [{
77
- type: Injectable,
78
- args: [{ providedIn: 'root' }]
79
- }], ctorParameters: () => [] });
80
- /**
81
- * Applies the given style(s) to the given element.
82
- *
83
- * Specify styles to be modified by passing a dictionary containing CSS property names (hyphen case).
84
- * To remove a style, set its value to `null`.
85
- *
86
- * @ignore
87
- */
88
- function setStyle(element, style) {
89
- Object.keys(style).forEach(key => element.style.setProperty(key, style[key]));
90
- }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNjcm9sbGJhci10cmFjay1zaXplLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQ0FBbUM7SUFVOUM7UUFSUSxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFRN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQjtRQUN0Qix5R0FBeUc7UUFDekcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUNwQixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsT0FBTztZQUNmLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxVQUFVLEVBQUUsUUFBUTtTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUM7UUFFSCxXQUFXLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLDhKQUE4SjtRQUM5SixNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQTZCO1lBQzFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTTtZQUMxRSxvQkFBb0IsRUFBRSxjQUFjLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUs7U0FDeEUsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBSSxTQUFTLENBQUMscUJBQXFCLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sb0NBQW9DO1FBQzFDLHNHQUFzRztRQUN0RywyR0FBMkc7UUFDM0csb0ZBQW9GO1FBQ3BGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQzNDLElBQUksQ0FDSCxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ25ELFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsa0NBQWtDO1FBQ25ELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUNsQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsS0FBSyxFQUFFLEVBQUUscUJBQXFCLElBQUksRUFBRSxFQUFFLG9CQUFvQixLQUFLLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUNuSixDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs4R0F2RVUsbUNBQW1DO2tIQUFuQyxtQ0FBbUMsY0FEdkIsTUFBTTs7MkZBQ2xCLG1DQUFtQztrQkFEL0MsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBMkVoQzs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxRQUFRLENBQUMsT0FBb0IsRUFBRSxLQUFvQztJQUMxRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lLCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7ZnJvbUV2ZW50fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7c3Vic2NyaWJlSW59IGZyb20gJ0BzY2lvbi90b29sa2l0L29wZXJhdG9ycyc7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2tzaXplLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlciB7XG5cbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSB0cmFjayBzaXplIG9mIHRoZSBuYXRpdmUgc2Nyb2xsYmFyLCBvciBgbnVsbGAgaWYgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHNpdCBvbiB0b3Agb2YgdGhlIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgdHJhY2tTaXplOiBTaWduYWw8TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50cmFja1NpemUgPSB0aGlzLmNyZWF0ZU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVNpZ25hbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHRyYWNrIHNpemUuXG4gICAqXG4gICAqIEByZXR1cm5zIG5hdGl2ZSB0cmFjayBzaXplLCBvciBgbnVsbGAgaWYgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHNpdCBvbiB0b3Agb2YgdGhlIGNvbnRlbnQuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVUcmFja1NpemUoKTogTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbCB7XG4gICAgLy8gQ3JlYXRlIHRlbXBvcmFyeSB2aWV3cG9ydCBhbmQgdmlld3BvcnQgY2xpZW50IHdpdGggbmF0aXZlIHNjcm9sbGJhcnMgdG8gY29tcHV0ZSB0aGUgc2Nyb2xsdHJhY2sgd2lkdGguXG4gICAgY29uc3Qgdmlld3BvcnREaXYgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzZXRTdHlsZSh2aWV3cG9ydERpdiwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICBoZWlnaHQ6ICcxMDBweCcsXG4gICAgICB3aWR0aDogJzEwMHB4JyxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgdmlld3BvcnRDbGllbnREaXYgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzZXRTdHlsZSh2aWV3cG9ydENsaWVudERpdiwge1xuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgYm9yZGVyOiAwLFxuICAgIH0pO1xuXG4gICAgdmlld3BvcnREaXYuYXBwZW5kQ2hpbGQodmlld3BvcnRDbGllbnREaXYpO1xuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlld3BvcnREaXYpO1xuXG4gICAgLy8gRG8gbm90IHVzZSBjbGllbnQgYW5kIG9mZnNldCB3aWR0aC9oZWlnaHQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGFzIHRoZXkgYXJlIHJvdW5kZWQsIHJlc3VsdGluZyBpbiB1bndhbnRlZCBzcGFjaW5nIHdoZW4gem9vbWluZyB0aGUgcGFnZS5cbiAgICBjb25zdCB2aWV3cG9ydEJvdW5kcyA9IHZpZXdwb3J0RGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q2xpZW50Qm91bmRzID0gdmlld3BvcnRDbGllbnREaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgdHJhY2tTaXplOiBOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPSB7XG4gICAgICBoU2Nyb2xsYmFyVHJhY2tIZWlnaHQ6IHZpZXdwb3J0Qm91bmRzLmhlaWdodCAtIHZpZXdwb3J0Q2xpZW50Qm91bmRzLmhlaWdodCxcbiAgICAgIHZTY3JvbGxiYXJUcmFja1dpZHRoOiB2aWV3cG9ydEJvdW5kcy53aWR0aCAtIHZpZXdwb3J0Q2xpZW50Qm91bmRzLndpZHRoLFxuICAgIH07XG5cbiAgICAvLyBEZXN0cm95IHRlbXBvcmFyeSB2aWV3cG9ydC5cbiAgICB0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHZpZXdwb3J0RGl2KTtcbiAgICBpZiAodHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodCA9PT0gMCAmJiB0cmFja1NpemUudlNjcm9sbGJhclRyYWNrV2lkdGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFja1NpemU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVNpZ25hbCgpOiBTaWduYWw8TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbD4ge1xuICAgIC8vIFdlIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2sgd2hlbiB0aGUgYnJvd3NlciBmaXJlcyB0aGUgb25yZXNpemUgd2luZG93IGV2ZW50LlxuICAgIC8vIFRoaXMgZXZlbnQgaXMgYWxzbyBmaXJlZCBvbiBwYWdlIHpvb20gb3Igd2hlbiBkaXNwbGF5aW5nIGEgaGlkZGVuIGRvY3VtZW50LiBIaWRkZW4gZG9jdW1lbnRzIGRvIG5vdCBoYXZlXG4gICAgLy8gYSBzY3JvbGxiYXIgdHJhY2sgc2l6ZSB1bnRpbCBiZWluZyBkaXNwbGF5ZWQsIGUuZy4sIGFmdGVyIHNob3dpbmcgaGlkZGVuIGlmcmFtZXMuXG4gICAgY29uc3QgdHJhY2tTaXplJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluKGZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDUpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksIC8vIHRyaWdnZXIgdGhlIGluaXRpYWwgY29tcHV0YXRpb25cbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY29tcHV0ZVRyYWNrU2l6ZSgpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHQxLCB0MikgPT4gdDE/LmhTY3JvbGxiYXJUcmFja0hlaWdodCA9PT0gdDI/LmhTY3JvbGxiYXJUcmFja0hlaWdodCAmJiB0MT8udlNjcm9sbGJhclRyYWNrV2lkdGggPT09IHQyPy52U2Nyb2xsYmFyVHJhY2tXaWR0aCksXG4gICAgICApO1xuICAgIHJldHVybiB0b1NpZ25hbCh0cmFja1NpemUkLCB7aW5pdGlhbFZhbHVlOiBudWxsfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBnaXZlbiBzdHlsZShzKSB0byB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBTcGVjaWZ5IHN0eWxlcyB0byBiZSBtb2RpZmllZCBieSBwYXNzaW5nIGEgZGljdGlvbmFyeSBjb250YWluaW5nIENTUyBwcm9wZXJ0eSBuYW1lcyAoaHlwaGVuIGNhc2UpLlxuICogVG8gcmVtb3ZlIGEgc3R5bGUsIHNldCBpdHMgdmFsdWUgdG8gYG51bGxgLlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gc2V0U3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHN0eWxlOiB7W3N0eWxlOiBzdHJpbmddOiBhbnkgfCBudWxsfSk6IHZvaWQge1xuICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0eWxlW2tleV0pKTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHRyYWNrIHNpemUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHtcbiAgaFNjcm9sbGJhclRyYWNrSGVpZ2h0OiBudW1iZXI7XG4gIHZTY3JvbGxiYXJUcmFja1dpZHRoOiBudW1iZXI7XG59XG4iXX0=
@@ -1,19 +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 { SciViewportComponent } from './viewport.component';
17
- export { SciScrollbarComponent } from './scrollbar/scrollbar.component';
18
- export { SciScrollableDirective } from './scrollable.directive';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSDs7OztHQUlHO0FBQ0gsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFDLG9CQUFvQixFQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuLypcbiAqIFNlY29uZGFyeSBlbnRyeXBvaW50OiAnQHNjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQnXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbmctcGFja2Fnci9uZy1wYWNrYWdyL2Jsb2IvbWFzdGVyL2RvY3Mvc2Vjb25kYXJ5LWVudHJ5cG9pbnRzLm1kXG4gKi9cbmV4cG9ydCB7U2NpVmlld3BvcnRNb2R1bGV9IGZyb20gJy4vdmlld3BvcnQubW9kdWxlJztcbmV4cG9ydCB7U2NpVmlld3BvcnRDb21wb25lbnQsIFNjcm9sbGJhclN0eWxlfSBmcm9tICcuL3ZpZXdwb3J0LmNvbXBvbmVudCc7XG5leHBvcnQge1NjaVNjcm9sbGJhckNvbXBvbmVudH0gZnJvbSAnLi9zY3JvbGxiYXIvc2Nyb2xsYmFyLmNvbXBvbmVudCc7XG5leHBvcnQge1NjaVNjcm9sbGFibGVEaXJlY3RpdmV9IGZyb20gJy4vc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Npb24tY29tcG9uZW50cy12aWV3cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvdmlld3BvcnQvc3JjL3NjaW9uLWNvbXBvbmVudHMtdmlld3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,92 +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, effect, ElementRef, inject, input, Renderer2, untracked } from '@angular/core';
11
- import { SciNativeScrollbarTrackSizeProvider } from './native-scrollbar-track-size-provider.service';
12
- import * as i0 from "@angular/core";
13
- /**
14
- * Makes the host element natively scrollable and hides native scrollbars by default, unless native scrollbars
15
- * already sit on top of the viewport (e.g. in OS X).
16
- *
17
- * Because there is no cross-browser API to hide scrollbars without losing native scroll support, we set 'overflow'
18
- * to 'scroll' but shift the native scrollbars out of the visible viewport area. The shift offset is computed upfront.
19
- *
20
- * This directive expects its host element to be the only child in document flow in its parent DOM element. It makes the host element
21
- * fill up the entire space (width and height set to 100%). The parent element must have its CSS `overflow` property set to `hidden`
22
- * to hide the pushed out native scrollbars.
23
- */
24
- export class SciScrollableDirective {
25
- constructor() {
26
- this._host = inject((ElementRef)).nativeElement;
27
- this._renderer = inject(Renderer2);
28
- this._nativeScrollbarTrackSizeProvider = inject(SciNativeScrollbarTrackSizeProvider);
29
- /**
30
- * Controls whether to display native scrollbars.
31
- * Has no effect if the native scrollbar sits on top of the content, e.g. in OS X.
32
- */
33
- this.displayNativeScrollbar = input(false, { alias: 'sciScrollableDisplayNativeScrollbar' });
34
- this.controlDisplayOfNativeScrollbar();
35
- }
36
- /**
37
- * Controls the display of the native scrollbar based on this directive's configuration.
38
- */
39
- controlDisplayOfNativeScrollbar() {
40
- effect(() => {
41
- const displayNativeScrollbar = this.displayNativeScrollbar();
42
- if (displayNativeScrollbar) {
43
- untracked(() => this.useNativeScrollbars());
44
- return;
45
- }
46
- const nativeScrollbarTrackSize = this._nativeScrollbarTrackSizeProvider.trackSize();
47
- if (nativeScrollbarTrackSize) {
48
- untracked(() => this.shiftNativeScrollbars(nativeScrollbarTrackSize));
49
- }
50
- else {
51
- untracked(() => this.useNativeScrollbars());
52
- }
53
- });
54
- }
55
- /**
56
- * Uses the native scrollbars when content overflows.
57
- */
58
- useNativeScrollbars() {
59
- this.setStyle(this._host, {
60
- overflow: 'auto',
61
- width: '100%',
62
- height: '100%',
63
- marginRight: 0,
64
- marginBottom: 0,
65
- });
66
- }
67
- /**
68
- * Shifts the native scrollbars out of the visible viewport area.
69
- */
70
- shiftNativeScrollbars(nativeScrollbarTrackSize) {
71
- this.setStyle(this._host, {
72
- overflow: 'scroll',
73
- width: `calc(100% + ${nativeScrollbarTrackSize.vScrollbarTrackWidth}px`,
74
- height: `calc(100% + ${nativeScrollbarTrackSize.hScrollbarTrackHeight}px`,
75
- marginRight: `-${nativeScrollbarTrackSize.vScrollbarTrackWidth}px`,
76
- marginBottom: `-${nativeScrollbarTrackSize.hScrollbarTrackHeight}px`,
77
- });
78
- }
79
- setStyle(element, style) {
80
- Object.keys(style).forEach(key => this._renderer.setStyle(element, key, style[key]));
81
- }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciScrollableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
83
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.1", type: SciScrollableDirective, isStandalone: true, selector: "[sciScrollable]", inputs: { displayNativeScrollbar: { classPropertyName: "displayNativeScrollbar", publicName: "sciScrollableDisplayNativeScrollbar", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
84
- }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciScrollableDirective, decorators: [{
86
- type: Directive,
87
- args: [{
88
- selector: '[sciScrollable]',
89
- standalone: true,
90
- }]
91
- }], ctorParameters: () => [] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUEyQixtQ0FBbUMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDOztBQUc3SDs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQVlqQztRQVZRLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUEwQixDQUFBLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDekQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixzQ0FBaUMsR0FBRyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV4Rjs7O1dBR0c7UUFDSSwyQkFBc0IsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUMsS0FBSyxFQUFFLHFDQUFxQyxFQUFDLENBQUMsQ0FBQztRQUczRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSywrQkFBK0I7UUFDckMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDN0QsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztnQkFDNUMsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwRixJQUFJLHdCQUF3QixFQUFFLENBQUM7Z0JBQzdCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLHdCQUFrRDtRQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsS0FBSyxFQUFFLGVBQWUsd0JBQXdCLENBQUMsb0JBQW9CLElBQUk7WUFDdkUsTUFBTSxFQUFFLGVBQWUsd0JBQXdCLENBQUMscUJBQXFCLElBQUk7WUFDekUsV0FBVyxFQUFFLElBQUksd0JBQXdCLENBQUMsb0JBQW9CLElBQUk7WUFDbEUsWUFBWSxFQUFFLElBQUksd0JBQXdCLENBQUMscUJBQXFCLElBQUk7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFnQixFQUFFLEtBQWlCO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBakVVLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIFJlbmRlcmVyMiwgdW50cmFja2VkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLCBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcn0gZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0RpY3Rpb25hcnl9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuXG4vKipcbiAqIE1ha2VzIHRoZSBob3N0IGVsZW1lbnQgbmF0aXZlbHkgc2Nyb2xsYWJsZSBhbmQgaGlkZXMgbmF0aXZlIHNjcm9sbGJhcnMgYnkgZGVmYXVsdCwgdW5sZXNzIG5hdGl2ZSBzY3JvbGxiYXJzXG4gKiBhbHJlYWR5IHNpdCBvbiB0b3Agb2YgdGhlIHZpZXdwb3J0IChlLmcuIGluIE9TIFgpLlxuICpcbiAqIEJlY2F1c2UgdGhlcmUgaXMgbm8gY3Jvc3MtYnJvd3NlciBBUEkgdG8gaGlkZSBzY3JvbGxiYXJzIHdpdGhvdXQgbG9zaW5nIG5hdGl2ZSBzY3JvbGwgc3VwcG9ydCwgd2Ugc2V0ICdvdmVyZmxvdydcbiAqIHRvICdzY3JvbGwnIGJ1dCBzaGlmdCB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgb3V0IG9mIHRoZSB2aXNpYmxlIHZpZXdwb3J0IGFyZWEuIFRoZSBzaGlmdCBvZmZzZXQgaXMgY29tcHV0ZWQgdXBmcm9udC5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBleHBlY3RzIGl0cyBob3N0IGVsZW1lbnQgdG8gYmUgdGhlIG9ubHkgY2hpbGQgaW4gZG9jdW1lbnQgZmxvdyBpbiBpdHMgcGFyZW50IERPTSBlbGVtZW50LiBJdCBtYWtlcyB0aGUgaG9zdCBlbGVtZW50XG4gKiBmaWxsIHVwIHRoZSBlbnRpcmUgc3BhY2UgKHdpZHRoIGFuZCBoZWlnaHQgc2V0IHRvIDEwMCUpLiBUaGUgcGFyZW50IGVsZW1lbnQgbXVzdCBoYXZlIGl0cyBDU1MgYG92ZXJmbG93YCBwcm9wZXJ0eSBzZXQgdG8gYGhpZGRlbmBcbiAqIHRvIGhpZGUgdGhlIHB1c2hlZCBvdXQgbmF0aXZlIHNjcm9sbGJhcnMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzY2lTY3JvbGxhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNjaVNjcm9sbGFibGVEaXJlY3RpdmUge1xuXG4gIHByaXZhdGUgX2hvc3QgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG4gIHByaXZhdGUgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgX25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyID0gaW5qZWN0KFNjaU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyKTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0byBkaXNwbGF5IG5hdGl2ZSBzY3JvbGxiYXJzLlxuICAgKiBIYXMgbm8gZWZmZWN0IGlmIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHNpdHMgb24gdG9wIG9mIHRoZSBjb250ZW50LCBlLmcuIGluIE9TIFguXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheU5hdGl2ZVNjcm9sbGJhciA9IGlucHV0KGZhbHNlLCB7YWxpYXM6ICdzY2lTY3JvbGxhYmxlRGlzcGxheU5hdGl2ZVNjcm9sbGJhcid9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbnRyb2xEaXNwbGF5T2ZOYXRpdmVTY3JvbGxiYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgZGlzcGxheSBvZiB0aGUgbmF0aXZlIHNjcm9sbGJhciBiYXNlZCBvbiB0aGlzIGRpcmVjdGl2ZSdzIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNvbnRyb2xEaXNwbGF5T2ZOYXRpdmVTY3JvbGxiYXIoKTogdm9pZCB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRpc3BsYXlOYXRpdmVTY3JvbGxiYXIgPSB0aGlzLmRpc3BsYXlOYXRpdmVTY3JvbGxiYXIoKTtcbiAgICAgIGlmIChkaXNwbGF5TmF0aXZlU2Nyb2xsYmFyKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnVzZU5hdGl2ZVNjcm9sbGJhcnMoKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplID0gdGhpcy5fbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXIudHJhY2tTaXplKCk7XG4gICAgICBpZiAobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnNoaWZ0TmF0aXZlU2Nyb2xsYmFycyhuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy51c2VOYXRpdmVTY3JvbGxiYXJzKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHdoZW4gY29udGVudCBvdmVyZmxvd3MuXG4gICAqL1xuICBwcml2YXRlIHVzZU5hdGl2ZVNjcm9sbGJhcnMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLl9ob3N0LCB7XG4gICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgbWFyZ2luUmlnaHQ6IDAsXG4gICAgICBtYXJnaW5Cb3R0b206IDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2hpZnRzIHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBvdXQgb2YgdGhlIHZpc2libGUgdmlld3BvcnQgYXJlYS5cbiAgICovXG4gIHByaXZhdGUgc2hpZnROYXRpdmVTY3JvbGxiYXJzKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZTogTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLl9ob3N0LCB7XG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICB3aWR0aDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLnZTY3JvbGxiYXJUcmFja1dpZHRofXB4YCxcbiAgICAgIGhlaWdodDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodH1weGAsXG4gICAgICBtYXJnaW5SaWdodDogYC0ke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aH1weGAsXG4gICAgICBtYXJnaW5Cb3R0b206IGAtJHtuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUuaFNjcm9sbGJhclRyYWNrSGVpZ2h0fXB4YCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGUoZWxlbWVudDogRWxlbWVudCwgc3R5bGU6IERpY3Rpb25hcnkpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwga2V5LCBzdHlsZVtrZXldKSk7XG4gIH1cbn1cbiJdfQ==