@fundamental-ngx/core 0.35.5-rc.6 → 0.36.0-rc.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.
- package/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/content-density/classes/content-density-observer.settings.d.ts +3 -1
- package/content-density/classes/deprecated-content-density.directive.d.ts +20 -0
- package/content-density/content-density.types.d.ts +2 -1
- package/content-density/esm2020/classes/content-density-observer.settings.mjs +1 -1
- package/content-density/esm2020/classes/deprecated-content-density.directive.mjs +44 -0
- package/content-density/esm2020/content-density.types.mjs +2 -1
- package/content-density/esm2020/directives/content-density.directive.mjs +11 -3
- package/content-density/esm2020/helpers/density-type-checkers.mjs +3 -2
- package/content-density/esm2020/helpers/get-changes-source.provider.mjs +8 -5
- package/content-density/esm2020/public_api.mjs +3 -1
- package/content-density/esm2020/services/content-density-observer.service.mjs +58 -6
- package/content-density/esm2020/variables/default-content-density-consumer-config.mjs +3 -2
- package/content-density/fesm2015/fundamental-ngx-core-content-density.mjs +119 -17
- package/content-density/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/content-density/fesm2020/fundamental-ngx-core-content-density.mjs +121 -16
- package/content-density/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/content-density/helpers/density-type-checkers.d.ts +4 -4
- package/content-density/package.json +3 -3
- package/content-density/public_api.d.ts +2 -0
- package/content-density/services/content-density-observer.service.d.ts +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/dialog-service/dialog.service.d.ts +6 -4
- package/dialog/esm2020/dialog-header/dialog-header.component.mjs +5 -4
- package/dialog/esm2020/dialog-service/dialog.service.mjs +12 -6
- package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs +18 -12
- package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs +18 -12
- package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/content-density/classes/content-density-observer.settings.mjs +1 -1
- package/esm2020/content-density/classes/deprecated-content-density.directive.mjs +44 -0
- package/esm2020/content-density/content-density.types.mjs +2 -1
- package/esm2020/content-density/directives/content-density.directive.mjs +11 -3
- package/esm2020/content-density/helpers/density-type-checkers.mjs +3 -2
- package/esm2020/content-density/helpers/get-changes-source.provider.mjs +8 -5
- package/esm2020/content-density/public_api.mjs +3 -1
- package/esm2020/content-density/services/content-density-observer.service.mjs +58 -6
- package/esm2020/content-density/variables/default-content-density-consumer-config.mjs +3 -2
- package/esm2020/dialog/dialog-header/dialog-header.component.mjs +5 -4
- package/esm2020/dialog/dialog-service/dialog.service.mjs +12 -6
- package/esm2020/switch/switch.component.mjs +5 -3
- package/esm2020/utils/functions/module-deprecations-provider.mjs +8 -1
- package/esm2020/wizard/wizard.component.mjs +4 -2
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-content-density.mjs +119 -17
- package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs +18 -12
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-switch.mjs +4 -2
- package/fesm2015/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs +4 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-wizard.mjs +3 -1
- package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-content-density.mjs +121 -16
- package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +18 -12
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-switch.mjs +4 -2
- package/fesm2020/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-wizard.mjs +3 -1
- package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/overflow-layout/package.json +13 -13
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/esm2020/switch.component.mjs +5 -3
- package/switch/fesm2015/fundamental-ngx-core-switch.mjs +4 -2
- package/switch/fesm2015/fundamental-ngx-core-switch.mjs.map +1 -1
- package/switch/fesm2020/fundamental-ngx-core-switch.mjs +4 -2
- package/switch/fesm2020/fundamental-ngx-core-switch.mjs.map +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/theming/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/esm2020/functions/module-deprecations-provider.mjs +8 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs +4 -1
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/functions/module-deprecations-provider.d.ts +2 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/esm2020/wizard.component.mjs +4 -2
- package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs +3 -1
- package/wizard/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs +3 -1
- package/wizard/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/wizard/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, forwardRef, Directive, Input, Injectable, Inject, NgModule, InjectFlags, ChangeDetectorRef, ElementRef
|
|
2
|
+
import { InjectionToken, isDevMode, forwardRef, Directive, Input, Injectable, Inject, NgModule, InjectFlags, ChangeDetectorRef, ElementRef } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
4
4
|
import * as i1$1 from '@angular/router';
|
|
5
5
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
@@ -10,6 +10,7 @@ import { ContentDensityService, DestroyedService, consumerProviderFactory } from
|
|
|
10
10
|
import { map } from 'rxjs/operators';
|
|
11
11
|
|
|
12
12
|
const ContentDensityGlobalKeyword = 'global';
|
|
13
|
+
const ContentDensityDefaultKeyword = 'default';
|
|
13
14
|
var ContentDensityMode;
|
|
14
15
|
(function (ContentDensityMode) {
|
|
15
16
|
ContentDensityMode["COZY"] = "cozy";
|
|
@@ -19,6 +20,11 @@ var ContentDensityMode;
|
|
|
19
20
|
|
|
20
21
|
const CONTENT_DENSITY_DIRECTIVE = new InjectionToken('ContentDensityDirective');
|
|
21
22
|
|
|
23
|
+
const isCompact = (density) => density === ContentDensityMode.COMPACT;
|
|
24
|
+
const isCondensed = (density) => density === ContentDensityMode.CONDENSED;
|
|
25
|
+
const isCozy = (density) => density === ContentDensityMode.COZY;
|
|
26
|
+
const isContentDensityMode = (density) => isCompact(density) || isCondensed(density) || isCozy(density) || density === ContentDensityGlobalKeyword;
|
|
27
|
+
|
|
22
28
|
/**
|
|
23
29
|
* Directive to control the content density of the elements.
|
|
24
30
|
* This Directive is used in density controllers and consumers
|
|
@@ -32,7 +38,14 @@ class ContentDensityDirective extends BehaviorSubject {
|
|
|
32
38
|
* Update the content density of the element on the fly
|
|
33
39
|
*/
|
|
34
40
|
set fdContentDensity(val) {
|
|
35
|
-
|
|
41
|
+
if (!isContentDensityMode(val)) {
|
|
42
|
+
if (isDevMode() && val !== '') {
|
|
43
|
+
console.log(`The value "${val}" is not a valid content density mode.
|
|
44
|
+
Using "${ContentDensityGlobalKeyword}" instead.`);
|
|
45
|
+
}
|
|
46
|
+
val = ContentDensityGlobalKeyword;
|
|
47
|
+
}
|
|
48
|
+
this.next(val);
|
|
36
49
|
}
|
|
37
50
|
/**
|
|
38
51
|
* This input is basically syntax sugar, for not writing fdContentDensity="compact",
|
|
@@ -277,10 +290,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
|
|
|
277
290
|
}] }];
|
|
278
291
|
} });
|
|
279
292
|
|
|
280
|
-
const isCompact = (density) => density === ContentDensityMode.COMPACT;
|
|
281
|
-
const isCondensed = (density) => density === ContentDensityMode.CONDENSED;
|
|
282
|
-
const isCozy = (density) => density === ContentDensityMode.COZY;
|
|
283
|
-
|
|
284
293
|
/**
|
|
285
294
|
* Temporary replacement for ContentDensityService
|
|
286
295
|
*/
|
|
@@ -395,17 +404,21 @@ const getChangesSource$ = (params) => {
|
|
|
395
404
|
: of(params.defaultContentDensity);
|
|
396
405
|
const changesSource$ = params.contentDensityDirective ? params.contentDensityDirective : serviceValue$;
|
|
397
406
|
return changesSource$.pipe(switchMap((mode) => {
|
|
398
|
-
if (mode
|
|
399
|
-
return of(
|
|
407
|
+
if (mode === ContentDensityDefaultKeyword) {
|
|
408
|
+
return of(params.defaultContentDensity);
|
|
409
|
+
}
|
|
410
|
+
if (mode === ContentDensityGlobalKeyword) {
|
|
411
|
+
return serviceValue$;
|
|
400
412
|
}
|
|
401
|
-
return
|
|
413
|
+
return of(mode);
|
|
402
414
|
}));
|
|
403
415
|
};
|
|
404
416
|
|
|
405
417
|
const defaultContentDensityObserverConfigs = {
|
|
406
418
|
modifiers: {},
|
|
407
419
|
supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY],
|
|
408
|
-
defaultContentDensity: ContentDensityMode.COZY
|
|
420
|
+
defaultContentDensity: ContentDensityMode.COZY,
|
|
421
|
+
debug: false
|
|
409
422
|
};
|
|
410
423
|
|
|
411
424
|
function contentDensityCallbackFactory(consumerConfig) {
|
|
@@ -431,12 +444,46 @@ function contentDensityCallbackFactory(consumerConfig) {
|
|
|
431
444
|
class ContentDensityObserverSettings {
|
|
432
445
|
}
|
|
433
446
|
|
|
447
|
+
const isFactoryProvider = (obj) => !!(obj && obj.useFactory);
|
|
448
|
+
const getDeps = (injector, defaultContentDensity) => (defaultContentDensity.deps || []).map((dep) => {
|
|
449
|
+
if (Array.isArray(dep)) {
|
|
450
|
+
let type;
|
|
451
|
+
let flags = InjectFlags.Default;
|
|
452
|
+
for (let index = 0; index < dep.length; index++) {
|
|
453
|
+
const flag = dep[index]['__NG_DI_FLAG__'];
|
|
454
|
+
if (typeof flag === 'number') {
|
|
455
|
+
// eslint-disable-next-line no-bitwise
|
|
456
|
+
flags |= flag;
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
type = dep[index];
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return injector.get(type, undefined, flags);
|
|
463
|
+
}
|
|
464
|
+
return injector.get(dep, undefined, InjectFlags.Default);
|
|
465
|
+
});
|
|
466
|
+
const getDefaultContentDensity = (injector, configuration) => {
|
|
467
|
+
if (typeof configuration.defaultContentDensity === 'string') {
|
|
468
|
+
return configuration.defaultContentDensity;
|
|
469
|
+
}
|
|
470
|
+
if (isFactoryProvider(configuration.defaultContentDensity)) {
|
|
471
|
+
const deps = getDeps(injector, configuration.defaultContentDensity);
|
|
472
|
+
return configuration.defaultContentDensity.useFactory(...deps);
|
|
473
|
+
}
|
|
474
|
+
return injector.get(configuration.defaultContentDensity, undefined, undefined);
|
|
475
|
+
};
|
|
476
|
+
const initialContentDensity = (injector, configuration) => {
|
|
477
|
+
var _a;
|
|
478
|
+
const serviceValue = (_a = injector.get(GlobalContentDensityService, null, InjectFlags.Optional)) === null || _a === void 0 ? void 0 : _a.currentContentDensity;
|
|
479
|
+
if (serviceValue) {
|
|
480
|
+
return serviceValue;
|
|
481
|
+
}
|
|
482
|
+
return getDefaultContentDensity(injector, Object.assign(Object.assign({}, defaultContentDensityObserverConfigs), (configuration || {})));
|
|
483
|
+
};
|
|
434
484
|
class ContentDensityObserver extends BehaviorSubject {
|
|
435
485
|
constructor(_injector, _providedConfig) {
|
|
436
|
-
|
|
437
|
-
super(((_a = _injector.get(GlobalContentDensityService, null, InjectFlags.Optional)) === null || _a === void 0 ? void 0 : _a.currentContentDensity) ||
|
|
438
|
-
(_providedConfig === null || _providedConfig === void 0 ? void 0 : _providedConfig.defaultContentDensity) ||
|
|
439
|
-
defaultContentDensityObserverConfigs.defaultContentDensity);
|
|
486
|
+
super(initialContentDensity(_injector, _providedConfig));
|
|
440
487
|
this._injector = _injector;
|
|
441
488
|
this._providedConfig = _providedConfig;
|
|
442
489
|
/** @hidden */
|
|
@@ -447,25 +494,40 @@ class ContentDensityObserver extends BehaviorSubject {
|
|
|
447
494
|
[ContentDensityMode.CONDENSED]: () => this.isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,
|
|
448
495
|
[ContentDensityMode.COZY]: () => ContentDensityMode.COZY // No alternative here, everyone should support it
|
|
449
496
|
};
|
|
497
|
+
if (_providedConfig === null || _providedConfig === void 0 ? void 0 : _providedConfig.debug) {
|
|
498
|
+
console.log({ initialContentDensity: initialContentDensity(_injector, _providedConfig) });
|
|
499
|
+
}
|
|
450
500
|
this.configuration = Object.assign(Object.assign({}, defaultContentDensityObserverConfigs), (_providedConfig || {}));
|
|
451
501
|
this.destroy$ = this._injector.get(DestroyedService);
|
|
452
502
|
this.changeDetectorRef = this._injector.get(ChangeDetectorRef);
|
|
453
503
|
this.contentDensityDirective = this._injector.get(CONTENT_DENSITY_DIRECTIVE, undefined, InjectFlags.Optional);
|
|
454
504
|
this.contentDensityService = this._injector.get(GlobalContentDensityService, undefined, InjectFlags.Optional);
|
|
455
505
|
const changesSource$ = getChangesSource$({
|
|
456
|
-
defaultContentDensity: this.configuration
|
|
506
|
+
defaultContentDensity: getDefaultContentDensity(this._injector, this.configuration),
|
|
457
507
|
contentDensityDirective: this.contentDensityDirective,
|
|
458
508
|
contentDensityService: this.contentDensityService
|
|
459
509
|
}).pipe(map$1((density) => {
|
|
510
|
+
if (this.configuration.debug) {
|
|
511
|
+
console.log(`ContentDensityObserver: density changed to ${density}`);
|
|
512
|
+
}
|
|
460
513
|
if (!this.isSupported(density)) {
|
|
461
|
-
|
|
514
|
+
try {
|
|
515
|
+
return this.alternativeTo[density]();
|
|
516
|
+
}
|
|
517
|
+
catch (e) {
|
|
518
|
+
throw new Error(`ContentDensityObserver: density ${density} is not supported`);
|
|
519
|
+
}
|
|
462
520
|
}
|
|
463
521
|
return density;
|
|
464
522
|
}), distinctUntilChanged(), takeUntil(this.destroy$));
|
|
465
523
|
changesSource$
|
|
466
524
|
.pipe(tap((density) => this._callCallbacks(density)), finalize(() => this.complete()))
|
|
467
525
|
.subscribe((density) => {
|
|
526
|
+
if (this.configuration.debug) {
|
|
527
|
+
console.log(`ContentDensityObserver: density emmited ${density}`);
|
|
528
|
+
}
|
|
468
529
|
this.next(density);
|
|
530
|
+
this.changeDetectorRef.markForCheck();
|
|
469
531
|
});
|
|
470
532
|
this.isCompact$ = changesSource$.pipe(map$1(isCompact));
|
|
471
533
|
this.isCozy$ = changesSource$.pipe(map$1(isCozy));
|
|
@@ -653,9 +715,49 @@ function mockedLocalContentDensityDirective(defaultValue = ContentDensityGlobalK
|
|
|
653
715
|
};
|
|
654
716
|
}
|
|
655
717
|
|
|
718
|
+
const warnedSelectorBases = new Set();
|
|
719
|
+
/**
|
|
720
|
+
* Directive decorator is only for allowing @Input
|
|
721
|
+
*/
|
|
722
|
+
class DeprecatedContentDensityDirective extends BehaviorSubject {
|
|
723
|
+
constructor() {
|
|
724
|
+
super(ContentDensityMode.COZY);
|
|
725
|
+
this._manuallySet = false;
|
|
726
|
+
}
|
|
727
|
+
/** @deprecated use fdCompact directive instead */
|
|
728
|
+
set contentDensity(value) {
|
|
729
|
+
if (isDevMode() && !warnedSelectorBases.has(this.selectorBase)) {
|
|
730
|
+
console.warn(`${this.message}. Use [fd${capitalize(value)}] or [fdContentDensity] directives instead.`);
|
|
731
|
+
warnedSelectorBases.add(this.selectorBase);
|
|
732
|
+
}
|
|
733
|
+
this._manuallySet = true;
|
|
734
|
+
this.next(value);
|
|
735
|
+
}
|
|
736
|
+
get message() {
|
|
737
|
+
return `Usage of ${this.selectorBase}[contentDensity] is deprecated`;
|
|
738
|
+
}
|
|
739
|
+
get alternative() {
|
|
740
|
+
return {
|
|
741
|
+
name: `Use [${this._manuallySet ? `fd${capitalize(this.value)}` : 'fdContentDensity'}] directive instead`,
|
|
742
|
+
link: ['/core', 'content-density']
|
|
743
|
+
};
|
|
744
|
+
}
|
|
745
|
+
ngOnDestroy() {
|
|
746
|
+
this.complete();
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
DeprecatedContentDensityDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DeprecatedContentDensityDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
750
|
+
DeprecatedContentDensityDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.4", type: DeprecatedContentDensityDirective, inputs: { contentDensity: "contentDensity" }, usesInheritance: true, ngImport: i0 });
|
|
751
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: DeprecatedContentDensityDirective, decorators: [{
|
|
752
|
+
type: Directive
|
|
753
|
+
}], ctorParameters: function () { return []; }, propDecorators: { contentDensity: [{
|
|
754
|
+
type: Input
|
|
755
|
+
}] } });
|
|
756
|
+
const capitalize = (str) => (str === null || str === void 0 ? void 0 : str.charAt(0).toUpperCase()) + (str === null || str === void 0 ? void 0 : str.slice(1));
|
|
757
|
+
|
|
656
758
|
/**
|
|
657
759
|
* Generated bundle index. Do not edit.
|
|
658
760
|
*/
|
|
659
761
|
|
|
660
|
-
export { CONTENT_DENSITY_DIRECTIVE, ContentDensityDirective, ContentDensityGlobalKeyword, ContentDensityMode, ContentDensityModule, ContentDensityObserver, ContentDensityObserverSettings, ContentDensityStorage, DeprecatedCompactDirective, DeprecatedCondensedDirective, DeprecatedCozyDirective, GlobalContentDensityService, contentDensityObserverProviders, isCompact, isCondensed, isCozy, mockedLocalContentDensityDirective };
|
|
762
|
+
export { CONTENT_DENSITY_DIRECTIVE, ContentDensityDefaultKeyword, ContentDensityDirective, ContentDensityGlobalKeyword, ContentDensityMode, ContentDensityModule, ContentDensityObserver, ContentDensityObserverSettings, ContentDensityStorage, DeprecatedCompactDirective, DeprecatedCondensedDirective, DeprecatedContentDensityDirective, DeprecatedCozyDirective, GlobalContentDensityService, contentDensityObserverProviders, defaultContentDensityObserverConfigs, isCompact, isCondensed, isContentDensityMode, isCozy, mockedLocalContentDensityDirective };
|
|
661
763
|
//# sourceMappingURL=fundamental-ngx-core-content-density.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-content-density.mjs","sources":["../../../../../libs/core/src/lib/content-density/content-density.types.ts","../../../../../libs/core/src/lib/content-density/tokens/content-density-directive.ts","../../../../../libs/core/src/lib/content-density/directives/content-density.directive.ts","../../../../../libs/core/src/lib/content-density/tokens/default-content-density.token.ts","../../../../../libs/core/src/lib/content-density/classes/abstract-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/providers/memory-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/services/global-content-density.service.ts","../../../../../libs/core/src/lib/content-density/tokens/content-density-storage-key.token.ts","../../../../../libs/core/src/lib/content-density/providers/local-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/providers/url-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/helpers/density-type-checkers.ts","../../../../../libs/core/src/lib/content-density/services/deprecated-content-density.service.ts","../../../../../libs/core/src/lib/content-density/content-density.module.ts","../../../../../libs/core/src/lib/content-density/helpers/get-changes-source.provider.ts","../../../../../libs/core/src/lib/content-density/variables/default-content-density-consumer-config.ts","../../../../../libs/core/src/lib/content-density/helpers/content-density-change-callback-factory.ts","../../../../../libs/core/src/lib/content-density/classes/content-density-observer.settings.ts","../../../../../libs/core/src/lib/content-density/services/content-density-observer.service.ts","../../../../../libs/core/src/lib/content-density/providers/content-density-observer-providers.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-compact.directive.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-cozy.directive.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-condensed.directive.ts","../../../../../libs/core/src/lib/content-density/testing/mocked-local-content-density-directive.ts","../../../../../libs/core/src/lib/content-density/fundamental-ngx-core-content-density.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/core/utils';\nimport { ContentDensityObserverSettings } from './classes/content-density-observer.settings';\n\nexport const ContentDensityGlobalKeyword = 'global';\n\nexport enum ContentDensityMode {\n COZY = 'cozy',\n CONDENSED = 'condensed',\n COMPACT = 'compact'\n}\n\nexport type LocalContentDensityMode = ContentDensityMode | typeof ContentDensityGlobalKeyword;\n\ninterface BaseContentDensityModuleConfig {\n defaultGlobalContentDensity?: ContentDensityMode;\n}\n\ninterface LocalStorageConfig {\n storage: 'localStorage';\n storageKey?: string;\n}\n\ninterface UrlStorageConfig {\n storage: 'url';\n storageKey?: string;\n}\n\ninterface CustomStorageConfig {\n storage: Provider;\n}\n\ninterface MemoryStorageConfig {\n storage: 'memory';\n}\n\nexport type ContentDensityModuleConfig = (\n | LocalStorageConfig\n | MemoryStorageConfig\n | UrlStorageConfig\n | CustomStorageConfig\n) &\n BaseContentDensityModuleConfig;\n\nexport interface ContentDensityObserverTarget extends HasElementRef {\n contentDensitySettings: ContentDensityObserverSettings;\n}\n\nexport type ContentDensityCallbackFn = (target: ContentDensityMode) => void;\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ContentDensityMode } from '../content-density.types';\n\nexport const CONTENT_DENSITY_DIRECTIVE = new InjectionToken<Observable<ContentDensityMode>>('ContentDensityDirective');\n","import { Directive, forwardRef, Input, OnDestroy } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { BehaviorSubject } from 'rxjs';\nimport { ContentDensityGlobalKeyword, ContentDensityMode, LocalContentDensityMode } from '../content-density.types';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\n\n/**\n * Directive to control the content density of the elements.\n * This Directive is used in density controllers and consumers\n */\n@Directive({\n selector: `[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]),\n [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]),\n [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]),\n [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])`,\n exportAs: 'fdContentDensity',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => ContentDensityDirective)\n }\n ]\n})\nexport class ContentDensityDirective extends BehaviorSubject<LocalContentDensityMode> implements OnDestroy {\n /**\n * Update the content density of the element on the fly\n */\n @Input()\n set fdContentDensity(val: LocalContentDensityMode | '') {\n this.next(val ? val : ContentDensityGlobalKeyword);\n }\n\n /**\n * This input is basically syntax sugar, for not writing fdContentDensity=\"compact\",\n * instead you can just write fdCompact=\"true\" or [fdCompact]\n */\n @Input()\n set fdCompact(val: BooleanInput) {\n if (coerceBooleanProperty(val)) {\n this.next(ContentDensityMode.COMPACT);\n } else {\n this.next(ContentDensityGlobalKeyword);\n }\n }\n\n /**\n * This input is basically syntax sugar, for not writing fdContentDensity=\"condensed\",\n * instead you can just write fdCondensed=\"true\" or [fdCondensed]\n */\n @Input()\n set fdCondensed(val: BooleanInput) {\n if (coerceBooleanProperty(val)) {\n this.next(ContentDensityMode.CONDENSED);\n } else {\n this.next(ContentDensityGlobalKeyword);\n }\n }\n\n /**\n * This input is basically syntax sugar, for not writing fdContentDensity=\"cozy\",\n * instead you can just write fdCozy=\"true\" or [fdCozy]\n */\n @Input()\n set fdCozy(val: BooleanInput) {\n if (coerceBooleanProperty(val)) {\n this.next(ContentDensityMode.COZY);\n } else {\n this.next(ContentDensityGlobalKeyword);\n }\n }\n\n /** @hidden */\n constructor() {\n super(ContentDensityGlobalKeyword);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ContentDensityMode } from '../content-density.types';\n\nexport const DEFAULT_CONTENT_DENSITY = new InjectionToken<ContentDensityMode>('Default global content density', {\n factory: () => ContentDensityMode.COZY\n});\n","import { ContentDensityMode } from '../content-density.types';\nimport { Observable } from 'rxjs';\n\n/**\n * Abstract provider class for providing content density storage functionality\n * Default implementation is MemoryContentDensityStorage\n */\nexport abstract class ContentDensityStorage {\n /**\n * Get listener for current density updates\n */\n abstract getContentDensity(): Observable<ContentDensityMode>;\n\n /**\n * Save updated configuration\n * @param density\n */\n abstract setContentDensity(density: ContentDensityMode): Observable<void>;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { ContentDensityMode } from '../content-density.types';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\n\n@Injectable()\nexport class MemoryContentDensityStorage implements ContentDensityStorage {\n private _currentContentDensity$: BehaviorSubject<ContentDensityMode>;\n\n constructor(@Inject(DEFAULT_CONTENT_DENSITY) defaultContentDensity: ContentDensityMode) {\n this._currentContentDensity$ = new BehaviorSubject(defaultContentDensity);\n }\n\n getContentDensity(): Observable<ContentDensityMode> {\n return this._currentContentDensity$.asObservable();\n }\n\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._currentContentDensity$.next(density);\n return of(undefined);\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { Observable, Subscription } from 'rxjs';\nimport { ContentDensityMode } from '../content-density.types';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\n\n/**\n * Service for managing global content density state.\n */\n@Injectable()\nexport class GlobalContentDensityService implements OnDestroy {\n /**\n * Current content density.\n */\n currentContentDensity: ContentDensityMode;\n\n /** @hidden */\n private _subscription = new Subscription();\n\n /** @hidden */\n constructor(\n @Inject(ContentDensityStorage) private _storage: ContentDensityStorage,\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode\n ) {\n this._subscription.add(\n this.contentDensityListener().subscribe((density) => {\n this.currentContentDensity = density;\n })\n );\n }\n\n /** Listen to current content density changes */\n contentDensityListener(): Observable<ContentDensityMode> {\n return this._storage.getContentDensity();\n }\n\n /** Update content density */\n updateContentDensity(density: ContentDensityMode): Observable<void> {\n return this._storage.setContentDensity(density);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const CONTENT_DENSITY_STORAGE_KEY = new InjectionToken<string>(\n 'Content density storage key for local storage or for url param',\n {\n factory: () => '__ContentDensity__'\n }\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { LocalStorageService } from '@fundamental-ngx/core/utils';\nimport { Observable, of, Subject } from 'rxjs';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\nimport { CONTENT_DENSITY_STORAGE_KEY } from '../tokens/content-density-storage-key.token';\nimport { ContentDensityMode } from '../content-density.types';\n\n@Injectable()\nexport class LocalContentDensityStorage implements ContentDensityStorage {\n private _update$ = new Subject<void>();\n\n constructor(\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode,\n @Inject(CONTENT_DENSITY_STORAGE_KEY) private _storageKey: string,\n private _storage: LocalStorageService\n ) {\n this._initialize();\n }\n\n getContentDensity(): Observable<ContentDensityMode> {\n return new Observable<ContentDensityMode>((subscriber) => {\n subscriber.next(this._storage.get(this._storageKey));\n const subscription = this._update$.subscribe(() => {\n subscriber.next(this._storage.get(this._storageKey));\n });\n return () => {\n subscription.unsubscribe();\n };\n });\n }\n\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._storage.set(this._storageKey, density);\n this._update$.next();\n return of(undefined);\n }\n\n private _initialize(): void {\n if (!this._storage.get(this._storageKey)) {\n this._storage.set(this._storageKey, this._defaultContentDensity);\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\nimport { CONTENT_DENSITY_STORAGE_KEY } from '../tokens/content-density-storage-key.token';\nimport { ContentDensityMode } from '../content-density.types';\nimport { BehaviorSubject, distinctUntilChanged, filter, Observable, of } from 'rxjs';\n\n@Injectable()\nexport class UrlContentDensityStorage implements ContentDensityStorage {\n private _current$: BehaviorSubject<ContentDensityMode>;\n\n constructor(\n private _router: Router,\n private _activatedRoute: ActivatedRoute,\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode,\n @Inject(CONTENT_DENSITY_STORAGE_KEY) private _storageKey: string\n ) {\n this._initialize();\n }\n\n private _initialize(): void {\n this._current$ = new BehaviorSubject<ContentDensityMode>(this._defaultContentDensity);\n\n this._activatedRoute.queryParams\n .pipe(filter((queryParams) => !!queryParams[this._storageKey]))\n .subscribe((queryParams) => {\n this._current$.next(queryParams[this._storageKey]);\n });\n }\n\n private _setUrlQueryParam(density: ContentDensityMode): void {\n const url = new URL(`https://google.com${this._router.url}`);\n url.searchParams.delete(this._storageKey);\n url.searchParams.append(this._storageKey, density);\n const queryParams = {};\n url.searchParams.forEach((value, key) => (queryParams[key] = value));\n\n this._router.navigateByUrl(url.pathname + '?' + url.searchParams.toString());\n }\n\n getContentDensity(): Observable<ContentDensityMode> {\n return this._current$.asObservable().pipe(distinctUntilChanged());\n }\n\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._current$.next(density);\n this._setUrlQueryParam(density);\n return of(undefined);\n }\n}\n","import { ContentDensityMode } from '../content-density.types';\n\nexport const isCompact = (density: ContentDensityMode): boolean => density === ContentDensityMode.COMPACT;\nexport const isCondensed = (density: ContentDensityMode): boolean => density === ContentDensityMode.CONDENSED;\nexport const isCozy = (density: ContentDensityMode): boolean => density === ContentDensityMode.COZY;\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { GlobalContentDensityService } from './global-content-density.service';\nimport { BehaviorSubject, Observable, skip, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { isCompact } from '../helpers/density-type-checkers';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\nimport { ContentDensityMode } from '../content-density.types';\n\n/**\n * Temporary replacement for ContentDensityService\n */\n@Injectable()\nexport class DeprecatedContentDensityService implements OnDestroy {\n /** Content Density BehaviourSubject */\n readonly contentDensity = new BehaviorSubject<ContentDensityMode>(this._defaultContentDensity);\n\n constructor(\n private _contentDensityController: GlobalContentDensityService,\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode\n ) {\n this.contentDensity\n .pipe(\n skip(1),\n tap((d) => this._contentDensityController.updateContentDensity(d))\n )\n .subscribe();\n }\n\n /** @hidden */\n get _contentDensityListener(): Observable<ContentDensityMode> {\n return this._contentDensityController.contentDensityListener();\n }\n\n /** @hidden */\n get _isCompactDensity(): Observable<boolean> {\n return this._contentDensityController.contentDensityListener().pipe(map(isCompact));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.contentDensity.complete();\n }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ContentDensityDirective } from './directives/content-density.directive';\nimport { DEFAULT_CONTENT_DENSITY } from './tokens/default-content-density.token';\nimport { ContentDensityMode, ContentDensityModuleConfig } from './content-density.types';\nimport { ContentDensityStorage } from './classes/abstract-content-density-storage';\nimport { MemoryContentDensityStorage } from './providers/memory-content-density-storage';\nimport { GlobalContentDensityService } from './services/global-content-density.service';\nimport { LocalContentDensityStorage } from './providers/local-content-density-storage';\nimport { CONTENT_DENSITY_STORAGE_KEY } from './tokens/content-density-storage-key.token';\nimport { UrlContentDensityStorage } from './providers/url-content-density-storage';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { DeprecatedContentDensityService } from './services/deprecated-content-density.service';\n\nfunction generateContentDensityStorage(config: ContentDensityModuleConfig): Provider {\n if (config.storage === 'localStorage') {\n return {\n provide: ContentDensityStorage,\n useClass: LocalContentDensityStorage\n };\n }\n if (config.storage === 'memory') {\n return {\n provide: ContentDensityStorage,\n useClass: MemoryContentDensityStorage\n };\n }\n if (config.storage === 'url') {\n return {\n provide: ContentDensityStorage,\n useClass: UrlContentDensityStorage,\n deps: [Router, ActivatedRoute, DEFAULT_CONTENT_DENSITY, CONTENT_DENSITY_STORAGE_KEY, DOCUMENT]\n };\n }\n return [];\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [ContentDensityDirective],\n declarations: [ContentDensityDirective]\n})\nexport class ContentDensityModule {\n static forRoot(config?: ContentDensityModuleConfig): ModuleWithProviders<ContentDensityModule> {\n let storage: Provider;\n const conf: ContentDensityModuleConfig = config || { storage: 'memory' };\n\n if (typeof conf.storage === 'string') {\n storage = generateContentDensityStorage(conf);\n } else if (typeof conf.storage === 'object') {\n storage = conf.storage;\n } else {\n storage = {\n provide: ContentDensityStorage,\n useClass: MemoryContentDensityStorage\n };\n }\n\n return {\n ngModule: ContentDensityModule,\n providers: [\n {\n provide: DEFAULT_CONTENT_DENSITY,\n useValue: conf.defaultGlobalContentDensity || ContentDensityMode.COZY\n },\n {\n provide: CONTENT_DENSITY_STORAGE_KEY,\n useValue: (conf as any).storageKey || '__ContentDensity__'\n },\n {\n provide: ContentDensityService,\n useClass: DeprecatedContentDensityService\n },\n GlobalContentDensityService,\n storage\n ]\n };\n }\n}\n","import { Observable, of, switchMap } from 'rxjs';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport { ContentDensityGlobalKeyword, ContentDensityMode, LocalContentDensityMode } from '../content-density.types';\n\nexport const getChangesSource$ = (params: {\n defaultContentDensity: ContentDensityMode;\n contentDensityDirective?: Observable<LocalContentDensityMode>;\n contentDensityService?: GlobalContentDensityService;\n}): Observable<ContentDensityMode> => {\n const serviceValue$: Observable<ContentDensityMode> = params.contentDensityService\n ? params.contentDensityService.contentDensityListener()\n : of(params.defaultContentDensity);\n const changesSource$ = params.contentDensityDirective ? params.contentDensityDirective : serviceValue$;\n\n return changesSource$.pipe(\n switchMap((mode: LocalContentDensityMode) => {\n if (mode !== ContentDensityGlobalKeyword) {\n return of(mode);\n }\n return serviceValue$;\n })\n );\n};\n","import { ContentDensityMode } from '../content-density.types';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nexport const defaultContentDensityObserverConfigs: Required<ContentDensityObserverSettings> = {\n modifiers: {},\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY],\n defaultContentDensity: ContentDensityMode.COZY\n};\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ContentDensityCallbackFn, ContentDensityObserverTarget, ContentDensityMode } from '../content-density.types';\nimport { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nexport function contentDensityCallbackFactory(\n consumerConfig: ContentDensityObserverTarget | ContentDensityCallbackFn\n): ContentDensityCallbackFn {\n if (typeof consumerConfig === 'function') {\n return consumerConfig;\n }\n return (contentDensityMode: ContentDensityMode) => {\n const configs = {\n contentDensitySettings: {\n ...defaultContentDensityObserverConfigs,\n ...consumerConfig.contentDensitySettings\n },\n elementRef: () => consumerConfig.elementRef()\n };\n const settings: Required<ContentDensityObserverSettings> = configs.contentDensitySettings;\n const element = coerceElement(configs.elementRef());\n\n Object.values(settings.modifiers).forEach((className) => {\n element.classList.remove(className);\n });\n if (settings.modifiers[contentDensityMode]) {\n element.classList.add(settings.modifiers[contentDensityMode]);\n }\n };\n}\n","import { ContentDensityMode } from '../content-density.types';\n\nexport class ContentDensityObserverSettings {\n modifiers?: Partial<Record<ContentDensityMode, string>>;\n supportedContentDensity?: ContentDensityMode[];\n defaultContentDensity?: ContentDensityMode;\n}\n","import { ChangeDetectorRef, ElementRef, Injectable, InjectFlags, Injector } from '@angular/core';\nimport {\n ContentDensityCallbackFn,\n ContentDensityMode,\n ContentDensityObserverTarget,\n LocalContentDensityMode\n} from '../content-density.types';\nimport { BehaviorSubject, distinctUntilChanged, finalize, map, Observable, Subscription, takeUntil, tap } from 'rxjs';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport { getChangesSource$ } from '../helpers/get-changes-source.provider';\nimport { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';\nimport { contentDensityCallbackFactory } from '../helpers/content-density-change-callback-factory';\nimport { isCompact, isCondensed, isCozy } from '../helpers/density-type-checkers';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { DestroyedService } from '@fundamental-ngx/core/utils';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\n@Injectable()\nexport class ContentDensityObserver extends BehaviorSubject<ContentDensityMode> {\n /** Stream for getting compact state changes */\n isCompact$: Observable<boolean>;\n /** Stream for getting cozy state changes */\n isCozy$: Observable<boolean>;\n /** Stream for getting condensed state changes */\n isCondensed$: Observable<boolean>;\n\n /** @hidden */\n private _callbacks: Map<any, ContentDensityCallbackFn> = new Map<any, ContentDensityCallbackFn>();\n\n /** @hidden */\n private _isCompact: boolean;\n /** @hidden */\n private _isCozy: boolean;\n /** @hidden */\n private _isCondensed: boolean;\n\n /** @hidden */\n private _compactSubscription: Subscription;\n /** @hidden */\n private _condensedSubscription: Subscription;\n /** @hidden */\n private _cozySubscription: Subscription;\n\n /** @hidden */\n private configuration: Required<ContentDensityObserverSettings>;\n\n /** @hidden */\n private alternativeTo = {\n [ContentDensityMode.COMPACT]: (): ContentDensityMode =>\n this.isSupported(ContentDensityMode.CONDENSED) ? ContentDensityMode.CONDENSED : ContentDensityMode.COZY,\n [ContentDensityMode.CONDENSED]: (): ContentDensityMode =>\n this.isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,\n [ContentDensityMode.COZY]: (): ContentDensityMode => ContentDensityMode.COZY // No alternative here, everyone should support it\n };\n\n private readonly destroy$: Observable<void>;\n private changeDetectorRef: ChangeDetectorRef;\n private contentDensityDirective?: Observable<LocalContentDensityMode>;\n private contentDensityService?: GlobalContentDensityService;\n\n constructor(private _injector: Injector, private _providedConfig?: ContentDensityObserverSettings) {\n super(\n _injector.get(GlobalContentDensityService, null, InjectFlags.Optional)?.currentContentDensity ||\n _providedConfig?.defaultContentDensity ||\n defaultContentDensityObserverConfigs.defaultContentDensity\n );\n this.configuration = {\n ...defaultContentDensityObserverConfigs,\n ...(_providedConfig || {})\n };\n this.destroy$ = this._injector.get(DestroyedService);\n this.changeDetectorRef = this._injector.get(ChangeDetectorRef);\n this.contentDensityDirective = this._injector.get(CONTENT_DENSITY_DIRECTIVE, undefined, InjectFlags.Optional);\n this.contentDensityService = this._injector.get(GlobalContentDensityService, undefined, InjectFlags.Optional);\n\n const changesSource$: Observable<ContentDensityMode> = getChangesSource$({\n defaultContentDensity: this.configuration.defaultContentDensity,\n contentDensityDirective: this.contentDensityDirective,\n contentDensityService: this.contentDensityService\n }).pipe(\n map((density: ContentDensityMode) => {\n if (!this.isSupported(density)) {\n return this.alternativeTo[density]();\n }\n return density;\n }),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n );\n changesSource$\n .pipe(\n tap((density) => this._callCallbacks(density)),\n finalize(() => this.complete())\n )\n .subscribe((density) => {\n this.next(density);\n });\n this.isCompact$ = changesSource$.pipe(map(isCompact));\n this.isCozy$ = changesSource$.pipe(map(isCozy));\n this.isCondensed$ = changesSource$.pipe(map(isCondensed));\n if (_providedConfig) {\n this.consume({\n contentDensitySettings: this.configuration,\n elementRef: () => this._injector.get(ElementRef)\n });\n }\n }\n\n isSupported(density: ContentDensityMode): boolean {\n return this.configuration.supportedContentDensity.includes(density);\n }\n\n /**\n * Sync isCompact. Calls ChangeDetectorRef.markForCheck() on update\n */\n get isCompact(): boolean {\n if (!this._compactSubscription) {\n this._compactSubscription = this._listenToChanges(this.isCompact$, (v) => (this._isCompact = v));\n }\n return this._isCompact;\n }\n\n /**\n * Sync isCondensed. Calls ChangeDetectorRef.markForCheck() on update\n */\n get isCondensed(): boolean {\n if (!this._condensedSubscription) {\n this._condensedSubscription = this._listenToChanges(this.isCondensed$, (v) => (this._isCondensed = v));\n }\n return this._isCondensed;\n }\n\n /**\n * Sync isCozy. Calls ChangeDetectorRef.markForCheck() on update\n */\n get isCozy(): boolean {\n if (!this._cozySubscription) {\n this._cozySubscription = this._listenToChanges(this.isCozy$, (v) => (this._isCozy = v));\n }\n return this._isCozy;\n }\n\n /**\n * Pass consumers callback function, or configuration object to be called on density change\n */\n consume(\n ...consumerConfigs: Array<ContentDensityObserverTarget | ContentDensityCallbackFn>\n ): ContentDensityObserver {\n consumerConfigs.forEach((consumerConfig) => {\n const callback = contentDensityCallbackFactory(consumerConfig);\n this._callbacks.set(consumerConfig, callback);\n callback(this.value);\n });\n return this;\n }\n\n /**\n * Remove consumer callback from list of callbacks\n */\n removeConsumer(\n ...consumerConfigs: Array<ContentDensityObserverTarget | ContentDensityCallbackFn>\n ): ContentDensityObserver {\n consumerConfigs.forEach((consumerConfig) => {\n this._callbacks.delete(consumerConfig);\n });\n return this;\n }\n\n /** @hidden */\n private _callCallbacks(density: ContentDensityMode): void {\n this._callbacks.forEach((callback) => callback(density));\n }\n\n /** @hidden */\n private _listenToChanges(source: Observable<boolean>, callback: (newValue: boolean) => void): Subscription {\n return source\n .pipe(\n tap(callback),\n tap(() => this.changeDetectorRef.markForCheck()),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n}\n","import { Provider } from '@angular/core';\nimport { consumerProviderFactory, DestroyedService } from '@fundamental-ngx/core/utils';\nimport { ContentDensityObserver } from '../services/content-density-observer.service';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\n/**\n * Creates provider for ContentDensityObserver and adds DestroyedService provider\n */\nexport function contentDensityObserverProviders(params?: ContentDensityObserverSettings): Provider[] {\n return [DestroyedService, consumerProviderFactory(ContentDensityObserver, params)];\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedCompactDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n /** @deprecated use fdCompact directive instead */\n @Input()\n set compact(value: BooleanInput) {\n if (isDevMode()) {\n console.warn(`${this.message}. Use [fdCompact] directive instead.`);\n }\n this.next(coerceBooleanProperty(value) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY);\n }\n\n readonly message: string;\n readonly alternative = {\n name: 'Use [fdCompact] directive instead',\n link: ['/core', 'content-density']\n };\n\n constructor(selectorBase: string) {\n super(ContentDensityMode.COZY);\n this.message = `Usage of ${selectorBase}[compact] is deprecated`;\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedCozyDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n @Input()\n set cozy(value: BooleanInput) {\n if (isDevMode()) {\n console.warn(`${this.message}. Use [fdCozy] directive instead.`);\n }\n this.next(coerceBooleanProperty(value) ? ContentDensityMode.COZY : ContentDensityMode.COMPACT);\n }\n\n readonly message: string;\n readonly alternative = {\n name: 'Use [fdCozy] directive instead',\n link: ['/core', 'content-density']\n };\n\n constructor(selectorBase: string) {\n super(ContentDensityMode.COMPACT);\n this.message = `Usage of ${selectorBase}[cozy] is deprecated`;\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedCondensedDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n @Input()\n set condensed(value: BooleanInput) {\n if (isDevMode()) {\n console.warn(`${this.message}. Use [fdCondensed] directive instead.`);\n }\n this.next(coerceBooleanProperty(value) ? ContentDensityMode.CONDENSED : ContentDensityMode.COZY);\n }\n\n readonly message: string;\n readonly alternative = {\n name: 'Use [fdCondensed] directive instead',\n link: ['/core', 'content-density']\n };\n\n constructor(selectorBase: string) {\n super(ContentDensityMode.COZY);\n this.message = `Usage of ${selectorBase}[condensed] is deprecated`;\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { Provider } from '@angular/core';\nimport { ContentDensityGlobalKeyword, LocalContentDensityMode } from '../content-density.types';\nimport { BehaviorSubject } from 'rxjs';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\n\nexport function mockedLocalContentDensityDirective(\n defaultValue: LocalContentDensityMode = ContentDensityGlobalKeyword\n): { contentDensityDirectiveProvider: Provider; setContentDensity: (cd: LocalContentDensityMode) => void } {\n const behaviorSubject = new BehaviorSubject(defaultValue);\n return {\n contentDensityDirectiveProvider: {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useValue: behaviorSubject.asObservable()\n },\n setContentDensity: (cd: LocalContentDensityMode) => behaviorSubject.next(cd)\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-content-density.mjs","sources":["../../../../../libs/core/src/lib/content-density/content-density.types.ts","../../../../../libs/core/src/lib/content-density/tokens/content-density-directive.ts","../../../../../libs/core/src/lib/content-density/helpers/density-type-checkers.ts","../../../../../libs/core/src/lib/content-density/directives/content-density.directive.ts","../../../../../libs/core/src/lib/content-density/tokens/default-content-density.token.ts","../../../../../libs/core/src/lib/content-density/classes/abstract-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/providers/memory-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/services/global-content-density.service.ts","../../../../../libs/core/src/lib/content-density/tokens/content-density-storage-key.token.ts","../../../../../libs/core/src/lib/content-density/providers/local-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/providers/url-content-density-storage.ts","../../../../../libs/core/src/lib/content-density/services/deprecated-content-density.service.ts","../../../../../libs/core/src/lib/content-density/content-density.module.ts","../../../../../libs/core/src/lib/content-density/helpers/get-changes-source.provider.ts","../../../../../libs/core/src/lib/content-density/variables/default-content-density-consumer-config.ts","../../../../../libs/core/src/lib/content-density/helpers/content-density-change-callback-factory.ts","../../../../../libs/core/src/lib/content-density/classes/content-density-observer.settings.ts","../../../../../libs/core/src/lib/content-density/services/content-density-observer.service.ts","../../../../../libs/core/src/lib/content-density/providers/content-density-observer-providers.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-compact.directive.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-cozy.directive.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-condensed.directive.ts","../../../../../libs/core/src/lib/content-density/testing/mocked-local-content-density-directive.ts","../../../../../libs/core/src/lib/content-density/classes/deprecated-content-density.directive.ts","../../../../../libs/core/src/lib/content-density/fundamental-ngx-core-content-density.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/core/utils';\nimport { ContentDensityObserverSettings } from './classes/content-density-observer.settings';\n\nexport const ContentDensityGlobalKeyword = 'global';\nexport const ContentDensityDefaultKeyword = 'default';\n\nexport enum ContentDensityMode {\n COZY = 'cozy',\n CONDENSED = 'condensed',\n COMPACT = 'compact'\n}\n\nexport type LocalContentDensityMode =\n | ContentDensityMode\n | typeof ContentDensityGlobalKeyword\n | typeof ContentDensityDefaultKeyword;\n\ninterface BaseContentDensityModuleConfig {\n defaultGlobalContentDensity?: ContentDensityMode;\n}\n\ninterface LocalStorageConfig {\n storage: 'localStorage';\n storageKey?: string;\n}\n\ninterface UrlStorageConfig {\n storage: 'url';\n storageKey?: string;\n}\n\ninterface CustomStorageConfig {\n storage: Provider;\n}\n\ninterface MemoryStorageConfig {\n storage: 'memory';\n}\n\nexport type ContentDensityModuleConfig = (\n | LocalStorageConfig\n | MemoryStorageConfig\n | UrlStorageConfig\n | CustomStorageConfig\n) &\n BaseContentDensityModuleConfig;\n\nexport interface ContentDensityObserverTarget extends HasElementRef {\n contentDensitySettings: ContentDensityObserverSettings;\n}\n\nexport type ContentDensityCallbackFn = (target: ContentDensityMode) => void;\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ContentDensityMode } from '../content-density.types';\n\nexport const CONTENT_DENSITY_DIRECTIVE = new InjectionToken<Observable<ContentDensityMode>>('ContentDensityDirective');\n","import { ContentDensityGlobalKeyword, ContentDensityMode } from '../content-density.types';\n\nexport const isCompact = (density: any): boolean => density === ContentDensityMode.COMPACT;\nexport const isCondensed = (density: any): boolean => density === ContentDensityMode.CONDENSED;\nexport const isCozy = (density: any): boolean => density === ContentDensityMode.COZY;\nexport const isContentDensityMode = (density: any): boolean =>\n isCompact(density) || isCondensed(density) || isCozy(density) || density === ContentDensityGlobalKeyword;\n","import { Directive, forwardRef, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { BehaviorSubject } from 'rxjs';\nimport { ContentDensityGlobalKeyword, ContentDensityMode, LocalContentDensityMode } from '../content-density.types';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { isContentDensityMode } from '../helpers/density-type-checkers';\n\n/**\n * Directive to control the content density of the elements.\n * This Directive is used in density controllers and consumers\n */\n@Directive({\n selector: `[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]),\n [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]),\n [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]),\n [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])`,\n exportAs: 'fdContentDensity',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => ContentDensityDirective)\n }\n ]\n})\nexport class ContentDensityDirective extends BehaviorSubject<LocalContentDensityMode> implements OnDestroy {\n /**\n * Update the content density of the element on the fly\n */\n @Input()\n set fdContentDensity(val: LocalContentDensityMode | '') {\n if (!isContentDensityMode(val)) {\n if (isDevMode() && val !== '') {\n console.log(\n `The value \"${val}\" is not a valid content density mode.\n Using \"${ContentDensityGlobalKeyword}\" instead.`\n );\n }\n val = ContentDensityGlobalKeyword;\n }\n this.next(val as LocalContentDensityMode);\n }\n\n /**\n * This input is basically syntax sugar, for not writing fdContentDensity=\"compact\",\n * instead you can just write fdCompact=\"true\" or [fdCompact]\n */\n @Input()\n set fdCompact(val: BooleanInput) {\n if (coerceBooleanProperty(val)) {\n this.next(ContentDensityMode.COMPACT);\n } else {\n this.next(ContentDensityGlobalKeyword);\n }\n }\n\n /**\n * This input is basically syntax sugar, for not writing fdContentDensity=\"condensed\",\n * instead you can just write fdCondensed=\"true\" or [fdCondensed]\n */\n @Input()\n set fdCondensed(val: BooleanInput) {\n if (coerceBooleanProperty(val)) {\n this.next(ContentDensityMode.CONDENSED);\n } else {\n this.next(ContentDensityGlobalKeyword);\n }\n }\n\n /**\n * This input is basically syntax sugar, for not writing fdContentDensity=\"cozy\",\n * instead you can just write fdCozy=\"true\" or [fdCozy]\n */\n @Input()\n set fdCozy(val: BooleanInput) {\n if (coerceBooleanProperty(val)) {\n this.next(ContentDensityMode.COZY);\n } else {\n this.next(ContentDensityGlobalKeyword);\n }\n }\n\n /** @hidden */\n constructor() {\n super(ContentDensityGlobalKeyword);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ContentDensityMode } from '../content-density.types';\n\nexport const DEFAULT_CONTENT_DENSITY = new InjectionToken<ContentDensityMode>('Default global content density', {\n factory: () => ContentDensityMode.COZY\n});\n","import { ContentDensityMode } from '../content-density.types';\nimport { Observable } from 'rxjs';\n\n/**\n * Abstract provider class for providing content density storage functionality\n * Default implementation is MemoryContentDensityStorage\n */\nexport abstract class ContentDensityStorage {\n /**\n * Get listener for current density updates\n */\n abstract getContentDensity(): Observable<ContentDensityMode>;\n\n /**\n * Save updated configuration\n * @param density\n */\n abstract setContentDensity(density: ContentDensityMode): Observable<void>;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { ContentDensityMode } from '../content-density.types';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\n\n@Injectable()\nexport class MemoryContentDensityStorage implements ContentDensityStorage {\n private _currentContentDensity$: BehaviorSubject<ContentDensityMode>;\n\n constructor(@Inject(DEFAULT_CONTENT_DENSITY) defaultContentDensity: ContentDensityMode) {\n this._currentContentDensity$ = new BehaviorSubject(defaultContentDensity);\n }\n\n getContentDensity(): Observable<ContentDensityMode> {\n return this._currentContentDensity$.asObservable();\n }\n\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._currentContentDensity$.next(density);\n return of(undefined);\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { Observable, Subscription } from 'rxjs';\nimport { ContentDensityMode } from '../content-density.types';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\n\n/**\n * Service for managing global content density state.\n */\n@Injectable()\nexport class GlobalContentDensityService implements OnDestroy {\n /**\n * Current content density.\n */\n currentContentDensity: ContentDensityMode;\n\n /** @hidden */\n private _subscription = new Subscription();\n\n /** @hidden */\n constructor(\n @Inject(ContentDensityStorage) private _storage: ContentDensityStorage,\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode\n ) {\n this._subscription.add(\n this.contentDensityListener().subscribe((density) => {\n this.currentContentDensity = density;\n })\n );\n }\n\n /** Listen to current content density changes */\n contentDensityListener(): Observable<ContentDensityMode> {\n return this._storage.getContentDensity();\n }\n\n /** Update content density */\n updateContentDensity(density: ContentDensityMode): Observable<void> {\n return this._storage.setContentDensity(density);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const CONTENT_DENSITY_STORAGE_KEY = new InjectionToken<string>(\n 'Content density storage key for local storage or for url param',\n {\n factory: () => '__ContentDensity__'\n }\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { LocalStorageService } from '@fundamental-ngx/core/utils';\nimport { Observable, of, Subject } from 'rxjs';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\nimport { CONTENT_DENSITY_STORAGE_KEY } from '../tokens/content-density-storage-key.token';\nimport { ContentDensityMode } from '../content-density.types';\n\n@Injectable()\nexport class LocalContentDensityStorage implements ContentDensityStorage {\n private _update$ = new Subject<void>();\n\n constructor(\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode,\n @Inject(CONTENT_DENSITY_STORAGE_KEY) private _storageKey: string,\n private _storage: LocalStorageService\n ) {\n this._initialize();\n }\n\n getContentDensity(): Observable<ContentDensityMode> {\n return new Observable<ContentDensityMode>((subscriber) => {\n subscriber.next(this._storage.get(this._storageKey));\n const subscription = this._update$.subscribe(() => {\n subscriber.next(this._storage.get(this._storageKey));\n });\n return () => {\n subscription.unsubscribe();\n };\n });\n }\n\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._storage.set(this._storageKey, density);\n this._update$.next();\n return of(undefined);\n }\n\n private _initialize(): void {\n if (!this._storage.get(this._storageKey)) {\n this._storage.set(this._storageKey, this._defaultContentDensity);\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\nimport { CONTENT_DENSITY_STORAGE_KEY } from '../tokens/content-density-storage-key.token';\nimport { ContentDensityMode } from '../content-density.types';\nimport { BehaviorSubject, distinctUntilChanged, filter, Observable, of } from 'rxjs';\n\n@Injectable()\nexport class UrlContentDensityStorage implements ContentDensityStorage {\n private _current$: BehaviorSubject<ContentDensityMode>;\n\n constructor(\n private _router: Router,\n private _activatedRoute: ActivatedRoute,\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode,\n @Inject(CONTENT_DENSITY_STORAGE_KEY) private _storageKey: string\n ) {\n this._initialize();\n }\n\n private _initialize(): void {\n this._current$ = new BehaviorSubject<ContentDensityMode>(this._defaultContentDensity);\n\n this._activatedRoute.queryParams\n .pipe(filter((queryParams) => !!queryParams[this._storageKey]))\n .subscribe((queryParams) => {\n this._current$.next(queryParams[this._storageKey]);\n });\n }\n\n private _setUrlQueryParam(density: ContentDensityMode): void {\n const url = new URL(`https://google.com${this._router.url}`);\n url.searchParams.delete(this._storageKey);\n url.searchParams.append(this._storageKey, density);\n const queryParams = {};\n url.searchParams.forEach((value, key) => (queryParams[key] = value));\n\n this._router.navigateByUrl(url.pathname + '?' + url.searchParams.toString());\n }\n\n getContentDensity(): Observable<ContentDensityMode> {\n return this._current$.asObservable().pipe(distinctUntilChanged());\n }\n\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._current$.next(density);\n this._setUrlQueryParam(density);\n return of(undefined);\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { GlobalContentDensityService } from './global-content-density.service';\nimport { BehaviorSubject, Observable, skip, tap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { isCompact } from '../helpers/density-type-checkers';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\nimport { ContentDensityMode } from '../content-density.types';\n\n/**\n * Temporary replacement for ContentDensityService\n */\n@Injectable()\nexport class DeprecatedContentDensityService implements OnDestroy {\n /** Content Density BehaviourSubject */\n readonly contentDensity = new BehaviorSubject<ContentDensityMode>(this._defaultContentDensity);\n\n constructor(\n private _contentDensityController: GlobalContentDensityService,\n @Inject(DEFAULT_CONTENT_DENSITY) private _defaultContentDensity: ContentDensityMode\n ) {\n this.contentDensity\n .pipe(\n skip(1),\n tap((d) => this._contentDensityController.updateContentDensity(d))\n )\n .subscribe();\n }\n\n /** @hidden */\n get _contentDensityListener(): Observable<ContentDensityMode> {\n return this._contentDensityController.contentDensityListener();\n }\n\n /** @hidden */\n get _isCompactDensity(): Observable<boolean> {\n return this._contentDensityController.contentDensityListener().pipe(map(isCompact));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.contentDensity.complete();\n }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule, DOCUMENT } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ContentDensityDirective } from './directives/content-density.directive';\nimport { DEFAULT_CONTENT_DENSITY } from './tokens/default-content-density.token';\nimport { ContentDensityMode, ContentDensityModuleConfig } from './content-density.types';\nimport { ContentDensityStorage } from './classes/abstract-content-density-storage';\nimport { MemoryContentDensityStorage } from './providers/memory-content-density-storage';\nimport { GlobalContentDensityService } from './services/global-content-density.service';\nimport { LocalContentDensityStorage } from './providers/local-content-density-storage';\nimport { CONTENT_DENSITY_STORAGE_KEY } from './tokens/content-density-storage-key.token';\nimport { UrlContentDensityStorage } from './providers/url-content-density-storage';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { DeprecatedContentDensityService } from './services/deprecated-content-density.service';\n\nfunction generateContentDensityStorage(config: ContentDensityModuleConfig): Provider {\n if (config.storage === 'localStorage') {\n return {\n provide: ContentDensityStorage,\n useClass: LocalContentDensityStorage\n };\n }\n if (config.storage === 'memory') {\n return {\n provide: ContentDensityStorage,\n useClass: MemoryContentDensityStorage\n };\n }\n if (config.storage === 'url') {\n return {\n provide: ContentDensityStorage,\n useClass: UrlContentDensityStorage,\n deps: [Router, ActivatedRoute, DEFAULT_CONTENT_DENSITY, CONTENT_DENSITY_STORAGE_KEY, DOCUMENT]\n };\n }\n return [];\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [ContentDensityDirective],\n declarations: [ContentDensityDirective]\n})\nexport class ContentDensityModule {\n static forRoot(config?: ContentDensityModuleConfig): ModuleWithProviders<ContentDensityModule> {\n let storage: Provider;\n const conf: ContentDensityModuleConfig = config || { storage: 'memory' };\n\n if (typeof conf.storage === 'string') {\n storage = generateContentDensityStorage(conf);\n } else if (typeof conf.storage === 'object') {\n storage = conf.storage;\n } else {\n storage = {\n provide: ContentDensityStorage,\n useClass: MemoryContentDensityStorage\n };\n }\n\n return {\n ngModule: ContentDensityModule,\n providers: [\n {\n provide: DEFAULT_CONTENT_DENSITY,\n useValue: conf.defaultGlobalContentDensity || ContentDensityMode.COZY\n },\n {\n provide: CONTENT_DENSITY_STORAGE_KEY,\n useValue: (conf as any).storageKey || '__ContentDensity__'\n },\n {\n provide: ContentDensityService,\n useClass: DeprecatedContentDensityService\n },\n GlobalContentDensityService,\n storage\n ]\n };\n }\n}\n","import { Observable, of, switchMap } from 'rxjs';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport {\n ContentDensityDefaultKeyword,\n ContentDensityGlobalKeyword,\n ContentDensityMode,\n LocalContentDensityMode\n} from '../content-density.types';\n\nexport const getChangesSource$ = (params: {\n defaultContentDensity: ContentDensityMode;\n contentDensityDirective?: Observable<LocalContentDensityMode>;\n contentDensityService?: GlobalContentDensityService;\n}): Observable<ContentDensityMode> => {\n const serviceValue$: Observable<ContentDensityMode> = params.contentDensityService\n ? params.contentDensityService.contentDensityListener()\n : of(params.defaultContentDensity);\n const changesSource$ = params.contentDensityDirective ? params.contentDensityDirective : serviceValue$;\n\n return changesSource$.pipe(\n switchMap((mode: LocalContentDensityMode) => {\n if (mode === ContentDensityDefaultKeyword) {\n return of(params.defaultContentDensity);\n }\n if (mode === ContentDensityGlobalKeyword) {\n return serviceValue$;\n }\n return of(mode);\n })\n );\n};\n","import { ContentDensityMode } from '../content-density.types';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nexport const defaultContentDensityObserverConfigs: Required<ContentDensityObserverSettings> = {\n modifiers: {},\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY],\n defaultContentDensity: ContentDensityMode.COZY,\n debug: false\n};\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ContentDensityCallbackFn, ContentDensityObserverTarget, ContentDensityMode } from '../content-density.types';\nimport { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nexport function contentDensityCallbackFactory(\n consumerConfig: ContentDensityObserverTarget | ContentDensityCallbackFn\n): ContentDensityCallbackFn {\n if (typeof consumerConfig === 'function') {\n return consumerConfig;\n }\n return (contentDensityMode: ContentDensityMode) => {\n const configs = {\n contentDensitySettings: {\n ...defaultContentDensityObserverConfigs,\n ...consumerConfig.contentDensitySettings\n },\n elementRef: () => consumerConfig.elementRef()\n };\n const settings: Required<ContentDensityObserverSettings> = configs.contentDensitySettings;\n const element = coerceElement(configs.elementRef());\n\n Object.values(settings.modifiers).forEach((className) => {\n element.classList.remove(className);\n });\n if (settings.modifiers[contentDensityMode]) {\n element.classList.add(settings.modifiers[contentDensityMode]);\n }\n };\n}\n","import { ContentDensityMode } from '../content-density.types';\nimport { FactorySansProvider, ProviderToken } from '@angular/core';\n\nexport class ContentDensityObserverSettings {\n modifiers?: Partial<Record<ContentDensityMode, string>>;\n supportedContentDensity?: ContentDensityMode[];\n defaultContentDensity?: ContentDensityMode | ProviderToken<ContentDensityMode> | FactorySansProvider;\n debug?: boolean;\n}\n","import { ChangeDetectorRef, ElementRef, FactorySansProvider, Injectable, InjectFlags, Injector } from '@angular/core';\nimport {\n ContentDensityCallbackFn,\n ContentDensityMode,\n ContentDensityObserverTarget,\n LocalContentDensityMode\n} from '../content-density.types';\nimport { BehaviorSubject, distinctUntilChanged, finalize, map, Observable, Subscription, takeUntil, tap } from 'rxjs';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport { getChangesSource$ } from '../helpers/get-changes-source.provider';\nimport { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';\nimport { contentDensityCallbackFactory } from '../helpers/content-density-change-callback-factory';\nimport { isCompact, isCondensed, isCozy } from '../helpers/density-type-checkers';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { DestroyedService } from '@fundamental-ngx/core/utils';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nconst isFactoryProvider = (obj: any): obj is FactorySansProvider => !!(obj && (obj as FactorySansProvider).useFactory);\n\nconst getDeps = (injector: Injector, defaultContentDensity: FactorySansProvider): Array<any> =>\n (defaultContentDensity.deps || []).map((dep): any => {\n if (Array.isArray(dep)) {\n let type;\n let flags = InjectFlags.Default;\n for (let index = 0; index < dep.length; index++) {\n const flag = dep[index]['__NG_DI_FLAG__'];\n if (typeof flag === 'number') {\n // eslint-disable-next-line no-bitwise\n flags |= flag;\n } else {\n type = dep[index];\n }\n }\n return injector.get(type, undefined, flags);\n }\n return injector.get(dep, undefined, InjectFlags.Default);\n });\n\nconst getDefaultContentDensity = (\n injector: Injector,\n configuration: Required<ContentDensityObserverSettings>\n): ContentDensityMode => {\n if (typeof configuration.defaultContentDensity === 'string') {\n return configuration.defaultContentDensity as ContentDensityMode;\n }\n if (isFactoryProvider(configuration.defaultContentDensity)) {\n const deps = getDeps(injector, configuration.defaultContentDensity);\n return configuration.defaultContentDensity.useFactory(...deps);\n }\n return injector.get(configuration.defaultContentDensity, undefined, undefined);\n};\n\nconst initialContentDensity = (\n injector: Injector,\n configuration?: ContentDensityObserverSettings\n): ContentDensityMode => {\n const serviceValue = injector.get(GlobalContentDensityService, null, InjectFlags.Optional)?.currentContentDensity;\n if (serviceValue) {\n return serviceValue;\n }\n return getDefaultContentDensity(injector, {\n ...defaultContentDensityObserverConfigs,\n ...(configuration || {})\n });\n};\n\n@Injectable()\nexport class ContentDensityObserver extends BehaviorSubject<ContentDensityMode> {\n /** Stream for getting compact state changes */\n isCompact$: Observable<boolean>;\n /** Stream for getting cozy state changes */\n isCozy$: Observable<boolean>;\n /** Stream for getting condensed state changes */\n isCondensed$: Observable<boolean>;\n\n /** @hidden */\n private _callbacks: Map<any, ContentDensityCallbackFn> = new Map<any, ContentDensityCallbackFn>();\n\n /** @hidden */\n private _isCompact: boolean;\n /** @hidden */\n private _isCozy: boolean;\n /** @hidden */\n private _isCondensed: boolean;\n\n /** @hidden */\n private _compactSubscription: Subscription;\n /** @hidden */\n private _condensedSubscription: Subscription;\n /** @hidden */\n private _cozySubscription: Subscription;\n\n /** @hidden */\n private readonly configuration: Required<ContentDensityObserverSettings>;\n\n /** @hidden */\n private alternativeTo = {\n [ContentDensityMode.COMPACT]: (): ContentDensityMode =>\n this.isSupported(ContentDensityMode.CONDENSED) ? ContentDensityMode.CONDENSED : ContentDensityMode.COZY,\n [ContentDensityMode.CONDENSED]: (): ContentDensityMode =>\n this.isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,\n [ContentDensityMode.COZY]: (): ContentDensityMode => ContentDensityMode.COZY // No alternative here, everyone should support it\n };\n\n private readonly destroy$: Observable<void>;\n private changeDetectorRef: ChangeDetectorRef;\n private contentDensityDirective?: Observable<LocalContentDensityMode>;\n private contentDensityService?: GlobalContentDensityService;\n\n constructor(private _injector: Injector, private _providedConfig?: ContentDensityObserverSettings) {\n super(initialContentDensity(_injector, _providedConfig));\n if (_providedConfig?.debug) {\n console.log({ initialContentDensity: initialContentDensity(_injector, _providedConfig) });\n }\n this.configuration = {\n ...defaultContentDensityObserverConfigs,\n ...(_providedConfig || {})\n };\n this.destroy$ = this._injector.get(DestroyedService);\n this.changeDetectorRef = this._injector.get(ChangeDetectorRef);\n this.contentDensityDirective = this._injector.get(CONTENT_DENSITY_DIRECTIVE, undefined, InjectFlags.Optional);\n this.contentDensityService = this._injector.get(GlobalContentDensityService, undefined, InjectFlags.Optional);\n\n const changesSource$: Observable<ContentDensityMode> = getChangesSource$({\n defaultContentDensity: getDefaultContentDensity(this._injector, this.configuration),\n contentDensityDirective: this.contentDensityDirective,\n contentDensityService: this.contentDensityService\n }).pipe(\n map((density: ContentDensityMode) => {\n if (this.configuration.debug) {\n console.log(`ContentDensityObserver: density changed to ${density}`);\n }\n if (!this.isSupported(density)) {\n try {\n return this.alternativeTo[density]();\n } catch (e) {\n throw new Error(`ContentDensityObserver: density ${density} is not supported`);\n }\n }\n return density;\n }),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n );\n changesSource$\n .pipe(\n tap((density) => this._callCallbacks(density)),\n finalize(() => this.complete())\n )\n .subscribe((density) => {\n if (this.configuration.debug) {\n console.log(`ContentDensityObserver: density emmited ${density}`);\n }\n this.next(density);\n this.changeDetectorRef.markForCheck();\n });\n this.isCompact$ = changesSource$.pipe(map(isCompact));\n this.isCozy$ = changesSource$.pipe(map(isCozy));\n this.isCondensed$ = changesSource$.pipe(map(isCondensed));\n if (_providedConfig) {\n this.consume({\n contentDensitySettings: this.configuration,\n elementRef: () => this._injector.get(ElementRef)\n });\n }\n }\n\n isSupported(density: ContentDensityMode): boolean {\n return this.configuration.supportedContentDensity.includes(density);\n }\n\n /**\n * Sync isCompact. Calls ChangeDetectorRef.markForCheck() on update\n */\n get isCompact(): boolean {\n if (!this._compactSubscription) {\n this._compactSubscription = this._listenToChanges(this.isCompact$, (v) => (this._isCompact = v));\n }\n return this._isCompact;\n }\n\n /**\n * Sync isCondensed. Calls ChangeDetectorRef.markForCheck() on update\n */\n get isCondensed(): boolean {\n if (!this._condensedSubscription) {\n this._condensedSubscription = this._listenToChanges(this.isCondensed$, (v) => (this._isCondensed = v));\n }\n return this._isCondensed;\n }\n\n /**\n * Sync isCozy. Calls ChangeDetectorRef.markForCheck() on update\n */\n get isCozy(): boolean {\n if (!this._cozySubscription) {\n this._cozySubscription = this._listenToChanges(this.isCozy$, (v) => (this._isCozy = v));\n }\n return this._isCozy;\n }\n\n /**\n * Pass consumers callback function, or configuration object to be called on density change\n */\n consume(\n ...consumerConfigs: Array<ContentDensityObserverTarget | ContentDensityCallbackFn>\n ): ContentDensityObserver {\n consumerConfigs.forEach((consumerConfig) => {\n const callback = contentDensityCallbackFactory(consumerConfig);\n this._callbacks.set(consumerConfig, callback);\n callback(this.value);\n });\n return this;\n }\n\n /**\n * Remove consumer callback from list of callbacks\n */\n removeConsumer(\n ...consumerConfigs: Array<ContentDensityObserverTarget | ContentDensityCallbackFn>\n ): ContentDensityObserver {\n consumerConfigs.forEach((consumerConfig) => {\n this._callbacks.delete(consumerConfig);\n });\n return this;\n }\n\n /** @hidden */\n private _callCallbacks(density: ContentDensityMode): void {\n this._callbacks.forEach((callback) => callback(density));\n }\n\n /** @hidden */\n private _listenToChanges(source: Observable<boolean>, callback: (newValue: boolean) => void): Subscription {\n return source\n .pipe(\n tap(callback),\n tap(() => this.changeDetectorRef.markForCheck()),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n}\n","import { Provider } from '@angular/core';\nimport { consumerProviderFactory, DestroyedService } from '@fundamental-ngx/core/utils';\nimport { ContentDensityObserver } from '../services/content-density-observer.service';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\n/**\n * Creates provider for ContentDensityObserver and adds DestroyedService provider\n */\nexport function contentDensityObserverProviders(params?: ContentDensityObserverSettings): Provider[] {\n return [DestroyedService, consumerProviderFactory(ContentDensityObserver, params)];\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedCompactDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n /** @deprecated use fdCompact directive instead */\n @Input()\n set compact(value: BooleanInput) {\n if (isDevMode()) {\n console.warn(`${this.message}. Use [fdCompact] directive instead.`);\n }\n this.next(coerceBooleanProperty(value) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY);\n }\n\n readonly message: string;\n readonly alternative = {\n name: 'Use [fdCompact] directive instead',\n link: ['/core', 'content-density']\n };\n\n constructor(selectorBase: string) {\n super(ContentDensityMode.COZY);\n this.message = `Usage of ${selectorBase}[compact] is deprecated`;\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedCozyDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n @Input()\n set cozy(value: BooleanInput) {\n if (isDevMode()) {\n console.warn(`${this.message}. Use [fdCozy] directive instead.`);\n }\n this.next(coerceBooleanProperty(value) ? ContentDensityMode.COZY : ContentDensityMode.COMPACT);\n }\n\n readonly message: string;\n readonly alternative = {\n name: 'Use [fdCozy] directive instead',\n link: ['/core', 'content-density']\n };\n\n constructor(selectorBase: string) {\n super(ContentDensityMode.COMPACT);\n this.message = `Usage of ${selectorBase}[cozy] is deprecated`;\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedCondensedDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n @Input()\n set condensed(value: BooleanInput) {\n if (isDevMode()) {\n console.warn(`${this.message}. Use [fdCondensed] directive instead.`);\n }\n this.next(coerceBooleanProperty(value) ? ContentDensityMode.CONDENSED : ContentDensityMode.COZY);\n }\n\n readonly message: string;\n readonly alternative = {\n name: 'Use [fdCondensed] directive instead',\n link: ['/core', 'content-density']\n };\n\n constructor(selectorBase: string) {\n super(ContentDensityMode.COZY);\n this.message = `Usage of ${selectorBase}[condensed] is deprecated`;\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n","import { Provider } from '@angular/core';\nimport { ContentDensityGlobalKeyword, LocalContentDensityMode } from '../content-density.types';\nimport { BehaviorSubject } from 'rxjs';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\n\nexport function mockedLocalContentDensityDirective(\n defaultValue: LocalContentDensityMode = ContentDensityGlobalKeyword\n): { contentDensityDirectiveProvider: Provider; setContentDensity: (cd: LocalContentDensityMode) => void } {\n const behaviorSubject = new BehaviorSubject(defaultValue);\n return {\n contentDensityDirectiveProvider: {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useValue: behaviorSubject.asObservable()\n },\n setContentDensity: (cd: LocalContentDensityMode) => behaviorSubject.next(cd)\n };\n}\n","import { Directive, Input, isDevMode, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ContentDensityMode } from '../content-density.types';\nimport { ModuleDeprecation } from '@fundamental-ngx/core/utils';\n\nconst warnedSelectorBases = new Set<string>();\n\n/**\n * Directive decorator is only for allowing @Input\n */\n@Directive()\nexport class DeprecatedContentDensityDirective\n extends BehaviorSubject<ContentDensityMode>\n implements OnDestroy, ModuleDeprecation\n{\n /** @deprecated use fdCompact directive instead */\n @Input()\n set contentDensity(value: any) {\n if (isDevMode() && !warnedSelectorBases.has(this.selectorBase)) {\n console.warn(`${this.message}. Use [fd${capitalize(value)}] or [fdContentDensity] directives instead.`);\n warnedSelectorBases.add(this.selectorBase);\n }\n this._manuallySet = true;\n this.next(value);\n }\n\n get message(): string {\n return `Usage of ${this.selectorBase}[contentDensity] is deprecated`;\n }\n\n get alternative(): any {\n return {\n name: `Use [${this._manuallySet ? `fd${capitalize(this.value)}` : 'fdContentDensity'}] directive instead`,\n link: ['/core', 'content-density']\n };\n }\n\n selectorBase: string;\n\n private _manuallySet = false;\n\n constructor() {\n super(ContentDensityMode.COZY);\n }\n\n ngOnDestroy(): void {\n this.complete();\n }\n}\n\nconst capitalize = (str: string): string => str?.charAt(0).toUpperCase() + str?.slice(1);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map"],"mappings":"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"}
|