@elderbyte/ngx-starter 20.12.0-beta.1 → 20.12.0-beta.3

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.
@@ -5,7 +5,7 @@ import { Pipe, LOCALE_ID, Inject, NgModule, Injectable, inject, Optional, SkipSe
5
5
  import * as i1 from '@angular/platform-browser';
6
6
  import { Duration, Period, TemporalQueries, LocalTime, Instant, LocalDate, nativeJs, ZoneId, DateTimeFormatter, convert, ZonedDateTime, Temporal as Temporal$1 } from '@js-joda/core';
7
7
  import { LoggerFactory } from '@elderbyte/ts-logger';
8
- import { timer, defer, ReplaySubject, concat, finalize, exhaustMap, BehaviorSubject, Subject, switchMap, of, combineLatest, EMPTY, merge, throwError, forkJoin, mergeWith, Observable, from, toArray, zip, mergeMap as mergeMap$1, fromEvent, mergeAll, skipUntil, filter as filter$1, map as map$1, combineLatestWith as combineLatestWith$1, NEVER } from 'rxjs';
8
+ import { timer, defer, ReplaySubject, concat, finalize, exhaustMap, BehaviorSubject, Subject, switchMap, of, combineLatest, EMPTY, merge, throwError, forkJoin, mergeWith, Observable, from, toArray, zip, mergeMap as mergeMap$1, fromEvent, mergeAll, skipUntil, filter as filter$1, map as map$1, combineLatestWith as combineLatestWith$1, tap as tap$1, takeUntil as takeUntil$1, NEVER } from 'rxjs';
9
9
  import { tap, takeUntil, takeWhile, map, filter, distinctUntilChanged, debounceTime, catchError, first, take, switchMap as switchMap$1, mergeMap, expand, reduce, combineLatestWith, startWith, skip, delay, share, skipWhile, timeout } from 'rxjs/operators';
10
10
  import { Temporal } from '@js-temporal/polyfill';
11
11
  import * as i1$1 from '@angular/common/http';
@@ -38097,122 +38097,118 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
38097
38097
  }] });
38098
38098
 
