@scion/components 16.0.0 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dimension/dimension.directive.d.ts +1 -1
- package/dimension/dimension.module.d.ts +1 -2
- package/esm2022/dimension/dimension.directive.mjs +3 -2
- package/esm2022/dimension/dimension.module.mjs +3 -7
- package/esm2022/sashbox/element-ref.directive.mjs +7 -3
- package/esm2022/sashbox/public_api.mjs +4 -4
- package/esm2022/sashbox/sash-initializer.directive.mjs +7 -4
- package/esm2022/sashbox/sash.directive.mjs +3 -2
- package/esm2022/sashbox/sashbox.component.mjs +19 -12
- package/esm2022/sashbox/sashbox.module.mjs +5 -19
- package/esm2022/splitter/public_api.mjs +3 -3
- package/esm2022/splitter/splitter.component.mjs +3 -5
- package/esm2022/splitter/splitter.module.mjs +4 -8
- package/esm2022/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +3 -3
- package/esm2022/throbber/ripple-throbber/ripple-throbber.component.mjs +3 -3
- package/esm2022/throbber/roller-throbber/roller-throbber.component.mjs +3 -3
- package/esm2022/throbber/spinner-throbber/spinner-throbber.component.mjs +3 -3
- package/esm2022/throbber/throbber.component.mjs +16 -8
- package/esm2022/throbber/throbber.module.mjs +4 -20
- package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +1 -3
- package/esm2022/viewport/public_api.mjs +4 -5
- package/esm2022/viewport/scrollable.directive.mjs +3 -2
- package/esm2022/viewport/scrollbar/scrollbar.component.mjs +5 -5
- package/esm2022/viewport/viewport.component.mjs +14 -7
- package/esm2022/viewport/viewport.module.mjs +4 -12
- package/fesm2022/scion-components-dimension.mjs +4 -7
- package/fesm2022/scion-components-dimension.mjs.map +1 -1
- package/fesm2022/scion-components-sashbox.mjs +35 -32
- package/fesm2022/scion-components-sashbox.mjs.map +1 -1
- package/fesm2022/scion-components-splitter.mjs +6 -11
- package/fesm2022/scion-components-splitter.mjs.map +1 -1
- package/fesm2022/scion-components-throbber.mjs +22 -26
- package/fesm2022/scion-components-throbber.mjs.map +1 -1
- package/fesm2022/scion-components-viewport.mjs +110 -112
- package/fesm2022/scion-components-viewport.mjs.map +1 -1
- package/package.json +1 -1
- package/sashbox/element-ref.directive.d.ts +1 -1
- package/sashbox/public_api.d.ts +3 -3
- package/sashbox/sash-initializer.directive.d.ts +1 -1
- package/sashbox/sash.directive.d.ts +2 -2
- package/sashbox/sashbox.component.d.ts +1 -3
- package/sashbox/sashbox.module.d.ts +1 -5
- package/splitter/public_api.d.ts +2 -2
- package/splitter/splitter.component.d.ts +1 -3
- package/splitter/splitter.module.d.ts +1 -2
- package/throbber/ellipsis-throbber/ellipsis-throbber.component.d.ts +1 -1
- package/throbber/ripple-throbber/ripple-throbber.component.d.ts +1 -1
- package/throbber/roller-throbber/roller-throbber.component.d.ts +1 -1
- package/throbber/spinner-throbber/spinner-throbber.component.d.ts +1 -1
- package/throbber/throbber.component.d.ts +1 -1
- package/throbber/throbber.module.d.ts +1 -6
- package/viewport/native-scrollbar-track-size-provider.service.d.ts +0 -2
- package/viewport/public_api.d.ts +3 -4
- package/viewport/scrollable.directive.d.ts +1 -1
- package/viewport/scrollbar/scrollbar.component.d.ts +2 -2
- package/viewport/viewport.component.d.ts +1 -1
- package/viewport/viewport.module.d.ts +1 -3
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Input, EventEmitter, NgZone,
|
|
2
|
+
import { Directive, Input, EventEmitter, NgZone, Component, HostBinding, Output, ContentChildren, inject, NgModule } from '@angular/core';
|
|
3
3
|
import { switchMap, map, startWith, takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { BehaviorSubject, merge, Subject } from 'rxjs';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import * as i2 from '@scion/components/splitter';
|
|
8
|
-
import { SciSplitterModule } from '@scion/components/splitter';
|
|
5
|
+
import { SciSplitterComponent } from '@scion/components/splitter';
|
|
6
|
+
import { NgIf, NgFor, AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* Allows accessing the sashbox component from sashes.
|
|
@@ -138,13 +136,14 @@ class SciSashDirective {
|
|
|
138
136
|
return flexGrow / flexGrowSum;
|
|
139
137
|
}
|
|
140
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashDirective, deps: [{ token: i0.TemplateRef }, { token: SciSashBoxAccessor }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
141
|
-
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 }); }
|
|
139
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciSashDirective, isStandalone: true, selector: "ng-template[sciSash]", inputs: { size: "size", minSize: "minSize" }, exportAs: ["sciSash"], usesOnChanges: true, ngImport: i0 }); }
|
|
142
140
|
}
|
|
143
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashDirective, decorators: [{
|
|
144
142
|
type: Directive,
|
|
145
143
|
args: [{
|
|
146
144
|
selector: 'ng-template[sciSash]',
|
|
147
145
|
exportAs: 'sciSash',
|
|
146
|
+
standalone: true,
|
|
148
147
|
}]
|
|
149
148
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: SciSashBoxAccessor }]; }, propDecorators: { size: [{
|
|
150
149
|
type: Input
|
|
@@ -172,14 +171,17 @@ class SciSashInitializerDirective {
|
|
|
172
171
|
this.sash.element = this._host.nativeElement;
|
|
173
172
|
}
|
|
174
173
|
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 }); }
|
|
175
|
-
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 }); }
|
|
174
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciSashInitializerDirective, isStandalone: true, selector: "div[sciSashInitializer].sash", inputs: { sash: ["sciSashInitializer", "sash"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
176
175
|
}
|
|
177
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashInitializerDirective, decorators: [{
|
|
178
177
|
type: Directive,
|
|
179
|
-
args: [{
|
|
178
|
+
args: [{
|
|
179
|
+
selector: 'div[sciSashInitializer].sash',
|
|
180
|
+
standalone: true,
|
|
181
|
+
}]
|
|
180
182
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sash: [{
|
|
181
183
|
type: Input,
|
|
182
|
-
args: ['sciSashInitializer']
|
|
184
|
+
args: [{ alias: 'sciSashInitializer', required: true }]
|
|
183
185
|
}] } });
|
|
184
186
|
|
|
185
187
|
/*
|
|
@@ -200,11 +202,15 @@ class SciElementRefDirective {
|
|
|
200
202
|
this.nativeElement = host.nativeElement;
|
|
201
203
|
}
|
|
202
204
|
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 }); }
|
|
203
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciElementRefDirective, selector: "[sciElementRef]", exportAs: ["sciElementRef"], ngImport: i0 }); }
|
|
205
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.1", type: SciElementRefDirective, isStandalone: true, selector: "[sciElementRef]", exportAs: ["sciElementRef"], ngImport: i0 }); }
|
|
204
206
|
}
|
|
205
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciElementRefDirective, decorators: [{
|
|
206
208
|
type: Directive,
|
|
207
|
-
args: [{
|
|
209
|
+
args: [{
|
|
210
|
+
selector: '[sciElementRef]',
|
|
211
|
+
exportAs: 'sciElementRef',
|
|
212
|
+
standalone: true,
|
|
213
|
+
}]
|
|
208
214
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
209
215
|
|
|
210
216
|
/*
|
|
@@ -417,18 +423,24 @@ class SciSashboxComponent {
|
|
|
417
423
|
return parseInt(value, 10);
|
|
418
424
|
}
|
|
419
425
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
420
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: SciSashboxComponent, selector: "sci-sashbox", inputs: { direction: "direction" }, outputs: { sashStart: "sashStart", sashEnd: "sashEnd" }, host: { properties: { "class.sashing": "this.sashing", "class.column": "this.isColumnDirection", "class.row": "this.isRowDirection" } }, providers: [{
|
|
426
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: SciSashboxComponent, isStandalone: true, selector: "sci-sashbox", inputs: { direction: "direction" }, outputs: { sashStart: "sashStart", sashEnd: "sashEnd" }, host: { properties: { "class.sashing": "this.sashing", "class.column": "this.isColumnDirection", "class.row": "this.isRowDirection" } }, providers: [{
|
|
421
427
|
provide: SciSashBoxAccessor,
|
|
422
428
|
useFactory: provideSashBoxAccessor,
|
|
423
|
-
|
|
424
|
-
}], queries: [{ propertyName: "setSashes", predicate: SciSashDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let sash of sashes$ | async; index as i; first as first; last as last;\">\n <div class=\"sash\"\n [class.first]=\"first\"\n [class.last]=\"last\"\n [sciSashInitializer]=\"sash\"\n [style.flex-grow]=\"sash.flexGrowNormalized$ | async\"\n [style.flex-shrink]=\"sash.flexShrink\"\n [style.flex-basis]=\"sash.flexBasis\">\n <ng-container *ngTemplateOutlet=\"sash.sashTemplate\"></ng-container>\n </div>\n\n <sci-splitter *ngIf=\"!last\"\n sciElementRef #sciElementRef=\"sciElementRef\"\n [orientation]=\"isRowDirection ? 'vertical' : 'horizontal'\"\n (start)=\"onSashStart()\"\n (move)=\"onSash(sciElementRef.nativeElement, i, $event)\"\n (end)=\"onSashEnd()\"\n (reset)=\"onSashReset(i)\">\n </sci-splitter>\n</ng-container>\n", styles: [":host{--sci-sashbox-gap: 10px;--sci-sashbox-splitter-bgcolor: #d2d2d2;--sci-sashbox-splitter-bgcolor_hover: var(--sci-sashbox-splitter-bgcolor);--sci-sashbox-splitter-size: 1px;--sci-sashbox-splitter-size_hover: 8px;--sci-sashbox-splitter-touch-target-size: 15px;--sci-sashbox-splitter-cross-axis-size: 100%;--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity_active: 1;--sci-sashbox-splitter-opacity_hover: .3;display:flex;align-items:stretch;box-sizing:border-box;overflow:hidden;z-index:0}:host *{box-sizing:border-box}:host.column{flex-direction:column}:host.row{flex-direction:row}:host>div.sash{overflow:hidden;display:grid;grid-auto-rows:100%;grid-auto-columns:100%}:host.row>div.sash{margin:0 var(--sci-sashbox-gap)}:host.row>div.sash.first{margin-left:0}:host.row>div.sash.last{margin-right:0}:host.column>div.sash{margin:var(--sci-sashbox-gap) 0}:host.column>div.sash.first{margin-top:0}:host.column>div.sash.last{margin-bottom:0}:host.sashing>div.sash{pointer-events:none}:host>sci-splitter{--sci-splitter-bgcolor: var(--sci-sashbox-splitter-bgcolor);--sci-splitter-bgcolor_hover: var(--sci-sashbox-splitter-bgcolor_hover);--sci-splitter-size: var(--sci-sashbox-splitter-size);--sci-splitter-size_hover: var(--sci-sashbox-splitter-size_hover);--sci-splitter-touch-target-size: var(--sci-sashbox-splitter-touch-target-size);--sci-splitter-cross-axis-size: var(--sci-sashbox-splitter-cross-axis-size);--sci-splitter-border-radius: var(--sci-sashbox-splitter-border-radius);--sci-splitter-opacity_active: var(--sci-sashbox-splitter-opacity_active);--sci-splitter-opacity_hover: var(--sci-sashbox-splitter-opacity_hover);flex:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SciSplitterComponent, selector: "sci-splitter", inputs: ["orientation"], outputs: ["start", "move", "end", "reset"] }, { kind: "directive", type: SciSashInitializerDirective, selector: "div[sciSashInitializer].sash", inputs: ["sciSashInitializer"] }, { kind: "directive", type: SciElementRefDirective, selector: "[sciElementRef]", exportAs: ["sciElementRef"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
429
|
+
}], queries: [{ propertyName: "setSashes", predicate: SciSashDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let sash of sashes$ | async; index as i; first as first; last as last;\">\n <div class=\"sash\"\n [class.first]=\"first\"\n [class.last]=\"last\"\n [sciSashInitializer]=\"sash\"\n [style.flex-grow]=\"sash.flexGrowNormalized$ | async\"\n [style.flex-shrink]=\"sash.flexShrink\"\n [style.flex-basis]=\"sash.flexBasis\">\n <ng-container *ngTemplateOutlet=\"sash.sashTemplate\"></ng-container>\n </div>\n\n <sci-splitter *ngIf=\"!last\"\n sciElementRef #sciElementRef=\"sciElementRef\"\n [orientation]=\"isRowDirection ? 'vertical' : 'horizontal'\"\n (start)=\"onSashStart()\"\n (move)=\"onSash(sciElementRef.nativeElement, i, $event)\"\n (end)=\"onSashEnd()\"\n (reset)=\"onSashReset(i)\">\n </sci-splitter>\n</ng-container>\n", styles: [":host{--sci-sashbox-gap: 10px;--sci-sashbox-splitter-bgcolor: #d2d2d2;--sci-sashbox-splitter-bgcolor_hover: var(--sci-sashbox-splitter-bgcolor);--sci-sashbox-splitter-size: 1px;--sci-sashbox-splitter-size_hover: 8px;--sci-sashbox-splitter-touch-target-size: 15px;--sci-sashbox-splitter-cross-axis-size: 100%;--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity_active: 1;--sci-sashbox-splitter-opacity_hover: .3;display:flex;align-items:stretch;box-sizing:border-box;overflow:hidden;z-index:0}:host *{box-sizing:border-box}:host.column{flex-direction:column}:host.row{flex-direction:row}:host>div.sash{overflow:hidden;display:grid;grid-auto-rows:100%;grid-auto-columns:100%}:host.row>div.sash{margin:0 var(--sci-sashbox-gap)}:host.row>div.sash.first{margin-left:0}:host.row>div.sash.last{margin-right:0}:host.column>div.sash{margin:var(--sci-sashbox-gap) 0}:host.column>div.sash.first{margin-top:0}:host.column>div.sash.last{margin-bottom:0}:host.sashing>div.sash{pointer-events:none}:host>sci-splitter{--sci-splitter-bgcolor: var(--sci-sashbox-splitter-bgcolor);--sci-splitter-bgcolor_hover: var(--sci-sashbox-splitter-bgcolor_hover);--sci-splitter-size: var(--sci-sashbox-splitter-size);--sci-splitter-size_hover: var(--sci-sashbox-splitter-size_hover);--sci-splitter-touch-target-size: var(--sci-sashbox-splitter-touch-target-size);--sci-splitter-cross-axis-size: var(--sci-sashbox-splitter-cross-axis-size);--sci-splitter-border-radius: var(--sci-sashbox-splitter-border-radius);--sci-splitter-opacity_active: var(--sci-sashbox-splitter-opacity_active);--sci-splitter-opacity_hover: var(--sci-sashbox-splitter-opacity_hover);flex:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SciSashInitializerDirective, selector: "div[sciSashInitializer].sash", inputs: ["sciSashInitializer"] }, { kind: "component", type: SciSplitterComponent, selector: "sci-splitter", inputs: ["orientation"], outputs: ["start", "move", "end", "reset"] }, { kind: "directive", type: SciElementRefDirective, selector: "[sciElementRef]", exportAs: ["sciElementRef"] }] }); }
|
|
425
430
|
}
|
|
426
431
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxComponent, decorators: [{
|
|
427
432
|
type: Component,
|
|
428
|
-
args: [{ selector: 'sci-sashbox',
|
|
433
|
+
args: [{ selector: 'sci-sashbox', standalone: true, imports: [
|
|
434
|
+
NgIf,
|
|
435
|
+
NgFor,
|
|
436
|
+
AsyncPipe,
|
|
437
|
+
NgTemplateOutlet,
|
|
438
|
+
SciSashInitializerDirective,
|
|
439
|
+
SciSplitterComponent,
|
|
440
|
+
SciElementRefDirective,
|
|
441
|
+
], providers: [{
|
|
429
442
|
provide: SciSashBoxAccessor,
|
|
430
443
|
useFactory: provideSashBoxAccessor,
|
|
431
|
-
deps: [forwardRef(() => SciSashboxComponent)],
|
|
432
444
|
}], template: "<ng-container *ngFor=\"let sash of sashes$ | async; index as i; first as first; last as last;\">\n <div class=\"sash\"\n [class.first]=\"first\"\n [class.last]=\"last\"\n [sciSashInitializer]=\"sash\"\n [style.flex-grow]=\"sash.flexGrowNormalized$ | async\"\n [style.flex-shrink]=\"sash.flexShrink\"\n [style.flex-basis]=\"sash.flexBasis\">\n <ng-container *ngTemplateOutlet=\"sash.sashTemplate\"></ng-container>\n </div>\n\n <sci-splitter *ngIf=\"!last\"\n sciElementRef #sciElementRef=\"sciElementRef\"\n [orientation]=\"isRowDirection ? 'vertical' : 'horizontal'\"\n (start)=\"onSashStart()\"\n (move)=\"onSash(sciElementRef.nativeElement, i, $event)\"\n (end)=\"onSashEnd()\"\n (reset)=\"onSashReset(i)\">\n </sci-splitter>\n</ng-container>\n", styles: [":host{--sci-sashbox-gap: 10px;--sci-sashbox-splitter-bgcolor: #d2d2d2;--sci-sashbox-splitter-bgcolor_hover: var(--sci-sashbox-splitter-bgcolor);--sci-sashbox-splitter-size: 1px;--sci-sashbox-splitter-size_hover: 8px;--sci-sashbox-splitter-touch-target-size: 15px;--sci-sashbox-splitter-cross-axis-size: 100%;--sci-sashbox-splitter-border-radius: 0;--sci-sashbox-splitter-opacity_active: 1;--sci-sashbox-splitter-opacity_hover: .3;display:flex;align-items:stretch;box-sizing:border-box;overflow:hidden;z-index:0}:host *{box-sizing:border-box}:host.column{flex-direction:column}:host.row{flex-direction:row}:host>div.sash{overflow:hidden;display:grid;grid-auto-rows:100%;grid-auto-columns:100%}:host.row>div.sash{margin:0 var(--sci-sashbox-gap)}:host.row>div.sash.first{margin-left:0}:host.row>div.sash.last{margin-right:0}:host.column>div.sash{margin:var(--sci-sashbox-gap) 0}:host.column>div.sash.first{margin-top:0}:host.column>div.sash.last{margin-bottom:0}:host.sashing>div.sash{pointer-events:none}:host>sci-splitter{--sci-splitter-bgcolor: var(--sci-sashbox-splitter-bgcolor);--sci-splitter-bgcolor_hover: var(--sci-sashbox-splitter-bgcolor_hover);--sci-splitter-size: var(--sci-sashbox-splitter-size);--sci-splitter-size_hover: var(--sci-sashbox-splitter-size_hover);--sci-splitter-touch-target-size: var(--sci-sashbox-splitter-touch-target-size);--sci-splitter-cross-axis-size: var(--sci-sashbox-splitter-cross-axis-size);--sci-splitter-border-radius: var(--sci-sashbox-splitter-border-radius);--sci-splitter-opacity_active: var(--sci-sashbox-splitter-opacity_active);--sci-splitter-opacity_hover: var(--sci-sashbox-splitter-opacity_hover);flex:none;z-index:1}\n"] }]
|
|
433
445
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { sashing: [{
|
|
434
446
|
type: HostBinding,
|
|
@@ -461,7 +473,8 @@ function computePixelToFlexGrowFactor(sashes) {
|
|
|
461
473
|
const pixelSum = flexibleSashes.reduce((sum, sash) => sum + sash.computedSize, 0);
|
|
462
474
|
return proportionSum / pixelSum;
|
|
463
475
|
}
|
|
464
|
-
function provideSashBoxAccessor(
|
|
476
|
+
function provideSashBoxAccessor() {
|
|
477
|
+
const component = inject(SciSashboxComponent);
|
|
465
478
|
return new class {
|
|
466
479
|
get direction() {
|
|
467
480
|
return component.direction;
|
|
@@ -507,27 +520,17 @@ function provideSashBoxAccessor(component) {
|
|
|
507
520
|
*/
|
|
508
521
|
class SciSashboxModule {
|
|
509
522
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
510
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxModule,
|
|
511
|
-
SciSashDirective,
|
|
512
|
-
SciSashInitializerDirective,
|
|
513
|
-
SciElementRefDirective], imports: [CommonModule,
|
|
514
|
-
SciSplitterModule], exports: [SciSashboxComponent,
|
|
523
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxModule, imports: [SciSashboxComponent,
|
|
524
|
+
SciSashDirective], exports: [SciSashboxComponent,
|
|
515
525
|
SciSashDirective] }); }
|
|
516
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxModule, imports: [
|
|
517
|
-
SciSplitterModule] }); }
|
|
526
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxModule, imports: [SciSashboxComponent] }); }
|
|
518
527
|
}
|
|
519
528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSashboxModule, decorators: [{
|
|
520
529
|
type: NgModule,
|
|
521
530
|
args: [{
|
|
522
|
-
|
|
531
|
+
imports: [
|
|
523
532
|
SciSashboxComponent,
|
|
524
533
|
SciSashDirective,
|
|
525
|
-
SciSashInitializerDirective,
|
|
526
|
-
SciElementRefDirective,
|
|
527
|
-
],
|
|
528
|
-
imports: [
|
|
529
|
-
CommonModule,
|
|
530
|
-
SciSplitterModule,
|
|
531
534
|
],
|
|
532
535
|
exports: [
|
|
533
536
|
SciSashboxComponent,
|
|
@@ -555,5 +558,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
555
558
|
* Generated bundle index. Do not edit.
|
|
556
559
|
*/
|
|
557
560
|
|
|
558
|
-
export { SciSashDirective, SciSashboxComponent, SciSashboxModule
|
|
561
|
+
export { SciSashDirective, SciSashboxComponent, SciSashboxModule };
|
|
559
562
|
//# sourceMappingURL=scion-components-sashbox.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scion-components-sashbox.mjs","sources":["../../../../projects/scion/components/sashbox/src/sashbox-accessor.ts","../../../../projects/scion/components/sashbox/src/sash.directive.ts","../../../../projects/scion/components/sashbox/src/sash-initializer.directive.ts","../../../../projects/scion/components/sashbox/src/element-ref.directive.ts","../../../../projects/scion/components/sashbox/src/sashbox.component.ts","../../../../projects/scion/components/sashbox/src/sashbox.component.html","../../../../projects/scion/components/sashbox/src/sashbox.module.ts","../../../../projects/scion/components/sashbox/src/public_api.ts","../../../../projects/scion/components/sashbox/src/scion-components-sashbox.ts"],"sourcesContent":["import {SciSashDirective} from './sash.directive';\nimport {Observable} from 'rxjs';\n\n/**\n * Allows accessing the sashbox component from sashes.\n */\nexport abstract class SciSashBoxAccessor {\n\n public abstract get sashes(): SciSashDirective[];\n\n public abstract get sashes$(): Observable<SciSashDirective[]>;\n\n public abstract get direction(): 'column' | 'row';\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, Input, OnChanges, OnInit, SimpleChanges, TemplateRef} from '@angular/core';\nimport {SciSashBoxAccessor} from './sashbox-accessor';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, switchMap} from 'rxjs/operators';\n\n/**\n * Use this directive to model a sash for {@link SciSashboxComponent}.\n * The host element of this modelling directive must be a <ng-template> which is used as sash template.\n *\n *\n * ### Usage:\n *\n * <sci-sashbox direction=\"row\">\n * <!-- fixed size sash -->\n * <ng-template sciSash size=\"200px\">\n * ...\n * </ng-template>\n *\n * <!-- sash which takes the remaining space -->\n * <ng-template sciSash>\n * ...\n * </ng-template>\n * </sci-sashbox>\n */\n@Directive({\n selector: 'ng-template[sciSash]',\n exportAs: 'sciSash',\n})\nexport class SciSashDirective implements OnInit, OnChanges {\n\n private _size: string | number = '1';\n private _flexGrow$ = new BehaviorSubject<number>(0);\n\n /**\n * Specifies the sash size, either as fixed size with an explicit unit,\n * or as a unitless proportion to distibute remaining space. A proportional\n * sash has the ability to grow or shrink if necessary, and must be >= 1.\n *\n * If not set, remaining space is distributed equally.\n */\n @Input()\n public set size(size: string | number | null | undefined) {\n this._size = size ?? '1';\n }\n\n public get size(): string | number {\n return this._size;\n }\n\n /**\n * Specifies the minimal sash size in pixel or percent.\n * The min-size prevents the user from shrinking the sash below this minimal size.\n *\n * If the unit is omitted, the value is interpreted as a pixel value.\n */\n @Input()\n public minSize?: string | number;\n\n /**\n * @internal\n */\n public element!: HTMLElement;\n\n /**\n * @internal\n */\n public set flexGrow(flexGrow: number) {\n this._flexGrow$.next(flexGrow);\n }\n\n /**\n * @internal\n */\n public get flexGrow(): number {\n return this._flexGrow$.value;\n }\n\n /**\n * @internal\n */\n public flexShrink!: number;\n\n /**\n * @internal\n */\n public flexBasis!: string;\n\n /**\n * Normalized flex-grow proportion of this sash, which is a value >= 1.\n *\n * @internal\n */\n public flexGrowNormalized$: Observable<number>;\n\n constructor(public readonly sashTemplate: TemplateRef<void>, private _sashBoxAccessor: SciSashBoxAccessor) {\n this.flexGrowNormalized$ = this._sashBoxAccessor.sashes$\n .pipe(\n switchMap(sashes => merge(...sashes.map(sash => sash._flexGrow$))),\n map(() => this.normalizeFlexGrow(this.flexGrow)),\n );\n }\n\n public ngOnInit(): void {\n this.setFlexItemProperties();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.setFlexItemProperties();\n }\n\n /**\n * Returns if this sash has a fixed size, meaning that it has not the ability to grow or shrink if necessary.\n *\n * @internal\n */\n public get isFixedSize(): boolean {\n return Number.isNaN(+this.size);\n }\n\n /**\n * Returns the effective sash size as rendered in the DOM.\n *\n * @internal\n */\n public get computedSize(): number {\n // Note: Use `boundingClientRect` to get the fractional size.\n // see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth\n return this._sashBoxAccessor.direction === 'row' ? this.element.getBoundingClientRect().width : this.element.getBoundingClientRect().height;\n }\n\n /**\n * Computes and sets the flex item properties based on the modelled size.\n */\n private setFlexItemProperties(): void {\n if (this.isFixedSize) {\n // fixed-sized sash\n this.flexGrow = 0;\n this.flexShrink = 0;\n this.flexBasis = `${this.size}`;\n }\n else {\n // remaining space is distributed according to given proportion\n const proportion = +this.size;\n if (proportion < 1) {\n throw Error(`[IllegalSashSizeError] The proportion for flexible sized sashes must be >=1 [size=${this.size}]`);\n }\n\n this.flexGrow = proportion;\n this.flexShrink = 1;\n this.flexBasis = '0';\n }\n }\n\n /**\n * Computes the normalized flex-grow proportion of the given sash, which is a value >= 1.\n *\n * If the sum of all flex-grow proportions would be less than 1, then, the sashes would not fill the entire sash-box space.\n * Without normalization in place, e.g., this could happen when removing a sash.\n */\n private normalizeFlexGrow(flexGrow: number): number {\n if (flexGrow === 0) {\n return 0;\n }\n\n const sashes = this._sashBoxAccessor.sashes;\n const flexGrowSum = sashes.reduce((sum, sash) => sum + sash.flexGrow, 0);\n if (flexGrowSum === 0) {\n return 0;\n }\n return flexGrow / flexGrowSum;\n }\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {SciSashDirective} from './sash.directive';\n\n/**\n * Initializes {SashDirective} with the target {HTMLDivElement}.\n */\n@Directive({selector: 'div[sciSashInitializer].sash'})\nexport class SciSashInitializerDirective implements OnChanges {\n\n @Input('sciSashInitializer') // eslint-disable-line @angular-eslint/no-input-rename\n public sash!: SciSashDirective;\n\n constructor(private _host: ElementRef<HTMLDivElement>) {\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.sash.element = this._host.nativeElement;\n }\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, ElementRef} from '@angular/core';\n\n/**\n * Provides access to the native {@link HTMLElement} of the host.\n */\n@Directive({selector: '[sciElementRef]', exportAs: 'sciElementRef'})\nexport class SciElementRefDirective {\n\n public readonly nativeElement: HTMLElement;\n\n constructor(public host: ElementRef<HTMLElement>) {\n this.nativeElement = host.nativeElement;\n }\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostBinding, Input, NgZone, OnDestroy, Output, QueryList} from '@angular/core';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {SplitterMoveEvent} from '@scion/components/splitter';\nimport {SciSashDirective} from './sash.directive';\nimport {SciSashBoxAccessor} from './sashbox-accessor';\n\n/**\n * The <sci-sashbox> is like a CSS flexbox container that lays out its content children (sashes) in a row (which is by default)\n * or column arrangement (as specified by the direction property). A splitter is added between each child to allow the user to\n * shrink or stretch the individual sashes.\n *\n * Sashes are modelled as content children inside a <ng-template> decorated with the 'sciSash' directive.\n * A sash can have a fixed size with an explicit unit, or a unitless proportion to distibute remaining space.\n * A proportional sash has the ability to grow or shrink if necessary.\n *\n *\n * ### Usage:\n *\n * ```html\n * <sci-sashbox direction=\"row\">\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"2\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n * </sci-sashbox>\n * ```\n *\n * ### Theme override:\n * The default style of the sashbox is made up of shades of gray.\n * You can control the appearance by overriding the following CSS variables:\n *\n * - --sci-sashbox-gap: Sets the gaps (gutters) between sashes.\n * - --sci-sashbox-splitter-bgcolor: Sets the background color of the splitter.\n * - --sci-sashbox-splitter-bgcolor_hover: Sets the background color of the splitter when hovering it.\n * - --sci-sashbox-splitter-size: Sets the size of the splitter along the main axis.\n * - --sci-sashbox-splitter-size_hover: Sets the size of the splitter along the main axis when hovering it.\n * - --sci-sashbox-splitter-touch-target-size: Sets the touch target size to move the splitter (accessibility).\n * - --sci-sashbox-splitter-cross-axis-size: Sets the splitter size along the cross axis.\n * - --sci-sashbox-splitter-border-radius: Sets the border radius of the splitter.\n * - --sci-sashbox-splitter-opacity_active: Sets the opacity of the splitter while the user moves the splitter.\n * - --sci-sashbox-splitter-opacity_hover: Sets the opacity of the splitter when hovering it.\n *\n * Example:\n *\n * ```scss\n * sci-sashbox {\n * --sci-sashbox-splitter-bgcolor: black;\n * --sci-sashbox-splitter-bgcolor_hover: black;\n * }\n * ```\n */\n@Component({\n selector: 'sci-sashbox',\n templateUrl: './sashbox.component.html',\n styleUrls: ['./sashbox.component.scss'],\n providers: [{\n provide: SciSashBoxAccessor,\n useFactory: provideSashBoxAccessor,\n deps: [forwardRef(() => SciSashboxComponent)],\n }],\n})\nexport class SciSashboxComponent implements OnDestroy {\n\n private _destroy$ = new Subject<void>();\n\n public sashes$ = new BehaviorSubject<SciSashDirective[]>([]);\n\n @HostBinding('class.sashing')\n public sashing = false;\n\n /**\n * Specifies if to lay out sashes in a row (which is by default) or column arrangement.\n */\n @Input()\n public direction: 'column' | 'row' = 'row';\n\n /**\n * Emits when start sashing.\n */\n @Output()\n public sashStart = new EventEmitter<void>();\n\n /**\n * Emits the absolute sash sizes (px) when finished sashing.\n */\n @Output()\n public sashEnd = new EventEmitter<number[]>();\n\n /** @internal */\n @ContentChildren(SciSashDirective)\n public set setSashes(queryList: QueryList<SciSashDirective>) {\n queryList.changes\n .pipe(\n startWith(queryList),\n takeUntil(this._destroy$),\n )\n .subscribe((sashes: QueryList<SciSashDirective>) => {\n this.sashes$.next(sashes.toArray());\n });\n }\n\n constructor(private _host: ElementRef<HTMLElement>, private _zone: NgZone) {\n }\n\n public onSashStart(): void {\n this.sashing = true;\n this.sashStart.emit();\n\n // set the effective sash size as the flex-basis for non-fixed sashes (as sashing operates on pixel deltas)\n this.sashes.forEach(sash => {\n if (!sash.isFixedSize) {\n sash.flexGrow = 0;\n sash.flexShrink = 0;\n sash.flexBasis = `${sash.computedSize}px`;\n }\n });\n }\n\n public onSashEnd(): void {\n this.sashing = false;\n\n // unset the flex-basis for non-fixed sashes and set the flex-grow accordingly\n const pixelToFlexGrowFactor = computePixelToFlexGrowFactor(this.sashes);\n const absoluteSashSizes = this.sashes.map(sash => sash.computedSize);\n\n this.sashes.forEach((sash, i) => {\n if (!sash.isFixedSize) {\n sash.flexGrow = pixelToFlexGrowFactor * absoluteSashSizes[i];\n sash.flexShrink = 1;\n sash.flexBasis = '0';\n }\n });\n this.sashEnd.emit(absoluteSashSizes);\n }\n\n public onSash(splitter: HTMLElement, sashIndex: number, moveEvent: SplitterMoveEvent): void {\n const distance = moveEvent.distance;\n if (distance === 0) {\n return;\n }\n\n NgZone.assertNotInAngularZone();\n\n // compute the splitter position\n const splitterRect = splitter.getBoundingClientRect();\n const splitterStart = (this.isRowDirection ? splitterRect.left : splitterRect.top);\n const splitterEnd = (this.isRowDirection ? splitterRect.left + splitterRect.width : splitterRect.top + splitterRect.height);\n\n // ignore the event if outside of the splitter's action scope\n const eventPos = moveEvent.position.clientPos;\n // i.e. the sash should not grow if moved the mouse pointer beyond the left bounds of the sash, and if now moving the mouse pointer back toward the current sash.\n if (distance > 0 && eventPos < splitterStart) {\n return;\n }\n\n // i.e. the sash should not shrink if moved the mouse pointer beyond the right bounds of the sash, and if now moving the mouse pointer back toward the current sash.\n if (distance < 0 && eventPos > splitterEnd) {\n return;\n }\n\n // compute the new sash sizes\n const sash1 = this.sashes[sashIndex];\n const sash2 = this.sashes[sashIndex + 1];\n\n const sashSize1 = sash1.computedSize;\n const sashSize2 = sash2.computedSize;\n const maxSashSize = sashSize1 + sashSize2;\n const computedNewSashSize1 = Math.round(sashSize1 + distance);\n const computedNewSashSize2 = Math.round(sashSize2 - distance);\n\n if (sash1.minSize !== undefined && distance < 0 && computedNewSashSize1 < this.toPixel(sash1.minSize)) {\n return;\n }\n if (sash2.minSize !== undefined && distance > 0 && computedNewSashSize2 < this.toPixel(sash2.minSize)) {\n return;\n }\n\n const validNewSashSize1 = between(computedNewSashSize1, {min: 0, max: maxSashSize});\n const validNewSashSize2 = between(computedNewSashSize2, {min: 0, max: maxSashSize});\n\n // continue only if both sashes adjacent to the splitter change their size (as the event would change other sashes otherwise)\n if (validNewSashSize1 !== computedNewSashSize1) {\n return;\n }\n if (validNewSashSize2 !== computedNewSashSize2) {\n return;\n }\n\n // set the new computed sash sizes\n this._zone.run(() => {\n sash1.flexBasis = `${computedNewSashSize1}px`;\n sash2.flexBasis = `${computedNewSashSize2}px`;\n });\n }\n\n public onSashReset(sashIndex: number): void {\n const sash1 = this.sashes[sashIndex];\n const sash2 = this.sashes[sashIndex + 1];\n const equalSashSize = (sash1.computedSize + sash2.computedSize) / 2;\n const pixelToFlexGrowFactor = computePixelToFlexGrowFactor(this.sashes);\n const absoluteSashSizesAfterReset = this.sashes.map((sash, index) => {\n if (index === sashIndex || index === sashIndex + 1) {\n return equalSashSize;\n }\n return sash.computedSize;\n });\n\n [sash1, sash2].forEach(sash => {\n if (sash.isFixedSize) {\n sash.flexBasis = `${equalSashSize}px`;\n }\n else {\n sash.flexGrow = pixelToFlexGrowFactor * equalSashSize;\n }\n });\n\n this.sashStart.emit();\n this.sashEnd.emit(absoluteSashSizesAfterReset);\n }\n\n @HostBinding('class.column')\n public get isColumnDirection(): boolean {\n return this.direction === 'column';\n }\n\n @HostBinding('class.row')\n public get isRowDirection(): boolean {\n return this.direction === 'row';\n }\n\n private get sashes(): SciSashDirective[] {\n return this.sashes$.value;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n private toPixel(value: string | number): number {\n if (typeof value === 'number') {\n return value;\n }\n if (value.endsWith('%')) {\n const hostBounds = this._host.nativeElement.getBoundingClientRect();\n const hostSize = (this.isRowDirection ? hostBounds.width : hostBounds.height);\n return parseInt(value, 10) * hostSize / 100;\n }\n return parseInt(value, 10);\n }\n}\n\nfunction between(value: number, minmax: {min: number; max: number}): number {\n return Math.min(minmax.max, Math.max(minmax.min, value));\n}\n\n/**\n * Returns the factor to compute the flex-grow proportion from the pixel size of a sash.\n */\nfunction computePixelToFlexGrowFactor(sashes: SciSashDirective[]): number {\n const flexibleSashes = sashes.filter(sash => !sash.isFixedSize);\n\n const proportionSum = flexibleSashes.reduce((sum, sash) => sum + Number(sash.size), 0);\n const pixelSum = flexibleSashes.reduce((sum, sash) => sum + sash.computedSize, 0);\n\n return proportionSum / pixelSum;\n}\n\nexport function provideSashBoxAccessor(component: SciSashboxComponent): SciSashBoxAccessor {\n return new class implements SciSashBoxAccessor {\n\n public get direction(): 'column' | 'row' {\n return component.direction;\n }\n\n public get sashes$(): Observable<SciSashDirective[]> {\n return component.sashes$;\n }\n\n public get sashes(): SciSashDirective[] {\n return component.sashes$.value;\n }\n };\n}\n","<ng-container *ngFor=\"let sash of sashes$ | async; index as i; first as first; last as last;\">\n <div class=\"sash\"\n [class.first]=\"first\"\n [class.last]=\"last\"\n [sciSashInitializer]=\"sash\"\n [style.flex-grow]=\"sash.flexGrowNormalized$ | async\"\n [style.flex-shrink]=\"sash.flexShrink\"\n [style.flex-basis]=\"sash.flexBasis\">\n <ng-container *ngTemplateOutlet=\"sash.sashTemplate\"></ng-container>\n </div>\n\n <sci-splitter *ngIf=\"!last\"\n sciElementRef #sciElementRef=\"sciElementRef\"\n [orientation]=\"isRowDirection ? 'vertical' : 'horizontal'\"\n (start)=\"onSashStart()\"\n (move)=\"onSash(sciElementRef.nativeElement, i, $event)\"\n (end)=\"onSashEnd()\"\n (reset)=\"onSashReset(i)\">\n </sci-splitter>\n</ng-container>\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SciSashboxComponent} from './sashbox.component';\nimport {SciSashDirective} from './sash.directive';\nimport {SciSashInitializerDirective} from './sash-initializer.directive';\nimport {SciSplitterModule} from '@scion/components/splitter';\nimport {SciElementRefDirective} from './element-ref.directive';\n\n/**\n * Provides a sashbox component that lays out its children in a row or column arrangement and places a splitter between each child.\n *\n * ### Usage:\n *\n * ```html\n * <sci-sashbox direction=\"row\">\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"2\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n * </sci-sashbox>\n * ```\n */\n@NgModule({\n declarations: [\n SciSashboxComponent,\n SciSashDirective,\n SciSashInitializerDirective,\n SciElementRefDirective,\n ],\n imports: [\n CommonModule,\n SciSplitterModule,\n ],\n exports: [\n SciSashboxComponent,\n SciSashDirective,\n ],\n})\nexport class SciSashboxModule {\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\n/*\n * Secondary entrypoint: '@scion/components/sashbox'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport * from './sashbox.component';\nexport * from './sash.directive';\nexport * from './sashbox.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SciSashBoxAccessor","i3.SciSashInitializerDirective","i4.SciElementRefDirective"],"mappings":";;;;;;;;;AAGA;;AAEG;MACmB,kBAAkB,CAAA;AAOvC;;ACbD;;;;;;;;AAQG;AAOH;;;;;;;;;;;;;;;;;;AAkBG;AACH,MAIa,gBAAgB,CAAA;AAK3B;;;;;;AAMG;IACH,IACW,IAAI,CAAC,IAAwC,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,GAAG,CAAC;KAC1B;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAgBD;;AAEG;IACH,IAAW,QAAQ,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;KAC9B;IAmBD,WAA4B,CAAA,YAA+B,EAAU,gBAAoC,EAAA;QAA7E,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAmB;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;QAhEjG,IAAK,CAAA,KAAA,GAAoB,GAAG,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAgElD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;AACrD,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAClE,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CACjD,CAAC;KACL;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED;;;;AAIG;AACH,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;AAED;;;;AAIG;AACH,IAAA,IAAW,YAAY,GAAA;;;AAGrB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,KAAK,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;KAC7I;AAED;;AAEG;IACK,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEpB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACjC,SAAA;AACI,aAAA;;AAEH,YAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,UAAU,GAAG,CAAC,EAAE;gBAClB,MAAM,KAAK,CAAC,CAAqF,kFAAA,EAAA,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;AAChH,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACtB,SAAA;KACF;AAED;;;;;AAKG;AACK,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACxC,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,WAAW,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;QACD,OAAO,QAAQ,GAAG,WAAW,CAAC;KAC/B;8GA9IU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;gIAcY,IAAI,EAAA,CAAA;sBADd,KAAK;gBAgBC,OAAO,EAAA,CAAA;sBADb,KAAK;;;ACjER;;;;;;;;AAQG;AAKH;;AAEG;AACH,MACa,2BAA2B,CAAA;AAKtC,IAAA,WAAA,CAAoB,KAAiC,EAAA;QAAjC,IAAK,CAAA,KAAA,GAAL,KAAK,CAA4B;KACpD;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;KAC9C;8GAVU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;mBAAC,EAAC,QAAQ,EAAE,8BAA8B,EAAC,CAAA;iGAI5C,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,oBAAoB,CAAA;;;ACnB7B;;;;;;;;AAQG;AAIH;;AAEG;AACH,MACa,sBAAsB,CAAA;AAIjC,IAAA,WAAA,CAAmB,IAA6B,EAAA;QAA7B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAyB;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;KACzC;8GANU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAC,CAAA;;;ACfnE;;;;;;;;AAQG;AASH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDG;AACH,MAUa,mBAAmB,CAAA;;IA4B9B,IACW,SAAS,CAAC,SAAsC,EAAA;AACzD,QAAA,SAAS,CAAC,OAAO;AACd,aAAA,IAAI,CACH,SAAS,CAAC,SAAS,CAAC,EACpB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,CAAC,MAAmC,KAAI;YACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;IAED,WAAoB,CAAA,KAA8B,EAAU,KAAa,EAAA;QAArD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAyB;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AAtCjE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAqB,EAAE,CAAC,CAAC;QAGtD,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEvB;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAqB,KAAK,CAAC;AAE3C;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;AAE5C;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAY,CAAC;KAgB7C;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;;AAGtB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,IAAI,CAAC;AAC3C,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;QAGrB,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,QAAQ,GAAG,qBAAqB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACtC;AAEM,IAAA,MAAM,CAAC,QAAqB,EAAE,SAAiB,EAAE,SAA4B,EAAA;AAClF,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,OAAO;AACR,SAAA;QAED,MAAM,CAAC,sBAAsB,EAAE,CAAC;;AAGhC,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;AACtD,QAAA,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnF,MAAM,WAAW,IAAI,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;;AAG5H,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;;AAE9C,QAAA,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,aAAa,EAAE;YAC5C,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE;YAC1C,OAAO;AACR,SAAA;;QAGD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAEzC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;AACrC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC;AACrC,QAAA,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;QAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;QAC9D,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;QAE9D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,IAAI,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACrG,OAAO;AACR,SAAA;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,IAAI,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACrG,OAAO;AACR,SAAA;AAED,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAC,CAAC,CAAC;AACpF,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAC,CAAC,CAAC;;QAGpF,IAAI,iBAAiB,KAAK,oBAAoB,EAAE;YAC9C,OAAO;AACR,SAAA;QACD,IAAI,iBAAiB,KAAK,oBAAoB,EAAE;YAC9C,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;AAClB,YAAA,KAAK,CAAC,SAAS,GAAG,CAAG,EAAA,oBAAoB,IAAI,CAAC;AAC9C,YAAA,KAAK,CAAC,SAAS,GAAG,CAAG,EAAA,oBAAoB,IAAI,CAAC;AAChD,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,WAAW,CAAC,SAAiB,EAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACzC,QAAA,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QACpE,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxE,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAClE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,GAAG,CAAC,EAAE;AAClD,gBAAA,OAAO,aAAa,CAAC;AACtB,aAAA;YACD,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,SAAC,CAAC,CAAC;QAEH,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;YAC5B,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAG,EAAA,aAAa,IAAI,CAAC;AACvC,aAAA;AACI,iBAAA;AACH,gBAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,GAAG,aAAa,CAAC;AACvD,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;KAChD;AAED,IAAA,IACW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;KACpC;AAED,IAAA,IACW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;KACjC;AAED,IAAA,IAAY,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACvB;AAEO,IAAA,OAAO,CAAC,KAAsB,EAAA;AACpC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACpE,YAAA,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9E,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC5B;8GA3LU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,4QANnB,CAAC;AACV,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,UAAU,EAAE,sBAAsB;gBAClC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,mBAAmB,CAAC,CAAC;aAC9C,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EA8Be,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3GnC,i3BAoBA,EAAA,MAAA,EAAA,CAAA,uoDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD2Da,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,aAGZ,CAAC;AACV,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,UAAU,EAAE,sBAAsB;4BAClC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAK,mBAAoB,CAAC,CAAC;yBAC9C,CAAC,EAAA,QAAA,EAAA,i3BAAA,EAAA,MAAA,EAAA,CAAA,uoDAAA,CAAA,EAAA,CAAA;sHASK,OAAO,EAAA,CAAA;sBADb,WAAW;uBAAC,eAAe,CAAA;gBAOrB,SAAS,EAAA,CAAA;sBADf,KAAK;gBAOC,SAAS,EAAA,CAAA;sBADf,MAAM;gBAOA,OAAO,EAAA,CAAA;sBADb,MAAM;gBAKI,SAAS,EAAA,CAAA;sBADnB,eAAe;uBAAC,gBAAgB,CAAA;gBAoItB,iBAAiB,EAAA,CAAA;sBAD3B,WAAW;uBAAC,cAAc,CAAA;gBAMhB,cAAc,EAAA,CAAA;sBADxB,WAAW;uBAAC,WAAW,CAAA;;AA0B1B,SAAS,OAAO,CAAC,KAAa,EAAE,MAAkC,EAAA;AAChE,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;AAEG;AACH,SAAS,4BAA4B,CAAC,MAA0B,EAAA;AAC9D,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEhE,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAElF,OAAO,aAAa,GAAG,QAAQ,CAAC;AAClC,CAAC;AAEK,SAAU,sBAAsB,CAAC,SAA8B,EAAA;AACnE,IAAA,OAAO,IAAI,MAAA;AAET,QAAA,IAAW,SAAS,GAAA;YAClB,OAAO,SAAS,CAAC,SAAS,CAAC;SAC5B;AAED,QAAA,IAAW,OAAO,GAAA;YAChB,OAAO,SAAS,CAAC,OAAO,CAAC;SAC1B;AAED,QAAA,IAAW,MAAM,GAAA;AACf,YAAA,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;SAChC;KACF,CAAC;AACJ;;AE5SA;;;;;;;;AAQG;AAUH;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,MAgBa,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAdzB,mBAAmB;YACnB,gBAAgB;YAChB,2BAA2B;AAC3B,YAAA,sBAAsB,aAGtB,YAAY;AACZ,YAAA,iBAAiB,aAGjB,mBAAmB;YACnB,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YARzB,YAAY;YACZ,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAOR,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,2BAA2B;wBAC3B,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,gBAAgB;AACjB,qBAAA;AACF,iBAAA,CAAA;;;ACtDD;;;;;;;;AAQG;AAEH;;;;AAIG;;ACdH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"scion-components-sashbox.mjs","sources":["../../../../projects/scion/components/sashbox/src/sashbox-accessor.ts","../../../../projects/scion/components/sashbox/src/sash.directive.ts","../../../../projects/scion/components/sashbox/src/sash-initializer.directive.ts","../../../../projects/scion/components/sashbox/src/element-ref.directive.ts","../../../../projects/scion/components/sashbox/src/sashbox.component.ts","../../../../projects/scion/components/sashbox/src/sashbox.component.html","../../../../projects/scion/components/sashbox/src/sashbox.module.ts","../../../../projects/scion/components/sashbox/src/public_api.ts","../../../../projects/scion/components/sashbox/src/scion-components-sashbox.ts"],"sourcesContent":["import {SciSashDirective} from './sash.directive';\nimport {Observable} from 'rxjs';\n\n/**\n * Allows accessing the sashbox component from sashes.\n */\nexport abstract class SciSashBoxAccessor {\n\n public abstract get sashes(): SciSashDirective[];\n\n public abstract get sashes$(): Observable<SciSashDirective[]>;\n\n public abstract get direction(): 'column' | 'row';\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, Input, OnChanges, OnInit, SimpleChanges, TemplateRef} from '@angular/core';\nimport {SciSashBoxAccessor} from './sashbox-accessor';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, switchMap} from 'rxjs/operators';\n\n/**\n * Use this directive to model a sash for {@link SciSashboxComponent}.\n * The host element of this modelling directive must be a <ng-template> which is used as sash template.\n *\n *\n * ### Usage:\n *\n * <sci-sashbox direction=\"row\">\n * <!-- fixed size sash -->\n * <ng-template sciSash size=\"200px\">\n * ...\n * </ng-template>\n *\n * <!-- sash which takes the remaining space -->\n * <ng-template sciSash>\n * ...\n * </ng-template>\n * </sci-sashbox>\n */\n@Directive({\n selector: 'ng-template[sciSash]',\n exportAs: 'sciSash',\n standalone: true,\n})\nexport class SciSashDirective implements OnInit, OnChanges {\n\n private _size: string | number = '1';\n private _flexGrow$ = new BehaviorSubject<number>(0);\n\n /**\n * Specifies the sash size, either as fixed size with an explicit unit,\n * or as a unitless proportion to distibute remaining space. A proportional\n * sash has the ability to grow or shrink if necessary, and must be >= 1.\n *\n * If not set, remaining space is distributed equally.\n */\n @Input()\n public set size(size: string | number | null | undefined) {\n this._size = size ?? '1';\n }\n\n public get size(): string | number {\n return this._size;\n }\n\n /**\n * Specifies the minimal sash size in pixel or percent.\n * The min-size prevents the user from shrinking the sash below this minimal size.\n *\n * If the unit is omitted, the value is interpreted as a pixel value.\n */\n @Input()\n public minSize?: string | number | undefined;\n\n /**\n * @internal\n */\n public element!: HTMLElement;\n\n /**\n * @internal\n */\n public set flexGrow(flexGrow: number) {\n this._flexGrow$.next(flexGrow);\n }\n\n /**\n * @internal\n */\n public get flexGrow(): number {\n return this._flexGrow$.value;\n }\n\n /**\n * @internal\n */\n public flexShrink!: number;\n\n /**\n * @internal\n */\n public flexBasis!: string;\n\n /**\n * Normalized flex-grow proportion of this sash, which is a value >= 1.\n *\n * @internal\n */\n public flexGrowNormalized$: Observable<number>;\n\n constructor(public readonly sashTemplate: TemplateRef<void>, private _sashBoxAccessor: SciSashBoxAccessor) {\n this.flexGrowNormalized$ = this._sashBoxAccessor.sashes$\n .pipe(\n switchMap(sashes => merge(...sashes.map(sash => sash._flexGrow$))),\n map(() => this.normalizeFlexGrow(this.flexGrow)),\n );\n }\n\n public ngOnInit(): void {\n this.setFlexItemProperties();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.setFlexItemProperties();\n }\n\n /**\n * Returns if this sash has a fixed size, meaning that it has not the ability to grow or shrink if necessary.\n *\n * @internal\n */\n public get isFixedSize(): boolean {\n return Number.isNaN(+this.size);\n }\n\n /**\n * Returns the effective sash size as rendered in the DOM.\n *\n * @internal\n */\n public get computedSize(): number {\n // Note: Use `boundingClientRect` to get the fractional size.\n // see https://developer.mozilla.org/en-US/docs/Web/API/Element/clientWidth\n return this._sashBoxAccessor.direction === 'row' ? this.element.getBoundingClientRect().width : this.element.getBoundingClientRect().height;\n }\n\n /**\n * Computes and sets the flex item properties based on the modelled size.\n */\n private setFlexItemProperties(): void {\n if (this.isFixedSize) {\n // fixed-sized sash\n this.flexGrow = 0;\n this.flexShrink = 0;\n this.flexBasis = `${this.size}`;\n }\n else {\n // remaining space is distributed according to given proportion\n const proportion = +this.size;\n if (proportion < 1) {\n throw Error(`[IllegalSashSizeError] The proportion for flexible sized sashes must be >=1 [size=${this.size}]`);\n }\n\n this.flexGrow = proportion;\n this.flexShrink = 1;\n this.flexBasis = '0';\n }\n }\n\n /**\n * Computes the normalized flex-grow proportion of the given sash, which is a value >= 1.\n *\n * If the sum of all flex-grow proportions would be less than 1, then, the sashes would not fill the entire sash-box space.\n * Without normalization in place, e.g., this could happen when removing a sash.\n */\n private normalizeFlexGrow(flexGrow: number): number {\n if (flexGrow === 0) {\n return 0;\n }\n\n const sashes = this._sashBoxAccessor.sashes;\n const flexGrowSum = sashes.reduce((sum, sash) => sum + sash.flexGrow, 0);\n if (flexGrowSum === 0) {\n return 0;\n }\n return flexGrow / flexGrowSum;\n }\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';\nimport {SciSashDirective} from './sash.directive';\n\n/**\n * Initializes {SashDirective} with the target {HTMLDivElement}.\n */\n@Directive({\n selector: 'div[sciSashInitializer].sash',\n standalone: true,\n})\nexport class SciSashInitializerDirective implements OnChanges {\n\n @Input({alias: 'sciSashInitializer', required: true})\n public sash!: SciSashDirective;\n\n constructor(private _host: ElementRef<HTMLDivElement>) {\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.sash.element = this._host.nativeElement;\n }\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Directive, ElementRef} from '@angular/core';\n\n/**\n * Provides access to the native {@link HTMLElement} of the host.\n */\n@Directive({\n selector: '[sciElementRef]',\n exportAs: 'sciElementRef',\n standalone: true,\n})\nexport class SciElementRefDirective {\n\n public readonly nativeElement: HTMLElement;\n\n constructor(public host: ElementRef<HTMLElement>) {\n this.nativeElement = host.nativeElement;\n }\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {Component, ContentChildren, ElementRef, EventEmitter, HostBinding, inject, Input, NgZone, OnDestroy, Output, QueryList} from '@angular/core';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {SciSplitterComponent, SplitterMoveEvent} from '@scion/components/splitter';\nimport {SciSashDirective} from './sash.directive';\nimport {SciSashBoxAccessor} from './sashbox-accessor';\nimport {AsyncPipe, NgFor, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {SciSashInitializerDirective} from './sash-initializer.directive';\nimport {SciElementRefDirective} from './element-ref.directive';\n\n/**\n * The <sci-sashbox> is like a CSS flexbox container that lays out its content children (sashes) in a row (which is by default)\n * or column arrangement (as specified by the direction property). A splitter is added between each child to allow the user to\n * shrink or stretch the individual sashes.\n *\n * Sashes are modelled as content children inside a <ng-template> decorated with the 'sciSash' directive.\n * A sash can have a fixed size with an explicit unit, or a unitless proportion to distibute remaining space.\n * A proportional sash has the ability to grow or shrink if necessary.\n *\n *\n * ### Usage:\n *\n * ```html\n * <sci-sashbox direction=\"row\">\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"2\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n * </sci-sashbox>\n * ```\n *\n * ### Theme override:\n * The default style of the sashbox is made up of shades of gray.\n * You can control the appearance by overriding the following CSS variables:\n *\n * - --sci-sashbox-gap: Sets the gaps (gutters) between sashes.\n * - --sci-sashbox-splitter-bgcolor: Sets the background color of the splitter.\n * - --sci-sashbox-splitter-bgcolor_hover: Sets the background color of the splitter when hovering it.\n * - --sci-sashbox-splitter-size: Sets the size of the splitter along the main axis.\n * - --sci-sashbox-splitter-size_hover: Sets the size of the splitter along the main axis when hovering it.\n * - --sci-sashbox-splitter-touch-target-size: Sets the touch target size to move the splitter (accessibility).\n * - --sci-sashbox-splitter-cross-axis-size: Sets the splitter size along the cross axis.\n * - --sci-sashbox-splitter-border-radius: Sets the border radius of the splitter.\n * - --sci-sashbox-splitter-opacity_active: Sets the opacity of the splitter while the user moves the splitter.\n * - --sci-sashbox-splitter-opacity_hover: Sets the opacity of the splitter when hovering it.\n *\n * Example:\n *\n * ```scss\n * sci-sashbox {\n * --sci-sashbox-splitter-bgcolor: black;\n * --sci-sashbox-splitter-bgcolor_hover: black;\n * }\n * ```\n */\n@Component({\n selector: 'sci-sashbox',\n templateUrl: './sashbox.component.html',\n styleUrls: ['./sashbox.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n AsyncPipe,\n NgTemplateOutlet,\n SciSashInitializerDirective,\n SciSplitterComponent,\n SciElementRefDirective,\n ],\n providers: [{\n provide: SciSashBoxAccessor,\n useFactory: provideSashBoxAccessor,\n }],\n})\nexport class SciSashboxComponent implements OnDestroy {\n\n private _destroy$ = new Subject<void>();\n\n public sashes$ = new BehaviorSubject<SciSashDirective[]>([]);\n\n @HostBinding('class.sashing')\n public sashing = false;\n\n /**\n * Specifies if to lay out sashes in a row (which is by default) or column arrangement.\n */\n @Input()\n public direction: 'column' | 'row' = 'row';\n\n /**\n * Emits when start sashing.\n */\n @Output()\n public sashStart = new EventEmitter<void>();\n\n /**\n * Emits the absolute sash sizes (px) when finished sashing.\n */\n @Output()\n public sashEnd = new EventEmitter<number[]>();\n\n /** @internal */\n @ContentChildren(SciSashDirective)\n public set setSashes(queryList: QueryList<SciSashDirective>) {\n queryList.changes\n .pipe(\n startWith(queryList),\n takeUntil(this._destroy$),\n )\n .subscribe((sashes: QueryList<SciSashDirective>) => {\n this.sashes$.next(sashes.toArray());\n });\n }\n\n constructor(private _host: ElementRef<HTMLElement>, private _zone: NgZone) {\n }\n\n public onSashStart(): void {\n this.sashing = true;\n this.sashStart.emit();\n\n // set the effective sash size as the flex-basis for non-fixed sashes (as sashing operates on pixel deltas)\n this.sashes.forEach(sash => {\n if (!sash.isFixedSize) {\n sash.flexGrow = 0;\n sash.flexShrink = 0;\n sash.flexBasis = `${sash.computedSize}px`;\n }\n });\n }\n\n public onSashEnd(): void {\n this.sashing = false;\n\n // unset the flex-basis for non-fixed sashes and set the flex-grow accordingly\n const pixelToFlexGrowFactor = computePixelToFlexGrowFactor(this.sashes);\n const absoluteSashSizes = this.sashes.map(sash => sash.computedSize);\n\n this.sashes.forEach((sash, i) => {\n if (!sash.isFixedSize) {\n sash.flexGrow = pixelToFlexGrowFactor * absoluteSashSizes[i];\n sash.flexShrink = 1;\n sash.flexBasis = '0';\n }\n });\n this.sashEnd.emit(absoluteSashSizes);\n }\n\n public onSash(splitter: HTMLElement, sashIndex: number, moveEvent: SplitterMoveEvent): void {\n const distance = moveEvent.distance;\n if (distance === 0) {\n return;\n }\n\n NgZone.assertNotInAngularZone();\n\n // compute the splitter position\n const splitterRect = splitter.getBoundingClientRect();\n const splitterStart = (this.isRowDirection ? splitterRect.left : splitterRect.top);\n const splitterEnd = (this.isRowDirection ? splitterRect.left + splitterRect.width : splitterRect.top + splitterRect.height);\n\n // ignore the event if outside of the splitter's action scope\n const eventPos = moveEvent.position.clientPos;\n // i.e. the sash should not grow if moved the mouse pointer beyond the left bounds of the sash, and if now moving the mouse pointer back toward the current sash.\n if (distance > 0 && eventPos < splitterStart) {\n return;\n }\n\n // i.e. the sash should not shrink if moved the mouse pointer beyond the right bounds of the sash, and if now moving the mouse pointer back toward the current sash.\n if (distance < 0 && eventPos > splitterEnd) {\n return;\n }\n\n // compute the new sash sizes\n const sash1 = this.sashes[sashIndex];\n const sash2 = this.sashes[sashIndex + 1];\n\n const sashSize1 = sash1.computedSize;\n const sashSize2 = sash2.computedSize;\n const maxSashSize = sashSize1 + sashSize2;\n const computedNewSashSize1 = Math.round(sashSize1 + distance);\n const computedNewSashSize2 = Math.round(sashSize2 - distance);\n\n if (sash1.minSize !== undefined && distance < 0 && computedNewSashSize1 < this.toPixel(sash1.minSize)) {\n return;\n }\n if (sash2.minSize !== undefined && distance > 0 && computedNewSashSize2 < this.toPixel(sash2.minSize)) {\n return;\n }\n\n const validNewSashSize1 = between(computedNewSashSize1, {min: 0, max: maxSashSize});\n const validNewSashSize2 = between(computedNewSashSize2, {min: 0, max: maxSashSize});\n\n // continue only if both sashes adjacent to the splitter change their size (as the event would change other sashes otherwise)\n if (validNewSashSize1 !== computedNewSashSize1) {\n return;\n }\n if (validNewSashSize2 !== computedNewSashSize2) {\n return;\n }\n\n // set the new computed sash sizes\n this._zone.run(() => {\n sash1.flexBasis = `${computedNewSashSize1}px`;\n sash2.flexBasis = `${computedNewSashSize2}px`;\n });\n }\n\n public onSashReset(sashIndex: number): void {\n const sash1 = this.sashes[sashIndex];\n const sash2 = this.sashes[sashIndex + 1];\n const equalSashSize = (sash1.computedSize + sash2.computedSize) / 2;\n const pixelToFlexGrowFactor = computePixelToFlexGrowFactor(this.sashes);\n const absoluteSashSizesAfterReset = this.sashes.map((sash, index) => {\n if (index === sashIndex || index === sashIndex + 1) {\n return equalSashSize;\n }\n return sash.computedSize;\n });\n\n [sash1, sash2].forEach(sash => {\n if (sash.isFixedSize) {\n sash.flexBasis = `${equalSashSize}px`;\n }\n else {\n sash.flexGrow = pixelToFlexGrowFactor * equalSashSize;\n }\n });\n\n this.sashStart.emit();\n this.sashEnd.emit(absoluteSashSizesAfterReset);\n }\n\n @HostBinding('class.column')\n public get isColumnDirection(): boolean {\n return this.direction === 'column';\n }\n\n @HostBinding('class.row')\n public get isRowDirection(): boolean {\n return this.direction === 'row';\n }\n\n private get sashes(): SciSashDirective[] {\n return this.sashes$.value;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n private toPixel(value: string | number): number {\n if (typeof value === 'number') {\n return value;\n }\n if (value.endsWith('%')) {\n const hostBounds = this._host.nativeElement.getBoundingClientRect();\n const hostSize = (this.isRowDirection ? hostBounds.width : hostBounds.height);\n return parseInt(value, 10) * hostSize / 100;\n }\n return parseInt(value, 10);\n }\n}\n\nfunction between(value: number, minmax: {min: number; max: number}): number {\n return Math.min(minmax.max, Math.max(minmax.min, value));\n}\n\n/**\n * Returns the factor to compute the flex-grow proportion from the pixel size of a sash.\n */\nfunction computePixelToFlexGrowFactor(sashes: SciSashDirective[]): number {\n const flexibleSashes = sashes.filter(sash => !sash.isFixedSize);\n\n const proportionSum = flexibleSashes.reduce((sum, sash) => sum + Number(sash.size), 0);\n const pixelSum = flexibleSashes.reduce((sum, sash) => sum + sash.computedSize, 0);\n\n return proportionSum / pixelSum;\n}\n\nfunction provideSashBoxAccessor(): SciSashBoxAccessor {\n const component = inject(SciSashboxComponent);\n\n return new class implements SciSashBoxAccessor {\n\n public get direction(): 'column' | 'row' {\n return component.direction;\n }\n\n public get sashes$(): Observable<SciSashDirective[]> {\n return component.sashes$;\n }\n\n public get sashes(): SciSashDirective[] {\n return component.sashes$.value;\n }\n };\n}\n","<ng-container *ngFor=\"let sash of sashes$ | async; index as i; first as first; last as last;\">\n <div class=\"sash\"\n [class.first]=\"first\"\n [class.last]=\"last\"\n [sciSashInitializer]=\"sash\"\n [style.flex-grow]=\"sash.flexGrowNormalized$ | async\"\n [style.flex-shrink]=\"sash.flexShrink\"\n [style.flex-basis]=\"sash.flexBasis\">\n <ng-container *ngTemplateOutlet=\"sash.sashTemplate\"></ng-container>\n </div>\n\n <sci-splitter *ngIf=\"!last\"\n sciElementRef #sciElementRef=\"sciElementRef\"\n [orientation]=\"isRowDirection ? 'vertical' : 'horizontal'\"\n (start)=\"onSashStart()\"\n (move)=\"onSash(sciElementRef.nativeElement, i, $event)\"\n (end)=\"onSashEnd()\"\n (reset)=\"onSashReset(i)\">\n </sci-splitter>\n</ng-container>\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {NgModule} from '@angular/core';\nimport {SciSashboxComponent} from './sashbox.component';\nimport {SciSashDirective} from './sash.directive';\n\n/**\n * Provides a sashbox component that lays out its children in a row or column arrangement and places a splitter between each child.\n *\n * ### Usage:\n *\n * ```html\n * <sci-sashbox direction=\"row\">\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"2\">\n * ...\n * </ng-template>\n *\n * <ng-template sciSash size=\"1\">\n * ...\n * </ng-template>\n * </sci-sashbox>\n * ```\n */\n@NgModule({\n imports: [\n SciSashboxComponent,\n SciSashDirective,\n ],\n exports: [\n SciSashboxComponent,\n SciSashDirective,\n ],\n})\nexport class SciSashboxModule {\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\n/*\n * Secondary entrypoint: '@scion/components/sashbox'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport {SciSashboxModule} from './sashbox.module';\nexport {SciSashboxComponent} from './sashbox.component';\nexport {SciSashDirective} from './sash.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SciSashBoxAccessor"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { EventEmitter, NgZone, Component, ChangeDetectionStrategy, Inject, HostBinding, Input, Output, ViewChild, NgModule } from '@angular/core';
|
|
3
3
|
import { Subject, fromEvent, merge } from 'rxjs';
|
|
4
|
-
import { DOCUMENT
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
5
|
import { tapFirst } from '@scion/toolkit/operators';
|
|
6
6
|
import { takeUntil, first } from 'rxjs/operators';
|
|
7
7
|
|
|
@@ -53,8 +53,6 @@ import { takeUntil, first } from 'rxjs/operators';
|
|
|
53
53
|
* --sci-splitter-bgcolor_hover: black;
|
|
54
54
|
* }
|
|
55
55
|
* ```
|
|
56
|
-
*
|
|
57
|
-
* @dynamic ignore 'strictMetadataEmit' errors due to the usage of {@link Document} as ambient type for DI.
|
|
58
56
|
*/
|
|
59
57
|
class SciSplitterComponent {
|
|
60
58
|
get isVertical() {
|
|
@@ -191,11 +189,11 @@ class SciSplitterComponent {
|
|
|
191
189
|
this._destroy$.next();
|
|
192
190
|
}
|
|
193
191
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
194
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: SciSplitterComponent, selector: "sci-splitter", inputs: { orientation: "orientation" }, outputs: { start: "start", move: "move", end: "end", reset: "reset" }, host: { properties: { "class.moving": "this.moving", "class.vertical": "this.isVertical", "class.horizontal": "this.isHorizontal", "style.cursor": "this.splitterCursor" } }, viewQueries: [{ propertyName: "touchTargetElementRef", first: true, predicate: ["touch_target"], descendants: true, static: true }], ngImport: i0, template: "<div #touch_target class=\"touch-target\">\n <div class=\"handle\"></div>\n</div>\n", styles: [":host{--sci-splitter-bgcolor: #d2d2d2;--sci-splitter-bgcolor_hover: var(--sci-splitter-bgcolor);--sci-splitter-size: 1px;--sci-splitter-size_hover: 8px;--sci-splitter-touch-target-size: 15px;--sci-splitter-cross-axis-size: 100%;--sci-splitter-border-radius: 0;--sci-splitter-opacity_active: 1;--sci-splitter-opacity_hover: .3;display:grid;position:relative;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);place-items:center;align-self:center}:host>div.touch-target{position:absolute;display:grid;place-items:center;pointer-events:auto}:host>div.touch-target>div.handle{position:absolute;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);opacity:var(--sci-splitter-opacity_hover);transition-property:width,height;transition-timing-function:ease-in;transition-duration:75ms}:host.vertical{width:var(--sci-splitter-size);height:var(--sci-splitter-cross-axis-size)}:host.vertical>div.touch-target{width:var(--sci-splitter-touch-target-size);height:100%}:host.vertical>div.touch-target>div.handle{width:var(--sci-splitter-size);height:100%}:host.horizontal{height:var(--sci-splitter-size);width:var(--sci-splitter-cross-axis-size)}:host.horizontal>div.touch-target{width:100%;height:var(--sci-splitter-touch-target-size)}:host.horizontal>div.touch-target>div.handle{width:100%;height:var(--sci-splitter-size)}:host>div.touch-target:active>div.handle{opacity:var(--sci-splitter-opacity_active)}:host.vertical.moving>div.touch-target>div.handle,:host.vertical>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);width:var(--sci-splitter-size_hover)}:host.horizontal.moving>div.touch-target>div.handle,:host.horizontal>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);height:var(--sci-splitter-size_hover)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: SciSplitterComponent, isStandalone: true, selector: "sci-splitter", inputs: { orientation: "orientation" }, outputs: { start: "start", move: "move", end: "end", reset: "reset" }, host: { properties: { "class.moving": "this.moving", "class.vertical": "this.isVertical", "class.horizontal": "this.isHorizontal", "style.cursor": "this.splitterCursor" } }, viewQueries: [{ propertyName: "touchTargetElementRef", first: true, predicate: ["touch_target"], descendants: true, static: true }], ngImport: i0, template: "<div #touch_target class=\"touch-target\">\n <div class=\"handle\"></div>\n</div>\n", styles: [":host{--sci-splitter-bgcolor: #d2d2d2;--sci-splitter-bgcolor_hover: var(--sci-splitter-bgcolor);--sci-splitter-size: 1px;--sci-splitter-size_hover: 8px;--sci-splitter-touch-target-size: 15px;--sci-splitter-cross-axis-size: 100%;--sci-splitter-border-radius: 0;--sci-splitter-opacity_active: 1;--sci-splitter-opacity_hover: .3;display:grid;position:relative;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);place-items:center;align-self:center}:host>div.touch-target{position:absolute;display:grid;place-items:center;pointer-events:auto}:host>div.touch-target>div.handle{position:absolute;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);opacity:var(--sci-splitter-opacity_hover);transition-property:width,height;transition-timing-function:ease-in;transition-duration:75ms}:host.vertical{width:var(--sci-splitter-size);height:var(--sci-splitter-cross-axis-size)}:host.vertical>div.touch-target{width:var(--sci-splitter-touch-target-size);height:100%}:host.vertical>div.touch-target>div.handle{width:var(--sci-splitter-size);height:100%}:host.horizontal{height:var(--sci-splitter-size);width:var(--sci-splitter-cross-axis-size)}:host.horizontal>div.touch-target{width:100%;height:var(--sci-splitter-touch-target-size)}:host.horizontal>div.touch-target>div.handle{width:100%;height:var(--sci-splitter-size)}:host>div.touch-target:active>div.handle{opacity:var(--sci-splitter-opacity_active)}:host.vertical.moving>div.touch-target>div.handle,:host.vertical>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);width:var(--sci-splitter-size_hover)}:host.horizontal.moving>div.touch-target>div.handle,:host.horizontal>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);height:var(--sci-splitter-size_hover)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
195
193
|
}
|
|
196
194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterComponent, decorators: [{
|
|
197
195
|
type: Component,
|
|
198
|
-
args: [{ selector: 'sci-splitter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #touch_target class=\"touch-target\">\n <div class=\"handle\"></div>\n</div>\n", styles: [":host{--sci-splitter-bgcolor: #d2d2d2;--sci-splitter-bgcolor_hover: var(--sci-splitter-bgcolor);--sci-splitter-size: 1px;--sci-splitter-size_hover: 8px;--sci-splitter-touch-target-size: 15px;--sci-splitter-cross-axis-size: 100%;--sci-splitter-border-radius: 0;--sci-splitter-opacity_active: 1;--sci-splitter-opacity_hover: .3;display:grid;position:relative;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);place-items:center;align-self:center}:host>div.touch-target{position:absolute;display:grid;place-items:center;pointer-events:auto}:host>div.touch-target>div.handle{position:absolute;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);opacity:var(--sci-splitter-opacity_hover);transition-property:width,height;transition-timing-function:ease-in;transition-duration:75ms}:host.vertical{width:var(--sci-splitter-size);height:var(--sci-splitter-cross-axis-size)}:host.vertical>div.touch-target{width:var(--sci-splitter-touch-target-size);height:100%}:host.vertical>div.touch-target>div.handle{width:var(--sci-splitter-size);height:100%}:host.horizontal{height:var(--sci-splitter-size);width:var(--sci-splitter-cross-axis-size)}:host.horizontal>div.touch-target{width:100%;height:var(--sci-splitter-touch-target-size)}:host.horizontal>div.touch-target>div.handle{width:100%;height:var(--sci-splitter-size)}:host>div.touch-target:active>div.handle{opacity:var(--sci-splitter-opacity_active)}:host.vertical.moving>div.touch-target>div.handle,:host.vertical>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);width:var(--sci-splitter-size_hover)}:host.horizontal.moving>div.touch-target>div.handle,:host.horizontal>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);height:var(--sci-splitter-size_hover)}\n"] }]
|
|
196
|
+
args: [{ selector: 'sci-splitter', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div #touch_target class=\"touch-target\">\n <div class=\"handle\"></div>\n</div>\n", styles: [":host{--sci-splitter-bgcolor: #d2d2d2;--sci-splitter-bgcolor_hover: var(--sci-splitter-bgcolor);--sci-splitter-size: 1px;--sci-splitter-size_hover: 8px;--sci-splitter-touch-target-size: 15px;--sci-splitter-cross-axis-size: 100%;--sci-splitter-border-radius: 0;--sci-splitter-opacity_active: 1;--sci-splitter-opacity_hover: .3;display:grid;position:relative;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);place-items:center;align-self:center}:host>div.touch-target{position:absolute;display:grid;place-items:center;pointer-events:auto}:host>div.touch-target>div.handle{position:absolute;background-color:var(--sci-splitter-bgcolor);border-radius:var(--sci-splitter-border-radius);opacity:var(--sci-splitter-opacity_hover);transition-property:width,height;transition-timing-function:ease-in;transition-duration:75ms}:host.vertical{width:var(--sci-splitter-size);height:var(--sci-splitter-cross-axis-size)}:host.vertical>div.touch-target{width:var(--sci-splitter-touch-target-size);height:100%}:host.vertical>div.touch-target>div.handle{width:var(--sci-splitter-size);height:100%}:host.horizontal{height:var(--sci-splitter-size);width:var(--sci-splitter-cross-axis-size)}:host.horizontal>div.touch-target{width:100%;height:var(--sci-splitter-touch-target-size)}:host.horizontal>div.touch-target>div.handle{width:100%;height:var(--sci-splitter-size)}:host>div.touch-target:active>div.handle{opacity:var(--sci-splitter-opacity_active)}:host.vertical.moving>div.touch-target>div.handle,:host.vertical>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);width:var(--sci-splitter-size_hover)}:host.horizontal.moving>div.touch-target>div.handle,:host.horizontal>div.touch-target:hover>div.handle{background-color:var(--sci-splitter-bgcolor_hover);height:var(--sci-splitter-size_hover)}\n"] }]
|
|
199
197
|
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: Document, decorators: [{
|
|
200
198
|
type: Inject,
|
|
201
199
|
args: [DOCUMENT]
|
|
@@ -246,17 +244,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
|
|
|
246
244
|
*/
|
|
247
245
|
class SciSplitterModule {
|
|
248
246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
249
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterModule,
|
|
250
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterModule
|
|
247
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterModule, imports: [SciSplitterComponent], exports: [SciSplitterComponent] }); }
|
|
248
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterModule }); }
|
|
251
249
|
}
|
|
252
250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: SciSplitterModule, decorators: [{
|
|
253
251
|
type: NgModule,
|
|
254
252
|
args: [{
|
|
255
|
-
declarations: [
|
|
256
|
-
SciSplitterComponent,
|
|
257
|
-
],
|
|
258
253
|
imports: [
|
|
259
|
-
|
|
254
|
+
SciSplitterComponent,
|
|
260
255
|
],
|
|
261
256
|
exports: [
|
|
262
257
|
SciSplitterComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scion-components-splitter.mjs","sources":["../../../../projects/scion/components/splitter/src/splitter.component.ts","../../../../projects/scion/components/splitter/src/splitter.component.html","../../../../projects/scion/components/splitter/src/splitter.module.ts","../../../../projects/scion/components/splitter/src/public_api.ts","../../../../projects/scion/components/splitter/src/scion-components-splitter.ts"],"sourcesContent":["/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Inject, Input, NgZone, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\nimport {fromEvent, merge, Subject} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {tapFirst} from '@scion/toolkit/operators';\nimport {first, takeUntil} from 'rxjs/operators';\n\n/**\n * Represents a splitter, a visual element that allows the user to control the size of elements next to it.\n *\n * The splitter has a handle that the user can move depending on the orientation of the splitter.\n *\n * Note that this control neither does change the size of adjacent elements nor does it (re-)position itself, but emits the distance by\n * which the user has theoretically moved the splitter. You must subscribe to these events and change your layout accordingly.\n *\n * In the toolkit, {@link SciSashboxComponent} uses this splitter to divide a layout into several resizable sections.\n * Another use case would be a resizable sidebar panel.\n *\n * ### Usage:\n *\n * ```html\n * <sci-splitter (move)=\"onSplitterMove($event.distance)\"></sci-splitter>\n * ```\n *\n * ### Theme override:\n * The default style of the splitter is made up of shades of gray.\n * You can control the appearance by overriding the following CSS variables:\n *\n * - --sci-splitter-bgcolor: Sets the background color of the splitter.\n * - --sci-splitter-bgcolor_hover: Sets the background color of the splitter when hovering it.\n * - --sci-splitter-size: Sets the size of the splitter along the main axis.\n * - --sci-splitter-size_hover: Sets the size of the splitter along the main axis when hovering it.\n * - --sci-splitter-touch-target-size: Sets the touch target size to move the splitter (accessibility).\n * - --sci-splitter-cross-axis-size: Sets the splitter size along the cross axis.\n * - --sci-splitter-border-radius: Sets the border radius of the splitter.\n * - --sci-splitter-opacity_active: Sets the opacity of the splitter while the user moves the splitter.\n * - --sci-splitter-opacity_hover: Sets the opacity of the splitter when hovering it.\n *\n * Example:\n *\n * ```scss\n * sci-splitter {\n * --sci-splitter-bgcolor: black;\n * --sci-splitter-bgcolor_hover: black;\n * }\n * ```\n *\n * @dynamic ignore 'strictMetadataEmit' errors due to the usage of {@link Document} as ambient type for DI.\n */\n@Component({\n selector: 'sci-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SciSplitterComponent implements OnInit, OnDestroy {\n\n private _destroy$ = new Subject<void>();\n\n /* @docs-private */\n @HostBinding('class.moving')\n public moving = false;\n\n @HostBinding('class.vertical')\n public get isVertical(): boolean {\n return !this.isHorizontal;\n }\n\n @HostBinding('class.horizontal')\n public get isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n /**\n * Controls whether to render a vertical or horizontal splitter.\n * By default, if not specified, renders a vertical splitter.\n */\n @Input()\n public orientation: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * Emits when starting to move the splitter.\n */\n @Output()\n public start = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /**\n * Emits the distance in pixels when the splitter is moved.\n * The event is emitted outside of the Angular zone.\n */\n @Output()\n public move = new EventEmitter<SplitterMoveEvent>();\n\n /**\n * Emits when ending to move the splitter.\n */\n @Output()\n public end = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /**\n * Emits when to reset the splitter position.\n */\n @Output()\n public reset = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /* @docs-private */\n @HostBinding('style.cursor')\n public get splitterCursor(): string {\n return this.isVertical ? 'ew-resize' : 'ns-resize';\n }\n\n /* @docs-private */\n @ViewChild('touch_target', {static: true})\n public touchTargetElementRef!: ElementRef<HTMLElement>;\n\n constructor(private _zone: NgZone,\n private _cd: ChangeDetectorRef,\n @Inject(DOCUMENT) private _document: Document) {\n }\n\n /* @docs-private */\n public ngOnInit(): void {\n fromEvent(this.touchTargetElementRef.nativeElement, 'dblclick')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => this.onReset());\n\n fromEvent<TouchEvent>(this.touchTargetElementRef.nativeElement, 'touchstart')\n .pipe(takeUntil(this._destroy$))\n .subscribe((event: TouchEvent) => this.onTouchStart(event));\n\n fromEvent<MouseEvent>(this.touchTargetElementRef.nativeElement, 'mousedown')\n .pipe(takeUntil(this._destroy$))\n .subscribe((event: MouseEvent) => this.onMouseDown(event));\n }\n\n private onReset(): void {\n this.reset.emit();\n }\n\n private onTouchStart(startEvent: TouchEvent): void {\n this.installMoveListener({\n startEvent: startEvent,\n moveEventNames: ['touchmove'],\n endEventNames: ['touchend', 'touchcancel'],\n eventPositionFn: (touchEvent: TouchEvent): EventPosition => {\n const touch: Touch = touchEvent.touches[0];\n if (this.isVertical) {\n return {screenPos: touch.screenX, clientPos: touch.clientX, pagePos: touch.pageX};\n }\n else {\n return {screenPos: touch.screenY, clientPos: touch.clientY, pagePos: touch.pageY};\n }\n },\n },\n );\n }\n\n private onMouseDown(startEvent: MouseEvent): void {\n if (startEvent.button !== 0) {\n return;\n }\n\n this.installMoveListener({\n startEvent: startEvent,\n moveEventNames: ['mousemove', 'sci-mousemove'],\n endEventNames: ['mouseup', 'sci-mouseup'],\n eventPositionFn: (mouseEvent: MouseEvent): EventPosition => {\n if (this.isVertical) {\n return {screenPos: mouseEvent.screenX, clientPos: mouseEvent.clientX, pagePos: mouseEvent.pageX};\n }\n else {\n return {screenPos: mouseEvent.screenY, clientPos: mouseEvent.clientY, pagePos: mouseEvent.pageY};\n }\n },\n },\n );\n }\n\n private installMoveListener<EVENT extends Event>(config: {startEvent: EVENT; moveEventNames: string[]; endEventNames: string[]; eventPositionFn: (event: EVENT) => EventPosition}): void {\n const startEvent = config.startEvent;\n\n startEvent.preventDefault();\n\n this._zone.runOutsideAngular(() => {\n // install listeners on document level to allow fast dragging the splitter.\n const moveEvent$ = merge(...config.moveEventNames.map(eventName => fromEvent<EVENT>(this._document, eventName)));\n const endEvent$ = merge(...config.endEventNames.map(eventName => fromEvent<EVENT>(this._document, eventName)));\n let lastClientPos = config.eventPositionFn(startEvent).clientPos;\n\n // Apply cursor on document level to prevent flickering while moving the splitter\n const oldDocumentCursor = this._document.body.style.cursor;\n this._document.body.style.cursor = this.splitterCursor;\n\n // Listen for 'move' events until stop moving the splitter\n moveEvent$\n .pipe(\n tapFirst(() => this._zone.run(() => {\n this.moving = true;\n this.start.next();\n this._cd.markForCheck();\n })),\n takeUntil(merge(endEvent$, this._destroy$)),\n )\n .subscribe((moveEvent: EVENT) => {\n const eventPos = config.eventPositionFn(moveEvent);\n const newClientPos = eventPos.clientPos;\n const distance = newClientPos - lastClientPos;\n lastClientPos = newClientPos;\n\n NgZone.assertNotInAngularZone();\n this.move.emit({distance, position: eventPos});\n });\n\n // Listen for 'end' events; call 'stop propagation' to not close overlays\n endEvent$\n .pipe(first(), takeUntil(this._destroy$))\n .subscribe((endEvent: EVENT) => {\n endEvent.stopPropagation();\n this._document.body.style.cursor = oldDocumentCursor;\n this.moving && this._zone.run(() => {\n this.end.next();\n this.moving = false;\n this._cd.markForCheck();\n });\n });\n });\n }\n\n /* @docs-private */\n public ngOnDestroy(): void {\n this._destroy$.next();\n }\n}\n\nexport interface EventPosition {\n clientPos: number;\n pagePos: number;\n screenPos: number;\n}\n\n/**\n * Event that is emitted when moving the splitter.\n */\nexport interface SplitterMoveEvent {\n /**\n * The distance in pixels by which the user has moved the splitter since the last emission.\n */\n distance: number;\n /**\n * The position where the mouse or touch event has occurred.\n */\n position: EventPosition;\n}\n","<div #touch_target class=\"touch-target\">\n <div class=\"handle\"></div>\n</div>\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SciSplitterComponent} from './splitter.component';\n\n/**\n * Provides a splitter, a visual element that allows the user to control the size of elements next to it.\n *\n * ### Usage:\n *\n * ```html\n * <sci-splitter (move)=\"onSplitterMove($event.distance)\"></sci-splitter>\n * ```\n */\n@NgModule({\n declarations: [\n SciSplitterComponent,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n SciSplitterComponent,\n ],\n})\nexport class SciSplitterModule {\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\n/*\n * Secondary entrypoint: '@scion/components/splitter'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport * from './splitter.component';\nexport * from './splitter.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scion-components-splitter.mjs","sources":["../../../../projects/scion/components/splitter/src/splitter.component.ts","../../../../projects/scion/components/splitter/src/splitter.component.html","../../../../projects/scion/components/splitter/src/splitter.module.ts","../../../../projects/scion/components/splitter/src/public_api.ts","../../../../projects/scion/components/splitter/src/scion-components-splitter.ts"],"sourcesContent":["/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Inject, Input, NgZone, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\nimport {fromEvent, merge, Subject} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {tapFirst} from '@scion/toolkit/operators';\nimport {first, takeUntil} from 'rxjs/operators';\n\n/**\n * Represents a splitter, a visual element that allows the user to control the size of elements next to it.\n *\n * The splitter has a handle that the user can move depending on the orientation of the splitter.\n *\n * Note that this control neither does change the size of adjacent elements nor does it (re-)position itself, but emits the distance by\n * which the user has theoretically moved the splitter. You must subscribe to these events and change your layout accordingly.\n *\n * In the toolkit, {@link SciSashboxComponent} uses this splitter to divide a layout into several resizable sections.\n * Another use case would be a resizable sidebar panel.\n *\n * ### Usage:\n *\n * ```html\n * <sci-splitter (move)=\"onSplitterMove($event.distance)\"></sci-splitter>\n * ```\n *\n * ### Theme override:\n * The default style of the splitter is made up of shades of gray.\n * You can control the appearance by overriding the following CSS variables:\n *\n * - --sci-splitter-bgcolor: Sets the background color of the splitter.\n * - --sci-splitter-bgcolor_hover: Sets the background color of the splitter when hovering it.\n * - --sci-splitter-size: Sets the size of the splitter along the main axis.\n * - --sci-splitter-size_hover: Sets the size of the splitter along the main axis when hovering it.\n * - --sci-splitter-touch-target-size: Sets the touch target size to move the splitter (accessibility).\n * - --sci-splitter-cross-axis-size: Sets the splitter size along the cross axis.\n * - --sci-splitter-border-radius: Sets the border radius of the splitter.\n * - --sci-splitter-opacity_active: Sets the opacity of the splitter while the user moves the splitter.\n * - --sci-splitter-opacity_hover: Sets the opacity of the splitter when hovering it.\n *\n * Example:\n *\n * ```scss\n * sci-splitter {\n * --sci-splitter-bgcolor: black;\n * --sci-splitter-bgcolor_hover: black;\n * }\n * ```\n */\n@Component({\n selector: 'sci-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SciSplitterComponent implements OnInit, OnDestroy {\n\n private _destroy$ = new Subject<void>();\n\n /* @docs-private */\n @HostBinding('class.moving')\n public moving = false;\n\n @HostBinding('class.vertical')\n public get isVertical(): boolean {\n return !this.isHorizontal;\n }\n\n @HostBinding('class.horizontal')\n public get isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n /**\n * Controls whether to render a vertical or horizontal splitter.\n * By default, if not specified, renders a vertical splitter.\n */\n @Input()\n public orientation: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * Emits when starting to move the splitter.\n */\n @Output()\n public start = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /**\n * Emits the distance in pixels when the splitter is moved.\n * The event is emitted outside of the Angular zone.\n */\n @Output()\n public move = new EventEmitter<SplitterMoveEvent>();\n\n /**\n * Emits when ending to move the splitter.\n */\n @Output()\n public end = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /**\n * Emits when to reset the splitter position.\n */\n @Output()\n public reset = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n /* @docs-private */\n @HostBinding('style.cursor')\n public get splitterCursor(): string {\n return this.isVertical ? 'ew-resize' : 'ns-resize';\n }\n\n /* @docs-private */\n @ViewChild('touch_target', {static: true})\n public touchTargetElementRef!: ElementRef<HTMLElement>;\n\n constructor(private _zone: NgZone,\n private _cd: ChangeDetectorRef,\n @Inject(DOCUMENT) private _document: Document) {\n }\n\n /* @docs-private */\n public ngOnInit(): void {\n fromEvent(this.touchTargetElementRef.nativeElement, 'dblclick')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => this.onReset());\n\n fromEvent<TouchEvent>(this.touchTargetElementRef.nativeElement, 'touchstart')\n .pipe(takeUntil(this._destroy$))\n .subscribe((event: TouchEvent) => this.onTouchStart(event));\n\n fromEvent<MouseEvent>(this.touchTargetElementRef.nativeElement, 'mousedown')\n .pipe(takeUntil(this._destroy$))\n .subscribe((event: MouseEvent) => this.onMouseDown(event));\n }\n\n private onReset(): void {\n this.reset.emit();\n }\n\n private onTouchStart(startEvent: TouchEvent): void {\n this.installMoveListener({\n startEvent: startEvent,\n moveEventNames: ['touchmove'],\n endEventNames: ['touchend', 'touchcancel'],\n eventPositionFn: (touchEvent: TouchEvent): EventPosition => {\n const touch: Touch = touchEvent.touches[0];\n if (this.isVertical) {\n return {screenPos: touch.screenX, clientPos: touch.clientX, pagePos: touch.pageX};\n }\n else {\n return {screenPos: touch.screenY, clientPos: touch.clientY, pagePos: touch.pageY};\n }\n },\n },\n );\n }\n\n private onMouseDown(startEvent: MouseEvent): void {\n if (startEvent.button !== 0) {\n return;\n }\n\n this.installMoveListener({\n startEvent: startEvent,\n moveEventNames: ['mousemove', 'sci-mousemove'],\n endEventNames: ['mouseup', 'sci-mouseup'],\n eventPositionFn: (mouseEvent: MouseEvent): EventPosition => {\n if (this.isVertical) {\n return {screenPos: mouseEvent.screenX, clientPos: mouseEvent.clientX, pagePos: mouseEvent.pageX};\n }\n else {\n return {screenPos: mouseEvent.screenY, clientPos: mouseEvent.clientY, pagePos: mouseEvent.pageY};\n }\n },\n },\n );\n }\n\n private installMoveListener<EVENT extends Event>(config: {startEvent: EVENT; moveEventNames: string[]; endEventNames: string[]; eventPositionFn: (event: EVENT) => EventPosition}): void {\n const startEvent = config.startEvent;\n\n startEvent.preventDefault();\n\n this._zone.runOutsideAngular(() => {\n // install listeners on document level to allow fast dragging the splitter.\n const moveEvent$ = merge(...config.moveEventNames.map(eventName => fromEvent<EVENT>(this._document, eventName)));\n const endEvent$ = merge(...config.endEventNames.map(eventName => fromEvent<EVENT>(this._document, eventName)));\n let lastClientPos = config.eventPositionFn(startEvent).clientPos;\n\n // Apply cursor on document level to prevent flickering while moving the splitter\n const oldDocumentCursor = this._document.body.style.cursor;\n this._document.body.style.cursor = this.splitterCursor;\n\n // Listen for 'move' events until stop moving the splitter\n moveEvent$\n .pipe(\n tapFirst(() => this._zone.run(() => {\n this.moving = true;\n this.start.next();\n this._cd.markForCheck();\n })),\n takeUntil(merge(endEvent$, this._destroy$)),\n )\n .subscribe((moveEvent: EVENT) => {\n const eventPos = config.eventPositionFn(moveEvent);\n const newClientPos = eventPos.clientPos;\n const distance = newClientPos - lastClientPos;\n lastClientPos = newClientPos;\n\n NgZone.assertNotInAngularZone();\n this.move.emit({distance, position: eventPos});\n });\n\n // Listen for 'end' events; call 'stop propagation' to not close overlays\n endEvent$\n .pipe(first(), takeUntil(this._destroy$))\n .subscribe((endEvent: EVENT) => {\n endEvent.stopPropagation();\n this._document.body.style.cursor = oldDocumentCursor;\n this.moving && this._zone.run(() => {\n this.end.next();\n this.moving = false;\n this._cd.markForCheck();\n });\n });\n });\n }\n\n /* @docs-private */\n public ngOnDestroy(): void {\n this._destroy$.next();\n }\n}\n\nexport interface EventPosition {\n clientPos: number;\n pagePos: number;\n screenPos: number;\n}\n\n/**\n * Event that is emitted when moving the splitter.\n */\nexport interface SplitterMoveEvent {\n /**\n * The distance in pixels by which the user has moved the splitter since the last emission.\n */\n distance: number;\n /**\n * The position where the mouse or touch event has occurred.\n */\n position: EventPosition;\n}\n","<div #touch_target class=\"touch-target\">\n <div class=\"handle\"></div>\n</div>\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\nimport {NgModule} from '@angular/core';\nimport {SciSplitterComponent} from './splitter.component';\n\n/**\n * Provides a splitter, a visual element that allows the user to control the size of elements next to it.\n *\n * ### Usage:\n *\n * ```html\n * <sci-splitter (move)=\"onSplitterMove($event.distance)\"></sci-splitter>\n * ```\n */\n@NgModule({\n imports: [\n SciSplitterComponent,\n ],\n exports: [\n SciSplitterComponent,\n ],\n})\nexport class SciSplitterModule {\n}\n","/*\n * Copyright (c) 2018-2019 Swiss Federal Railways\n *\n * This program and the accompanying materials are made\n * available under the terms of the Eclipse Public License 2.0\n * which is available at https://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n */\n\n/*\n * Secondary entrypoint: '@scion/components/splitter'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport {SciSplitterModule} from './splitter.module';\nexport {SciSplitterComponent, SplitterMoveEvent, EventPosition} from './splitter.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|