@scion/components 18.1.1 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dimension/dimension.module.d.ts +2 -0
- package/dimension/public_api.d.ts +1 -1
- package/fesm2022/scion-components-dimension.mjs +17 -16
- package/fesm2022/scion-components-dimension.mjs.map +1 -1
- package/fesm2022/scion-components-sashbox.mjs +73 -43
- package/fesm2022/scion-components-sashbox.mjs.map +1 -1
- package/fesm2022/scion-components-splitter.mjs +40 -33
- package/fesm2022/scion-components-splitter.mjs.map +1 -1
- package/fesm2022/scion-components-throbber.mjs +39 -39
- package/fesm2022/scion-components-throbber.mjs.map +1 -1
- package/fesm2022/scion-components-viewport.mjs +86 -71
- package/fesm2022/scion-components-viewport.mjs.map +1 -1
- package/package.json +4 -16
- package/sashbox/sashbox.module.d.ts +2 -0
- package/splitter/public_api.d.ts +1 -1
- package/splitter/splitter.module.d.ts +2 -0
- package/throbber/throbber.module.d.ts +2 -0
- package/viewport/public_api.d.ts +1 -1
- package/viewport/viewport.component.d.ts +7 -6
- package/viewport/viewport.module.d.ts +2 -0
- package/esm2022/dimension/bounding-client-rect.signal.mjs +0 -54
- package/esm2022/dimension/dimension.directive.mjs +0 -67
- package/esm2022/dimension/dimension.mjs +0 -11
- package/esm2022/dimension/dimension.module.mjs +0 -34
- package/esm2022/dimension/dimension.signal.mjs +0 -63
- package/esm2022/dimension/public_api.mjs +0 -19
- package/esm2022/dimension/scion-components-dimension.mjs +0 -5
- package/esm2022/public-api.mjs +0 -11
- package/esm2022/sashbox/element-ref.directive.mjs +0 -31
- package/esm2022/sashbox/public_api.mjs +0 -18
- package/esm2022/sashbox/sash-initializer.directive.mjs +0 -35
- package/esm2022/sashbox/sash.directive.mjs +0 -145
- package/esm2022/sashbox/sashbox-accessor.mjs +0 -6
- package/esm2022/sashbox/sashbox.component.mjs +0 -282
- package/esm2022/sashbox/sashbox.module.mjs +0 -55
- package/esm2022/sashbox/scion-components-sashbox.mjs +0 -5
- package/esm2022/scion-components.mjs +0 -5
- package/esm2022/splitter/public_api.mjs +0 -17
- package/esm2022/splitter/scion-components-splitter.mjs +0 -5
- package/esm2022/splitter/splitter.component.mjs +0 -226
- package/esm2022/splitter/splitter.module.mjs +0 -38
- package/esm2022/throbber/ellipsis-throbber/ellipsis-throbber.component.mjs +0 -25
- package/esm2022/throbber/public_api.mjs +0 -17
- package/esm2022/throbber/ripple-throbber/ripple-throbber.component.mjs +0 -25
- package/esm2022/throbber/roller-throbber/roller-throbber.component.mjs +0 -25
- package/esm2022/throbber/scion-components-throbber.mjs +0 -5
- package/esm2022/throbber/spinner-throbber/spinner-throbber.component.mjs +0 -26
- package/esm2022/throbber/throbber.component.mjs +0 -72
- package/esm2022/throbber/throbber.module.mjs +0 -32
- package/esm2022/viewport/native-scrollbar-track-size-provider.service.mjs +0 -91
- package/esm2022/viewport/public_api.mjs +0 -19
- package/esm2022/viewport/scion-components-viewport.mjs +0 -5
- package/esm2022/viewport/scrollable.directive.mjs +0 -92
- package/esm2022/viewport/scrollbar/scrollbar.component.mjs +0 -305
- package/esm2022/viewport/viewport.component.mjs +0 -264
- package/esm2022/viewport/viewport.module.mjs +0 -42
|
@@ -3,6 +3,8 @@ import * as i1 from "./dimension.directive";
|
|
|
3
3
|
/**
|
|
4
4
|
* Provides a directive for observing changes to the size of the host element.
|
|
5
5
|
*
|
|
6
|
+
* @deprecated since version 19.0.0; Import standalone directive instead; API will be removed in a future release.
|
|
7
|
+
*
|
|
6
8
|
* @see fromDimension$
|
|
7
9
|
*/
|
|
8
10
|
export declare class SciDimensionModule {
|
|
@@ -2,4 +2,4 @@ export { SciDimensionModule } from './dimension.module';
|
|
|
2
2
|
export { SciDimensionDirective } from './dimension.directive';
|
|
3
3
|
export { dimension } from './dimension.signal';
|
|
4
4
|
export { boundingClientRect } from './bounding-client-rect.signal';
|
|
5
|
-
export { SciDimension } from './dimension';
|
|
5
|
+
export { type SciDimension } from './dimension';
|
|
@@ -26,15 +26,15 @@ import { Objects } from '@scion/toolkit/util';
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
class SciDimensionDirective {
|
|
29
|
+
/**
|
|
30
|
+
* Controls if to output outside the Angular zone. Defaults to `false`.
|
|
31
|
+
*/
|
|
32
|
+
emitOutsideAngular = input(false);
|
|
33
|
+
/**
|
|
34
|
+
* Outputs the size of the element.
|
|
35
|
+
*/
|
|
36
|
+
dimensionChange = output({ alias: 'sciDimensionChange' });
|
|
29
37
|
constructor() {
|
|
30
|
-
/**
|
|
31
|
-
* Controls if to output outside the Angular zone. Defaults to `false`.
|
|
32
|
-
*/
|
|
33
|
-
this.emitOutsideAngular = input(false);
|
|
34
|
-
/**
|
|
35
|
-
* Outputs the size of the element.
|
|
36
|
-
*/
|
|
37
|
-
this.dimensionChange = output({ alias: 'sciDimensionChange' });
|
|
38
38
|
const host = inject((ElementRef)).nativeElement;
|
|
39
39
|
const zone = inject(NgZone);
|
|
40
40
|
fromResize$(host)
|
|
@@ -57,14 +57,13 @@ class SciDimensionDirective {
|
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
static
|
|
61
|
-
static
|
|
60
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciDimensionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
61
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: SciDimensionDirective, isStandalone: true, selector: "[sciDimension]", inputs: { emitOutsideAngular: { classPropertyName: "emitOutsideAngular", publicName: "emitOutsideAngular", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dimensionChange: "sciDimensionChange" }, ngImport: i0 });
|
|
62
62
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciDimensionDirective, decorators: [{
|
|
64
64
|
type: Directive,
|
|
65
65
|
args: [{
|
|
66
66
|
selector: '[sciDimension]',
|
|
67
|
-
standalone: true,
|
|
68
67
|
}]
|
|
69
68
|
}], ctorParameters: () => [] });
|
|
70
69
|
|
|
@@ -80,14 +79,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
80
79
|
/**
|
|
81
80
|
* Provides a directive for observing changes to the size of the host element.
|
|
82
81
|
*
|
|
82
|
+
* @deprecated since version 19.0.0; Import standalone directive instead; API will be removed in a future release.
|
|
83
|
+
*
|
|
83
84
|
* @see fromDimension$
|
|
84
85
|
*/
|
|
85
86
|
class SciDimensionModule {
|
|
86
|
-
static
|
|
87
|
-
static
|
|
88
|
-
static
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciDimensionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
88
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: SciDimensionModule, imports: [SciDimensionDirective], exports: [SciDimensionDirective] });
|
|
89
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciDimensionModule });
|
|
89
90
|
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciDimensionModule, decorators: [{
|
|
91
92
|
type: NgModule,
|
|
92
93
|
args: [{
|
|
93
94
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scion-components-dimension.mjs","sources":["../../../../projects/scion/components/dimension/src/dimension.directive.ts","../../../../projects/scion/components/dimension/src/dimension.module.ts","../../../../projects/scion/components/dimension/src/dimension.signal.ts","../../../../projects/scion/components/dimension/src/bounding-client-rect.signal.ts","../../../../projects/scion/components/dimension/src/public_api.ts","../../../../projects/scion/components/dimension/src/scion-components-dimension.ts"],"sourcesContent":["/*\n * Copyright (c) 2018-2024 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, inject, input, NgZone, output} from '@angular/core';\nimport {fromResize$} from '@scion/toolkit/observable';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {observeIn, subscribeIn} from '@scion/toolkit/operators';\nimport {SciDimension} from './dimension';\n\n/**\n * Observes the size of the host element.\n *\n * ---\n * Usage:\n *\n * ```html\n * <div sciDimension (sciDimensionChange)=\"onDimensionChange($event)\"></div>\n * ```\n */\n@Directive({\n selector: '[sciDimension]',\n standalone: true,\n})\nexport class SciDimensionDirective {\n\n /**\n * Controls if to output outside the Angular zone. Defaults to `false`.\n */\n public emitOutsideAngular = input(false);\n\n /**\n * Outputs the size of the element.\n */\n public dimensionChange = output<SciDimension>({alias: 'sciDimensionChange'});\n\n constructor() {\n const host = inject(ElementRef<HTMLElement>).nativeElement;\n const zone = inject(NgZone);\n\n fromResize$(host)\n .pipe(\n // Avoid triggering change detection cycle.\n subscribeIn(fn => zone.runOutsideAngular(fn)),\n // Run in animation frame to prevent 'ResizeObserver loop completed with undelivered notifications' error.\n // Do not use `animationFrameScheduler` because the scheduler does not necessarily execute in the current execution context, such as inside or outside Angular.\n // The scheduler always executes tasks in the context (e.g. zone) where the scheduler was first used in the application.\n observeIn(fn => requestAnimationFrame(fn)),\n observeIn(fn => this.emitOutsideAngular() ? fn() : zone.run(fn)),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n // Assert Angular zone.\n this.emitOutsideAngular() ? NgZone.assertNotInAngularZone() : NgZone.assertInAngularZone();\n\n this.dimensionChange.emit({\n clientWidth: host.clientWidth,\n offsetWidth: host.offsetWidth,\n clientHeight: host.clientHeight,\n offsetHeight: host.offsetHeight,\n element: host,\n });\n });\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 {NgModule} from '@angular/core';\nimport {SciDimensionDirective} from './dimension.directive';\n\n/**\n * Provides a directive for observing changes to the size of the host element.\n *\n * @see fromDimension$\n */\n@NgModule({\n imports: [\n SciDimensionDirective,\n ],\n exports: [\n SciDimensionDirective,\n ],\n})\nexport class SciDimensionModule {\n}\n","/*\n * Copyright (c) 2018-2024 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 {assertInInjectionContext, assertNotInReactiveContext, computed, effect, ElementRef, inject, Injector, isSignal, NgZone, signal, Signal, untracked} from '@angular/core';\nimport {SciDimension} from './dimension';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {Objects} from '@scion/toolkit/util';\nimport {fromResize$} from '@scion/toolkit/observable';\nimport {observeIn, subscribeIn} from '@scion/toolkit/operators';\n\n/**\n * Creates a signal observing the size of an element.\n *\n * The element can be passed as a signal, enabling observation of view children in the component constructor.\n *\n * The signal subscribes to the native {@link ResizeObserver} to monitor element size changes. Destroying the injection context will unsubscribe the observer.\n *\n * Usage:\n * - Must be called within an injection context or an injector provided. Destroying the injector will unsubscribe the signal.\n * - Must not be called within a reactive context to avoid repeated subscriptions.\n */\nexport function dimension(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement>>, options?: {injector?: Injector}): Signal<SciDimension>;\nexport function dimension(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<SciDimension | undefined>;\nexport function dimension(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<SciDimension | undefined> {\n assertNotInReactiveContext(dimension, 'Invoking `dimension` causes new subscriptions every time. Move `dimension` outside of the reactive context and read the signal value where needed.');\n if (!options?.injector) {\n assertInInjectionContext(dimension);\n }\n\n const injector = options?.injector ?? inject(Injector);\n const zone = injector.get(NgZone);\n const element = computed(() => coerceElement(isSignal(elementLike) ? elementLike() : elementLike));\n const onResize = signal<void>(undefined, {equal: () => false});\n\n // Subscribe to element size changes.\n effect(onCleanup => {\n const el = element();\n if (!el) {\n return;\n }\n\n untracked(() => {\n const subscription = fromResize$(el)\n .pipe(\n // Avoid triggering change detection cycle.\n subscribeIn(fn => zone.runOutsideAngular(fn)),\n // Run in animation frame to prevent 'ResizeObserver loop completed with undelivered notifications' error.\n // Do not use `animationFrameScheduler` because the scheduler does not necessarily execute in the current execution context, such as inside or outside Angular.\n // The scheduler always executes tasks in the context (e.g. zone) where the scheduler was first used in the application.\n observeIn(fn => requestAnimationFrame(fn)),\n )\n .subscribe(() => {\n NgZone.assertNotInAngularZone();\n onResize.set();\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }, {injector});\n\n // Create signal that recomputes each time the size changes.\n return computed(() => {\n const el = element();\n if (!el) {\n return undefined;\n }\n\n // Track element size.\n onResize();\n\n return {\n clientWidth: el.clientWidth,\n offsetWidth: el.offsetWidth,\n clientHeight: el.clientHeight,\n offsetHeight: el.offsetHeight,\n element: el,\n };\n }, {equal: Objects.isEqual});\n}\n","/*\n * Copyright (c) 2018-2024 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 {assertInInjectionContext, assertNotInReactiveContext, computed, effect, ElementRef, inject, Injector, isSignal, NgZone, signal, Signal, untracked} from '@angular/core';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {fromBoundingClientRect$} from '@scion/toolkit/observable';\nimport {subscribeIn} from '@scion/toolkit/operators';\n\n/**\n * Creates a signal observing the bounding box of an element.\n *\n * The bounding box includes the element's position relative to the top-left of the viewport and its size.\n * Refer to https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect for more details.\n *\n * The element can be passed as a signal, enabling observation of view children in the component constructor.\n *\n * There is no native browser API to observe the position of an element. The signal uses {@link IntersectionObserver} and\n * {@link ResizeObserver} to detect position changes. For tracking only size changes, use the {@link dimension} signal instead.\n *\n * Usage:\n * - Must be called within an injection context or an injector provided. Destroying the injector will unsubscribe the signal.\n * - Must not be called within a reactive context to avoid repeated subscriptions.\n * - The element and the document root (`<html>`) must be positioned `relative` or `absolute`. If not, a warning is logged, and positioning changed to `relative`.\n */\nexport function boundingClientRect(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement>>, options?: {injector?: Injector}): Signal<DOMRect>;\nexport function boundingClientRect(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<DOMRect | undefined>;\nexport function boundingClientRect(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<DOMRect | undefined> {\n assertNotInReactiveContext(boundingClientRect, 'Invoking `boundingClientRect` causes new subscriptions every time. Move `boundingClientRect` outside of the reactive context and read the signal value where needed.');\n if (!options?.injector) {\n assertInInjectionContext(boundingClientRect);\n }\n\n const injector = options?.injector ?? inject(Injector);\n const zone = injector.get(NgZone);\n const element = computed(() => coerceElement(isSignal(elementLike) ? elementLike() : elementLike));\n const onBoundingBoxChange = signal<void>(undefined, {equal: () => false});\n\n // Subscribe to element bounding box changes.\n effect(onCleanup => {\n const el = element();\n if (!el) {\n return;\n }\n\n untracked(() => {\n const subscription = fromBoundingClientRect$(el)\n // Avoid triggering change detection cycle.\n .pipe(subscribeIn(fn => zone.runOutsideAngular(fn)))\n .subscribe(() => {\n NgZone.assertNotInAngularZone();\n onBoundingBoxChange.set();\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }, {injector});\n\n // Create signal that recomputes each time the bounding box changes.\n return computed(() => {\n const el = element();\n if (!el) {\n return undefined;\n }\n\n // Track bounding box.\n onBoundingBoxChange();\n\n return el.getBoundingClientRect();\n }, {equal: isEqualDomRect});\n}\n\nfunction isEqualDomRect(a: DOMRect | undefined, b: DOMRect | undefined): boolean {\n return a?.top === b?.top && a?.right === b?.right && a?.bottom === b?.bottom && a?.left === b?.left;\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/dimension'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport {SciDimensionModule} from './dimension.module';\nexport {SciDimensionDirective} from './dimension.directive';\nexport {dimension} from './dimension.signal';\nexport {boundingClientRect} from './bounding-client-rect.signal';\nexport {SciDimension} from './dimension';\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-dimension.mjs","sources":["../../../../projects/scion/components/dimension/src/dimension.directive.ts","../../../../projects/scion/components/dimension/src/dimension.module.ts","../../../../projects/scion/components/dimension/src/dimension.signal.ts","../../../../projects/scion/components/dimension/src/bounding-client-rect.signal.ts","../../../../projects/scion/components/dimension/src/public_api.ts","../../../../projects/scion/components/dimension/src/scion-components-dimension.ts"],"sourcesContent":["/*\n * Copyright (c) 2018-2024 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, inject, input, NgZone, output} from '@angular/core';\nimport {fromResize$} from '@scion/toolkit/observable';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {observeIn, subscribeIn} from '@scion/toolkit/operators';\nimport {SciDimension} from './dimension';\n\n/**\n * Observes the size of the host element.\n *\n * ---\n * Usage:\n *\n * ```html\n * <div sciDimension (sciDimensionChange)=\"onDimensionChange($event)\"></div>\n * ```\n */\n@Directive({\n selector: '[sciDimension]',\n})\nexport class SciDimensionDirective {\n\n /**\n * Controls if to output outside the Angular zone. Defaults to `false`.\n */\n public emitOutsideAngular = input(false);\n\n /**\n * Outputs the size of the element.\n */\n public dimensionChange = output<SciDimension>({alias: 'sciDimensionChange'});\n\n constructor() {\n const host = inject(ElementRef<HTMLElement>).nativeElement;\n const zone = inject(NgZone);\n\n fromResize$(host)\n .pipe(\n // Avoid triggering change detection cycle.\n subscribeIn(fn => zone.runOutsideAngular(fn)),\n // Run in animation frame to prevent 'ResizeObserver loop completed with undelivered notifications' error.\n // Do not use `animationFrameScheduler` because the scheduler does not necessarily execute in the current execution context, such as inside or outside Angular.\n // The scheduler always executes tasks in the context (e.g. zone) where the scheduler was first used in the application.\n observeIn(fn => requestAnimationFrame(fn)),\n observeIn(fn => this.emitOutsideAngular() ? fn() : zone.run(fn)),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n // Assert Angular zone.\n this.emitOutsideAngular() ? NgZone.assertNotInAngularZone() : NgZone.assertInAngularZone();\n\n this.dimensionChange.emit({\n clientWidth: host.clientWidth,\n offsetWidth: host.offsetWidth,\n clientHeight: host.clientHeight,\n offsetHeight: host.offsetHeight,\n element: host,\n });\n });\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 {NgModule} from '@angular/core';\nimport {SciDimensionDirective} from './dimension.directive';\n\n/**\n * Provides a directive for observing changes to the size of the host element.\n *\n * @deprecated since version 19.0.0; Import standalone directive instead; API will be removed in a future release.\n *\n * @see fromDimension$\n */\n@NgModule({ // TODO [Angular 20] Remove deprecated NgModule\n imports: [\n SciDimensionDirective,\n ],\n exports: [\n SciDimensionDirective,\n ],\n})\nexport class SciDimensionModule {\n}\n","/*\n * Copyright (c) 2018-2024 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 {assertInInjectionContext, assertNotInReactiveContext, computed, effect, ElementRef, inject, Injector, isSignal, NgZone, signal, Signal, untracked} from '@angular/core';\nimport {SciDimension} from './dimension';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {Objects} from '@scion/toolkit/util';\nimport {fromResize$} from '@scion/toolkit/observable';\nimport {observeIn, subscribeIn} from '@scion/toolkit/operators';\n\n/**\n * Creates a signal observing the size of an element.\n *\n * The element can be passed as a signal, enabling observation of view children in the component constructor.\n *\n * The signal subscribes to the native {@link ResizeObserver} to monitor element size changes. Destroying the injection context will unsubscribe the observer.\n *\n * Usage:\n * - Must be called within an injection context or an injector provided. Destroying the injector will unsubscribe the signal.\n * - Must not be called within a reactive context to avoid repeated subscriptions.\n */\nexport function dimension(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement>>, options?: {injector?: Injector}): Signal<SciDimension>;\nexport function dimension(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<SciDimension | undefined>;\nexport function dimension(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<SciDimension | undefined> {\n assertNotInReactiveContext(dimension, 'Invoking `dimension` causes new subscriptions every time. Move `dimension` outside of the reactive context and read the signal value where needed.');\n if (!options?.injector) {\n assertInInjectionContext(dimension);\n }\n\n const injector = options?.injector ?? inject(Injector);\n const zone = injector.get(NgZone);\n const element = computed(() => coerceElement(isSignal(elementLike) ? elementLike() : elementLike));\n const onResize = signal<void>(undefined, {equal: () => false});\n\n // Subscribe to element size changes.\n effect(onCleanup => {\n const el = element();\n if (!el) {\n return;\n }\n\n untracked(() => {\n const subscription = fromResize$(el)\n .pipe(\n // Avoid triggering change detection cycle.\n subscribeIn(fn => zone.runOutsideAngular(fn)),\n // Run in animation frame to prevent 'ResizeObserver loop completed with undelivered notifications' error.\n // Do not use `animationFrameScheduler` because the scheduler does not necessarily execute in the current execution context, such as inside or outside Angular.\n // The scheduler always executes tasks in the context (e.g. zone) where the scheduler was first used in the application.\n observeIn(fn => requestAnimationFrame(fn)),\n )\n .subscribe(() => {\n NgZone.assertNotInAngularZone();\n onResize.set();\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }, {injector});\n\n // Create signal that recomputes each time the size changes.\n return computed(() => {\n const el = element();\n if (!el) {\n return undefined;\n }\n\n // Track element size.\n onResize();\n\n return {\n clientWidth: el.clientWidth,\n offsetWidth: el.offsetWidth,\n clientHeight: el.clientHeight,\n offsetHeight: el.offsetHeight,\n element: el,\n };\n }, {equal: Objects.isEqual});\n}\n","/*\n * Copyright (c) 2018-2024 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 {assertInInjectionContext, assertNotInReactiveContext, computed, effect, ElementRef, inject, Injector, isSignal, NgZone, signal, Signal, untracked} from '@angular/core';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {fromBoundingClientRect$} from '@scion/toolkit/observable';\nimport {subscribeIn} from '@scion/toolkit/operators';\n\n/**\n * Creates a signal observing the bounding box of an element.\n *\n * The bounding box includes the element's position relative to the top-left of the viewport and its size.\n * Refer to https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect for more details.\n *\n * The element can be passed as a signal, enabling observation of view children in the component constructor.\n *\n * There is no native browser API to observe the position of an element. The signal uses {@link IntersectionObserver} and\n * {@link ResizeObserver} to detect position changes. For tracking only size changes, use the {@link dimension} signal instead.\n *\n * Usage:\n * - Must be called within an injection context or an injector provided. Destroying the injector will unsubscribe the signal.\n * - Must not be called within a reactive context to avoid repeated subscriptions.\n * - The element and the document root (`<html>`) must be positioned `relative` or `absolute`. If not, a warning is logged, and positioning changed to `relative`.\n */\nexport function boundingClientRect(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement>>, options?: {injector?: Injector}): Signal<DOMRect>;\nexport function boundingClientRect(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<DOMRect | undefined>;\nexport function boundingClientRect(elementLike: HTMLElement | ElementRef<HTMLElement> | Signal<HTMLElement | ElementRef<HTMLElement> | undefined>, options?: {injector?: Injector}): Signal<DOMRect | undefined> {\n assertNotInReactiveContext(boundingClientRect, 'Invoking `boundingClientRect` causes new subscriptions every time. Move `boundingClientRect` outside of the reactive context and read the signal value where needed.');\n if (!options?.injector) {\n assertInInjectionContext(boundingClientRect);\n }\n\n const injector = options?.injector ?? inject(Injector);\n const zone = injector.get(NgZone);\n const element = computed(() => coerceElement(isSignal(elementLike) ? elementLike() : elementLike));\n const onBoundingBoxChange = signal<void>(undefined, {equal: () => false});\n\n // Subscribe to element bounding box changes.\n effect(onCleanup => {\n const el = element();\n if (!el) {\n return;\n }\n\n untracked(() => {\n const subscription = fromBoundingClientRect$(el)\n // Avoid triggering change detection cycle.\n .pipe(subscribeIn(fn => zone.runOutsideAngular(fn)))\n .subscribe(() => {\n NgZone.assertNotInAngularZone();\n onBoundingBoxChange.set();\n });\n onCleanup(() => subscription.unsubscribe());\n });\n }, {injector});\n\n // Create signal that recomputes each time the bounding box changes.\n return computed(() => {\n const el = element();\n if (!el) {\n return undefined;\n }\n\n // Track bounding box.\n onBoundingBoxChange();\n\n return el.getBoundingClientRect();\n }, {equal: isEqualDomRect});\n}\n\nfunction isEqualDomRect(a: DOMRect | undefined, b: DOMRect | undefined): boolean {\n return a?.top === b?.top && a?.right === b?.right && a?.bottom === b?.bottom && a?.left === b?.left;\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/dimension'\n *\n * @see https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md\n */\nexport {SciDimensionModule} from './dimension.module';\nexport {SciDimensionDirective} from './dimension.directive';\nexport {dimension} from './dimension.signal';\nexport {boundingClientRect} from './bounding-client-rect.signal';\nexport {type SciDimension} from './dimension';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,10 @@ class SciSashBoxAccessor {
|
|
|
40
40
|
* </sci-sashbox>
|
|
41
41
|
*/
|
|
42
42
|
class SciSashDirective {
|
|
43
|
+
sashTemplate;
|
|
44
|
+
_sashBoxAccessor;
|
|
45
|
+
_size = '1';
|
|
46
|
+
_flexGrow$ = new BehaviorSubject(0);
|
|
43
47
|
/**
|
|
44
48
|
* Specifies the sash size, either as fixed size with an explicit unit,
|
|
45
49
|
* or as a unitless proportion to distibute remaining space. A proportional
|
|
@@ -53,6 +57,17 @@ class SciSashDirective {
|
|
|
53
57
|
get size() {
|
|
54
58
|
return this._size;
|
|
55
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Specifies the minimal sash size in pixel or percent.
|
|
62
|
+
* The min-size prevents the user from shrinking the sash below this minimal size.
|
|
63
|
+
*
|
|
64
|
+
* If the unit is omitted, the value is interpreted as a pixel value.
|
|
65
|
+
*/
|
|
66
|
+
minSize;
|
|
67
|
+
/**
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
element;
|
|
56
71
|
/**
|
|
57
72
|
* @internal
|
|
58
73
|
*/
|
|
@@ -65,11 +80,23 @@ class SciSashDirective {
|
|
|
65
80
|
get flexGrow() {
|
|
66
81
|
return this._flexGrow$.value;
|
|
67
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
flexShrink;
|
|
87
|
+
/**
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
flexBasis;
|
|
91
|
+
/**
|
|
92
|
+
* Normalized flex-grow proportion of this sash, which is a value >= 1.
|
|
93
|
+
*
|
|
94
|
+
* @internal
|
|
95
|
+
*/
|
|
96
|
+
flexGrowNormalized$;
|
|
68
97
|
constructor(sashTemplate, _sashBoxAccessor) {
|
|
69
98
|
this.sashTemplate = sashTemplate;
|
|
70
99
|
this._sashBoxAccessor = _sashBoxAccessor;
|
|
71
|
-
this._size = '1';
|
|
72
|
-
this._flexGrow$ = new BehaviorSubject(0);
|
|
73
100
|
this.flexGrowNormalized$ = this._sashBoxAccessor.sashes$
|
|
74
101
|
.pipe(switchMap(sashes => merge(...sashes.map(sash => sash._flexGrow$))), map(() => this.normalizeFlexGrow(this.flexGrow)));
|
|
75
102
|
}
|
|
@@ -135,15 +162,14 @@ class SciSashDirective {
|
|
|
135
162
|
}
|
|
136
163
|
return flexGrow / flexGrowSum;
|
|
137
164
|
}
|
|
138
|
-
static
|
|
139
|
-
static
|
|
165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashDirective, deps: [{ token: i0.TemplateRef }, { token: SciSashBoxAccessor }], target: i0.ɵɵFactoryTarget.Directive });
|
|
166
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: SciSashDirective, isStandalone: true, selector: "ng-template[sciSash]", inputs: { size: "size", minSize: "minSize" }, exportAs: ["sciSash"], usesOnChanges: true, ngImport: i0 });
|
|
140
167
|
}
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashDirective, decorators: [{
|
|
142
169
|
type: Directive,
|
|
143
170
|
args: [{
|
|
144
171
|
selector: 'ng-template[sciSash]',
|
|
145
172
|
exportAs: 'sciSash',
|
|
146
|
-
standalone: true,
|
|
147
173
|
}]
|
|
148
174
|
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: SciSashBoxAccessor }], propDecorators: { size: [{
|
|
149
175
|
type: Input
|
|
@@ -164,20 +190,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
164
190
|
* Initializes {SashDirective} with the target {HTMLDivElement}.
|
|
165
191
|
*/
|
|
166
192
|
class SciSashInitializerDirective {
|
|
193
|
+
_host;
|
|
194
|
+
sash;
|
|
167
195
|
constructor(_host) {
|
|
168
196
|
this._host = _host;
|
|
169
197
|
}
|
|
170
198
|
ngOnChanges(changes) {
|
|
171
199
|
this.sash.element = this._host.nativeElement;
|
|
172
200
|
}
|
|
173
|
-
static
|
|
174
|
-
static
|
|
201
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashInitializerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
202
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: SciSashInitializerDirective, isStandalone: true, selector: "div[sciSashInitializer].sash", inputs: { sash: ["sciSashInitializer", "sash"] }, usesOnChanges: true, ngImport: i0 });
|
|
175
203
|
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashInitializerDirective, decorators: [{
|
|
177
205
|
type: Directive,
|
|
178
206
|
args: [{
|
|
179
207
|
selector: 'div[sciSashInitializer].sash',
|
|
180
|
-
standalone: true,
|
|
181
208
|
}]
|
|
182
209
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sash: [{
|
|
183
210
|
type: Input,
|
|
@@ -197,19 +224,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
197
224
|
* Provides access to the native {@link HTMLElement} of the host.
|
|
198
225
|
*/
|
|
199
226
|
class SciElementRefDirective {
|
|
227
|
+
host;
|
|
228
|
+
nativeElement;
|
|
200
229
|
constructor(host) {
|
|
201
230
|
this.host = host;
|
|
202
231
|
this.nativeElement = host.nativeElement;
|
|
203
232
|
}
|
|
204
|
-
static
|
|
205
|
-
static
|
|
233
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciElementRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
234
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: SciElementRefDirective, isStandalone: true, selector: "[sciElementRef]", exportAs: ["sciElementRef"], ngImport: i0 });
|
|
206
235
|
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciElementRefDirective, decorators: [{
|
|
208
237
|
type: Directive,
|
|
209
238
|
args: [{
|
|
210
239
|
selector: '[sciElementRef]',
|
|
211
240
|
exportAs: 'sciElementRef',
|
|
212
|
-
standalone: true,
|
|
213
241
|
}]
|
|
214
242
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
215
243
|
|
|
@@ -276,25 +304,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
276
304
|
* ```
|
|
277
305
|
*/
|
|
278
306
|
class SciSashboxComponent {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
307
|
+
_destroy$ = new Subject();
|
|
308
|
+
_host = inject((ElementRef)).nativeElement;
|
|
309
|
+
_zone = inject(NgZone);
|
|
310
|
+
sashes$ = new BehaviorSubject([]);
|
|
311
|
+
sashing = false;
|
|
312
|
+
maxHeight;
|
|
313
|
+
maxWidth;
|
|
314
|
+
/**
|
|
315
|
+
* Specifies if to lay out sashes in a row (which is by default) or column arrangement.
|
|
316
|
+
*/
|
|
317
|
+
direction = 'row';
|
|
318
|
+
/**
|
|
319
|
+
* Emits when start sashing.
|
|
320
|
+
*/
|
|
321
|
+
sashStart = new EventEmitter();
|
|
322
|
+
/**
|
|
323
|
+
* Emits the absolute sash sizes (px) when finished sashing.
|
|
324
|
+
*/
|
|
325
|
+
sashEnd = new EventEmitter();
|
|
298
326
|
/** @internal */
|
|
299
327
|
set setSashes(queryList) {
|
|
300
328
|
queryList.changes
|
|
@@ -415,15 +443,15 @@ class SciSashboxComponent {
|
|
|
415
443
|
}
|
|
416
444
|
return parseInt(value, 10);
|
|
417
445
|
}
|
|
418
|
-
static
|
|
419
|
-
static
|
|
446
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
447
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: SciSashboxComponent, isStandalone: true, selector: "sci-sashbox", inputs: { direction: "direction" }, outputs: { sashStart: "sashStart", sashEnd: "sashEnd" }, host: { properties: { "class.sashing": "this.sashing", "style.--\u0275sci-sashbox-max-height": "this.maxHeight", "style.--\u0275sci-sashbox-max-width": "this.maxWidth", "class.column": "this.isColumnDirection", "class.row": "this.isRowDirection" } }, providers: [{
|
|
420
448
|
provide: SciSashBoxAccessor,
|
|
421
449
|
useFactory: provideSashBoxAccessor,
|
|
422
|
-
}], queries: [{ propertyName: "setSashes", predicate: SciSashDirective }], ngImport: i0, template: "@for (sash of sashes$ | async; track sash; let i = $index; let first = $first; let last = $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\"/>\n </div>\n @if (!last) {\n <sci-splitter 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 }\n}\n", styles: ["@charset \"UTF-8\";:host{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{max-height:calc(var(--\\275sci-sashbox-max-height) * 1px);max-width:calc(var(--\\275sci-sashbox-max-width) * 1px)}:host.sashing>div.sash{pointer-events:none}:host>sci-splitter{--sci-splitter-background-color: var(--sci-sashbox-splitter-background-color);--sci-splitter-background-color-hover: var(--sci-sashbox-splitter-background-color-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: "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"] }] });
|
|
450
|
+
}], queries: [{ propertyName: "setSashes", predicate: SciSashDirective }], ngImport: i0, template: "@for (sash of sashes$ | async; track sash; let i = $index; let first = $first; let last = $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\"/>\n </div>\n @if (!last) {\n <sci-splitter 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 }\n}\n", styles: ["@charset \"UTF-8\";:host{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{max-height:calc(var(--\\275sci-sashbox-max-height) * 1px);max-width:calc(var(--\\275sci-sashbox-max-width) * 1px)}:host.sashing>div.sash{pointer-events:none}:host>sci-splitter{--sci-splitter-background-color: var(--sci-sashbox-splitter-background-color);--sci-splitter-background-color-hover: var(--sci-sashbox-splitter-background-color-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: "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"] }] });
|
|
423
451
|
}
|
|
424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashboxComponent, decorators: [{
|
|
425
453
|
type: Component,
|
|
426
|
-
args: [{ selector: 'sci-sashbox',
|
|
454
|
+
args: [{ selector: 'sci-sashbox', imports: [
|
|
427
455
|
AsyncPipe,
|
|
428
456
|
NgTemplateOutlet,
|
|
429
457
|
SciSashInitializerDirective,
|
|
@@ -514,15 +542,17 @@ function provideSashBoxAccessor() {
|
|
|
514
542
|
* </ng-template>
|
|
515
543
|
* </sci-sashbox>
|
|
516
544
|
* ```
|
|
545
|
+
*
|
|
546
|
+
* @deprecated since version 19.0.0; Import standalone component and directive instead; API will be removed in a future release.
|
|
517
547
|
*/
|
|
518
548
|
class SciSashboxModule {
|
|
519
|
-
static
|
|
520
|
-
static
|
|
549
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
550
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: SciSashboxModule, imports: [SciSashboxComponent,
|
|
521
551
|
SciSashDirective], exports: [SciSashboxComponent,
|
|
522
|
-
SciSashDirective] });
|
|
523
|
-
static
|
|
552
|
+
SciSashDirective] });
|
|
553
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashboxModule, imports: [SciSashboxComponent] });
|
|
524
554
|
}
|
|
525
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
555
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SciSashboxModule, decorators: [{
|
|
526
556
|
type: NgModule,
|
|
527
557
|
args: [{
|
|
528
558
|
imports: [
|
|
@@ -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 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, 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 * ### Styling\n *\n * To customize the default look of SCION components or support different themes, configure the `@scion/components` SCSS module in `styles.scss`.\n * To style a specific `sci-sashbox` component, the following CSS variables can be set directly on the component.\n *\n * - --sci-sashbox-gap: Sets the gaps (gutters) between sashes.\n * - --sci-sashbox-splitter-background-color: Sets the background color of the splitter.\n * - --sci-sashbox-splitter-background-color-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-background-color: black;\n * --sci-sashbox-splitter-background-color-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 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 private _host = inject(ElementRef<HTMLElement>).nativeElement;\n private _zone = inject(NgZone);\n\n public sashes$ = new BehaviorSubject<SciSashDirective[]>([]);\n\n @HostBinding('class.sashing')\n public sashing = false;\n\n @HostBinding('style.--ɵsci-sashbox-max-height')\n public maxHeight: number | undefined;\n\n @HostBinding('style.--ɵsci-sashbox-max-width')\n public maxWidth: number | undefined;\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 public onSashStart(): void {\n this.sashing = true;\n\n // Avoid overflow when sashing.\n const hostBounds = this._host.getBoundingClientRect();\n this.maxHeight = hostBounds.height;\n this.maxWidth = hostBounds.width;\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 = 1;\n sash.flexBasis = `${sash.computedSize}px`;\n }\n });\n }\n\n public onSashEnd(): void {\n this.sashing = false;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\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\n const sashMinSize1 = sash1.minSize ? this.toPixel(sash1.minSize) : 0;\n const sashMinSize2 = sash2.minSize ? this.toPixel(sash2.minSize) : 0;\n\n const newSashSize1 = between(Math.round(sashSize1 + distance), {min: sashMinSize1, max: sashSize1 + sashSize2 - sashMinSize2});\n const newSashSize2 = between(Math.round(sashSize2 - distance), {min: sashMinSize2, max: sashSize1 + sashSize2 - sashMinSize1});\n\n // set the new computed sash sizes\n this._zone.run(() => {\n sash1.flexBasis = `${newSashSize1}px`;\n sash2.flexBasis = `${newSashSize2}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.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","@for (sash of sashes$ | async; track sash; let i = $index; let first = $first; let last = $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\"/>\n </div>\n @if (!last) {\n <sci-splitter 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 }\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 {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
|
+
{"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 | 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})\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})\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, 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 * ### Styling\n *\n * To customize the default look of SCION components or support different themes, configure the `@scion/components` SCSS module in `styles.scss`.\n * To style a specific `sci-sashbox` component, the following CSS variables can be set directly on the component.\n *\n * - --sci-sashbox-gap: Sets the gaps (gutters) between sashes.\n * - --sci-sashbox-splitter-background-color: Sets the background color of the splitter.\n * - --sci-sashbox-splitter-background-color-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-background-color: black;\n * --sci-sashbox-splitter-background-color-hover: black;\n * }\n * ```\n */\n@Component({\n selector: 'sci-sashbox',\n templateUrl: './sashbox.component.html',\n styleUrls: ['./sashbox.component.scss'],\n imports: [\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 private _host = inject(ElementRef<HTMLElement>).nativeElement;\n private _zone = inject(NgZone);\n\n public sashes$ = new BehaviorSubject<SciSashDirective[]>([]);\n\n @HostBinding('class.sashing')\n public sashing = false;\n\n @HostBinding('style.--ɵsci-sashbox-max-height')\n public maxHeight: number | undefined;\n\n @HostBinding('style.--ɵsci-sashbox-max-width')\n public maxWidth: number | undefined;\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 public onSashStart(): void {\n this.sashing = true;\n\n // Avoid overflow when sashing.\n const hostBounds = this._host.getBoundingClientRect();\n this.maxHeight = hostBounds.height;\n this.maxWidth = hostBounds.width;\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 = 1;\n sash.flexBasis = `${sash.computedSize}px`;\n }\n });\n }\n\n public onSashEnd(): void {\n this.sashing = false;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\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\n const sashMinSize1 = sash1.minSize ? this.toPixel(sash1.minSize) : 0;\n const sashMinSize2 = sash2.minSize ? this.toPixel(sash2.minSize) : 0;\n\n const newSashSize1 = between(Math.round(sashSize1 + distance), {min: sashMinSize1, max: sashSize1 + sashSize2 - sashMinSize2});\n const newSashSize2 = between(Math.round(sashSize2 - distance), {min: sashMinSize2, max: sashSize1 + sashSize2 - sashMinSize1});\n\n // set the new computed sash sizes\n this._zone.run(() => {\n sash1.flexBasis = `${newSashSize1}px`;\n sash2.flexBasis = `${newSashSize2}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.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","@for (sash of sashes$ | async; track sash; let i = $index; let first = $first; let last = $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\"/>\n </div>\n @if (!last) {\n <sci-splitter 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 }\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 {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 * @deprecated since version 19.0.0; Import standalone component and directive instead; API will be removed in a future release.\n */\n@NgModule({ // TODO [Angular 20] Remove deprecated 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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"}
|