38099
38099
  class ElderDraggablePaneDirective {
38100
- onMouseUp() {
38101
- if (this.isDragging()) {
38102
- this.isDragging.set(false);
38103
- this.stopEventListenerMouseMove();
38104
- }
38105
- }
38106
38100
  /***************************************************************************
38107
38101
  * *
38108
38102
  * Constructor *
38109
38103
  * *
38110
38104
  **************************************************************************/
38111
38105
  constructor() {
38106
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
38112
38107
  this.elementRef = inject((ElementRef));
38113
38108
  // Inputs
38114
38109
  this.isActive = input(true, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
38115
- this.minWidth = input(5, ...(ngDevMode ? [{ debugName: "minWidth" }] : []));
38116
- this.maxWidth = input(95, ...(ngDevMode ? [{ debugName: "maxWidth" }] : []));
38117
- this.handlePosition = input('right', ...(ngDevMode ? [{ debugName: "handlePosition" }] : []));
38110
+ this.minWidth = input(5, ...(ngDevMode ? [{ debugName: "minWidth", transform: (value) => Math.max(0, Math.min(100, value)) }] : [{
38111
+ transform: (value) => Math.max(0, Math.min(100, value)),
38112
+ }]));
38113
+ this.maxWidth = input(95, ...(ngDevMode ? [{ debugName: "maxWidth", transform: (value) => Math.max(0, Math.min(100, value)) }] : [{
38114
+ transform: (value) => Math.max(0, Math.min(100, value)),
38115
+ }]));
38116
+ this.handlePosition = input('end', ...(ngDevMode ? [{ debugName: "handlePosition" }] : []));
38118
38117
  this.initialWidthCss = input(null, ...(ngDevMode ? [{ debugName: "initialWidthCss" }] : []));
38119
38118
  // State
38120
- this.widthMode = signal('initial', ...(ngDevMode ? [{ debugName: "widthMode" }] : []));
38119
+ this.isResizingInitialized = signal(false, ...(ngDevMode ? [{ debugName: "isResizingInitialized" }] : []));
38121
38120
  this.isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : []));
38122
38121
  this.widthInPercent = signal(null, ...(ngDevMode ? [{ debugName: "widthInPercent" }] : []));
38122
+ this.containerWidth = 0;
38123
+ this.dragStartMousePosX = 0;
38124
+ this.dragStartPaneWidthInPercent = 0;
38123
38125
  // Computed
38124
38126
  this.constrainedWidth = computed(() => {
38125
38127
  const width = this.widthInPercent() ?? 0;
38126
38128
  return Math.max(this.minWidth(), Math.min(this.maxWidth(), width));
38127
38129
  }, ...(ngDevMode ? [{ debugName: "constrainedWidth" }] : []));
38128
- this.isInitialized = computed(() => this.widthInPercent() !== null, ...(ngDevMode ? [{ debugName: "isInitialized" }] : []));
38129
- this.dragStartMousePosX = 0;
38130
- this.dragStartPaneWidthInPercent = 0;
38131
- this.containerWidthInPx = 0;
38130
+ // observables
38131
+ this.mouseDown$ = new Subject();
38132
+ this.mouseMove$ = fromEvent(document, 'mousemove');
38133
+ this.mouseUp$ = fromEvent(document, 'mouseup');
38134
+ // main drag observable
38135
+ this.drag$ = this.mouseDown$.pipe(tap$1((event) => {
38136
+ this.initializeIfNecessary();
38137
+ this.processDragStart(event);
38138
+ }), switchMap((event) => this.mouseMove$.pipe(finalize(() => {
38139
+ this.processDragEnd();
38140
+ }), takeUntil$1(this.mouseUp$))));
38132
38141
  this.handleMouseMove = (event) => {
38133
- if (!this.isDragging()) {
38134
- return;
38135
- }
38136
38142
  event.preventDefault();
38137
- // check to prevent division by zero
38138
- if (this.containerWidthInPx === 0) {
38139
- console.error('Container width is 0, cannot calculate resize delta');
38143
+ if (this.containerWidth === 0) {
38144
+ this.logger.error('Container width is 0, cannot calculate resize delta');
38140
38145
  return;
38141
38146
  }
38142
38147
  const deltaX = event.clientX - this.dragStartMousePosX;
38143
38148
  // Convert pixel delta to percentage delta
38144
- let delta = (deltaX / this.containerWidthInPx) * 100;
38149
+ let delta = (deltaX / this.containerWidth) * 100;
38145
38150
  // Invert delta for left-side handles
38146
- if (this.handlePosition() === 'left') {
38151
+ if (this.handlePosition() === 'start') {
38147
38152
  delta = -delta;
38148
38153
  }
38149
38154
  const newWidth = this.dragStartPaneWidthInPercent + delta;
38150
38155
  this.widthInPercent.set(newWidth);
38151
38156
  };
38152
- effect(() => {
38153
- const isDragging = this.isDragging();
38154
- untracked(() => {
38155
- if (isDragging) {
38156
- this.widthMode.set('dynamic');
38157
- }
38158
- });
38157
+ this.drag$.pipe(takeUntilDestroyed()).subscribe((event) => {
38158
+ this.handleMouseMove(event);
38159
38159
  });
38160
38160
  }
38161
38161
  /***************************************************************************
38162
38162
  * *
38163
- * Lifecycle methods *
38163
+ * Life Cycle *
38164
38164
  * *
38165
38165
  **************************************************************************/
38166
38166
  ngOnDestroy() {
38167
- this.stopEventListenerMouseMove();
38167
+ this.mouseDown$.complete();
38168
38168
  }
38169
38169
  /***************************************************************************
38170
38170
  * *
38171
- * Public API *
38171
+ * Private methods *
38172
38172
  * *
38173
38173
  **************************************************************************/
38174
- onMouseDown(event) {
38175
- // Get the container element to calculate percentages
38176
- const containerElement = this.elementRef.nativeElement.parentElement;
38177
- if (!containerElement) {
38178
- console.error('Container element not found for percentage calculation');
38179
- return;
38180
- }
38181
- const containerWidth = containerElement.offsetWidth;
38182
- if (containerWidth === 0) {
38183
- console.error('Container element has no width, cannot calculate percentages', containerElement);
38184
- return;
38185
- }
38174
+ processDragStart(event) {
38186
38175
  event.preventDefault();
38187
38176
  event.stopPropagation();
38188
- if (!this.isInitialized()) {
38189
- this.setWidthInPercentFromElementWidth(containerWidth);
38190
- }
38191
38177
  this.isDragging.set(true);
38192
38178
  this.dragStartMousePosX = event.clientX;
38193
38179
  this.dragStartPaneWidthInPercent = this.widthInPercent();
38194
- this.containerWidthInPx = containerWidth;
38195
- this.startEventListenerMouseMove();
38196
38180
  }
38197
- /***************************************************************************
38198
- * *
38199
- * Private methods *
38200
- * *
38201
- **************************************************************************/
38202
- setWidthInPercentFromElementWidth(containerWidth) {
38203
- // Calculate the current element width as a percentage of container width
38204
- const elementWidth = this.elementRef.nativeElement.offsetWidth;
38205
- const percentage = (elementWidth / containerWidth) * 100;
38206
- this.widthInPercent.set(percentage || 30);
38181
+ processDragEnd() {
38182
+ this.isDragging.set(false);
38183
+ }
38184
+ initializeIfNecessary() {
38185
+ if (!this.isResizingInitialized()) {
38186
+ this.isResizingInitialized.set(true);
38187
+ this.setWidthInPercentFromElementWidth();
38188
+ }
38207
38189
  }
38208
- startEventListenerMouseMove() {
38209
- document.addEventListener('mousemove', this.handleMouseMove);
38190
+ setWidthInPercentFromElementWidth() {
38191
+ this.updateContainerWidth();
38192
+ if (this.containerWidth === 0) {
38193
+ this.logger.error('Container width is 0. Can not calculate percent.');
38194
+ return;
38195
+ }
38196
+ // Calculate the current element width as a percentage of container width
38197
+ const paneWidth = this.elementRef.nativeElement.offsetWidth;
38198
+ const percentage = (paneWidth / this.containerWidth) * 100;
38199
+ this.widthInPercent.set(percentage);
38210
38200
  }
38211
- stopEventListenerMouseMove() {
38212
- document.removeEventListener('mousemove', this.handleMouseMove);
38201
+ updateContainerWidth() {
38202
+ const containerElement = this.elementRef.nativeElement.parentElement;
38203
+ if (!containerElement) {
38204
+ this.logger.error('Container element not found for percentage calculation');
38205
+ return null;
38206
+ }
38207
+ this.containerWidth = containerElement.offsetWidth;
38208
+ return this.containerWidth;
38213
38209
  }
38214
38210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: ElderDraggablePaneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38215
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.6", type: ElderDraggablePaneDirective, isStandalone: true, selector: "[elderDraggablePane]", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, handlePosition: { classPropertyName: "handlePosition", publicName: "handlePosition", isSignal: true, isRequired: false, transformFunction: null }, initialWidthCss: { classPropertyName: "initialWidthCss", publicName: "initialWidthCss", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:mouseup": "onMouseUp()" }, properties: { "class.pane-with-drag-handle-initialized": "isInitialized()", "class.dragging": "isDragging()", "class.flex-none": "widthMode() === \"dynamic\" || initialWidthCss() !== null", "style.width.%": "constrainedWidth()", "style.width": "widthMode() === \"initial\" ? \"var(--initial-width)\" : \"var(--dynamic-width)\"", "style.--initial-width": "(isActive() && initialWidthCss() !== null) ? initialWidthCss() : \"auto\"", "style.--dynamic-width": "constrainedWidth() + \"%\"" }, classAttribute: "pane-with-drag-handle" }, ngImport: i0 }); }
38211
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.6", type: ElderDraggablePaneDirective, isStandalone: true, selector: "[elderDraggablePane]", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, handlePosition: { classPropertyName: "handlePosition", publicName: "handlePosition", isSignal: true, isRequired: false, transformFunction: null }, initialWidthCss: { classPropertyName: "initialWidthCss", publicName: "initialWidthCss", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.dragging": "isDragging()", "class.flex-none": "isResizingInitialized() || initialWidthCss() !== null", "style.width": "isResizingInitialized() ? \"var(--dynamic-width)\" : \"var(--initial-width)\"", "style.--initial-width": "(isActive() && initialWidthCss() !== null) ? initialWidthCss() : \"auto\"", "style.--dynamic-width": "constrainedWidth() + \"%\"" }, classAttribute: "pane-with-drag-handle" }, ngImport: i0 }); }
38216
38212
  }
