@skyux/core 8.0.0-alpha.0 → 8.0.0-alpha.2

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,8 +3,8 @@ import { NgModule, Injectable, EventEmitter, Directive, Input, Output, Injector,
3
3
  import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
4
4
  import * as i5 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
6
- import { Subject, fromEvent, BehaviorSubject, ReplaySubject, Observable, of } from 'rxjs';
7
- import { takeUntil, debounceTime, finalize } from 'rxjs/operators';
6
+ import { Subject, fromEvent, BehaviorSubject, ReplaySubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
7
+ import { takeUntil, debounceTime, finalize, switchMap, map } from 'rxjs/operators';
8
8
  import * as i1 from '@skyux/i18n';
9
9
  import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
10
10
  import * as i4 from '@angular/router';
@@ -1506,7 +1506,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1506
1506
  */
1507
1507
  const SKY_LOG_LEVEL = new InjectionToken('SkyLogLevel');
1508
1508
 
1509
- var _SkyLogService_instances, _SkyLogService_applicationLogLevel, _SkyLogService_formatter, _SkyLogService_convertStringToCode, _SkyLogService_canLog, _SkyLogService_logBasedOnLevel;
1509
+ var _SkyLogService_instances, _SkyLogService_applicationLogLevel, _SkyLogService_formatter, _SkyLogService_previousWarnings, _SkyLogService_convertStringToCode, _SkyLogService_canLog, _SkyLogService_logBasedOnLevel, _SkyLogService_logWithParams, _SkyLogService_buildMessageKey;
1510
1510
  /**
1511
1511
  * Logs information to the console based on the application's log level as provided by the `SKY_LOG_LEVEL` injection token. If no token is provided, only `error` logs will be shown.
1512
1512
  * @internal
@@ -1516,6 +1516,7 @@ class SkyLogService {
1516
1516
  _SkyLogService_instances.add(this);
1517
1517
  _SkyLogService_applicationLogLevel.set(this, void 0);
1518
1518
  _SkyLogService_formatter.set(this, void 0);
1519
+ _SkyLogService_previousWarnings.set(this, new Set());
1519
1520
  __classPrivateFieldSet(this, _SkyLogService_formatter, formatter, "f");
1520
1521
  __classPrivateFieldSet(this, _SkyLogService_applicationLogLevel, applicationLogLevel ?? 3 /* SkyLogLevel.Error */, "f");
1521
1522
  }
@@ -1529,26 +1530,26 @@ class SkyLogService {
1529
1530
  const logLevel = args?.logLevel ?? 2 /* SkyLogLevel.Warn */;
1530
1531
  name = __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_convertStringToCode).call(this, name);
1531
1532
  if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, logLevel)) {
1532
- const localizedStrings = [];
1533
+ const messageParts = [];
1533
1534
  if (args?.deprecationMajorVersion) {
1534
- localizedStrings.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('{0} is deprecated starting in SKY UX {1}.', name, args.deprecationMajorVersion.toLocaleString()));
1535
+ messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('{0} is deprecated starting in SKY UX {1}.', name, args.deprecationMajorVersion.toLocaleString()));
1535
1536
  }
1536
1537
  else {
1537
- localizedStrings.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('{0} is deprecated.', name));
1538
+ messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('{0} is deprecated.', name));
1538
1539
  }
1539
1540
  if (args?.removalMajorVersion) {
1540
- localizedStrings.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('We will remove it in version {0}.', args.removalMajorVersion.toLocaleString()));
1541
+ messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('We will remove it in version {0}.', args.removalMajorVersion.toLocaleString()));
1541
1542
  }
1542
1543
  else {
1543
- localizedStrings.push('We will remove it in a future major version.');
1544
+ messageParts.push('We will remove it in a future major version.');
1544
1545
  }
1545
1546
  if (args?.replacementRecommendation) {
1546
- localizedStrings.push(args.replacementRecommendation);
1547
+ messageParts.push(args.replacementRecommendation);
1547
1548
  }
1548
1549
  if (args?.moreInfoUrl) {
1549
- localizedStrings.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('For more information, see {0}.', args.moreInfoUrl));
1550
+ messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('For more information, see {0}.', args.moreInfoUrl));
1550
1551
  }
