@softheon/armature 21.1.0 → 21.2.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.
@@ -3,7 +3,7 @@ import { CommonModule, DatePipe } from '@angular/common';
3
3
  import * as i1$1 from '@angular/common/http';
4
4
  import { HttpHeaders, provideHttpClient, withInterceptorsFromDi, HTTP_INTERCEPTORS } from '@angular/common/http';
5
5
  import * as i0 from '@angular/core';
6
- import { InjectionToken, Injectable, ViewChild, Input, Optional, Inject, Component, NgModule, EventEmitter, Output, ViewChildren, signal, inject, ChangeDetectionStrategy, DOCUMENT, isDevMode, HostListener, Directive, Renderer2, ElementRef, Pipe, ViewEncapsulation, Self, Host, APP_INITIALIZER, Injector, computed, DestroyRef, effect, ChangeDetectorRef, ErrorHandler } from '@angular/core';
6
+ import { InjectionToken, Injectable, ViewChild, Input, Optional, Inject, Component, NgModule, EventEmitter, Output, ViewChildren, signal, inject, ChangeDetectionStrategy, DOCUMENT, isDevMode, HostListener, Directive, Renderer2, ElementRef, Pipe, ViewEncapsulation, Self, Host, APP_INITIALIZER, Injector, computed, DestroyRef, effect, ChangeDetectorRef, ErrorHandler, NgZone } from '@angular/core';
7
7
  import * as i1$4 from '@angular/router';
8
8
  import { NavigationEnd, Router, RouterModule, NavigationStart, NavigationError } from '@angular/router';
9
9
  import { FlexLayoutModule } from '@ngbracket/ngx-layout';
@@ -10114,63 +10114,144 @@ class ResizePanelsComponent {
10114
10114
  /** Whether the panels should be resizable */
10115
10115
  this.resizable = true;
10116
10116
  // TODO: ⚠️ Output bindings should not be named "on", nor prefixed with it ...
10117
- // Using on in @Output() names causes confusion with native events and can break tooling (e.g., Angulars template type checking, IDE autocomplete).
10117
+ // Using on in @Output() names causes confusion with native events and can break tooling (e.g., Angular's template type checking, IDE autocomplete).
10118
10118
  // The Angular team explicitly discourages this pattern.
10119
- // run `npm run lint` to see error
10119
+ // run `npm run lint` to see this error
10120
10120
  /** The Resize Event */
10121
10121
  this.onResize = new EventEmitter();
10122
10122
  /** The Resize Start Event */
10123
10123
  this.onResizeStart = new EventEmitter();
10124
10124
  /** The Resize End Event */
10125
10125
  this.onResizeEnd = new EventEmitter();
10126
- /** Whether the user is currently resizing */
10127
- this.isResizing = false;
10126
+ /** Whether the user is currently resizing - using signal for better performance */
10127
+ this.isResizing = signal(false, ...(ngDevMode ? [{ debugName: "isResizing" }] : []));
10128
+ /** Cached style objects to avoid recalculation on every change detection */
10129
+ this.firstPanelStyle = signal({
10130
+ flex: 50,
10131
+ minWidth: 'auto',
10132
+ minHeight: 'auto',
10133
+ maxHeight: 'none'
10134
+ }, ...(ngDevMode ? [{ debugName: "firstPanelStyle" }] : []));
10135
+ this.secondPanelStyle = signal({
10136
+ flex: 50,
10137
+ minWidth: 'auto',
10138
+ minHeight: 'auto',
10139
+ maxHeight: 'none'
10140
+ }, ...(ngDevMode ? [{ debugName: "secondPanelStyle" }] : []));
10128
10141
  /** The first panel max height */
10129
10142
  this.firstPanelMaxHeight = 'none';
10130
10143
  /** The second panel max height */
10131
10144
  this.secondPanelMaxHeight = 'none';
10145
+ /** ResizeObserver for efficient content size tracking */
10146
+ this.resizeObserver = null;
10147
+ /** Animation frame ID for throttling */
10148
+ this.animationFrameId = null;
10149
+ /** Angular safe document reference */
10150
+ this.document = inject(DOCUMENT);
10151
+ /** Angular zone */
10152
+ this.ngZone = inject(NgZone);
10153
+ // Create bound handlers outside Angular zone
10154
+ this.boundMouseMoveHandler = this.onMouseMove.bind(this);
10155
+ this.boundMouseUpHandler = this.stopResize.bind(this);
10132
10156
  }