38217
38213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: ElderDraggablePaneDirective, decorators: [{
38218
38214
  type: Directive,
@@ -38220,39 +38216,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
38220
38216
  selector: '[elderDraggablePane]',
38221
38217
  host: {
38222
38218
  class: 'pane-with-drag-handle',
38223
- '[class.pane-with-drag-handle-initialized]': 'isInitialized()',
38224
38219
  '[class.dragging]': 'isDragging()',
38225
- '[class.flex-none]': 'widthMode() === "dynamic" || initialWidthCss() !== null',
38226
- '[style.width.%]': 'constrainedWidth()',
38227
- '[style.width]': 'widthMode() === "initial" ? "var(--initial-width)" : "var(--dynamic-width)"',
38220
+ '[class.flex-none]': 'isResizingInitialized() || initialWidthCss() !== null',
38221
+ '[style.width]': 'isResizingInitialized() ? "var(--dynamic-width)" : "var(--initial-width)"',
38228
38222
  '[style.--initial-width]': '(isActive() && initialWidthCss() !== null) ? initialWidthCss() : "auto"',
38229
38223
  '[style.--dynamic-width]': 'constrainedWidth() + "%"',
38230
38224
  },
38231
38225
  }]
38232
- }], ctorParameters: () => [], propDecorators: { isActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "isActive", required: false }] }], minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], handlePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "handlePosition", required: false }] }], initialWidthCss: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialWidthCss", required: false }] }], onMouseUp: [{
38233
- type: HostListener,
38234
- args: ['document:mouseup']
38235
- }] } });
38226
+ }], ctorParameters: () => [], propDecorators: { isActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "isActive", required: false }] }], minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], handlePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "handlePosition", required: false }] }], initialWidthCss: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialWidthCss", required: false }] }] } });
38236
38227
 