1551
- __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logBasedOnLevel).call(this, logLevel, localizedStrings.join(' '));
1552
+ __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logBasedOnLevel).call(this, logLevel, messageParts.join(' '));
1552
1553
  }
1553
1554
  return Promise.resolve();
1554
1555
  }
@@ -1559,12 +1560,7 @@ class SkyLogService {
1559
1560
  */
1560
1561
  error(message, params) {
1561
1562
  if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, 3 /* SkyLogLevel.Error */)) {
1562
- if (params) {
1563
- console.error(message, ...params);
1564
- }
1565
- else {
1566
- console.error(message);
1567
- }
1563
+ __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logWithParams).call(this, 'error', message, params);
1568
1564
  }
1569
1565
  }
1570
1566
  /**
@@ -1574,12 +1570,7 @@ class SkyLogService {
1574
1570
  */
1575
1571
  info(message, params) {
1576
1572
  if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, 1 /* SkyLogLevel.Info */)) {
1577
- if (params) {
1578
- console.log(message, ...params);
1579
- }
1580
- else {
1581
- console.log(message);
1582
- }
1573
+ __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logWithParams).call(this, 'log', message, params);
1583
1574
  }
1584
1575
  }
1585
1576
  /**
@@ -1589,16 +1580,17 @@ class SkyLogService {
1589
1580
  */
1590
1581
  warn(message, params) {
1591
1582
  if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, 2 /* SkyLogLevel.Warn */)) {
1592
- if (params) {
1593
- console.warn(message, ...params);
1594
- }
1595
- else {
1596
- console.warn(message);
1583
+ const messageKey = __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_buildMessageKey).call(this, message, params);
1584
+ // Only log each warning once per application instance to avoid drowning out other
1585
+ // important messages in the console.
1586
+ if (!__classPrivateFieldGet(this, _SkyLogService_previousWarnings, "f").has(message)) {
1587
+ __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logWithParams).call(this, 'warn', message, params);
1588
+ __classPrivateFieldGet(this, _SkyLogService_previousWarnings, "f").add(messageKey);
1597
1589
  }
1598
1590
  }
1599
1591
  }
1600
1592
  }
1601
- _SkyLogService_applicationLogLevel = new WeakMap(), _SkyLogService_formatter = new WeakMap(), _SkyLogService_instances = new WeakSet(), _SkyLogService_convertStringToCode = function _SkyLogService_convertStringToCode(typeString) {
1593
+ _SkyLogService_applicationLogLevel = new WeakMap(), _SkyLogService_formatter = new WeakMap(), _SkyLogService_previousWarnings = new WeakMap(), _SkyLogService_instances = new WeakSet(), _SkyLogService_convertStringToCode = function _SkyLogService_convertStringToCode(typeString) {
1602
1594
  if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {
1603
1595
  typeString = '`' + typeString + '`';
1604
1596
  }
@@ -1617,6 +1609,19 @@ _SkyLogService_applicationLogLevel = new WeakMap(), _SkyLogService_formatter = n
1617
1609
  this.error(message, params);
1618
1610
  break;
1619
1611
  }
1612
+ }, _SkyLogService_logWithParams = function _SkyLogService_logWithParams(logMethod, message, params) {
1613
+ if (params) {
1614
+ console[logMethod](message, ...params);
1615
+ }
1616
+ else {
1617
+ console[logMethod](message);
1618
+ }
1619
+ }, _SkyLogService_buildMessageKey = function _SkyLogService_buildMessageKey(message, params) {
1620
+ let key = message;
1621
+ if (params?.length) {
1622
+ key = `${key} ${params.join(' ')}`;
1623
+ }
1624
+ return key;
1620
1625
  };
1621
1626
  SkyLogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyLogService, deps: [{ token: SkyAppFormat }, { token: SKY_LOG_LEVEL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1622
1627
  SkyLogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyLogService, providedIn: 'root' });
@@ -1827,7 +1832,7 @@ class NumericOptions {
1827
1832
  }
1828
1833
  }
1829
1834
 
1830
- // This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old
1835
+ /* eslint-disable eqeqeq */
1831
1836
  function isNumeric(value) {
1832
1837
  return !isNaN(value - parseFloat(value));
1833
1838
  }