10133
10157
  /** Initializes the component */
10134
10158
  ngOnInit() {
10135
10159
  this.initialSplit = this.splitPosition;
10160
+ this.updatePanelStyles();
10161
+ this.setupResizeObserver();
10136
10162
  }
10137
10163
  /** On Changes Lifecycle Hook */
10138
10164
  ngOnChanges() {
10139
10165
  if (this.resizable && !!this.initialSplit) {
10140
10166
  this.splitPosition = this.initialSplit;
10141
10167
  }
10168
+ this.updatePanelStyles();
10142
10169
  }
10143
- /** Gets the style for the first panel */
10144
- getFirstPanelStyle() {
10145
- const contentHeight = this.firstPanel?.nativeElement?.children[0]?.getBoundingClientRect().height;
10146
- if (contentHeight < this.firstPanel?.nativeElement?.getBoundingClientRect().height) {
10147
- this.firstPanelMaxHeight = contentHeight + 'px';
10170
+ /** Cleanup on destroy */
10171
+ ngOnDestroy() {
10172
+ this.removeEventListeners();
10173
+ this.cleanupResizeObserver();
10174
+ if (this.animationFrameId !== null) {
10175
+ cancelAnimationFrame(this.animationFrameId);
10148
10176
  }
10149
- if (contentHeight > this.firstPanel?.nativeElement?.getBoundingClientRect().height) {
10150
- this.firstPanelMaxHeight = 'none';
10177
+ }
10178
+ /** Setup ResizeObserver for efficient content size tracking */
10179
+ setupResizeObserver() {
10180
+ if (typeof ResizeObserver === 'undefined') {
10181
+ return; // Fallback for older browsers
10151
10182
  }
10152
- return {
10153
- flex: this.splitPosition,
10154
- minWidth: this.direction === 'vertical' ? this.firstPanelMinSize : 'auto',
10155
- minHeight: this.direction === 'horizontal' ? this.firstPanelMinSize : 'auto',
10156
- maxHeight: this.direction === 'horizontal' ? this.firstPanelMaxHeight : 'none'
10157
- };
10183
+ this.ngZone.runOutsideAngular(() => {
10184
+ this.resizeObserver = new ResizeObserver(() => {
10185
+ this.updatePanelStyles();
10186
+ });
10187
+ // Observe content changes in panels
10188
+ if (this.firstPanel?.nativeElement?.children[0]) {
10189
+ this.resizeObserver.observe(this.firstPanel.nativeElement.children[0]);
10190
+ }
10191
+ if (this.secondPanel?.nativeElement?.children[0]) {
10192
+ this.resizeObserver.observe(this.secondPanel.nativeElement.children[0]);
10193
+ }
10194
+ });
10158
10195
  }
10159
- /** Gets the style for the second panel */
10160
- getSecondPanelStyle() {
10161
- const contentHeight = this.secondPanel?.nativeElement?.children[0]?.getBoundingClientRect().height;
10162
- if (contentHeight < this.secondPanel?.nativeElement?.getBoundingClientRect().height) {
10163
- this.secondPanelMaxHeight = contentHeight + 'px';
10196
+ /** Cleanup ResizeObserver */
10197
+ cleanupResizeObserver() {
10198
+ if (this.resizeObserver) {
10199
+ this.resizeObserver.disconnect();
10200
+ this.resizeObserver = null;
10164
10201
  }
10165
- if (contentHeight > this.secondPanel?.nativeElement?.getBoundingClientRect().height) {
10166
- this.secondPanelMaxHeight = 'none';
10202
+ }
10203
+ /** Update cached panel styles - called only when necessary */
10204
+ updatePanelStyles() {
10205
+ this.updateFirstPanelStyle();
10206
+ this.updateSecondPanelStyle();
10207
+ }
10208
+ /** Calculate and cache first panel style */
10209
+ updateFirstPanelStyle() {
10210
+ let maxHeight = 'none';
10211
+ if (this.firstPanel?.nativeElement?.children[0]) {
10212
+ const contentHeight = this.firstPanel.nativeElement.children[0].getBoundingClientRect().height;
10213
+ const panelHeight = this.firstPanel.nativeElement.getBoundingClientRect().height;
10214
+ if (contentHeight < panelHeight) {
10215
+ maxHeight = contentHeight + 'px';
10216
+ }
10167
10217
  }
10168
- return {
10218
+ this.firstPanelMaxHeight = maxHeight;
10219
+ this.firstPanelStyle.set({
10220
+ flex: this.splitPosition,
10221
+ minWidth: this.direction === 'vertical' ? this.firstPanelMinSize || 'auto' : 'auto',
10222
+ minHeight: this.direction === 'horizontal' ? this.firstPanelMinSize || 'auto' : 'auto',
10223
+ maxHeight: this.direction === 'horizontal' ? maxHeight : 'none'
10224
+ });
10225
+ }
10226
+ /** Calculate and cache second panel style */
10227
+ updateSecondPanelStyle() {
10228
+ let maxHeight = 'none';
10229
+ if (this.secondPanel?.nativeElement?.children[0]) {
10230
+ const contentHeight = this.secondPanel.nativeElement.children[0].getBoundingClientRect().height;
10231
+ const panelHeight = this.secondPanel.nativeElement.getBoundingClientRect().height;
10232
+ if (contentHeight < panelHeight) {
10233
+ maxHeight = contentHeight + 'px';
10234
+ }
10235
+ }
10236
+ this.secondPanelMaxHeight = maxHeight;
10237
+ this.secondPanelStyle.set({
10169
10238
  flex: 100 - this.splitPosition,
10170
- minWidth: this.direction === 'vertical' ? this.secondPanelMinSize : 'auto',
10171
- minHeight: this.direction === 'horizontal' ? this.secondPanelMinSize : 'auto',
10172
- maxHeight: this.direction === 'horizontal' ? this.secondPanelMaxHeight : 'none'
10173
- };
10239
+ minWidth: this.direction === 'vertical' ? this.secondPanelMinSize || 'auto' : 'auto',
10240
+ minHeight: this.direction === 'horizontal' ? this.secondPanelMinSize || 'auto' : 'auto',
10241
+ maxHeight: this.direction === 'horizontal' ? maxHeight : 'none'
10242
+ });
10243
+ }
10244
+ /** Add event listeners outside Angular zone */
10245
+ addEventListeners() {
10246
+ this.ngZone.runOutsideAngular(() => {
10247
+ this.document.addEventListener('mousemove', this.boundMouseMoveHandler);
10248
+ this.document.addEventListener('mouseup', this.boundMouseUpHandler);
10249
+ });
10250
+ }
10251
+ /** Remove event listeners */
10252
+ removeEventListeners() {
10253
+ this.document.removeEventListener('mousemove', this.boundMouseMoveHandler);
10254
+ this.document.removeEventListener('mouseup', this.boundMouseUpHandler);
10174
10255
  }
10175
10256
  /** Start resizing */
10176
10257
  startResize() {
@@ -10179,17 +10260,26 @@ class ResizePanelsComponent {
10179
10260
  firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,
10180
10261
  secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight
10181
10262
  });
10182
- this.isResizing = true;
10263
+ this.isResizing.set(true);
10264
+ this.addEventListeners();
10183
10265
  }
10184
10266
  /** Stop resizing on mouse up */
10185
10267
  stopResize() {
10186
- if (this.isResizing) {
10187
- this.isResizing = false;
10188
- this.onResizeEnd.emit({
10189
- splitPosition: this.splitPosition,
10190
- firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,
10191
- secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight
10268
+ if (this.isResizing()) {
10269
+ this.ngZone.run(() => {
10270
+ this.isResizing.set(false);
10271
+ this.onResizeEnd.emit({
10272
+ splitPosition: this.splitPosition,
10273
+ firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,
10274
+ secondPanelSize: this.direction === 'vertical' ? this.secondPanel.nativeElement.clientWidth : this.secondPanel.nativeElement.clientHeight
10275
+ });
10192
10276
  });
10277
+ this.removeEventListeners();
10278
+ // Cancel any pending animation frame
10279
+ if (this.animationFrameId !== null) {
10280
+ cancelAnimationFrame(this.animationFrameId);
10281
+ this.animationFrameId = null;
10282
+ }
10193
10283
  }
10194
10284
  }
10195
10285
  /**
@@ -10197,10 +10287,16 @@ class ResizePanelsComponent {
10197
10287
  * @param event the mouse event
10198
10288
  */
10199
10289
  onMouseMove(event) {
10200
- if (this.isResizing) {
10290
+ if (this.isResizing()) {
10201
10291
  event.preventDefault();
10202
10292
  event.stopPropagation();
10203
- this.resize(event);
10293
+ // Use requestAnimationFrame for smoother updates
10294
+ if (this.animationFrameId === null) {
10295
+ this.animationFrameId = requestAnimationFrame(() => {
10296
+ this.resize(event);
10297
+ this.animationFrameId = null;
10298
+ });
10299
+ }
10204
10300
  }
10205
10301
  }
10206
10302
  /**
@@ -10213,6 +10309,8 @@ class ResizePanelsComponent {
10213
10309
  const mousePos = this.direction === 'vertical' ? event.x : event.y;
10214
10310
  const pos = ((mousePos - containerPos) / containerSize) * 100;
10215
10311
  this.splitPosition = Math.min(Math.max(pos, 1), 99);
10312
+ // Update cached styles
10313
+ this.updatePanelStyles();
10216
10314
  this.onResize.emit({
10217
10315
  splitPosition: this.splitPosition,
10218
10316
  firstPanelSize: this.direction === 'vertical' ? this.firstPanel.nativeElement.clientWidth : this.firstPanel.nativeElement.clientHeight,
@@ -10220,12 +10318,12 @@ class ResizePanelsComponent {
10220
10318
  });
10221
10319
  }
10222
10320
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ResizePanelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10223
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ResizePanelsComponent, isStandalone: false, selector: "sof-ar-resize-panels", inputs: { direction: "direction", splitPosition: "splitPosition", firstPanelMinSize: "firstPanelMinSize", secondPanelMinSize: "secondPanelMinSize", resizable: "resizable" }, outputs: { onResize: "onResize", onResizeStart: "onResizeStart", onResizeEnd: "onResizeEnd" }, host: { listeners: { "window:mouseup": "stopResize()", "window:mousemove": "onMouseMove($event)" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "firstPanel", first: true, predicate: ["firstPanel"], descendants: true }, { propertyName: "secondPanel", first: true, predicate: ["secondPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"sof-ar-resize-panels-container\"\r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n\r\n <!-- First Panel -->\r\n <div [ngStyle]=\"getFirstPanelStyle()\" #firstPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-first]\"></ng-content>\r\n </div>\r\n\r\n <!-- Drag Handle / Border -->\r\n @if (resizable) {\r\n <div class=\"sof-ar-resize-panels-border\" [ngClass]=\"direction\">\r\n <div class=\"sof-ar-resize-panels-drag-handle\" (mousedown)=\"startResize()\"\r\n [ngClass]=\"{ \r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Second Panel -->\r\n <div [ngStyle]=\"getSecondPanelStyle()\" #secondPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-second]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".sof-ar-resize-panels-container{width:100%;height:100%;display:flex}.sof-ar-resize-panels-container.vertical{flex-direction:row}.sof-ar-resize-panels-container.horizontal{flex-direction:column}.sof-ar-resize-panels-container.vertical.resizing{cursor:ew-resize}.sof-ar-resize-panels-container.horizontal.resizing{cursor:ns-resize}.sof-ar-resize-panels-drag-handle{background-color:transparent;position:relative;transition:background-color .1s linear;transition-delay:0s;z-index:1000}.sof-ar-resize-panels-drag-handle:hover,.sof-ar-resize-panels-drag-handle.resizing{background-color:var(--primary-color-500-parts);transition-delay:.25s}.sof-ar-resize-panels-drag-handle.vertical:hover{cursor:ew-resize}.sof-ar-resize-panels-drag-handle.horizontal:hover{cursor:ns-resize}.sof-ar-resize-panels-drag-handle.vertical{width:5px;height:100%;right:2px}.sof-ar-resize-panels-drag-handle.horizontal{width:100%;height:5px;bottom:2px}.sof-ar-resize-panels-border{background-color:#000}.sof-ar-resize-panels-border.vertical{width:1px}.sof-ar-resize-panels-border.horizontal{height:1px}.sof-ar-resize-panels-panel-content{overflow:auto}.sof-ar-resize-panels-panel-content:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
10321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ResizePanelsComponent, isStandalone: false, selector: "sof-ar-resize-panels", inputs: { direction: "direction", splitPosition: "splitPosition", firstPanelMinSize: "firstPanelMinSize", secondPanelMinSize: "secondPanelMinSize", resizable: "resizable" }, outputs: { onResize: "onResize", onResizeStart: "onResizeStart", onResizeEnd: "onResizeEnd" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "firstPanel", first: true, predicate: ["firstPanel"], descendants: true }, { propertyName: "secondPanel", first: true, predicate: ["secondPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div \r\n #container \r\n class=\"sof-ar-resize-panels-container\" \r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing()\r\n }\">\r\n <!-- First Panel -->\r\n <div #firstPanel [ngStyle]=\"firstPanelStyle()\" class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-first]\"></ng-content>\r\n </div>\r\n <!-- Drag Handle / Border -->\r\n @if (resizable) {\r\n <div class=\"sof-ar-resize-panels-border\" [ngClass]=\"direction\">\r\n <div \r\n class=\"sof-ar-resize-panels-drag-handle\" \r\n (mousedown)=\"startResize()\" \r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing()\r\n }\">\r\n </div>\r\n </div>\r\n }\r\n <!-- Second Panel -->\r\n <div #secondPanel [ngStyle]=\"secondPanelStyle()\" class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-second]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".sof-ar-resize-panels-container{width:100%;height:100%;display:flex;contain:layout style}.sof-ar-resize-panels-container.vertical{flex-direction:row}.sof-ar-resize-panels-container.horizontal{flex-direction:column}.sof-ar-resize-panels-container.vertical.resizing{cursor:ew-resize;will-change:cursor}.sof-ar-resize-panels-container.horizontal.resizing{cursor:ns-resize;will-change:cursor}.sof-ar-resize-panels-drag-handle{background-color:transparent;position:relative;transition:background-color .1s linear;transition-delay:0s;z-index:1000;will-change:background-color}.sof-ar-resize-panels-drag-handle:hover,.sof-ar-resize-panels-drag-handle.resizing{background-color:var(--primary-color-500-parts);transition-delay:.25s}.sof-ar-resize-panels-drag-handle.vertical:hover{cursor:ew-resize}.sof-ar-resize-panels-drag-handle.horizontal:hover{cursor:ns-resize}.sof-ar-resize-panels-drag-handle.vertical{width:5px;height:100%;right:2px}.sof-ar-resize-panels-drag-handle.horizontal{width:100%;height:5px;bottom:2px}.sof-ar-resize-panels-border{background-color:#000}.sof-ar-resize-panels-border.vertical{width:1px}.sof-ar-resize-panels-border.horizontal{height:1px}.sof-ar-resize-panels-panel-content{overflow:auto;contain:layout style paint;transform:translateZ(0);-webkit-overflow-scrolling:touch}.sof-ar-resize-panels-panel-content:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10224
10322
  }
10225
10323
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ResizePanelsComponent, decorators: [{
10226
10324
  type: Component,
10227
- args: [{ selector: 'sof-ar-resize-panels', standalone: false, template: "<div #container class=\"sof-ar-resize-panels-container\"\r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n\r\n <!-- First Panel -->\r\n <div [ngStyle]=\"getFirstPanelStyle()\" #firstPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-first]\"></ng-content>\r\n </div>\r\n\r\n <!-- Drag Handle / Border -->\r\n @if (resizable) {\r\n <div class=\"sof-ar-resize-panels-border\" [ngClass]=\"direction\">\r\n <div class=\"sof-ar-resize-panels-drag-handle\" (mousedown)=\"startResize()\"\r\n [ngClass]=\"{ \r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing\r\n }\">\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Second Panel -->\r\n <div [ngStyle]=\"getSecondPanelStyle()\" #secondPanel class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-second]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".sof-ar-resize-panels-container{width:100%;height:100%;display:flex}.sof-ar-resize-panels-container.vertical{flex-direction:row}.sof-ar-resize-panels-container.horizontal{flex-direction:column}.sof-ar-resize-panels-container.vertical.resizing{cursor:ew-resize}.sof-ar-resize-panels-container.horizontal.resizing{cursor:ns-resize}.sof-ar-resize-panels-drag-handle{background-color:transparent;position:relative;transition:background-color .1s linear;transition-delay:0s;z-index:1000}.sof-ar-resize-panels-drag-handle:hover,.sof-ar-resize-panels-drag-handle.resizing{background-color:var(--primary-color-500-parts);transition-delay:.25s}.sof-ar-resize-panels-drag-handle.vertical:hover{cursor:ew-resize}.sof-ar-resize-panels-drag-handle.horizontal:hover{cursor:ns-resize}.sof-ar-resize-panels-drag-handle.vertical{width:5px;height:100%;right:2px}.sof-ar-resize-panels-drag-handle.horizontal{width:100%;height:5px;bottom:2px}.sof-ar-resize-panels-border{background-color:#000}.sof-ar-resize-panels-border.vertical{width:1px}.sof-ar-resize-panels-border.horizontal{height:1px}.sof-ar-resize-panels-panel-content{overflow:auto}.sof-ar-resize-panels-panel-content:empty{display:none}\n"] }]
10228
- }], propDecorators: { direction: [{
10325
+ args: [{ selector: 'sof-ar-resize-panels', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div \r\n #container \r\n class=\"sof-ar-resize-panels-container\" \r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing()\r\n }\">\r\n <!-- First Panel -->\r\n <div #firstPanel [ngStyle]=\"firstPanelStyle()\" class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-first]\"></ng-content>\r\n </div>\r\n <!-- Drag Handle / Border -->\r\n @if (resizable) {\r\n <div class=\"sof-ar-resize-panels-border\" [ngClass]=\"direction\">\r\n <div \r\n class=\"sof-ar-resize-panels-drag-handle\" \r\n (mousedown)=\"startResize()\" \r\n [ngClass]=\"{\r\n 'vertical': direction === 'vertical',\r\n 'horizontal': direction === 'horizontal',\r\n 'resizing': isResizing()\r\n }\">\r\n </div>\r\n </div>\r\n }\r\n <!-- Second Panel -->\r\n <div #secondPanel [ngStyle]=\"secondPanelStyle()\" class=\"sof-ar-resize-panels-panel-content\">\r\n <ng-content select=\"[sof-ar-resize-panel-second]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".sof-ar-resize-panels-container{width:100%;height:100%;display:flex;contain:layout style}.sof-ar-resize-panels-container.vertical{flex-direction:row}.sof-ar-resize-panels-container.horizontal{flex-direction:column}.sof-ar-resize-panels-container.vertical.resizing{cursor:ew-resize;will-change:cursor}.sof-ar-resize-panels-container.horizontal.resizing{cursor:ns-resize;will-change:cursor}.sof-ar-resize-panels-drag-handle{background-color:transparent;position:relative;transition:background-color .1s linear;transition-delay:0s;z-index:1000;will-change:background-color}.sof-ar-resize-panels-drag-handle:hover,.sof-ar-resize-panels-drag-handle.resizing{background-color:var(--primary-color-500-parts);transition-delay:.25s}.sof-ar-resize-panels-drag-handle.vertical:hover{cursor:ew-resize}.sof-ar-resize-panels-drag-handle.horizontal:hover{cursor:ns-resize}.sof-ar-resize-panels-drag-handle.vertical{width:5px;height:100%;right:2px}.sof-ar-resize-panels-drag-handle.horizontal{width:100%;height:5px;bottom:2px}.sof-ar-resize-panels-border{background-color:#000}.sof-ar-resize-panels-border.vertical{width:1px}.sof-ar-resize-panels-border.horizontal{height:1px}.sof-ar-resize-panels-panel-content{overflow:auto;contain:layout style paint;transform:translateZ(0);-webkit-overflow-scrolling:touch}.sof-ar-resize-panels-panel-content:empty{display:none}\n"] }]
10326
+ }], ctorParameters: () => [], propDecorators: { direction: [{
10229
10327
  type: Input
10230
10328
  }], splitPosition: [{
10231
10329
  type: Input
@@ -10250,12 +10348,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
10250
10348
  }], secondPanel: [{
10251
10349
  type: ViewChild,
10252
10350
  args: ['secondPanel']
10253
- }], stopResize: [{
10254
- type: HostListener,
10255
- args: ['window:mouseup']
10256
- }], onMouseMove: [{
10257
- type: HostListener,
10258
- args: ['window:mousemove', ['$event']]
10259
10351
  }] } });
10260
10352
 
10261
10353
  /** The Resize Panels Module */