38237
38228
  class ElderPaneComponent {
38238
38229
  constructor() {
38239
38230
  this.dragHandleDirective = inject(ElderDraggablePaneDirective, { optional: true });
38240
38231
  this.hasDragHandle = computed(() => this.dragHandleDirective?.isActive() ?? false, ...(ngDevMode ? [{ debugName: "hasDragHandle" }] : []));
38241
- this.hasDragHandleLeft = computed(() => this.dragHandleDirective?.handlePosition() === 'left', ...(ngDevMode ? [{ debugName: "hasDragHandleLeft" }] : []));
38242
- this.hasDragHandleRight = computed(() => this.dragHandleDirective?.handlePosition() === 'right', ...(ngDevMode ? [{ debugName: "hasDragHandleRight" }] : []));
38232
+ this.hasDragHandleLeft = computed(() => this.dragHandleDirective?.handlePosition() === 'start', ...(ngDevMode ? [{ debugName: "hasDragHandleLeft" }] : []));
38233
+ this.hasDragHandleRight = computed(() => this.dragHandleDirective?.handlePosition() === 'end', ...(ngDevMode ? [{ debugName: "hasDragHandleRight" }] : []));
38243
38234
  }
38244
38235
  onDragHandleMouseDown(event) {
38245
- // Delegate to the directive's mousedown handler
38246
- this.dragHandleDirective?.onMouseDown(event);
38236
+ if (this.dragHandleDirective) {
38237
+ this.dragHandleDirective.mouseDown$.next(event);
38238
+ }
38247
38239
  }
38248
38240
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: ElderPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38249
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: ElderPaneComponent, isStandalone: true, selector: "elder-pane", host: { classAttribute: "elder-pane" }, ngImport: i0, template: "@if (hasDragHandle()) {\n <div\n class=\"elder-pane-drag-handle\"\n [class.handle-left]=\"hasDragHandleLeft()\"\n [class.handle-right]=\"hasDragHandleRight()\"\n (mousedown)=\"onDragHandleMouseDown($event)\"\n ></div>\n}\n<div class=\"elder-pane-outer\">\n <div class=\"elder-pane-inner\">\n <ng-content select=\"elder-pane-header\"></ng-content>\n <ng-content select=\"elder-pane-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;position:relative;flex:1 1 0;min-width:0;min-height:0}:host.pane-with-drag-handle-initialized{flex:none}.elder-pane-outer{overflow:hidden;border-radius:var(--elder-pane-border-radius);background-color:var(--elder-pane-bg-color);position:relative;display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-inner{display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-drag-handle{position:absolute;top:0;bottom:0;width:4px;background-color:var(--md-sys-color-primary-container);cursor:col-resize;border-radius:3px;z-index:10;opacity:0;transition:.2s ease-in-out}.elder-pane-drag-handle:hover{opacity:1}.elder-pane-drag-handle.handle-left{left:-8px}.elder-pane-drag-handle.handle-right{right:-8px}:host.dragging .elder-pane-drag-handle{background-color:var(--md-sys-color-secondary-container);width:6px;opacity:1}:host.dragging .elder-pane-drag-handle.handle-left{left:-9px}:host.dragging .elder-pane-drag-handle.handle-right{right:-9px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38241
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: ElderPaneComponent, isStandalone: true, selector: "elder-pane", host: { classAttribute: "elder-pane" }, ngImport: i0, template: "@if (hasDragHandle()) {\n <div\n class=\"elder-pane-drag-handle\"\n [class.handle-left]=\"hasDragHandleLeft()\"\n [class.handle-right]=\"hasDragHandleRight()\"\n (mousedown)=\"onDragHandleMouseDown($event)\"\n ></div>\n}\n<div class=\"elder-pane-outer\">\n <div class=\"elder-pane-inner\">\n <ng-content select=\"elder-pane-header\"></ng-content>\n <ng-content select=\"elder-pane-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;position:relative;flex:1 1 0;min-width:0;min-height:0}.elder-pane-outer{overflow:hidden;border-radius:var(--elder-pane-border-radius);background-color:var(--elder-pane-bg-color);position:relative;display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-inner{display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-drag-handle{position:absolute;top:0;bottom:0;width:4px;background-color:var(--md-sys-color-primary-container);cursor:col-resize;border-radius:3px;z-index:10;opacity:0;transition:.2s ease-in-out}.elder-pane-drag-handle:hover{opacity:1}.elder-pane-drag-handle.handle-left{left:-8px}.elder-pane-drag-handle.handle-right{right:-8px}:host.dragging .elder-pane-drag-handle{background-color:var(--md-sys-color-secondary-container);width:6px;opacity:1}:host.dragging .elder-pane-drag-handle.handle-left{left:-9px}:host.dragging .elder-pane-drag-handle.handle-right{right:-9px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38250
38242
  }