@@ -2213,6 +2218,11 @@ class SkyOverlayInstance {
2213
2218
  }
2214
2219
  _SkyOverlayInstance_backdropClick = new WeakMap(), _SkyOverlayInstance_backdropClickObs = new WeakMap(), _SkyOverlayInstance_closed = new WeakMap(), _SkyOverlayInstance_closedObs = new WeakMap();
2215
2220
 
2221
+ /**
2222
+ * @internal
2223
+ */
2224
+ const SKY_STACKING_CONTEXT = new InjectionToken('SkyStackingContext');
2225
+
2216
2226
  /**
2217
2227
  * Contextual information for each overlay.
2218
2228
  * @internal
@@ -2248,6 +2258,7 @@ class SkyOverlayComponent {
2248
2258
  this.enablePointerEvents = false;
2249
2259
  this.showBackdrop = false;
2250
2260
  this.zIndex = `${++uniqueZIndex}`;
2261
+ this.clipPath$ = new ReplaySubject(1);
2251
2262
  _SkyOverlayComponent_backdropClick.set(this, void 0);
2252
2263
  _SkyOverlayComponent_backdropClickObs.set(this, void 0);
2253
2264
  _SkyOverlayComponent_changeDetector.set(this, void 0);
@@ -2300,7 +2311,17 @@ class SkyOverlayComponent {
2300
2311
  }
2301
2312
  this.targetRef.clear();
2302
2313
  const injector = Injector.create({
2303
- providers,
2314
+ providers: [
2315
+ {
2316
+ provide: SKY_STACKING_CONTEXT,
2317
+ useValue: {
2318
+ zIndex: new BehaviorSubject(parseInt(this.zIndex, 10))
2319
+ .asObservable()
2320
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyOverlayComponent_ngUnsubscribe, "f"))),
2321
+ },
2322
+ },
2323
+ ...providers,
2324
+ ],
2304
2325
  parent: __classPrivateFieldGet(this, _SkyOverlayComponent_injector, "f"),
2305
2326
  });
2306
2327
  const componentRef = this.targetRef.createComponent(component, {
@@ -2318,6 +2339,9 @@ class SkyOverlayComponent {
2318
2339
  this.targetRef.clear();
2319
2340
  return this.targetRef.createEmbeddedView(templateRef, context);
2320
2341
  }
2342
+ updateClipPath(clipPath) {
2343
+ this.clipPath$.next(clipPath);
2344
+ }
2321
2345
  }
2322
2346
  _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdropClickObs = new WeakMap(), _SkyOverlayComponent_changeDetector = new WeakMap(), _SkyOverlayComponent_closed = new WeakMap(), _SkyOverlayComponent_closedObs = new WeakMap(), _SkyOverlayComponent_context = new WeakMap(), _SkyOverlayComponent_coreAdapter = new WeakMap(), _SkyOverlayComponent_injector = new WeakMap(), _SkyOverlayComponent_ngUnsubscribe = new WeakMap(), _SkyOverlayComponent_router = new WeakMap(), _SkyOverlayComponent_routerSubscription = new WeakMap(), _SkyOverlayComponent_instances = new WeakSet(), _SkyOverlayComponent_applyConfig = function _SkyOverlayComponent_applyConfig(config) {
2323
2347
  this.wrapperClass = config.wrapperClass || '';
@@ -2357,10 +2381,10 @@ _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdro
2357
2381
  }
2358
2382
  };
2359
2383
  SkyOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyOverlayComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: SkyCoreAdapterService }, { token: SkyOverlayContext }, { token: SkyIdService }, { token: i4.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2360
- SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2384
+ SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2361
2385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyOverlayComponent, decorators: [{
2362
2386
  type: Component,
2363
- args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"wrapperClass\"\n [style.zIndex]=\"zIndex\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
2387
+ args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{position:fixed;inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
2364
2388
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: SkyCoreAdapterService }, { type: SkyOverlayContext }, { type: SkyIdService }, { type: i4.Router, decorators: [{
2365
2389
  type: Optional
2366
2390
  }] }]; }, propDecorators: { id: [{
@@ -2815,18 +2839,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
2815
2839
  }]
2816
2840
  }], ctorParameters: function () { return [{ type: SkyResizeObserverService }]; } });
2817
2841
 
2818
- var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible;
2842
+ var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_resizeObserverSvc, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible, _SkyScrollableHostService_getViewportSize;
2819
2843
  function notifySubscribers(subscribers, item) {
2820
2844
  for (const subscriber of subscribers) {
2821
2845
  subscriber.next(item);
2822
2846
  }
2823
2847
  }
2824
2848
  class SkyScrollableHostService {
2825
- constructor(mutationObserverSvc, windowRef) {
2849
+ constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
2826
2850
  _SkyScrollableHostService_instances.add(this);
2827
2851
  _SkyScrollableHostService_mutationObserverSvc.set(this, void 0);
2828
2852
  _SkyScrollableHostService_windowRef.set(this, void 0);
2853
+ _SkyScrollableHostService_resizeObserverSvc.set(this, void 0);
2829
2854
  __classPrivateFieldSet(this, _SkyScrollableHostService_mutationObserverSvc, mutationObserverSvc, "f");
2855
+ __classPrivateFieldSet(this, _SkyScrollableHostService_resizeObserverSvc, resizeObserverSvc, "f");
2830
2856
  __classPrivateFieldSet(this, _SkyScrollableHostService_windowRef, windowRef, "f");
2831
2857
  }
2832
2858
  /**
@@ -2940,8 +2966,30 @@ class SkyScrollableHostService {
2940
2966
  });
2941
2967
  });
2942
2968
  }
2943
- }
2944
- _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
2969
+ watchScrollableHostClipPathChanges(elementRef) {
2970
+ if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f")) {
2971
+ return of('none');
2972
+ }
2973
+ return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
2974
+ if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f") ||
2975
+ !scrollableHost ||
2976
+ scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
2977
+ return of('none');
2978
+ }
2979
+ return concat([
2980
+ of(undefined),
2981
+ __classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
2982
+ ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
2983
+ const viewportSize = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_getViewportSize).call(this);
2984
+ const { top, left, width, height } = scrollableHost.getBoundingClientRect();
2985
+ const right = Math.max(viewportSize.width - left - width, 0);
2986
+ const bottom = Math.max(viewportSize.height - top - height, 0);
2987
+ return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
2988
+ }));
2989
+ }));
2990
+ }
2991
+ }
2992
+ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
2945
2993
  const regex = /(auto|scroll)/;
2946
2994
  const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
2947
2995
  const bodyObj = windowObj.document.body;
@@ -2981,16 +3029,25 @@ _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHos
2981
3029
  subtree: true,
2982
3030
  });
2983
3031
  }, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
2984
- return elementRef.nativeElement.offsetParent;
3032
+ return !!elementRef.nativeElement?.offsetParent;
3033
+ }, _SkyScrollableHostService_getViewportSize = function _SkyScrollableHostService_getViewportSize() {
3034
+ const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
3035
+ const docElem = win.document.documentElement;
3036
+ return {
3037
+ width: docElem.clientWidth,
3038
+ height: docElem.clientHeight,
3039
+ };
2985
3040
  };
2986
- SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
3041
+ SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }, { token: SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
2987
3042
  SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
2988
3043
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyScrollableHostService, decorators: [{
2989
3044
  type: Injectable,
2990
3045
  args: [{
2991
3046
  providedIn: 'root',
2992
3047
  }]
2993
- }], ctorParameters: function () { return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }]; } });
3048
+ }], ctorParameters: function () { return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }, { type: SkyResizeObserverService, decorators: [{
3049
+ type: Optional
3050
+ }] }]; } });
2994
3051
 
2995
3052
  var _SkyAppTitleService_title;
2996
3053
  /**
@@ -3574,5 +3631,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
3574
3631
  * Generated bundle index. Do not edit.
3575
3632
  */
3576
3633
 
3577
- export { NumericOptions, SKY_LOG_LEVEL, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, getWindow, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
3634
+ export { NumericOptions, SKY_LOG_LEVEL, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, getWindow, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
3578
3635
  //# sourceMappingURL=skyux-core.mjs.map