@scion/components 15.0.2 → 16.0.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.
- package/dimension/dimension.directive.d.ts +2 -2
- package/esm2022/dimension/dimension.directive.mjs +84 -0
- package/esm2022/dimension/dimension.module.mjs +39 -0
- package/esm2022/sashbox/element-ref.directive.mjs +28 -0
- package/esm2022/sashbox/sash-initializer.directive.mjs +33 -0
- package/esm2022/sashbox/sash.directive.mjs +145 -0
- package/esm2022/sashbox/sashbox.component.mjs +279 -0
- package/esm2022/sashbox/sashbox.module.mjs +70 -0
- package/esm2022/splitter/splitter.component.mjs +228 -0
- package/esm2022/splitter/splitter.module.mjs +43 -0
- package/esm2022/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +26 -0
- package/esm2022/throbber/ripple-throbber/ripple-throbber.component.mjs +26 -0
- package/esm2022/throbber/roller-throbber/roller-throbber.component.mjs +26 -0
- package/esm2022/throbber/spinner-throbber/spinner-throbber.component.mjs +27 -0
- package/esm2022/throbber/throbber.component.mjs +68 -0
- package/esm2022/throbber/throbber.module.mjs +49 -0
- package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +115 -0
- package/esm2022/viewport/scrollable.directive.mjs +94 -0
- package/esm2022/viewport/scrollbar/scrollbar.component.mjs +323 -0
- package/esm2022/viewport/viewport.component.mjs +282 -0
- package/esm2022/viewport/viewport.module.mjs +51 -0
- package/{fesm2015 → fesm2022}/scion-components-dimension.mjs +12 -7
- package/{fesm2015 → fesm2022}/scion-components-dimension.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/scion-components-sashbox.mjs +47 -42
- package/{fesm2020 → fesm2022}/scion-components-sashbox.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/scion-components-splitter.mjs +22 -17
- package/{fesm2020 → fesm2022}/scion-components-splitter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/scion-components-throbber.mjs +28 -23
- package/{fesm2015 → fesm2022}/scion-components-throbber.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/scion-components-viewport.mjs +65 -60
- package/{fesm2015 → fesm2022}/scion-components-viewport.mjs.map +1 -1
- package/package.json +27 -43
- package/sashbox/sash-initializer.directive.d.ts +1 -1
- package/sashbox/sash.directive.d.ts +1 -1
- package/sashbox/sashbox.component.d.ts +1 -1
- package/splitter/splitter.component.d.ts +1 -1
- package/throbber/throbber.component.d.ts +1 -1
- package/viewport/scrollable.directive.d.ts +1 -1
- package/viewport/scrollbar/scrollbar.component.d.ts +1 -1
- package/viewport/viewport.component.d.ts +2 -2
- package/esm2020/dimension/dimension.directive.mjs +0 -83
- package/esm2020/dimension/dimension.module.mjs +0 -38
- package/esm2020/sashbox/element-ref.directive.mjs +0 -27
- package/esm2020/sashbox/sash-initializer.directive.mjs +0 -32
- package/esm2020/sashbox/sash.directive.mjs +0 -144
- package/esm2020/sashbox/sashbox.component.mjs +0 -278
- package/esm2020/sashbox/sashbox.module.mjs +0 -69
- package/esm2020/splitter/splitter.component.mjs +0 -227
- package/esm2020/splitter/splitter.module.mjs +0 -42
- package/esm2020/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +0 -25
- package/esm2020/throbber/ripple-throbber/ripple-throbber.component.mjs +0 -25
- package/esm2020/throbber/roller-throbber/roller-throbber.component.mjs +0 -25
- package/esm2020/throbber/spinner-throbber/spinner-throbber.component.mjs +0 -26
- package/esm2020/throbber/throbber.component.mjs +0 -67
- package/esm2020/throbber/throbber.module.mjs +0 -48
- package/esm2020/viewport/native-scrollbar-track-size-provider.service.mjs +0 -114
- package/esm2020/viewport/scrollable.directive.mjs +0 -93
- package/esm2020/viewport/scrollbar/scrollbar.component.mjs +0 -322
- package/esm2020/viewport/viewport.component.mjs +0 -281
- package/esm2020/viewport/viewport.module.mjs +0 -50
- package/fesm2015/scion-components-sashbox.mjs +0 -554
- package/fesm2015/scion-components-sashbox.mjs.map +0 -1
- package/fesm2015/scion-components-splitter.mjs +0 -284
- package/fesm2015/scion-components-splitter.mjs.map +0 -1
- package/fesm2015/scion-components-throbber.mjs +0 -214
- package/fesm2015/scion-components-viewport.mjs +0 -861
- package/fesm2015/scion-components.mjs +0 -4
- package/fesm2015/scion-components.mjs.map +0 -1
- package/fesm2020/scion-components-dimension.mjs +0 -135
- package/fesm2020/scion-components-dimension.mjs.map +0 -1
- package/fesm2020/scion-components-throbber.mjs.map +0 -1
- package/fesm2020/scion-components-viewport.mjs.map +0 -1
- /package/{esm2020 → esm2022}/dimension/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dimension/scion-components-dimension.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/sashbox/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/sashbox/sashbox-accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/sashbox/scion-components-sashbox.mjs +0 -0
- /package/{esm2020 → esm2022}/scion-components.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/scion-components-splitter.mjs +0 -0
- /package/{esm2020 → esm2022}/throbber/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/throbber/scion-components-throbber.mjs +0 -0
- /package/{esm2020 → esm2022}/viewport/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/viewport/scion-components-viewport.mjs +0 -0
- /package/{fesm2020 → fesm2022}/scion-components.mjs +0 -0
- /package/{fesm2020 → fesm2022}/scion-components.mjs.map +0 -0
|
@@ -35,9 +35,9 @@ export declare class SciDimensionDirective implements OnInit, OnDestroy {
|
|
|
35
35
|
get dimension(): SciDimension;
|
|
36
36
|
ngOnDestroy(): void;
|
|
37
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<SciDimensionDirective, never>;
|
|
38
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SciDimensionDirective, "[sciDimension]", ["sciDimension"], { "emitOutsideAngular": "emitOutsideAngular"; }, { "dimensionChange": "sciDimensionChange"; }, never, never, false, never>;
|
|
38
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SciDimensionDirective, "[sciDimension]", ["sciDimension"], { "emitOutsideAngular": { "alias": "emitOutsideAngular"; "required": false; }; }, { "dimensionChange": "sciDimensionChange"; }, never, never, false, never>;
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Represents the dimension of an element.
|
|
42
42
|
*/
|
|
43
|
-
export
|
|
43
|
+
export type SciDimension = Dimension;
|
|
@@ -0,0 +1,84 @@
|
|
|
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, EventEmitter, Input, Output } from '@angular/core';
|
|
11
|
+
import { Subject } from 'rxjs';
|
|
12
|
+
import { takeUntil } from 'rxjs/operators';
|
|
13
|
+
import { captureElementDimension, fromDimension$ } from '@scion/toolkit/observable';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
/**
|
|
16
|
+
* Allows observing changes to host element's size.
|
|
17
|
+
*
|
|
18
|
+
* See {@link fromDimension$} Observable for more information.
|
|
19
|
+
*
|
|
20
|
+
* ---
|
|
21
|
+
* Usage:
|
|
22
|
+
*
|
|
23
|
+
* <div sciDimension (sciDimensionChange)="onDimensionChange($event)"></div>
|
|
24
|
+
*/
|
|
25
|
+
class SciDimensionDirective {
|
|
26
|
+
constructor(host, _ngZone) {
|
|
27
|
+
this._ngZone = _ngZone;
|
|
28
|
+
this._destroy$ = new Subject();
|
|
29
|
+
/**
|
|
30
|
+
* Upon subscription, it emits the host element's dimension, and then continuously emits when the dimension of the host element changes.
|
|
31
|
+
*/
|
|
32
|
+
this.dimensionChange = new EventEmitter();
|
|
33
|
+
/**
|
|
34
|
+
* Controls if to emit a dimension change inside or outside of the Angular zone.
|
|
35
|
+
* If emitted outside of the Angular zone no change detection cycle is triggered.
|
|
36
|
+
*
|
|
37
|
+
* By default, if not specified, emits inside the Angular zone.
|
|
38
|
+
*/
|
|
39
|
+
this.emitOutsideAngular = false;
|
|
40
|
+
this._host = host.nativeElement;
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.installDimensionListener();
|
|
44
|
+
}
|
|
45
|
+
installDimensionListener() {
|
|
46
|
+
this._ngZone.runOutsideAngular(() => {
|
|
47
|
+
fromDimension$(this._host)
|
|
48
|
+
.pipe(takeUntil(this._destroy$))
|
|
49
|
+
.subscribe((dimension) => {
|
|
50
|
+
if (this.emitOutsideAngular) {
|
|
51
|
+
this.dimensionChange.emit(dimension);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this._ngZone.run(() => this.dimensionChange.emit(dimension));
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns the current dimension of its host element.
|
|
61
|
+
*/
|
|
62
|
+
get dimension() {
|
|
63
|
+
return captureElementDimension(this._host);
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this._destroy$.next();
|
|
67
|
+
}
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
69
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciDimensionDirective, selector: "[sciDimension]", inputs: { emitOutsideAngular: "emitOutsideAngular" }, outputs: { dimensionChange: "sciDimensionChange" }, exportAs: ["sciDimension"], ngImport: i0 }); }
|
|
70
|
+
}
|
|
71
|
+
export { SciDimensionDirective };
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionDirective, decorators: [{
|
|
73
|
+
type: Directive,
|
|
74
|
+
args: [{
|
|
75
|
+
selector: '[sciDimension]',
|
|
76
|
+
exportAs: 'sciDimension',
|
|
77
|
+
}]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { dimensionChange: [{
|
|
79
|
+
type: Output,
|
|
80
|
+
args: ['sciDimensionChange']
|
|
81
|
+
}], emitOutsideAngular: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvZGltZW5zaW9uL3NyYy9kaW1lbnNpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUE2QixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLHVCQUF1QixFQUFhLGNBQWMsRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQUU3Rjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUlhLHFCQUFxQjtJQW9CaEMsWUFBWSxJQUE2QixFQUFVLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBakIxRCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV4Qzs7V0FFRztRQUVJLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFMUQ7Ozs7O1dBS0c7UUFFSSx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFHaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNsQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQy9CLFNBQVMsQ0FBQyxDQUFDLFNBQXVCLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN0QztxQkFDSTtvQkFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQXBEVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7U0FBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCO3NIQVVRLGVBQWU7c0JBRHJCLE1BQU07dUJBQUMsb0JBQW9CO2dCQVVyQixrQkFBa0I7c0JBRHhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjYXB0dXJlRWxlbWVudERpbWVuc2lvbiwgRGltZW5zaW9uLCBmcm9tRGltZW5zaW9uJH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb2JzZXJ2YWJsZSc7XG5cbi8qKlxuICogQWxsb3dzIG9ic2VydmluZyBjaGFuZ2VzIHRvIGhvc3QgZWxlbWVudCdzIHNpemUuXG4gKlxuICogU2VlIHtAbGluayBmcm9tRGltZW5zaW9uJH0gT2JzZXJ2YWJsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAtLS1cbiAqIFVzYWdlOlxuICpcbiAqIDxkaXYgc2NpRGltZW5zaW9uIChzY2lEaW1lbnNpb25DaGFuZ2UpPVwib25EaW1lbnNpb25DaGFuZ2UoJGV2ZW50KVwiPjwvZGl2PlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2NpRGltZW5zaW9uXScsXG4gIGV4cG9ydEFzOiAnc2NpRGltZW5zaW9uJyxcbn0pXG5leHBvcnQgY2xhc3MgU2NpRGltZW5zaW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3Q6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFVwb24gc3Vic2NyaXB0aW9uLCBpdCBlbWl0cyB0aGUgaG9zdCBlbGVtZW50J3MgZGltZW5zaW9uLCBhbmQgdGhlbiBjb250aW51b3VzbHkgZW1pdHMgd2hlbiB0aGUgZGltZW5zaW9uIG9mIHRoZSBob3N0IGVsZW1lbnQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoJ3NjaURpbWVuc2lvbkNoYW5nZScpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcbiAgcHVibGljIGRpbWVuc2lvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NpRGltZW5zaW9uPigpO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiB0byBlbWl0IGEgZGltZW5zaW9uIGNoYW5nZSBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lLlxuICAgKiBJZiBlbWl0dGVkIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZSBubyBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIGlzIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgaWYgbm90IHNwZWNpZmllZCwgZW1pdHMgaW5zaWRlIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW1pdE91dHNpZGVBbmd1bGFyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7XG4gICAgdGhpcy5faG9zdCA9IGhvc3QubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbGxEaW1lbnNpb25MaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsRGltZW5zaW9uTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGZyb21EaW1lbnNpb24kKHRoaXMuX2hvc3QpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRpbWVuc2lvbjogU2NpRGltZW5zaW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZW1pdE91dHNpZGVBbmd1bGFyKSB7XG4gICAgICAgICAgICB0aGlzLmRpbWVuc2lvbkNoYW5nZS5lbWl0KGRpbWVuc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmRpbWVuc2lvbkNoYW5nZS5lbWl0KGRpbWVuc2lvbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBkaW1lbnNpb24gb2YgaXRzIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGltZW5zaW9uKCk6IFNjaURpbWVuc2lvbiB7XG4gICAgcmV0dXJuIGNhcHR1cmVFbGVtZW50RGltZW5zaW9uKHRoaXMuX2hvc3QpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbiBvZiBhbiBlbGVtZW50LlxuICovXG5leHBvcnQgdHlwZSBTY2lEaW1lbnNpb24gPSBEaW1lbnNpb247XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
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 { CommonModule } from '@angular/common';
|
|
12
|
+
import { SciDimensionDirective } from './dimension.directive';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
/**
|
|
15
|
+
* Provides a directive for observing changes to the size of the host element.
|
|
16
|
+
*
|
|
17
|
+
* @see fromDimension$
|
|
18
|
+
*/
|
|
19
|
+
class SciDimensionModule {
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
21
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, declarations: [SciDimensionDirective], imports: [CommonModule], exports: [SciDimensionDirective] }); }
|
|
22
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, imports: [CommonModule] }); }
|
|
23
|
+
}
|
|
24
|
+
export { SciDimensionModule };
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciDimensionModule, decorators: [{
|
|
26
|
+
type: NgModule,
|
|
27
|
+
args: [{
|
|
28
|
+
imports: [
|
|
29
|
+
CommonModule,
|
|
30
|
+
],
|
|
31
|
+
declarations: [
|
|
32
|
+
SciDimensionDirective,
|
|
33
|
+
],
|
|
34
|
+
exports: [
|
|
35
|
+
SciDimensionDirective,
|
|
36
|
+
],
|
|
37
|
+
}]
|
|
38
|
+
}] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL2NvbXBvbmVudHMvZGltZW5zaW9uL3NyYy9kaW1lbnNpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBRTVEOzs7O0dBSUc7QUFDSCxNQVdhLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBTjNCLHFCQUFxQixhQUhyQixZQUFZLGFBTVoscUJBQXFCOytHQUdaLGtCQUFrQixZQVQzQixZQUFZOztTQVNILGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQVg5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRTt3QkFDWixxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7U2NpRGltZW5zaW9uRGlyZWN0aXZlfSBmcm9tICcuL2RpbWVuc2lvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgZGlyZWN0aXZlIGZvciBvYnNlcnZpbmcgY2hhbmdlcyB0byB0aGUgc2l6ZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqIEBzZWUgZnJvbURpbWVuc2lvbiRcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2NpRGltZW5zaW9uRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2NpRGltZW5zaW9uRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTY2lEaW1lbnNpb25Nb2R1bGUge1xufVxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
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 } from '@angular/core';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* Provides access to the native {@link HTMLElement} of the host.
|
|
14
|
+
*/
|
|
15
|
+
class SciElementRefDirective {
|
|
16
|
+
constructor(host) {
|
|
17
|
+
this.host = host;
|
|
18
|
+
this.nativeElement = host.nativeElement;
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciElementRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciElementRefDirective, selector: "[sciElementRef]", exportAs: ["sciElementRef"], ngImport: i0 }); }
|
|
22
|
+
}
|
|
23
|
+
export { SciElementRefDirective };
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciElementRefDirective, decorators: [{
|
|
25
|
+
type: Directive,
|
|
26
|
+
args: [{ selector: '[sciElementRef]', exportAs: 'sciElementRef' }]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1yZWYuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vY29tcG9uZW50cy9zYXNoYm94L3NyYy9lbGVtZW50LXJlZi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQUVwRDs7R0FFRztBQUNILE1BQ2Esc0JBQXNCO0lBSWpDLFlBQW1CLElBQTZCO1FBQTdCLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDOzhHQU5VLHNCQUFzQjtrR0FBdEIsc0JBQXNCOztTQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFEbEMsU0FBUzttQkFBQyxFQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmF0aXZlIHtAbGluayBIVE1MRWxlbWVudH0gb2YgdGhlIGhvc3QuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW3NjaUVsZW1lbnRSZWZdJywgZXhwb3J0QXM6ICdzY2lFbGVtZW50UmVmJ30pXG5leHBvcnQgY2xhc3MgU2NpRWxlbWVudFJlZkRpcmVjdGl2ZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHRoaXMubmF0aXZlRWxlbWVudCA9IGhvc3QubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2019 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { Directive, Input } from '@angular/core';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* Initializes {SashDirective} with the target {HTMLDivElement}.
|
|
14
|
+
*/
|
|
15
|
+
class SciSashInitializerDirective {
|
|
16
|
+
constructor(_host) {
|
|
17
|
+
this._host = _host;
|
|
18
|
+
}
|
|
19
|
+
ngOnChanges(changes) {
|
|
20
|
+
this.sash.element = this._host.nativeElement;
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashInitializerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciSashInitializerDirective, selector: "div[sciSashInitializer].sash", inputs: { sash: ["sciSashInitializer", "sash"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
24
|
+
}
|
|
25
|
+
export { SciSashInitializerDirective };
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashInitializerDirective, decorators: [{
|
|
27
|
+
type: Directive,
|
|
28
|
+
args: [{ selector: 'div[sciSashInitializer].sash' }]
|
|
29
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sash: [{
|
|
30
|
+
type: Input,
|
|
31
|
+
args: ['sciSashInitializer']
|
|
32
|
+
}] } });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FzaC1pbml0aWFsaXplci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3Nhc2hib3gvc3JjL3Nhc2gtaW5pdGlhbGl6ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxLQUFLLEVBQTJCLE1BQU0sZUFBZSxDQUFDOztBQUdyRjs7R0FFRztBQUNILE1BQ2EsMkJBQTJCO0lBS3RDLFlBQW9CLEtBQWlDO1FBQWpDLFVBQUssR0FBTCxLQUFLLENBQTRCO0lBQ3JELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDL0MsQ0FBQzs4R0FWVSwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7U0FBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUsOEJBQThCLEVBQUM7aUdBSTVDLElBQUk7c0JBRFYsS0FBSzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NjaVNhc2hEaXJlY3RpdmV9IGZyb20gJy4vc2FzaC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIHtTYXNoRGlyZWN0aXZlfSB3aXRoIHRoZSB0YXJnZXQge0hUTUxEaXZFbGVtZW50fS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdkaXZbc2NpU2FzaEluaXRpYWxpemVyXS5zYXNoJ30pXG5leHBvcnQgY2xhc3MgU2NpU2FzaEluaXRpYWxpemVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoJ3NjaVNhc2hJbml0aWFsaXplcicpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBwdWJsaWMgc2FzaCE6IFNjaVNhc2hEaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zYXNoLmVsZW1lbnQgPSB0aGlzLl9ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2018-2019 Swiss Federal Railways
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made
|
|
5
|
+
* available under the terms of the Eclipse Public License 2.0
|
|
6
|
+
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
import { Directive, Input } from '@angular/core';
|
|
11
|
+
import { BehaviorSubject, merge } from 'rxjs';
|
|
12
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "./sashbox-accessor";
|
|
15
|
+
/**
|
|
16
|
+
* Use this directive to model a sash for {@link SciSashboxComponent}.
|
|
17
|
+
* The host element of this modelling directive must be a <ng-template> which is used as sash template.
|
|
18
|
+
*
|
|
19
|
+
*
|
|
20
|
+
* ### Usage:
|
|
21
|
+
*
|
|
22
|
+
* <sci-sashbox direction="row">
|
|
23
|
+
* <!-- fixed size sash -->
|
|
24
|
+
* <ng-template sciSash size="200px">
|
|
25
|
+
* ...
|
|
26
|
+
* </ng-template>
|
|
27
|
+
*
|
|
28
|
+
* <!-- sash which takes the remaining space -->
|
|
29
|
+
* <ng-template sciSash>
|
|
30
|
+
* ...
|
|
31
|
+
* </ng-template>
|
|
32
|
+
* </sci-sashbox>
|
|
33
|
+
*/
|
|
34
|
+
class SciSashDirective {
|
|
35
|
+
/**
|
|
36
|
+
* Specifies the sash size, either as fixed size with an explicit unit,
|
|
37
|
+
* or as a unitless proportion to distibute remaining space. A proportional
|
|
38
|
+
* sash has the ability to grow or shrink if necessary, and must be >= 1.
|
|
39
|
+
*
|
|
40
|
+
* If not set, remaining space is distributed equally.
|
|
41
|
+
*/
|
|
42
|
+
set size(size) {
|
|
43
|
+
this._size = size ?? '1';
|
|
44
|
+
}
|
|
45
|
+
get size() {
|
|
46
|
+
return this._size;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
set flexGrow(flexGrow) {
|
|
52
|
+
this._flexGrow$.next(flexGrow);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
get flexGrow() {
|
|
58
|
+
return this._flexGrow$.value;
|
|
59
|
+
}
|
|
60
|
+
constructor(sashTemplate, _sashBoxAccessor) {
|
|
61
|
+
this.sashTemplate = sashTemplate;
|
|
62
|
+
this._sashBoxAccessor = _sashBoxAccessor;
|
|
63
|
+
this._size = '1';
|
|
64
|
+
this._flexGrow$ = new BehaviorSubject(0);
|
|
65
|
+
this.flexGrowNormalized$ = this._sashBoxAccessor.sashes$
|
|
66
|
+
.pipe(switchMap(sashes => merge(...sashes.map(sash => sash._flexGrow$))), map(() => this.normalizeFlexGrow(this.flexGrow)));
|
|
67
|
+
}
|
|
68
|
+
ngOnInit() {
|
|
69
|
+
this.setFlexItemProperties();
|
|
70
|
+
}
|
|
71
|
+
ngOnChanges(changes) {
|
|
72
|
+
this.setFlexItemProperties();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Returns if this sash has a fixed size, meaning that it has not the ability to grow or shrink if necessary.
|
|
76
|
+
*
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
get isFixedSize() {
|
|
80
|
+
return Number.isNaN(+this.size);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Returns the effective sash size as rendered in the DOM.
|
|
84
|
+
*
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
get computedSize() {
|
|
88
|
+
// Note: Use `boundingClientRect` to get the fractional size.
|
|
89
|
+
// see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth
|
|
90
|
+
return this._sashBoxAccessor.direction === 'row' ? this.element.getBoundingClientRect().width : this.element.getBoundingClientRect().height;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Computes and sets the flex item properties based on the modelled size.
|
|
94
|
+
*/
|
|
95
|
+
setFlexItemProperties() {
|
|
96
|
+
if (this.isFixedSize) {
|
|
97
|
+
// fixed-sized sash
|
|
98
|
+
this.flexGrow = 0;
|
|
99
|
+
this.flexShrink = 0;
|
|
100
|
+
this.flexBasis = `${this.size}`;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// remaining space is distributed according to given proportion
|
|
104
|
+
const proportion = +this.size;
|
|
105
|
+
if (proportion < 1) {
|
|
106
|
+
throw Error(`[IllegalSashSizeError] The proportion for flexible sized sashes must be >=1 [size=${this.size}]`);
|
|
107
|
+
}
|
|
108
|
+
this.flexGrow = proportion;
|
|
109
|
+
this.flexShrink = 1;
|
|
110
|
+
this.flexBasis = '0';
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Computes the normalized flex-grow proportion of the given sash, which is a value >= 1.
|
|
115
|
+
*
|
|
116
|
+
* If the sum of all flex-grow proportions would be less than 1, then, the sashes would not fill the entire sash-box space.
|
|
117
|
+
* Without normalization in place, e.g., this could happen when removing a sash.
|
|
118
|
+
*/
|
|
119
|
+
normalizeFlexGrow(flexGrow) {
|
|
120
|
+
if (flexGrow === 0) {
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
const sashes = this._sashBoxAccessor.sashes;
|
|
124
|
+
const flexGrowSum = sashes.reduce((sum, sash) => sum + sash.flexGrow, 0);
|
|
125
|
+
if (flexGrowSum === 0) {
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
return flexGrow / flexGrowSum;
|
|
129
|
+
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashDirective, deps: [{ token: i0.TemplateRef }, { token: i1.SciSashBoxAccessor }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
131
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciSashDirective, selector: "ng-template[sciSash]", inputs: { size: "size", minSize: "minSize" }, exportAs: ["sciSash"], usesOnChanges: true, ngImport: i0 }); }
|
|
132
|
+
}
|
|
133
|
+
export { SciSashDirective };
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashDirective, decorators: [{
|
|
135
|
+
type: Directive,
|
|
136
|
+
args: [{
|
|
137
|
+
selector: 'ng-template[sciSash]',
|
|
138
|
+
exportAs: 'sciSash',
|
|
139
|
+
}]
|
|
140
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i1.SciSashBoxAccessor }]; }, propDecorators: { size: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], minSize: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}] } });
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FzaC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi9jb21wb25lbnRzL3Nhc2hib3gvc3JjL3Nhc2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWdELE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBQyxlQUFlLEVBQUUsS0FBSyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFJYSxnQkFBZ0I7SUFLM0I7Ozs7OztPQU1HO0lBQ0gsSUFDVyxJQUFJLENBQUMsSUFBd0M7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQWdCRDs7T0FFRztJQUNILElBQVcsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFtQkQsWUFBNEIsWUFBK0IsRUFBVSxnQkFBb0M7UUFBN0UsaUJBQVksR0FBWixZQUFZLENBQW1CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQWhFakcsVUFBSyxHQUFvQixHQUFHLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBZ0VsRCxJQUFJLENBQUMsbUJB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UmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTY2lTYXNoQm94QWNjZXNzb3J9IGZyb20gJy4vc2FzaGJveC1hY2Nlc3Nvcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGRpcmVjdGl2ZSB0byBtb2RlbCBhIHNhc2ggZm9yIHtAbGluayBTY2lTYXNoYm94Q29tcG9uZW50fS5cbiAqIFRoZSBob3N0IGVsZW1lbnQgb2YgdGhpcyBtb2RlbGxpbmcgZGlyZWN0aXZlIG11c3QgYmUgYSA8bmctdGVtcGxhdGU+IHdoaWNoIGlzIHVzZWQgYXMgc2FzaCB0ZW1wbGF0ZS5cbiAqXG4gKlxuICogIyMjIFVzYWdlOlxuICpcbiAqIDxzY2ktc2FzaGJveCBkaXJlY3Rpb249XCJyb3dcIj5cbiAqICAgPCEtLSBmaXhlZCBzaXplIHNhc2ggLS0+XG4gKiAgIDxuZy10ZW1wbGF0ZSBzY2lTYXNoIHNpemU9XCIyMDBweFwiPlxuICogICAgIC4uLlxuICogICA8L25nLXRlbXBsYXRlPlxuICpcbiAqICAgPCEtLSBzYXNoIHdoaWNoIHRha2VzIHRoZSByZW1haW5pbmcgc3BhY2UgLS0+XG4gKiAgIDxuZy10ZW1wbGF0ZSBzY2lTYXNoPlxuICogICAgIC4uLlxuICogICA8L25nLXRlbXBsYXRlPlxuICogPC9zY2ktc2FzaGJveD5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbc2NpU2FzaF0nLFxuICBleHBvcnRBczogJ3NjaVNhc2gnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2lTYXNoRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIHByaXZhdGUgX3NpemU6IHN0cmluZyB8IG51bWJlciA9ICcxJztcbiAgcHJpdmF0ZSBfZmxleEdyb3ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHNhc2ggc2l6ZSwgZWl0aGVyIGFzIGZpeGVkIHNpemUgd2l0aCBhbiBleHBsaWNpdCB1bml0LFxuICAgKiBvciBhcyBhIHVuaXRsZXNzIHByb3BvcnRpb24gdG8gZGlzdGlidXRlIHJlbWFpbmluZyBzcGFjZS4gQSBwcm9wb3J0aW9uYWxcbiAgICogc2FzaCBoYXMgdGhlIGFiaWxpdHkgdG8gZ3JvdyBvciBzaHJpbmsgaWYgbmVjZXNzYXJ5LCBhbmQgbXVzdCBiZSA+PSAxLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0LCByZW1haW5pbmcgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgZXF1YWxseS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2l6ZShzaXplOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fc2l6ZSA9IHNpemUgPz8gJzEnO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtaW5pbWFsIHNhc2ggc2l6ZSBpbiBwaXhlbCBvciBwZXJjZW50LlxuICAgKiBUaGUgbWluLXNpemUgcHJldmVudHMgdGhlIHVzZXIgZnJvbSBzaHJpbmtpbmcgdGhlIHNhc2ggYmVsb3cgdGhpcyBtaW5pbWFsIHNpemUuXG4gICAqXG4gICAqIElmIHRoZSB1bml0IGlzIG9taXR0ZWQsIHRoZSB2YWx1ZSBpcyBpbnRlcnByZXRlZCBhcyBhIHBpeGVsIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pblNpemU/OiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGVsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2V0IGZsZXhHcm93KGZsZXhHcm93OiBudW1iZXIpIHtcbiAgICB0aGlzLl9mbGV4R3JvdyQubmV4dChmbGV4R3Jvdyk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZsZXhHcm93KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZsZXhHcm93JC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmbGV4U2hyaW5rITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmbGV4QmFzaXMhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZWQgZmxleC1ncm93IHByb3BvcnRpb24gb2YgdGhpcyBzYXNoLCB3aGljaCBpcyBhIHZhbHVlID49IDEuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGZsZXhHcm93Tm9ybWFsaXplZCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgc2FzaFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPiwgcHJpdmF0ZSBfc2FzaEJveEFjY2Vzc29yOiBTY2lTYXNoQm94QWNjZXNzb3IpIHtcbiAgICB0aGlzLmZsZXhHcm93Tm9ybWFsaXplZCQgPSB0aGlzLl9zYXNoQm94QWNjZXNzb3Iuc2FzaGVzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChzYXNoZXMgPT4gbWVyZ2UoLi4uc2FzaGVzLm1hcChzYXNoID0+IHNhc2guX2ZsZXhHcm93JCkpKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMubm9ybWFsaXplRmxleEdyb3codGhpcy5mbGV4R3JvdykpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZsZXhJdGVtUHJvcGVydGllcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZsZXhJdGVtUHJvcGVydGllcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgaWYgdGhpcyBzYXNoIGhhcyBhIGZpeGVkIHNpemUsIG1lYW5pbmcgdGhhdCBpdCBoYXMgbm90IHRoZSBhYmlsaXR5IHRvIGdyb3cgb3Igc2hyaW5rIGlmIG5lY2Vzc2FyeS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRml4ZWRTaXplKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBOdW1iZXIuaXNOYU4oK3RoaXMuc2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZWZmZWN0aXZlIHNhc2ggc2l6ZSBhcyByZW5kZXJlZCBpbiB0aGUgRE9NLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBnZXQgY29tcHV0ZWRTaXplKCk6IG51bWJlciB7XG4gICAgLy8gTm90ZTogVXNlIGBib3VuZGluZ0NsaWVudFJlY3RgIHRvIGdldCB0aGUgZnJhY3Rpb25hbCBzaXplLlxuICAgIC8vIHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9jbGllbnRXaWR0aFxuICAgIHJldHVybiB0aGlzLl9zYXNoQm94QWNjZXNzb3IuZGlyZWN0aW9uID09PSAncm93JyA/IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA6IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYW5kIHNldHMgdGhlIGZsZXggaXRlbSBwcm9wZXJ0aWVzIGJhc2VkIG9uIHRoZSBtb2RlbGxlZCBzaXplLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRGbGV4SXRlbVByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNGaXhlZFNpemUpIHtcbiAgICAgIC8vIGZpeGVkLXNpemVkIHNhc2hcbiAgICAgIHRoaXMuZmxleEdyb3cgPSAwO1xuICAgICAgdGhpcy5mbGV4U2hyaW5rID0gMDtcbiAgICAgIHRoaXMuZmxleEJhc2lzID0gYCR7dGhpcy5zaXplfWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gcmVtYWluaW5nIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFjY29yZGluZyB0byBnaXZlbiBwcm9wb3J0aW9uXG4gICAgICBjb25zdCBwcm9wb3J0aW9uID0gK3RoaXMuc2l6ZTtcbiAgICAgIGlmIChwcm9wb3J0aW9uIDwgMSkge1xuICAgICAgICB0aHJvdyBFcnJvcihgW0lsbGVnYWxTYXNoU2l6ZUVycm9yXSBUaGUgcHJvcG9ydGlvbiBmb3IgZmxleGlibGUgc2l6ZWQgc2FzaGVzIG11c3QgYmUgPj0xIFtzaXplPSR7dGhpcy5zaXplfV1gKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mbGV4R3JvdyA9IHByb3BvcnRpb247XG4gICAgICB0aGlzLmZsZXhTaHJpbmsgPSAxO1xuICAgICAgdGhpcy5mbGV4QmFzaXMgPSAnMCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBub3JtYWxpemVkIGZsZXgtZ3JvdyBwcm9wb3J0aW9uIG9mIHRoZSBnaXZlbiBzYXNoLCB3aGljaCBpcyBhIHZhbHVlID49IDEuXG4gICAqXG4gICAqIElmIHRoZSBzdW0gb2YgYWxsIGZsZXgtZ3JvdyBwcm9wb3J0aW9ucyB3b3VsZCBiZSBsZXNzIHRoYW4gMSwgdGhlbiwgdGhlIHNhc2hlcyB3b3VsZCBub3QgZmlsbCB0aGUgZW50aXJlIHNhc2gtYm94IHNwYWNlLlxuICAgKiBXaXRob3V0IG5vcm1hbGl6YXRpb24gaW4gcGxhY2UsIGUuZy4sIHRoaXMgY291bGQgaGFwcGVuIHdoZW4gcmVtb3ZpbmcgYSBzYXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVGbGV4R3JvdyhmbGV4R3JvdzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoZmxleEdyb3cgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IHNhc2hlcyA9IHRoaXMuX3Nhc2hCb3hBY2Nlc3Nvci5zYXNoZXM7XG4gICAgY29uc3QgZmxleEdyb3dTdW0gPSBzYXNoZXMucmVkdWNlKChzdW0sIHNhc2gpID0+IHN1bSArIHNhc2guZmxleEdyb3csIDApO1xuICAgIGlmIChmbGV4R3Jvd1N1bSA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBmbGV4R3JvdyAvIGZsZXhHcm93U3VtO1xuICB9XG59XG4iXX0=
|