38251
38243
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: ElderPaneComponent, decorators: [{
38252
38244
  type: Component,
38253
38245
  args: [{ selector: 'elder-pane', imports: [], host: {
38254
38246
  class: 'elder-pane',
38255
- }, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [], template: "@if (hasDragHandle()) {\n <div\n class=\"elder-pane-drag-handle\"\n [class.handle-left]=\"hasDragHandleLeft()\"\n [class.handle-right]=\"hasDragHandleRight()\"\n (mousedown)=\"onDragHandleMouseDown($event)\"\n ></div>\n}\n<div class=\"elder-pane-outer\">\n <div class=\"elder-pane-inner\">\n <ng-content select=\"elder-pane-header\"></ng-content>\n <ng-content select=\"elder-pane-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;position:relative;flex:1 1 0;min-width:0;min-height:0}:host.pane-with-drag-handle-initialized{flex:none}.elder-pane-outer{overflow:hidden;border-radius:var(--elder-pane-border-radius);background-color:var(--elder-pane-bg-color);position:relative;display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-inner{display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-drag-handle{position:absolute;top:0;bottom:0;width:4px;background-color:var(--md-sys-color-primary-container);cursor:col-resize;border-radius:3px;z-index:10;opacity:0;transition:.2s ease-in-out}.elder-pane-drag-handle:hover{opacity:1}.elder-pane-drag-handle.handle-left{left:-8px}.elder-pane-drag-handle.handle-right{right:-8px}:host.dragging .elder-pane-drag-handle{background-color:var(--md-sys-color-secondary-container);width:6px;opacity:1}:host.dragging .elder-pane-drag-handle.handle-left{left:-9px}:host.dragging .elder-pane-drag-handle.handle-right{right:-9px}\n"] }]
38247
+ }, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [], template: "@if (hasDragHandle()) {\n <div\n class=\"elder-pane-drag-handle\"\n [class.handle-left]=\"hasDragHandleLeft()\"\n [class.handle-right]=\"hasDragHandleRight()\"\n (mousedown)=\"onDragHandleMouseDown($event)\"\n ></div>\n}\n<div class=\"elder-pane-outer\">\n <div class=\"elder-pane-inner\">\n <ng-content select=\"elder-pane-header\"></ng-content>\n <ng-content select=\"elder-pane-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;position:relative;flex:1 1 0;min-width:0;min-height:0}.elder-pane-outer{overflow:hidden;border-radius:var(--elder-pane-border-radius);background-color:var(--elder-pane-bg-color);position:relative;display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-inner{display:flex;flex-flow:column nowrap;width:100%;height:100%}.elder-pane-drag-handle{position:absolute;top:0;bottom:0;width:4px;background-color:var(--md-sys-color-primary-container);cursor:col-resize;border-radius:3px;z-index:10;opacity:0;transition:.2s ease-in-out}.elder-pane-drag-handle:hover{opacity:1}.elder-pane-drag-handle.handle-left{left:-8px}.elder-pane-drag-handle.handle-right{right:-8px}:host.dragging .elder-pane-drag-handle{background-color:var(--md-sys-color-secondary-container);width:6px;opacity:1}:host.dragging .elder-pane-drag-handle.handle-left{left:-9px}:host.dragging .elder-pane-drag-handle.handle-right{right:-9px}\n"] }]
38256
38248
  }] });
38257
38249
 
38258
38250
  class ElderPaneContentComponent {