@scion/components 18.1.0 → 18.1.1
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.
- package/esm2022/dimension/bounding-client-rect.signal.mjs +4 -3
- package/esm2022/dimension/dimension.directive.mjs +11 -6
- package/esm2022/dimension/dimension.signal.mjs +9 -4
- package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +20 -44
- package/esm2022/viewport/scrollable.directive.mjs +29 -31
- package/esm2022/viewport/scrollbar/scrollbar.component.mjs +108 -126
- package/esm2022/viewport/viewport.component.mjs +36 -60
- package/fesm2022/scion-components-dimension.mjs +19 -7
- package/fesm2022/scion-components-dimension.mjs.map +1 -1
- package/fesm2022/scion-components-viewport.mjs +182 -249
- package/fesm2022/scion-components-viewport.mjs.map +1 -1
- package/package.json +2 -2
- package/viewport/native-scrollbar-track-size-provider.service.d.ts +6 -16
- package/viewport/scrollable.directive.d.ts +9 -10
- package/viewport/scrollbar/scrollbar.component.d.ts +17 -32
- package/viewport/viewport.component.d.ts +8 -11
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { assertInInjectionContext, assertNotInReactiveContext, computed, effect, inject, Injector, isSignal, NgZone, signal, untracked } from '@angular/core';
|
|
11
11
|
import { coerceElement } from '@angular/cdk/coercion';
|
|
12
12
|
import { fromBoundingClientRect$ } from '@scion/toolkit/observable';
|
|
13
|
-
import {
|
|
13
|
+
import { subscribeIn } from '@scion/toolkit/operators';
|
|
14
14
|
export function boundingClientRect(elementLike, options) {
|
|
15
15
|
assertNotInReactiveContext(boundingClientRect, 'Invoking `boundingClientRect` causes new subscriptions every time. Move `boundingClientRect` outside of the reactive context and read the signal value where needed.');
|
|
16
16
|
if (!options?.injector) {
|
|
@@ -28,7 +28,8 @@ export function boundingClientRect(elementLike, options) {
|
|
|
28
28
|
}
|
|
29
29
|
untracked(() => {
|
|
30
30
|
const subscription = fromBoundingClientRect$(el)
|
|
31
|
-
|
|
31
|
+
// Avoid triggering change detection cycle.
|
|
32
|
+
.pipe(subscribeIn(fn => zone.runOutsideAngular(fn)))
|
|
32
33
|
.subscribe(() => {
|
|
33
34
|
NgZone.assertNotInAngularZone();
|
|
34
35
|
onBoundingBoxChange.set();
|
|
@@ -50,4 +51,4 @@ export function boundingClientRect(elementLike, options) {
|
|
|
50
51
|
function isEqualDomRect(a, b) {
|
|
51
52
|
return a?.top === b?.top && a?.right === b?.right && a?.bottom === b?.bottom && a?.left === b?.left;
|
|
52
53
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRpbmctY2xpZW50LXJlY3Quc2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy9kaW1lbnNpb24vc3JjL2JvdW5kaW5nLWNsaWVudC1yZWN0LnNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hMLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFvQnJELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxXQUE4RyxFQUFFLE9BQStCO0lBQ2hMLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLHNLQUFzSyxDQUFDLENBQUM7SUFDdk4sSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN2Qix3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNuRyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBTyxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUUxRSw2Q0FBNkM7SUFDN0MsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE9BQU87UUFDVCxDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sWUFBWSxHQUFHLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDOUMsMkNBQTJDO2lCQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ25ELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ2hDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUFFLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztJQUVmLG9FQUFvRTtJQUNwRSxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixtQkFBbUIsRUFBRSxDQUFDO1FBRXRCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDcEMsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLENBQXNCLEVBQUUsQ0FBc0I7SUFDcEUsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDdEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHthc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGFzc2VydE5vdEluUmVhY3RpdmVDb250ZXh0LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdG9yLCBpc1NpZ25hbCwgTmdab25lLCBzaWduYWwsIFNpZ25hbCwgdW50cmFja2VkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y29lcmNlRWxlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7ZnJvbUJvdW5kaW5nQ2xpZW50UmVjdCR9IGZyb20gJ0BzY2lvbi90b29sa2l0L29ic2VydmFibGUnO1xuaW1wb3J0IHtzdWJzY3JpYmVJbn0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2lnbmFsIG9ic2VydmluZyB0aGUgYm91bmRpbmcgYm94IG9mIGFuIGVsZW1lbnQuXG4gKlxuICogVGhlIGJvdW5kaW5nIGJveCBpbmNsdWRlcyB0aGUgZWxlbWVudCdzIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdCBvZiB0aGUgdmlld3BvcnQgYW5kIGl0cyBzaXplLlxuICogUmVmZXIgdG8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogVGhlIGVsZW1lbnQgY2FuIGJlIHBhc3NlZCBhcyBhIHNpZ25hbCwgZW5hYmxpbmcgb2JzZXJ2YXRpb24gb2YgdmlldyBjaGlsZHJlbiBpbiB0aGUgY29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIFRoZXJlIGlzIG5vIG5hdGl2ZSBicm93c2VyIEFQSSB0byBvYnNlcnZlIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50LiBUaGUgc2lnbmFsIHVzZXMge0BsaW5rIEludGVyc2VjdGlvbk9ic2VydmVyfSBhbmRcbiAqIHtAbGluayBSZXNpemVPYnNlcnZlcn0gdG8gZGV0ZWN0IHBvc2l0aW9uIGNoYW5nZXMuIEZvciB0cmFja2luZyBvbmx5IHNpemUgY2hhbmdlcywgdXNlIHRoZSB7QGxpbmsgZGltZW5zaW9ufSBzaWduYWwgaW5zdGVhZC5cbiAqXG4gKiBVc2FnZTpcbiAqIC0gTXVzdCBiZSBjYWxsZWQgd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0IG9yIGFuIGluamVjdG9yIHByb3ZpZGVkLiBEZXN0cm95aW5nIHRoZSBpbmplY3RvciB3aWxsIHVuc3Vic2NyaWJlIHRoZSBzaWduYWwuXG4gKiAtIE11c3Qgbm90IGJlIGNhbGxlZCB3aXRoaW4gYSByZWFjdGl2ZSBjb250ZXh0IHRvIGF2b2lkIHJlcGVhdGVkIHN1YnNjcmlwdGlvbnMuXG4gKiAtIFRoZSBlbGVtZW50IGFuZCB0aGUgZG9jdW1lbnQgcm9vdCAoYDxodG1sPmApIG11c3QgYmUgcG9zaXRpb25lZCBgcmVsYXRpdmVgIG9yIGBhYnNvbHV0ZWAuIElmIG5vdCwgYSB3YXJuaW5nIGlzIGxvZ2dlZCwgYW5kIHBvc2l0aW9uaW5nIGNoYW5nZWQgdG8gYHJlbGF0aXZlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50TGlrZTogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IFNpZ25hbDxIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+Piwgb3B0aW9ucz86IHtpbmplY3Rvcj86IEluamVjdG9yfSk6IFNpZ25hbDxET01SZWN0PjtcbmV4cG9ydCBmdW5jdGlvbiBib3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudExpa2U6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBTaWduYWw8SFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZD4sIG9wdGlvbnM/OiB7aW5qZWN0b3I/OiBJbmplY3Rvcn0pOiBTaWduYWw8RE9NUmVjdCB8IHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gYm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRMaWtlOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgU2lnbmFsPEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ+LCBvcHRpb25zPzoge2luamVjdG9yPzogSW5qZWN0b3J9KTogU2lnbmFsPERPTVJlY3QgfCB1bmRlZmluZWQ+IHtcbiAgYXNzZXJ0Tm90SW5SZWFjdGl2ZUNvbnRleHQoYm91bmRpbmdDbGllbnRSZWN0LCAnSW52b2tpbmcgYGJvdW5kaW5nQ2xpZW50UmVjdGAgY2F1c2VzIG5ldyBzdWJzY3JpcHRpb25zIGV2ZXJ5IHRpbWUuIE1vdmUgYGJvdW5kaW5nQ2xpZW50UmVjdGAgb3V0c2lkZSBvZiB0aGUgcmVhY3RpdmUgY29udGV4dCBhbmQgcmVhZCB0aGUgc2lnbmFsIHZhbHVlIHdoZXJlIG5lZWRlZC4nKTtcbiAgaWYgKCFvcHRpb25zPy5pbmplY3Rvcikge1xuICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChib3VuZGluZ0NsaWVudFJlY3QpO1xuICB9XG5cbiAgY29uc3QgaW5qZWN0b3IgPSBvcHRpb25zPy5pbmplY3RvciA/PyBpbmplY3QoSW5qZWN0b3IpO1xuICBjb25zdCB6b25lID0gaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gIGNvbnN0IGVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiBjb2VyY2VFbGVtZW50KGlzU2lnbmFsKGVsZW1lbnRMaWtlKSA/IGVsZW1lbnRMaWtlKCkgOiBlbGVtZW50TGlrZSkpO1xuICBjb25zdCBvbkJvdW5kaW5nQm94Q2hhbmdlID0gc2lnbmFsPHZvaWQ+KHVuZGVmaW5lZCwge2VxdWFsOiAoKSA9PiBmYWxzZX0pO1xuXG4gIC8vIFN1YnNjcmliZSB0byBlbGVtZW50IGJvdW5kaW5nIGJveCBjaGFuZ2VzLlxuICBlZmZlY3Qob25DbGVhbnVwID0+IHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQoKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGZyb21Cb3VuZGluZ0NsaWVudFJlY3QkKGVsKVxuICAgICAgICAvLyBBdm9pZCB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAgICAgIC5waXBlKHN1YnNjcmliZUluKGZuID0+IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgTmdab25lLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKTtcbiAgICAgICAgICBvbkJvdW5kaW5nQm94Q2hhbmdlLnNldCgpO1xuICAgICAgICB9KTtcbiAgICAgIG9uQ2xlYW51cCgoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG4gIH0sIHtpbmplY3Rvcn0pO1xuXG4gIC8vIENyZWF0ZSBzaWduYWwgdGhhdCByZWNvbXB1dGVzIGVhY2ggdGltZSB0aGUgYm91bmRpbmcgYm94IGNoYW5nZXMuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50KCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBUcmFjayBib3VuZGluZyBib3guXG4gICAgb25Cb3VuZGluZ0JveENoYW5nZSgpO1xuXG4gICAgcmV0dXJuIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB9LCB7ZXF1YWw6IGlzRXF1YWxEb21SZWN0fSk7XG59XG5cbmZ1bmN0aW9uIGlzRXF1YWxEb21SZWN0KGE6IERPTVJlY3QgfCB1bmRlZmluZWQsIGI6IERPTVJlY3QgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGE/LnRvcCA9PT0gYj8udG9wICYmIGE/LnJpZ2h0ID09PSBiPy5yaWdodCAmJiBhPy5ib3R0b20gPT09IGI/LmJvdHRvbSAmJiBhPy5sZWZ0ID09PSBiPy5sZWZ0O1xufVxuIl19
|
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
import { Directive, ElementRef, inject, input, NgZone, output } from '@angular/core';
|
|
11
11
|
import { fromResize$ } from '@scion/toolkit/observable';
|
|
12
12
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
13
|
-
import {
|
|
14
|
-
import { animationFrameScheduler, observeOn, subscribeOn } from 'rxjs';
|
|
13
|
+
import { observeIn, subscribeIn } from '@scion/toolkit/operators';
|
|
15
14
|
import * as i0 from "@angular/core";
|
|
16
15
|
/**
|
|
17
16
|
* Observes the size of the host element.
|
|
@@ -36,10 +35,16 @@ export class SciDimensionDirective {
|
|
|
36
35
|
const host = inject((ElementRef)).nativeElement;
|
|
37
36
|
const zone = inject(NgZone);
|
|
38
37
|
fromResize$(host)
|
|
39
|
-
.pipe(
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
.pipe(
|
|
39
|
+
// Avoid triggering change detection cycle.
|
|
40
|
+
subscribeIn(fn => zone.runOutsideAngular(fn)),
|
|
41
|
+
// Run in animation frame to prevent 'ResizeObserver loop completed with undelivered notifications' error.
|
|
42
|
+
// Do not use `animationFrameScheduler` because the scheduler does not necessarily execute in the current execution context, such as inside or outside Angular.
|
|
43
|
+
// The scheduler always executes tasks in the context (e.g. zone) where the scheduler was first used in the application.
|
|
44
|
+
observeIn(fn => requestAnimationFrame(fn)), observeIn(fn => this.emitOutsideAngular() ? fn() : zone.run(fn)), takeUntilDestroyed())
|
|
42
45
|
.subscribe(() => {
|
|
46
|
+
// Assert Angular zone.
|
|
47
|
+
this.emitOutsideAngular() ? NgZone.assertNotInAngularZone() : NgZone.assertInAngularZone();
|
|
43
48
|
this.dimensionChange.emit({
|
|
44
49
|
clientWidth: host.clientWidth,
|
|
45
50
|
offsetWidth: host.offsetWidth,
|
|
@@ -59,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
59
64
|
standalone: true,
|
|
60
65
|
}]
|
|
61
66
|
}], ctorParameters: () => [] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvZGltZW5zaW9uL3NyYy9kaW1lbnNpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQUdoRTs7Ozs7Ozs7O0dBU0c7QUFLSCxNQUFNLE9BQU8scUJBQXFCO0lBWWhDO1FBVkE7O1dBRUc7UUFDSSx1QkFBa0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekM7O1dBRUc7UUFDSSxvQkFBZSxHQUFHLE1BQU0sQ0FBZSxFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBQyxDQUFDLENBQUM7UUFHM0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QixXQUFXLENBQUMsSUFBSSxDQUFDO2FBQ2QsSUFBSTtRQUNILDJDQUEyQztRQUMzQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsMEdBQTBHO1FBQzFHLCtKQUErSjtRQUMvSix3SEFBd0g7UUFDeEgsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ2hFLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBRTNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXZDVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgTmdab25lLCBvdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmcm9tUmVzaXplJH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb2JzZXJ2YWJsZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtvYnNlcnZlSW4sIHN1YnNjcmliZUlufSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTY2lEaW1lbnNpb259IGZyb20gJy4vZGltZW5zaW9uJztcblxuLyoqXG4gKiBPYnNlcnZlcyB0aGUgc2l6ZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqIC0tLVxuICogVXNhZ2U6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBzY2lEaW1lbnNpb24gKHNjaURpbWVuc2lvbkNoYW5nZSk9XCJvbkRpbWVuc2lvbkNoYW5nZSgkZXZlbnQpXCI+PC9kaXY+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NjaURpbWVuc2lvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTY2lEaW1lbnNpb25EaXJlY3RpdmUge1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiB0byBvdXRwdXQgb3V0c2lkZSB0aGUgQW5ndWxhciB6b25lLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgcHVibGljIGVtaXRPdXRzaWRlQW5ndWxhciA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogT3V0cHV0cyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBkaW1lbnNpb25DaGFuZ2UgPSBvdXRwdXQ8U2NpRGltZW5zaW9uPih7YWxpYXM6ICdzY2lEaW1lbnNpb25DaGFuZ2UnfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgaG9zdCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PikubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICBmcm9tUmVzaXplJChob3N0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIEF2b2lkIHRyaWdnZXJpbmcgY2hhbmdlIGRldGVjdGlvbiBjeWNsZS5cbiAgICAgICAgc3Vic2NyaWJlSW4oZm4gPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcihmbikpLFxuICAgICAgICAvLyBSdW4gaW4gYW5pbWF0aW9uIGZyYW1lIHRvIHByZXZlbnQgJ1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucycgZXJyb3IuXG4gICAgICAgIC8vIERvIG5vdCB1c2UgYGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyYCBiZWNhdXNlIHRoZSBzY2hlZHVsZXIgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXhlY3V0ZSBpbiB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dCwgc3VjaCBhcyBpbnNpZGUgb3Igb3V0c2lkZSBBbmd1bGFyLlxuICAgICAgICAvLyBUaGUgc2NoZWR1bGVyIGFsd2F5cyBleGVjdXRlcyB0YXNrcyBpbiB0aGUgY29udGV4dCAoZS5nLiB6b25lKSB3aGVyZSB0aGUgc2NoZWR1bGVyIHdhcyBmaXJzdCB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgICAgb2JzZXJ2ZUluKGZuID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShmbikpLFxuICAgICAgICBvYnNlcnZlSW4oZm4gPT4gdGhpcy5lbWl0T3V0c2lkZUFuZ3VsYXIoKSA/IGZuKCkgOiB6b25lLnJ1bihmbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBc3NlcnQgQW5ndWxhciB6b25lLlxuICAgICAgICB0aGlzLmVtaXRPdXRzaWRlQW5ndWxhcigpID8gTmdab25lLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSA6IE5nWm9uZS5hc3NlcnRJbkFuZ3VsYXJab25lKCk7XG5cbiAgICAgICAgdGhpcy5kaW1lbnNpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgY2xpZW50V2lkdGg6IGhvc3QuY2xpZW50V2lkdGgsXG4gICAgICAgICAgb2Zmc2V0V2lkdGg6IGhvc3Qub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgY2xpZW50SGVpZ2h0OiBob3N0LmNsaWVudEhlaWdodCxcbiAgICAgICAgICBvZmZzZXRIZWlnaHQ6IGhvc3Qub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgIGVsZW1lbnQ6IGhvc3QsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -11,8 +11,7 @@ import { assertInInjectionContext, assertNotInReactiveContext, computed, effect,
|
|
|
11
11
|
import { coerceElement } from '@angular/cdk/coercion';
|
|
12
12
|
import { Objects } from '@scion/toolkit/util';
|
|
13
13
|
import { fromResize$ } from '@scion/toolkit/observable';
|
|
14
|
-
import {
|
|
15
|
-
import { subscribeInside } from '@scion/toolkit/operators';
|
|
14
|
+
import { observeIn, subscribeIn } from '@scion/toolkit/operators';
|
|
16
15
|
export function dimension(elementLike, options) {
|
|
17
16
|
assertNotInReactiveContext(dimension, 'Invoking `dimension` causes new subscriptions every time. Move `dimension` outside of the reactive context and read the signal value where needed.');
|
|
18
17
|
if (!options?.injector) {
|
|
@@ -30,7 +29,13 @@ export function dimension(elementLike, options) {
|
|
|
30
29
|
}
|
|
31
30
|
untracked(() => {
|
|
32
31
|
const subscription = fromResize$(el)
|
|
33
|
-
.pipe(
|
|
32
|
+
.pipe(
|
|
33
|
+
// Avoid triggering change detection cycle.
|
|
34
|
+
subscribeIn(fn => zone.runOutsideAngular(fn)),
|
|
35
|
+
// Run in animation frame to prevent 'ResizeObserver loop completed with undelivered notifications' error.
|
|
36
|
+
// Do not use `animationFrameScheduler` because the scheduler does not necessarily execute in the current execution context, such as inside or outside Angular.
|
|
37
|
+
// The scheduler always executes tasks in the context (e.g. zone) where the scheduler was first used in the application.
|
|
38
|
+
observeIn(fn => requestAnimationFrame(fn)))
|
|
34
39
|
.subscribe(() => {
|
|
35
40
|
NgZone.assertNotInAngularZone();
|
|
36
41
|
onResize.set();
|
|
@@ -55,4 +60,4 @@ export function dimension(elementLike, options) {
|
|
|
55
60
|
};
|
|
56
61
|
}, { equal: Objects.isEqual });
|
|
57
62
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLnNpZ25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvZGltZW5zaW9uL3NyYy9kaW1lbnNpb24uc2lnbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLHdCQUF3QixFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEwsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQWVoRSxNQUFNLFVBQVUsU0FBUyxDQUFDLFdBQThHLEVBQUUsT0FBK0I7SUFDdkssMEJBQTBCLENBQUMsU0FBUyxFQUFFLG9KQUFvSixDQUFDLENBQUM7SUFDNUwsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN2Qix3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkcsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFPLFNBQVMsRUFBRSxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBRS9ELHFDQUFxQztJQUNyQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDakIsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTztRQUNULENBQUM7UUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQztpQkFDakMsSUFBSTtZQUNILDJDQUEyQztZQUMzQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsMEdBQTBHO1lBQzFHLCtKQUErSjtZQUMvSix3SEFBd0g7WUFDeEgsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDM0M7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUFFLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQztJQUVmLDREQUE0RDtJQUM1RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixRQUFRLEVBQUUsQ0FBQztRQUVYLE9BQU87WUFDTCxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVc7WUFDM0IsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXO1lBQzNCLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWTtZQUM3QixZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVk7WUFDN0IsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7YXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBhc3NlcnROb3RJblJlYWN0aXZlQ29udGV4dCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3RvciwgaXNTaWduYWwsIE5nWm9uZSwgc2lnbmFsLCBTaWduYWwsIHVudHJhY2tlZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NjaURpbWVuc2lvbn0gZnJvbSAnLi9kaW1lbnNpb24nO1xuaW1wb3J0IHtjb2VyY2VFbGVtZW50fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtPYmplY3RzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7ZnJvbVJlc2l6ZSR9IGZyb20gJ0BzY2lvbi90b29sa2l0L29ic2VydmFibGUnO1xuaW1wb3J0IHtvYnNlcnZlSW4sIHN1YnNjcmliZUlufSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaWduYWwgb2JzZXJ2aW5nIHRoZSBzaXplIG9mIGFuIGVsZW1lbnQuXG4gKlxuICogVGhlIGVsZW1lbnQgY2FuIGJlIHBhc3NlZCBhcyBhIHNpZ25hbCwgZW5hYmxpbmcgb2JzZXJ2YXRpb24gb2YgdmlldyBjaGlsZHJlbiBpbiB0aGUgY29tcG9uZW50IGNvbnN0cnVjdG9yLlxuICpcbiAqIFRoZSBzaWduYWwgc3Vic2NyaWJlcyB0byB0aGUgbmF0aXZlIHtAbGluayBSZXNpemVPYnNlcnZlcn0gdG8gbW9uaXRvciBlbGVtZW50IHNpemUgY2hhbmdlcy4gRGVzdHJveWluZyB0aGUgaW5qZWN0aW9uIGNvbnRleHQgd2lsbCB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2ZXIuXG4gKlxuICogVXNhZ2U6XG4gKiAtIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dCBvciBhbiBpbmplY3RvciBwcm92aWRlZC4gRGVzdHJveWluZyB0aGUgaW5qZWN0b3Igd2lsbCB1bnN1YnNjcmliZSB0aGUgc2lnbmFsLlxuICogLSBNdXN0IG5vdCBiZSBjYWxsZWQgd2l0aGluIGEgcmVhY3RpdmUgY29udGV4dCB0byBhdm9pZCByZXBlYXRlZCBzdWJzY3JpcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGltZW5zaW9uKGVsZW1lbnRMaWtlOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgU2lnbmFsPEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4+LCBvcHRpb25zPzoge2luamVjdG9yPzogSW5qZWN0b3J9KTogU2lnbmFsPFNjaURpbWVuc2lvbj47XG5leHBvcnQgZnVuY3Rpb24gZGltZW5zaW9uKGVsZW1lbnRMaWtlOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgU2lnbmFsPEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ+LCBvcHRpb25zPzoge2luamVjdG9yPzogSW5qZWN0b3J9KTogU2lnbmFsPFNjaURpbWVuc2lvbiB8IHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gZGltZW5zaW9uKGVsZW1lbnRMaWtlOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgU2lnbmFsPEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ+LCBvcHRpb25zPzoge2luamVjdG9yPzogSW5qZWN0b3J9KTogU2lnbmFsPFNjaURpbWVuc2lvbiB8IHVuZGVmaW5lZD4ge1xuICBhc3NlcnROb3RJblJlYWN0aXZlQ29udGV4dChkaW1lbnNpb24sICdJbnZva2luZyBgZGltZW5zaW9uYCBjYXVzZXMgbmV3IHN1YnNjcmlwdGlvbnMgZXZlcnkgdGltZS4gTW92ZSBgZGltZW5zaW9uYCBvdXRzaWRlIG9mIHRoZSByZWFjdGl2ZSBjb250ZXh0IGFuZCByZWFkIHRoZSBzaWduYWwgdmFsdWUgd2hlcmUgbmVlZGVkLicpO1xuICBpZiAoIW9wdGlvbnM/LmluamVjdG9yKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGRpbWVuc2lvbik7XG4gIH1cblxuICBjb25zdCBpbmplY3RvciA9IG9wdGlvbnM/LmluamVjdG9yID8/IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IHpvbmUgPSBpbmplY3Rvci5nZXQoTmdab25lKTtcbiAgY29uc3QgZWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IGNvZXJjZUVsZW1lbnQoaXNTaWduYWwoZWxlbWVudExpa2UpID8gZWxlbWVudExpa2UoKSA6IGVsZW1lbnRMaWtlKSk7XG4gIGNvbnN0IG9uUmVzaXplID0gc2lnbmFsPHZvaWQ+KHVuZGVmaW5lZCwge2VxdWFsOiAoKSA9PiBmYWxzZX0pO1xuXG4gIC8vIFN1YnNjcmliZSB0byBlbGVtZW50IHNpemUgY2hhbmdlcy5cbiAgZWZmZWN0KG9uQ2xlYW51cCA9PiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50KCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBmcm9tUmVzaXplJChlbClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gQXZvaWQgdHJpZ2dlcmluZyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICAgICAgICAgIHN1YnNjcmliZUluKGZuID0+IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSxcbiAgICAgICAgICAvLyBSdW4gaW4gYW5pbWF0aW9uIGZyYW1lIHRvIHByZXZlbnQgJ1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucycgZXJyb3IuXG4gICAgICAgICAgLy8gRG8gbm90IHVzZSBgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXJgIGJlY2F1c2UgdGhlIHNjaGVkdWxlciBkb2VzIG5vdCBuZWNlc3NhcmlseSBleGVjdXRlIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0LCBzdWNoIGFzIGluc2lkZSBvciBvdXRzaWRlIEFuZ3VsYXIuXG4gICAgICAgICAgLy8gVGhlIHNjaGVkdWxlciBhbHdheXMgZXhlY3V0ZXMgdGFza3MgaW4gdGhlIGNvbnRleHQgKGUuZy4gem9uZSkgd2hlcmUgdGhlIHNjaGVkdWxlciB3YXMgZmlyc3QgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uXG4gICAgICAgICAgb2JzZXJ2ZUluKGZuID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShmbikpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIE5nWm9uZS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCk7XG4gICAgICAgICAgb25SZXNpemUuc2V0KCk7XG4gICAgICAgIH0pO1xuICAgICAgb25DbGVhbnVwKCgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcbiAgfSwge2luamVjdG9yfSk7XG5cbiAgLy8gQ3JlYXRlIHNpZ25hbCB0aGF0IHJlY29tcHV0ZXMgZWFjaCB0aW1lIHRoZSBzaXplIGNoYW5nZXMuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50KCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBUcmFjayBlbGVtZW50IHNpemUuXG4gICAgb25SZXNpemUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjbGllbnRXaWR0aDogZWwuY2xpZW50V2lkdGgsXG4gICAgICBvZmZzZXRXaWR0aDogZWwub2Zmc2V0V2lkdGgsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgZWxlbWVudDogZWwsXG4gICAgfTtcbiAgfSwge2VxdWFsOiBPYmplY3RzLmlzRXF1YWx9KTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c) 2018-
|
|
2
|
+
* Copyright (c) 2018-2024 Swiss Federal Railways
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made
|
|
5
5
|
* available under the terms of the Eclipse Public License 2.0
|
|
@@ -7,35 +7,21 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { inject, Injectable, NgZone } from '@angular/core';
|
|
11
11
|
import { DOCUMENT } from '@angular/common';
|
|
12
|
-
import {
|
|
13
|
-
import { debounceTime, distinctUntilChanged, map, startWith
|
|
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';
|
|
14
16
|
import * as i0 from "@angular/core";
|
|
15
17
|
/**
|
|
16
18
|
* Provides the native scrollbar tracksize.
|
|
17
19
|
*/
|
|
18
20
|
export class SciNativeScrollbarTrackSizeProvider {
|
|
19
|
-
constructor(
|
|
20
|
-
this._document =
|
|
21
|
-
this._zone =
|
|
22
|
-
this.
|
|
23
|
-
this._destroy$ = new Subject();
|
|
24
|
-
this.installNativeScrollbarTrackSizeListener();
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns an {Observable} which emits the native scrollbar track size, if any, or else `null`.
|
|
28
|
-
*
|
|
29
|
-
* Upon subscription, it emits the track size immediately, and then continuously emits when the track size changes.
|
|
30
|
-
*/
|
|
31
|
-
get trackSize$() {
|
|
32
|
-
return this._trackSize$;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Returns the native scrollbar track size, if any, or else `null`.
|
|
36
|
-
*/
|
|
37
|
-
get trackSize() {
|
|
38
|
-
return this._trackSize$.getValue();
|
|
21
|
+
constructor() {
|
|
22
|
+
this._document = inject(DOCUMENT);
|
|
23
|
+
this._zone = inject(NgZone);
|
|
24
|
+
this.trackSize = this.createNativeScrollbarTrackSizeSignal();
|
|
39
25
|
}
|
|
40
26
|
/**
|
|
41
27
|
* Computes the native scrollbar track size.
|
|
@@ -43,7 +29,7 @@ export class SciNativeScrollbarTrackSizeProvider {
|
|
|
43
29
|
* @returns native track size, or `null` if the native scrollbars sit on top of the content.
|
|
44
30
|
*/
|
|
45
31
|
computeTrackSize() {
|
|
46
|
-
//
|
|
32
|
+
// Create temporary viewport and viewport client with native scrollbars to compute the scrolltrack width.
|
|
47
33
|
const viewportDiv = this._document.createElement('div');
|
|
48
34
|
setStyle(viewportDiv, {
|
|
49
35
|
position: 'absolute',
|
|
@@ -68,39 +54,29 @@ export class SciNativeScrollbarTrackSizeProvider {
|
|
|
68
54
|
hScrollbarTrackHeight: viewportBounds.height - viewportClientBounds.height,
|
|
69
55
|
vScrollbarTrackWidth: viewportBounds.width - viewportClientBounds.width,
|
|
70
56
|
};
|
|
71
|
-
//
|
|
57
|
+
// Destroy temporary viewport.
|
|
72
58
|
this._document.body.removeChild(viewportDiv);
|
|
73
59
|
if (trackSize.hScrollbarTrackHeight === 0 && trackSize.vScrollbarTrackWidth === 0) {
|
|
74
60
|
return null;
|
|
75
61
|
}
|
|
76
62
|
return trackSize;
|
|
77
63
|
}
|
|
78
|
-
|
|
64
|
+
createNativeScrollbarTrackSizeSignal() {
|
|
79
65
|
// We compute the size of the native scrollbar track when the browser fires the onresize window event.
|
|
80
66
|
// This event is also fired on page zoom or when displaying a hidden document. Hidden documents do not have
|
|
81
67
|
// a scrollbar track size until being displayed, e.g., after showing hidden iframes.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
.subscribe(trackSize => {
|
|
87
|
-
this._zone.run(() => this._trackSize$.next(trackSize));
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
ngOnDestroy() {
|
|
92
|
-
this._destroy$.next();
|
|
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 });
|
|
93
72
|
}
|
|
94
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, deps: [
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
95
74
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, providedIn: 'root' }); }
|
|
96
75
|
}
|
|
97
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciNativeScrollbarTrackSizeProvider, decorators: [{
|
|
98
77
|
type: Injectable,
|
|
99
78
|
args: [{ providedIn: 'root' }]
|
|
100
|
-
}], ctorParameters: () => [
|
|
101
|
-
type: Inject,
|
|
102
|
-
args: [DOCUMENT]
|
|
103
|
-
}] }, { type: i0.NgZone }] });
|
|
79
|
+
}], ctorParameters: () => [] });
|
|
104
80
|
/**
|
|
105
81
|
* Applies the given style(s) to the given element.
|
|
106
82
|
*
|
|
@@ -112,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
112
88
|
function setStyle(element, style) {
|
|
113
89
|
Object.keys(style).forEach(key => element.style.setProperty(key, style[key]));
|
|
114
90
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNjcm9sbGJhci10cmFjay1zaXplLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFN0Y7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUNBQW1DO0lBSzlDLFlBQXNDLFNBQW1CLEVBQVUsS0FBYTtRQUExQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUgvRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFrQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUcvQyxJQUFJLENBQUMsdUNBQXVDLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQjtRQUN0QixvR0FBb0c7UUFDcEcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUNwQixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsT0FBTztZQUNmLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxVQUFVLEVBQUUsUUFBUTtTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUM7UUFFSCxXQUFXLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLDhKQUE4SjtRQUM5SixNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQTZCO1lBQzFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTTtZQUMxRSxvQkFBb0IsRUFBRSxjQUFjLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUs7U0FDeEUsQ0FBQztRQUVGLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBSSxTQUFTLENBQUMscUJBQXFCLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sdUNBQXVDO1FBQzdDLHNHQUFzRztRQUN0RywyR0FBMkc7UUFDM0csb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2hDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2lCQUN4QixJQUFJLENBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxrQ0FBa0M7WUFDbkQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQ2xDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQzNFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2lCQUNBLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQTFGVSxtQ0FBbUMsa0JBSzFCLFFBQVE7a0hBTGpCLG1DQUFtQyxjQUR2QixNQUFNOzsyRkFDbEIsbUNBQW1DO2tCQUQvQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7MEJBTWpCLE1BQU07MkJBQUMsUUFBUTs7QUF3RjlCOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxPQUFvQixFQUFFLEtBQW9DO0lBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgbmF0aXZlIHNjcm9sbGJhciB0cmFja3NpemUuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFNjaU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90cmFja1NpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCwgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7XG4gICAgdGhpcy5pbnN0YWxsTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIHtPYnNlcnZhYmxlfSB3aGljaCBlbWl0cyB0aGUgbmF0aXZlIHNjcm9sbGJhciB0cmFjayBzaXplLCBpZiBhbnksIG9yIGVsc2UgYG51bGxgLlxuICAgKlxuICAgKiBVcG9uIHN1YnNjcmlwdGlvbiwgaXQgZW1pdHMgdGhlIHRyYWNrIHNpemUgaW1tZWRpYXRlbHksIGFuZCB0aGVuIGNvbnRpbnVvdXNseSBlbWl0cyB3aGVuIHRoZSB0cmFjayBzaXplIGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRyYWNrU2l6ZSQoKTogT2JzZXJ2YWJsZTxOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYWNrU2l6ZSQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmF0aXZlIHNjcm9sbGJhciB0cmFjayBzaXplLCBpZiBhbnksIG9yIGVsc2UgYG51bGxgLlxuICAgKi9cbiAgcHVibGljIGdldCB0cmFja1NpemUoKTogTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYWNrU2l6ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbmF0aXZlIHNjcm9sbGJhciB0cmFjayBzaXplLlxuICAgKlxuICAgKiBAcmV0dXJucyBuYXRpdmUgdHJhY2sgc2l6ZSwgb3IgYG51bGxgIGlmIHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBzaXQgb24gdG9wIG9mIHRoZSBjb250ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlVHJhY2tTaXplKCk6IE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSB8IG51bGwge1xuICAgIC8vIGNyZWF0ZSB0ZW1wb3Jhcnkgdmlld3BvcnQgYW5kIHZpZXdwb3J0IGNsaWVudCB3aXRoIG5hdGl2ZSBzY3JvbGxiYXJzIHRvIGNvbXB1dGUgc2Nyb2xsdHJhY2sgd2lkdGhcbiAgICBjb25zdCB2aWV3cG9ydERpdiA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHNldFN0eWxlKHZpZXdwb3J0RGl2LCB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIG92ZXJmbG93OiAnc2Nyb2xsJyxcbiAgICAgIGhlaWdodDogJzEwMHB4JyxcbiAgICAgIHdpZHRoOiAnMTAwcHgnLFxuICAgICAgYm9yZGVyOiAwLFxuICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgfSk7XG5cbiAgICBjb25zdCB2aWV3cG9ydENsaWVudERpdiA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHNldFN0eWxlKHZpZXdwb3J0Q2xpZW50RGl2LCB7XG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBib3JkZXI6IDAsXG4gICAgfSk7XG5cbiAgICB2aWV3cG9ydERpdi5hcHBlbmRDaGlsZCh2aWV3cG9ydENsaWVudERpdik7XG4gICAgdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWV3cG9ydERpdik7XG5cbiAgICAvLyBEbyBub3QgdXNlIGNsaWVudCBhbmQgb2Zmc2V0IHdpZHRoL2hlaWdodCB0byBjYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYXMgdGhleSBhcmUgcm91bmRlZCwgcmVzdWx0aW5nIGluIHVud2FudGVkIHNwYWNpbmcgd2hlbiB6b29taW5nIHRoZSBwYWdlLlxuICAgIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gdmlld3BvcnREaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgdmlld3BvcnRDbGllbnRCb3VuZHMgPSB2aWV3cG9ydENsaWVudERpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0cmFja1NpemU6IE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSA9IHtcbiAgICAgIGhTY3JvbGxiYXJUcmFja0hlaWdodDogdmlld3BvcnRCb3VuZHMuaGVpZ2h0IC0gdmlld3BvcnRDbGllbnRCb3VuZHMuaGVpZ2h0LFxuICAgICAgdlNjcm9sbGJhclRyYWNrV2lkdGg6IHZpZXdwb3J0Qm91bmRzLndpZHRoIC0gdmlld3BvcnRDbGllbnRCb3VuZHMud2lkdGgsXG4gICAgfTtcblxuICAgIC8vIGRlc3Ryb3kgdGVtcG9yYXJ5IHZpZXdwb3J0XG4gICAgdGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh2aWV3cG9ydERpdik7XG4gICAgaWYgKHRyYWNrU2l6ZS5oU2Nyb2xsYmFyVHJhY2tIZWlnaHQgPT09IDAgJiYgdHJhY2tTaXplLnZTY3JvbGxiYXJUcmFja1dpZHRoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhY2tTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgLy8gV2UgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgbmF0aXZlIHNjcm9sbGJhciB0cmFjayB3aGVuIHRoZSBicm93c2VyIGZpcmVzIHRoZSBvbnJlc2l6ZSB3aW5kb3cgZXZlbnQuXG4gICAgLy8gVGhpcyBldmVudCBpcyBhbHNvIGZpcmVkIG9uIHBhZ2Ugem9vbSBvciB3aGVuIGRpc3BsYXlpbmcgYSBoaWRkZW4gZG9jdW1lbnQuIEhpZGRlbiBkb2N1bWVudHMgZG8gbm90IGhhdmVcbiAgICAvLyBhIHNjcm9sbGJhciB0cmFjayBzaXplIHVudGlsIGJlaW5nIGRpc3BsYXllZCwgZS5nLiwgYWZ0ZXIgc2hvd2luZyBoaWRkZW4gaWZyYW1lcy5cbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNSksXG4gICAgICAgICAgc3RhcnRXaXRoKG51bGwpLCAvLyB0cmlnZ2VyIHRoZSBpbml0aWFsIGNvbXB1dGF0aW9uXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMuY29tcHV0ZVRyYWNrU2l6ZSgpKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgodDEsIHQyKSA9PiBKU09OLnN0cmluZ2lmeSh0MSkgPT09IEpTT04uc3RyaW5naWZ5KHQyKSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHRyYWNrU2l6ZSA9PiB7XG4gICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy5fdHJhY2tTaXplJC5uZXh0KHRyYWNrU2l6ZSkpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBnaXZlbiBzdHlsZShzKSB0byB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBTcGVjaWZ5IHN0eWxlcyB0byBiZSBtb2RpZmllZCBieSBwYXNzaW5nIGEgZGljdGlvbmFyeSBjb250YWluaW5nIENTUyBwcm9wZXJ0eSBuYW1lcyAoaHlwaGVuIGNhc2UpLlxuICogVG8gcmVtb3ZlIGEgc3R5bGUsIHNldCBpdHMgdmFsdWUgdG8gYG51bGxgLlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gc2V0U3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHN0eWxlOiB7W3N0eWxlOiBzdHJpbmddOiBhbnkgfCBudWxsfSk6IHZvaWQge1xuICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0eWxlW2tleV0pKTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHRyYWNrIHNpemUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHtcbiAgaFNjcm9sbGJhclRyYWNrSGVpZ2h0OiBudW1iZXI7XG4gIHZTY3JvbGxiYXJUcmFja1dpZHRoOiBudW1iZXI7XG59XG4iXX0=
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNjcm9sbGJhci10cmFjay1zaXplLXByb3ZpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDOztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQ0FBbUM7SUFVOUM7UUFSUSxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFRN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQjtRQUN0Qix5R0FBeUc7UUFDekcsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUNwQixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsT0FBTztZQUNmLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxVQUFVLEVBQUUsUUFBUTtTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUM7UUFFSCxXQUFXLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLDhKQUE4SjtRQUM5SixNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQTZCO1lBQzFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsTUFBTTtZQUMxRSxvQkFBb0IsRUFBRSxjQUFjLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUs7U0FDeEUsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBSSxTQUFTLENBQUMscUJBQXFCLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sb0NBQW9DO1FBQzFDLHNHQUFzRztRQUN0RywyR0FBMkc7UUFDM0csb0ZBQW9GO1FBQ3BGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQzNDLElBQUksQ0FDSCxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ25ELFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsa0NBQWtDO1FBQ25ELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUNsQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsS0FBSyxFQUFFLEVBQUUscUJBQXFCLElBQUksRUFBRSxFQUFFLG9CQUFvQixLQUFLLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUNuSixDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs4R0F2RVUsbUNBQW1DO2tIQUFuQyxtQ0FBbUMsY0FEdkIsTUFBTTs7MkZBQ2xCLG1DQUFtQztrQkFEL0MsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBMkVoQzs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxRQUFRLENBQUMsT0FBb0IsRUFBRSxLQUFvQztJQUMxRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lLCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7ZnJvbUV2ZW50fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7c3Vic2NyaWJlSW59IGZyb20gJ0BzY2lvbi90b29sa2l0L29wZXJhdG9ycyc7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2tzaXplLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlciB7XG5cbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSB0cmFjayBzaXplIG9mIHRoZSBuYXRpdmUgc2Nyb2xsYmFyLCBvciBgbnVsbGAgaWYgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHNpdCBvbiB0b3Agb2YgdGhlIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgdHJhY2tTaXplOiBTaWduYWw8TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50cmFja1NpemUgPSB0aGlzLmNyZWF0ZU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVNpZ25hbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHRyYWNrIHNpemUuXG4gICAqXG4gICAqIEByZXR1cm5zIG5hdGl2ZSB0cmFjayBzaXplLCBvciBgbnVsbGAgaWYgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHNpdCBvbiB0b3Agb2YgdGhlIGNvbnRlbnQuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVUcmFja1NpemUoKTogTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbCB7XG4gICAgLy8gQ3JlYXRlIHRlbXBvcmFyeSB2aWV3cG9ydCBhbmQgdmlld3BvcnQgY2xpZW50IHdpdGggbmF0aXZlIHNjcm9sbGJhcnMgdG8gY29tcHV0ZSB0aGUgc2Nyb2xsdHJhY2sgd2lkdGguXG4gICAgY29uc3Qgdmlld3BvcnREaXYgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzZXRTdHlsZSh2aWV3cG9ydERpdiwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICBoZWlnaHQ6ICcxMDBweCcsXG4gICAgICB3aWR0aDogJzEwMHB4JyxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgdmlld3BvcnRDbGllbnREaXYgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBzZXRTdHlsZSh2aWV3cG9ydENsaWVudERpdiwge1xuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgYm9yZGVyOiAwLFxuICAgIH0pO1xuXG4gICAgdmlld3BvcnREaXYuYXBwZW5kQ2hpbGQodmlld3BvcnRDbGllbnREaXYpO1xuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlld3BvcnREaXYpO1xuXG4gICAgLy8gRG8gbm90IHVzZSBjbGllbnQgYW5kIG9mZnNldCB3aWR0aC9oZWlnaHQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGFzIHRoZXkgYXJlIHJvdW5kZWQsIHJlc3VsdGluZyBpbiB1bndhbnRlZCBzcGFjaW5nIHdoZW4gem9vbWluZyB0aGUgcGFnZS5cbiAgICBjb25zdCB2aWV3cG9ydEJvdW5kcyA9IHZpZXdwb3J0RGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q2xpZW50Qm91bmRzID0gdmlld3BvcnRDbGllbnREaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgdHJhY2tTaXplOiBOYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPSB7XG4gICAgICBoU2Nyb2xsYmFyVHJhY2tIZWlnaHQ6IHZpZXdwb3J0Qm91bmRzLmhlaWdodCAtIHZpZXdwb3J0Q2xpZW50Qm91bmRzLmhlaWdodCxcbiAgICAgIHZTY3JvbGxiYXJUcmFja1dpZHRoOiB2aWV3cG9ydEJvdW5kcy53aWR0aCAtIHZpZXdwb3J0Q2xpZW50Qm91bmRzLndpZHRoLFxuICAgIH07XG5cbiAgICAvLyBEZXN0cm95IHRlbXBvcmFyeSB2aWV3cG9ydC5cbiAgICB0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHZpZXdwb3J0RGl2KTtcbiAgICBpZiAodHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodCA9PT0gMCAmJiB0cmFja1NpemUudlNjcm9sbGJhclRyYWNrV2lkdGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFja1NpemU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVNpZ25hbCgpOiBTaWduYWw8TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHwgbnVsbD4ge1xuICAgIC8vIFdlIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIG5hdGl2ZSBzY3JvbGxiYXIgdHJhY2sgd2hlbiB0aGUgYnJvd3NlciBmaXJlcyB0aGUgb25yZXNpemUgd2luZG93IGV2ZW50LlxuICAgIC8vIFRoaXMgZXZlbnQgaXMgYWxzbyBmaXJlZCBvbiBwYWdlIHpvb20gb3Igd2hlbiBkaXNwbGF5aW5nIGEgaGlkZGVuIGRvY3VtZW50LiBIaWRkZW4gZG9jdW1lbnRzIGRvIG5vdCBoYXZlXG4gICAgLy8gYSBzY3JvbGxiYXIgdHJhY2sgc2l6ZSB1bnRpbCBiZWluZyBkaXNwbGF5ZWQsIGUuZy4sIGFmdGVyIHNob3dpbmcgaGlkZGVuIGlmcmFtZXMuXG4gICAgY29uc3QgdHJhY2tTaXplJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluKGZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoZm4pKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDUpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksIC8vIHRyaWdnZXIgdGhlIGluaXRpYWwgY29tcHV0YXRpb25cbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY29tcHV0ZVRyYWNrU2l6ZSgpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHQxLCB0MikgPT4gdDE/LmhTY3JvbGxiYXJUcmFja0hlaWdodCA9PT0gdDI/LmhTY3JvbGxiYXJUcmFja0hlaWdodCAmJiB0MT8udlNjcm9sbGJhclRyYWNrV2lkdGggPT09IHQyPy52U2Nyb2xsYmFyVHJhY2tXaWR0aCksXG4gICAgICApO1xuICAgIHJldHVybiB0b1NpZ25hbCh0cmFja1NpemUkLCB7aW5pdGlhbFZhbHVlOiBudWxsfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBnaXZlbiBzdHlsZShzKSB0byB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBTcGVjaWZ5IHN0eWxlcyB0byBiZSBtb2RpZmllZCBieSBwYXNzaW5nIGEgZGljdGlvbmFyeSBjb250YWluaW5nIENTUyBwcm9wZXJ0eSBuYW1lcyAoaHlwaGVuIGNhc2UpLlxuICogVG8gcmVtb3ZlIGEgc3R5bGUsIHNldCBpdHMgdmFsdWUgdG8gYG51bGxgLlxuICpcbiAqIEBpZ25vcmVcbiAqL1xuZnVuY3Rpb24gc2V0U3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHN0eWxlOiB7W3N0eWxlOiBzdHJpbmddOiBhbnkgfCBudWxsfSk6IHZvaWQge1xuICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHN0eWxlW2tleV0pKTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHRyYWNrIHNpemUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplIHtcbiAgaFNjcm9sbGJhclRyYWNrSGVpZ2h0OiBudW1iZXI7XG4gIHZTY3JvbGxiYXJUcmFja1dpZHRoOiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -7,11 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
*/
|
|
10
|
-
import { Directive,
|
|
11
|
-
import {
|
|
12
|
-
import { merge, Subject } from 'rxjs';
|
|
10
|
+
import { Directive, effect, ElementRef, inject, input, Renderer2, untracked } from '@angular/core';
|
|
11
|
+
import { SciNativeScrollbarTrackSizeProvider } from './native-scrollbar-track-size-provider.service';
|
|
13
12
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "./native-scrollbar-track-size-provider.service";
|
|
15
13
|
/**
|
|
16
14
|
* Makes the host element natively scrollable and hides native scrollbars by default, unless native scrollbars
|
|
17
15
|
* already sit on top of the viewport (e.g. in OS X).
|
|
@@ -24,24 +22,33 @@ import * as i1 from "./native-scrollbar-track-size-provider.service";
|
|
|
24
22
|
* to hide the pushed out native scrollbars.
|
|
25
23
|
*/
|
|
26
24
|
export class SciScrollableDirective {
|
|
27
|
-
constructor(
|
|
28
|
-
this._host =
|
|
29
|
-
this._renderer =
|
|
30
|
-
this.
|
|
31
|
-
this._inputChange$ = new Subject();
|
|
25
|
+
constructor() {
|
|
26
|
+
this._host = inject((ElementRef)).nativeElement;
|
|
27
|
+
this._renderer = inject(Renderer2);
|
|
28
|
+
this._nativeScrollbarTrackSizeProvider = inject(SciNativeScrollbarTrackSizeProvider);
|
|
32
29
|
/**
|
|
33
30
|
* Controls whether to display native scrollbars.
|
|
34
31
|
* Has no effect if the native scrollbar sits on top of the content, e.g. in OS X.
|
|
35
32
|
*/
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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));
|
|
42
49
|
}
|
|
43
50
|
else {
|
|
44
|
-
|
|
51
|
+
untracked(() => this.useNativeScrollbars());
|
|
45
52
|
}
|
|
46
53
|
});
|
|
47
54
|
}
|
|
@@ -49,7 +56,7 @@ export class SciScrollableDirective {
|
|
|
49
56
|
* Uses the native scrollbars when content overflows.
|
|
50
57
|
*/
|
|
51
58
|
useNativeScrollbars() {
|
|
52
|
-
this.setStyle(this._host
|
|
59
|
+
this.setStyle(this._host, {
|
|
53
60
|
overflow: 'auto',
|
|
54
61
|
width: '100%',
|
|
55
62
|
height: '100%',
|
|
@@ -61,7 +68,7 @@ export class SciScrollableDirective {
|
|
|
61
68
|
* Shifts the native scrollbars out of the visible viewport area.
|
|
62
69
|
*/
|
|
63
70
|
shiftNativeScrollbars(nativeScrollbarTrackSize) {
|
|
64
|
-
this.setStyle(this._host
|
|
71
|
+
this.setStyle(this._host, {
|
|
65
72
|
overflow: 'scroll',
|
|
66
73
|
width: `calc(100% + ${nativeScrollbarTrackSize.vScrollbarTrackWidth}px`,
|
|
67
74
|
height: `calc(100% + ${nativeScrollbarTrackSize.hScrollbarTrackHeight}px`,
|
|
@@ -72,14 +79,8 @@ export class SciScrollableDirective {
|
|
|
72
79
|
setStyle(element, style) {
|
|
73
80
|
Object.keys(style).forEach(key => this._renderer.setStyle(element, key, style[key]));
|
|
74
81
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
this._destroy$.next();
|
|
80
|
-
}
|
|
81
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SciNativeScrollbarTrackSizeProvider }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
82
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: SciScrollableDirective, isStandalone: true, selector: "[sciScrollable]", inputs: { isDisplayNativeScrollbar: ["sciScrollableDisplayNativeScrollbar", "isDisplayNativeScrollbar"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
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 }); }
|
|
83
84
|
}
|
|
84
85
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SciScrollableDirective, decorators: [{
|
|
85
86
|
type: Directive,
|
|
@@ -87,8 +88,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
87
88
|
selector: '[sciScrollable]',
|
|
88
89
|
standalone: true,
|
|
89
90
|
}]
|
|
90
|
-
}], ctorParameters: () => [
|
|
91
|
-
|
|
92
|
-
args: ['sciScrollableDisplayNativeScrollbar']
|
|
93
|
-
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFpRCxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFHcEM7Ozs7Ozs7Ozs7R0FVRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7SUFZakMsWUFBb0IsS0FBaUMsRUFDakMsU0FBb0IsRUFDNUIsZ0NBQXFFO1FBRjdELFVBQUssR0FBTCxLQUFLLENBQTRCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFYaEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTVDOzs7V0FHRztRQUVJLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUt0QyxLQUFLLENBQ0gsZ0NBQWdDLENBQUMsVUFBVSxFQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDL0U7YUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUNwQyxJQUFJLHdCQUF3QixLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsa0RBQWtEO2dCQUN6RixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDcEgsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDdEMsUUFBUSxFQUFFLE1BQU07WUFDaEIsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxDQUFDO1lBQ2QsWUFBWSxFQUFFLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCLENBQUMsd0JBQWtEO1FBQzlFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDdEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsS0FBSyxFQUFFLGVBQWUsd0JBQXdCLENBQUMsb0JBQW9CLElBQUk7WUFDdkUsTUFBTSxFQUFFLGVBQWUsd0JBQXdCLENBQUMscUJBQXFCLElBQUk7WUFDekUsV0FBVyxFQUFFLElBQUksd0JBQXdCLENBQUMsb0JBQW9CLElBQUk7WUFDbEUsWUFBWSxFQUFFLElBQUksd0JBQXdCLENBQUMscUJBQXFCLElBQUk7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFnQixFQUFFLEtBQWlCO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBbEVVLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt5SkFXUSx3QkFBd0I7c0JBRDlCLEtBQUs7dUJBQUMscUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLCBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcn0gZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge21hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge21lcmdlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGljdGlvbmFyeX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogTWFrZXMgdGhlIGhvc3QgZWxlbWVudCBuYXRpdmVseSBzY3JvbGxhYmxlIGFuZCBoaWRlcyBuYXRpdmUgc2Nyb2xsYmFycyBieSBkZWZhdWx0LCB1bmxlc3MgbmF0aXZlIHNjcm9sbGJhcnNcbiAqIGFscmVhZHkgc2l0IG9uIHRvcCBvZiB0aGUgdmlld3BvcnQgKGUuZy4gaW4gT1MgWCkuXG4gKlxuICogQmVjYXVzZSB0aGVyZSBpcyBubyBjcm9zcy1icm93c2VyIEFQSSB0byBoaWRlIHNjcm9sbGJhcnMgd2l0aG91dCBsb3NpbmcgbmF0aXZlIHNjcm9sbCBzdXBwb3J0LCB3ZSBzZXQgJ292ZXJmbG93J1xuICogdG8gJ3Njcm9sbCcgYnV0IHNoaWZ0IHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBvdXQgb2YgdGhlIHZpc2libGUgdmlld3BvcnQgYXJlYS4gVGhlIHNoaWZ0IG9mZnNldCBpcyBjb21wdXRlZCB1cGZyb250LlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIGV4cGVjdHMgaXRzIGhvc3QgZWxlbWVudCB0byBiZSB0aGUgb25seSBjaGlsZCBpbiBkb2N1bWVudCBmbG93IGluIGl0cyBwYXJlbnQgRE9NIGVsZW1lbnQuIEl0IG1ha2VzIHRoZSBob3N0IGVsZW1lbnRcbiAqIGZpbGwgdXAgdGhlIGVudGlyZSBzcGFjZSAod2lkdGggYW5kIGhlaWdodCBzZXQgdG8gMTAwJSkuIFRoZSBwYXJlbnQgZWxlbWVudCBtdXN0IGhhdmUgaXRzIENTUyBgb3ZlcmZsb3dgIHByb3BlcnR5IHNldCB0byBgaGlkZGVuYFxuICogdG8gaGlkZSB0aGUgcHVzaGVkIG91dCBuYXRpdmUgc2Nyb2xsYmFycy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NjaVNjcm9sbGFibGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2NpU2Nyb2xsYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2lucHV0Q2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdG8gZGlzcGxheSBuYXRpdmUgc2Nyb2xsYmFycy5cbiAgICogSGFzIG5vIGVmZmVjdCBpZiB0aGUgbmF0aXZlIHNjcm9sbGJhciBzaXRzIG9uIHRvcCBvZiB0aGUgY29udGVudCwgZS5nLiBpbiBPUyBYLlxuICAgKi9cbiAgQElucHV0KCdzY2lTY3JvbGxhYmxlRGlzcGxheU5hdGl2ZVNjcm9sbGJhcicpLy8gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIHB1YmxpYyBpc0Rpc3BsYXlOYXRpdmVTY3JvbGxiYXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXI6IFNjaU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyKSB7XG4gICAgbWVyZ2UoXG4gICAgICBuYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlci50cmFja1NpemUkLFxuICAgICAgdGhpcy5faW5wdXRDaGFuZ2UkLnBpcGUobWFwKCgpID0+IG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyLnRyYWNrU2l6ZSkpLFxuICAgIClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSA9PiB7XG4gICAgICAgIGlmIChuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUgPT09IG51bGwpIHsgLy8gdGhlIG5hdGl2ZSBzY3JvbGxiYXIgc2l0cyBvbiB0b3Agb2YgdGhlIGNvbnRlbnRcbiAgICAgICAgICB0aGlzLnVzZU5hdGl2ZVNjcm9sbGJhcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzRGlzcGxheU5hdGl2ZVNjcm9sbGJhciA/IHRoaXMudXNlTmF0aXZlU2Nyb2xsYmFycygpIDogdGhpcy5zaGlmdE5hdGl2ZVNjcm9sbGJhcnMobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgd2hlbiBjb250ZW50IG92ZXJmbG93cy5cbiAgICovXG4gIHByaXZhdGUgdXNlTmF0aXZlU2Nyb2xsYmFycygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0eWxlKHRoaXMuX2hvc3QubmF0aXZlRWxlbWVudCwge1xuICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIG1hcmdpblJpZ2h0OiAwLFxuICAgICAgbWFyZ2luQm90dG9tOiAwLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoaWZ0cyB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgb3V0IG9mIHRoZSB2aXNpYmxlIHZpZXdwb3J0IGFyZWEuXG4gICAqL1xuICBwcml2YXRlIHNoaWZ0TmF0aXZlU2Nyb2xsYmFycyhuYXRpdmVTY3JvbGxiYXJUcmFja1NpemU6IE5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZSk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3R5bGUodGhpcy5faG9zdC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICB3aWR0aDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLnZTY3JvbGxiYXJUcmFja1dpZHRofXB4YCxcbiAgICAgIGhlaWdodDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodH1weGAsXG4gICAgICBtYXJnaW5SaWdodDogYC0ke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aH1weGAsXG4gICAgICBtYXJnaW5Cb3R0b206IGAtJHtuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUuaFNjcm9sbGJhclRyYWNrSGVpZ2h0fXB4YCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGUoZWxlbWVudDogRWxlbWVudCwgc3R5bGU6IERpY3Rpb25hcnkpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwga2V5LCBzdHlsZVtrZXldKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Q2hhbmdlJC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG59XG4iXX0=
|
|
91
|
+
}], ctorParameters: () => [] });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0L3NyYy9zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUEyQixtQ0FBbUMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDOztBQUc3SDs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQVlqQztRQVZRLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUEwQixDQUFBLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDekQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixzQ0FBaUMsR0FBRyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV4Rjs7O1dBR0c7UUFDSSwyQkFBc0IsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUMsS0FBSyxFQUFFLHFDQUFxQyxFQUFDLENBQUMsQ0FBQztRQUczRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSywrQkFBK0I7UUFDckMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDN0QsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztnQkFDNUMsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwRixJQUFJLHdCQUF3QixFQUFFLENBQUM7Z0JBQzdCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLFlBQVksRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLHdCQUFrRDtRQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsS0FBSyxFQUFFLGVBQWUsd0JBQXdCLENBQUMsb0JBQW9CLElBQUk7WUFDdkUsTUFBTSxFQUFFLGVBQWUsd0JBQXdCLENBQUMscUJBQXFCLElBQUk7WUFDekUsV0FBVyxFQUFFLElBQUksd0JBQXdCLENBQUMsb0JBQW9CLElBQUk7WUFDbEUsWUFBWSxFQUFFLElBQUksd0JBQXdCLENBQUMscUJBQXFCLElBQUk7U0FDckUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUFnQixFQUFFLEtBQWlCO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OEdBakVVLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIFJlbmRlcmVyMiwgdW50cmFja2VkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLCBTY2lOYXRpdmVTY3JvbGxiYXJUcmFja1NpemVQcm92aWRlcn0gZnJvbSAnLi9uYXRpdmUtc2Nyb2xsYmFyLXRyYWNrLXNpemUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0RpY3Rpb25hcnl9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuXG4vKipcbiAqIE1ha2VzIHRoZSBob3N0IGVsZW1lbnQgbmF0aXZlbHkgc2Nyb2xsYWJsZSBhbmQgaGlkZXMgbmF0aXZlIHNjcm9sbGJhcnMgYnkgZGVmYXVsdCwgdW5sZXNzIG5hdGl2ZSBzY3JvbGxiYXJzXG4gKiBhbHJlYWR5IHNpdCBvbiB0b3Agb2YgdGhlIHZpZXdwb3J0IChlLmcuIGluIE9TIFgpLlxuICpcbiAqIEJlY2F1c2UgdGhlcmUgaXMgbm8gY3Jvc3MtYnJvd3NlciBBUEkgdG8gaGlkZSBzY3JvbGxiYXJzIHdpdGhvdXQgbG9zaW5nIG5hdGl2ZSBzY3JvbGwgc3VwcG9ydCwgd2Ugc2V0ICdvdmVyZmxvdydcbiAqIHRvICdzY3JvbGwnIGJ1dCBzaGlmdCB0aGUgbmF0aXZlIHNjcm9sbGJhcnMgb3V0IG9mIHRoZSB2aXNpYmxlIHZpZXdwb3J0IGFyZWEuIFRoZSBzaGlmdCBvZmZzZXQgaXMgY29tcHV0ZWQgdXBmcm9udC5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBleHBlY3RzIGl0cyBob3N0IGVsZW1lbnQgdG8gYmUgdGhlIG9ubHkgY2hpbGQgaW4gZG9jdW1lbnQgZmxvdyBpbiBpdHMgcGFyZW50IERPTSBlbGVtZW50LiBJdCBtYWtlcyB0aGUgaG9zdCBlbGVtZW50XG4gKiBmaWxsIHVwIHRoZSBlbnRpcmUgc3BhY2UgKHdpZHRoIGFuZCBoZWlnaHQgc2V0IHRvIDEwMCUpLiBUaGUgcGFyZW50IGVsZW1lbnQgbXVzdCBoYXZlIGl0cyBDU1MgYG92ZXJmbG93YCBwcm9wZXJ0eSBzZXQgdG8gYGhpZGRlbmBcbiAqIHRvIGhpZGUgdGhlIHB1c2hlZCBvdXQgbmF0aXZlIHNjcm9sbGJhcnMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzY2lTY3JvbGxhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNjaVNjcm9sbGFibGVEaXJlY3RpdmUge1xuXG4gIHByaXZhdGUgX2hvc3QgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG4gIHByaXZhdGUgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgX25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyID0gaW5qZWN0KFNjaU5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZVByb3ZpZGVyKTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0byBkaXNwbGF5IG5hdGl2ZSBzY3JvbGxiYXJzLlxuICAgKiBIYXMgbm8gZWZmZWN0IGlmIHRoZSBuYXRpdmUgc2Nyb2xsYmFyIHNpdHMgb24gdG9wIG9mIHRoZSBjb250ZW50LCBlLmcuIGluIE9TIFguXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheU5hdGl2ZVNjcm9sbGJhciA9IGlucHV0KGZhbHNlLCB7YWxpYXM6ICdzY2lTY3JvbGxhYmxlRGlzcGxheU5hdGl2ZVNjcm9sbGJhcid9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbnRyb2xEaXNwbGF5T2ZOYXRpdmVTY3JvbGxiYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgZGlzcGxheSBvZiB0aGUgbmF0aXZlIHNjcm9sbGJhciBiYXNlZCBvbiB0aGlzIGRpcmVjdGl2ZSdzIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNvbnRyb2xEaXNwbGF5T2ZOYXRpdmVTY3JvbGxiYXIoKTogdm9pZCB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRpc3BsYXlOYXRpdmVTY3JvbGxiYXIgPSB0aGlzLmRpc3BsYXlOYXRpdmVTY3JvbGxiYXIoKTtcbiAgICAgIGlmIChkaXNwbGF5TmF0aXZlU2Nyb2xsYmFyKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnVzZU5hdGl2ZVNjcm9sbGJhcnMoKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplID0gdGhpcy5fbmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplUHJvdmlkZXIudHJhY2tTaXplKCk7XG4gICAgICBpZiAobmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnNoaWZ0TmF0aXZlU2Nyb2xsYmFycyhuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy51c2VOYXRpdmVTY3JvbGxiYXJzKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgdGhlIG5hdGl2ZSBzY3JvbGxiYXJzIHdoZW4gY29udGVudCBvdmVyZmxvd3MuXG4gICAqL1xuICBwcml2YXRlIHVzZU5hdGl2ZVNjcm9sbGJhcnMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLl9ob3N0LCB7XG4gICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgbWFyZ2luUmlnaHQ6IDAsXG4gICAgICBtYXJnaW5Cb3R0b206IDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2hpZnRzIHRoZSBuYXRpdmUgc2Nyb2xsYmFycyBvdXQgb2YgdGhlIHZpc2libGUgdmlld3BvcnQgYXJlYS5cbiAgICovXG4gIHByaXZhdGUgc2hpZnROYXRpdmVTY3JvbGxiYXJzKG5hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZTogTmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLl9ob3N0LCB7XG4gICAgICBvdmVyZmxvdzogJ3Njcm9sbCcsXG4gICAgICB3aWR0aDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLnZTY3JvbGxiYXJUcmFja1dpZHRofXB4YCxcbiAgICAgIGhlaWdodDogYGNhbGMoMTAwJSArICR7bmF0aXZlU2Nyb2xsYmFyVHJhY2tTaXplLmhTY3JvbGxiYXJUcmFja0hlaWdodH1weGAsXG4gICAgICBtYXJnaW5SaWdodDogYC0ke25hdGl2ZVNjcm9sbGJhclRyYWNrU2l6ZS52U2Nyb2xsYmFyVHJhY2tXaWR0aH1weGAsXG4gICAgICBtYXJnaW5Cb3R0b206IGAtJHtuYXRpdmVTY3JvbGxiYXJUcmFja1NpemUuaFNjcm9sbGJhclRyYWNrSGVpZ2h0fXB4YCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGUoZWxlbWVudDogRWxlbWVudCwgc3R5bGU6IERpY3Rpb25hcnkpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaChrZXkgPT4gdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwga2V5LCBzdHlsZVtrZXldKSk7XG4gIH1cbn1cbiJdfQ==
|