@fundamental-ngx/core 0.46.0-rc.13 → 0.46.0-rc.15
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/content-density/content-density.module.d.ts +2 -3
- package/content-density/index.d.ts +3 -2
- package/content-density/provide-content-density.d.ts +7 -0
- package/esm2022/content-density/content-density.module.mjs +6 -68
- package/esm2022/content-density/index.mjs +4 -3
- package/esm2022/content-density/provide-content-density.mjs +71 -0
- package/esm2022/generic-tag/fundamental-ngx-core-generic-tag.mjs +5 -0
- package/esm2022/generic-tag/generic-tag.component.mjs +75 -0
- package/esm2022/generic-tag/generic-tag.module.mjs +16 -0
- package/esm2022/generic-tag/index.mjs +4 -0
- package/esm2022/generic-tag/tokens.mjs +3 -0
- package/esm2022/theming/index.mjs +4 -3
- package/esm2022/theming/provide-theming.mjs +16 -0
- package/esm2022/theming/theming.module.mjs +6 -24
- package/esm2022/theming/tokens.mjs +5 -2
- package/fesm2022/fundamental-ngx-core-content-density.mjs +111 -103
- package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs +96 -0
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-core-theming.mjs +22 -23
- package/fesm2022/fundamental-ngx-core-theming.mjs.map +1 -1
- package/fundamental-ngx-core-v0.46.0-rc.15.tgz +0 -0
- package/generic-tag/README.md +25 -0
- package/generic-tag/generic-tag.component.d.ts +43 -0
- package/generic-tag/generic-tag.module.d.ts +7 -0
- package/generic-tag/index.d.ts +3 -0
- package/generic-tag/tokens.d.ts +2 -0
- package/package.json +9 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/theming/index.d.ts +3 -2
- package/theming/provide-theming.d.ts +7 -0
- package/fundamental-ngx-core-v0.46.0-rc.13.tgz +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, isDevMode, forwardRef, Directive, Input, Injectable, Inject, NgModule, InjectFlags, inject, Renderer2, DestroyRef, ElementRef } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
+
import { BehaviorSubject, Subject, Observable, of, filter, distinctUntilChanged, Subscription, skip, tap, switchMap, map as map$1 } from 'rxjs';
|
|
5
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
6
|
import * as i1$1 from '@angular/router';
|
|
5
7
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
6
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
|
-
import { BehaviorSubject, of, Subscription, Subject, Observable, filter, distinctUntilChanged, skip, tap, switchMap, map as map$1 } from 'rxjs';
|
|
8
8
|
import * as i1 from '@fundamental-ngx/cdk/utils';
|
|
9
9
|
import { ContentDensityService, consumerProviderFactory } from '@fundamental-ngx/cdk/utils';
|
|
10
10
|
import { map } from 'rxjs/operators';
|
|
@@ -123,10 +123,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
123
123
|
type: Input
|
|
124
124
|
}] } });
|
|
125
125
|
|
|
126
|
-
const DEFAULT_CONTENT_DENSITY = new InjectionToken('Default global content density', {
|
|
127
|
-
factory: () => ContentDensityMode.COZY
|
|
128
|
-
});
|
|
129
|
-
|
|
130
126
|
/**
|
|
131
127
|
* Abstract provider class for providing content density storage functionality
|
|
132
128
|
* Default implementation is MemoryContentDensityStorage
|
|
@@ -134,68 +130,9 @@ const DEFAULT_CONTENT_DENSITY = new InjectionToken('Default global content densi
|
|
|
134
130
|
class ContentDensityStorage {
|
|
135
131
|
}
|
|
136
132
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
this._currentContentDensity$ = new BehaviorSubject(defaultContentDensity);
|
|
141
|
-
}
|
|
142
|
-
/** Content density observable */
|
|
143
|
-
getContentDensity() {
|
|
144
|
-
return this._currentContentDensity$.asObservable();
|
|
145
|
-
}
|
|
146
|
-
/** Change content density */
|
|
147
|
-
setContentDensity(density) {
|
|
148
|
-
this._currentContentDensity$.next(density);
|
|
149
|
-
return of(undefined);
|
|
150
|
-
}
|
|
151
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MemoryContentDensityStorage, deps: [{ token: DEFAULT_CONTENT_DENSITY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
152
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MemoryContentDensityStorage }); }
|
|
153
|
-
}
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MemoryContentDensityStorage, decorators: [{
|
|
155
|
-
type: Injectable
|
|
156
|
-
}], ctorParameters: function () { return [{ type: ContentDensityMode, decorators: [{
|
|
157
|
-
type: Inject,
|
|
158
|
-
args: [DEFAULT_CONTENT_DENSITY]
|
|
159
|
-
}] }]; } });
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Service for managing global content density state.
|
|
163
|
-
*/
|
|
164
|
-
class GlobalContentDensityService {
|
|
165
|
-
/** @hidden */
|
|
166
|
-
constructor(_storage, _defaultContentDensity) {
|
|
167
|
-
this._storage = _storage;
|
|
168
|
-
this._defaultContentDensity = _defaultContentDensity;
|
|
169
|
-
/** @hidden */
|
|
170
|
-
this._subscription = new Subscription();
|
|
171
|
-
this._subscription.add(this.contentDensityListener().subscribe((density) => {
|
|
172
|
-
this.currentContentDensity = density;
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
175
|
-
/** Listen to current content density changes */
|
|
176
|
-
contentDensityListener() {
|
|
177
|
-
return this._storage.getContentDensity();
|
|
178
|
-
}
|
|
179
|
-
/** Update content density */
|
|
180
|
-
updateContentDensity(density) {
|
|
181
|
-
return this._storage.setContentDensity(density);
|
|
182
|
-
}
|
|
183
|
-
/** @hidden */
|
|
184
|
-
ngOnDestroy() {
|
|
185
|
-
this._subscription.unsubscribe();
|
|
186
|
-
}
|
|
187
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GlobalContentDensityService, deps: [{ token: ContentDensityStorage }, { token: DEFAULT_CONTENT_DENSITY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
188
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GlobalContentDensityService }); }
|
|
189
|
-
}
|
|
190
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GlobalContentDensityService, decorators: [{
|
|
191
|
-
type: Injectable
|
|
192
|
-
}], ctorParameters: function () { return [{ type: ContentDensityStorage, decorators: [{
|
|
193
|
-
type: Inject,
|
|
194
|
-
args: [ContentDensityStorage]
|
|
195
|
-
}] }, { type: ContentDensityMode, decorators: [{
|
|
196
|
-
type: Inject,
|
|
197
|
-
args: [DEFAULT_CONTENT_DENSITY]
|
|
198
|
-
}] }]; } });
|
|
133
|
+
const DEFAULT_CONTENT_DENSITY = new InjectionToken('Default global content density', {
|
|
134
|
+
factory: () => ContentDensityMode.COZY
|
|
135
|
+
});
|
|
199
136
|
|
|
200
137
|
const CONTENT_DENSITY_STORAGE_KEY = new InjectionToken('Content density storage key for local storage or for url param', {
|
|
201
138
|
factory: () => '__ContentDensity__'
|
|
@@ -248,6 +185,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
248
185
|
args: [CONTENT_DENSITY_STORAGE_KEY]
|
|
249
186
|
}] }, { type: i1.LocalStorageService }]; } });
|
|
250
187
|
|
|
188
|
+
class MemoryContentDensityStorage {
|
|
189
|
+
/** @hidden */
|
|
190
|
+
constructor(defaultContentDensity) {
|
|
191
|
+
this._currentContentDensity$ = new BehaviorSubject(defaultContentDensity);
|
|
192
|
+
}
|
|
193
|
+
/** Content density observable */
|
|
194
|
+
getContentDensity() {
|
|
195
|
+
return this._currentContentDensity$.asObservable();
|
|
196
|
+
}
|
|
197
|
+
/** Change content density */
|
|
198
|
+
setContentDensity(density) {
|
|
199
|
+
this._currentContentDensity$.next(density);
|
|
200
|
+
return of(undefined);
|
|
201
|
+
}
|
|
202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MemoryContentDensityStorage, deps: [{ token: DEFAULT_CONTENT_DENSITY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
203
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MemoryContentDensityStorage }); }
|
|
204
|
+
}
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MemoryContentDensityStorage, decorators: [{
|
|
206
|
+
type: Injectable
|
|
207
|
+
}], ctorParameters: function () { return [{ type: ContentDensityMode, decorators: [{
|
|
208
|
+
type: Inject,
|
|
209
|
+
args: [DEFAULT_CONTENT_DENSITY]
|
|
210
|
+
}] }]; } });
|
|
211
|
+
|
|
251
212
|
class UrlContentDensityStorage {
|
|
252
213
|
/** @hidden */
|
|
253
214
|
constructor(_router, _activatedRoute, _defaultContentDensity, _storageKey) {
|
|
@@ -298,6 +259,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
298
259
|
args: [CONTENT_DENSITY_STORAGE_KEY]
|
|
299
260
|
}] }]; } });
|
|
300
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Service for managing global content density state.
|
|
264
|
+
*/
|
|
265
|
+
class GlobalContentDensityService {
|
|
266
|
+
/** @hidden */
|
|
267
|
+
constructor(_storage, _defaultContentDensity) {
|
|
268
|
+
this._storage = _storage;
|
|
269
|
+
this._defaultContentDensity = _defaultContentDensity;
|
|
270
|
+
/** @hidden */
|
|
271
|
+
this._subscription = new Subscription();
|
|
272
|
+
this._subscription.add(this.contentDensityListener().subscribe((density) => {
|
|
273
|
+
this.currentContentDensity = density;
|
|
274
|
+
}));
|
|
275
|
+
}
|
|
276
|
+
/** Listen to current content density changes */
|
|
277
|
+
contentDensityListener() {
|
|
278
|
+
return this._storage.getContentDensity();
|
|
279
|
+
}
|
|
280
|
+
/** Update content density */
|
|
281
|
+
updateContentDensity(density) {
|
|
282
|
+
return this._storage.setContentDensity(density);
|
|
283
|
+
}
|
|
284
|
+
/** @hidden */
|
|
285
|
+
ngOnDestroy() {
|
|
286
|
+
this._subscription.unsubscribe();
|
|
287
|
+
}
|
|
288
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GlobalContentDensityService, deps: [{ token: ContentDensityStorage }, { token: DEFAULT_CONTENT_DENSITY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
289
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GlobalContentDensityService }); }
|
|
290
|
+
}
|
|
291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GlobalContentDensityService, decorators: [{
|
|
292
|
+
type: Injectable
|
|
293
|
+
}], ctorParameters: function () { return [{ type: ContentDensityStorage, decorators: [{
|
|
294
|
+
type: Inject,
|
|
295
|
+
args: [ContentDensityStorage]
|
|
296
|
+
}] }, { type: ContentDensityMode, decorators: [{
|
|
297
|
+
type: Inject,
|
|
298
|
+
args: [DEFAULT_CONTENT_DENSITY]
|
|
299
|
+
}] }]; } });
|
|
300
|
+
|
|
301
301
|
/**
|
|
302
302
|
* Temporary replacement for ContentDensityService
|
|
303
303
|
*/
|
|
@@ -356,51 +356,59 @@ function generateContentDensityStorage(config) {
|
|
|
356
356
|
}
|
|
357
357
|
return [];
|
|
358
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* Provides content density services and configurations
|
|
361
|
+
* @param config
|
|
362
|
+
*/
|
|
363
|
+
function provideContentDensity(config) {
|
|
364
|
+
let storage;
|
|
365
|
+
const conf = config || { storage: 'memory' };
|
|
366
|
+
if (typeof conf.storage === 'string') {
|
|
367
|
+
storage = generateContentDensityStorage(conf);
|
|
368
|
+
}
|
|
369
|
+
else if (typeof conf.storage === 'object') {
|
|
370
|
+
storage = conf.storage;
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
storage = {
|
|
374
|
+
provide: ContentDensityStorage,
|
|
375
|
+
useClass: MemoryContentDensityStorage
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
return [
|
|
379
|
+
{
|
|
380
|
+
provide: DEFAULT_CONTENT_DENSITY,
|
|
381
|
+
useValue: conf.defaultGlobalContentDensity || ContentDensityMode.COZY
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
provide: CONTENT_DENSITY_STORAGE_KEY,
|
|
385
|
+
useValue: conf.storageKey || '__ContentDensity__'
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
provide: ContentDensityService,
|
|
389
|
+
useClass: DeprecatedContentDensityService
|
|
390
|
+
},
|
|
391
|
+
GlobalContentDensityService,
|
|
392
|
+
storage
|
|
393
|
+
];
|
|
394
|
+
}
|
|
395
|
+
|
|
359
396
|
class ContentDensityModule {
|
|
360
397
|
/** Module with providers */
|
|
361
398
|
static forRoot(config) {
|
|
362
|
-
let storage;
|
|
363
|
-
const conf = config || { storage: 'memory' };
|
|
364
|
-
if (typeof conf.storage === 'string') {
|
|
365
|
-
storage = generateContentDensityStorage(conf);
|
|
366
|
-
}
|
|
367
|
-
else if (typeof conf.storage === 'object') {
|
|
368
|
-
storage = conf.storage;
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
storage = {
|
|
372
|
-
provide: ContentDensityStorage,
|
|
373
|
-
useClass: MemoryContentDensityStorage
|
|
374
|
-
};
|
|
375
|
-
}
|
|
376
399
|
return {
|
|
377
400
|
ngModule: ContentDensityModule,
|
|
378
|
-
providers: [
|
|
379
|
-
{
|
|
380
|
-
provide: DEFAULT_CONTENT_DENSITY,
|
|
381
|
-
useValue: conf.defaultGlobalContentDensity || ContentDensityMode.COZY
|
|
382
|
-
},
|
|
383
|
-
{
|
|
384
|
-
provide: CONTENT_DENSITY_STORAGE_KEY,
|
|
385
|
-
useValue: conf.storageKey || '__ContentDensity__'
|
|
386
|
-
},
|
|
387
|
-
{
|
|
388
|
-
provide: ContentDensityService,
|
|
389
|
-
useClass: DeprecatedContentDensityService
|
|
390
|
-
},
|
|
391
|
-
GlobalContentDensityService,
|
|
392
|
-
storage
|
|
393
|
-
]
|
|
401
|
+
providers: [provideContentDensity(config)]
|
|
394
402
|
};
|
|
395
403
|
}
|
|
396
404
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
397
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule, imports: [
|
|
398
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule
|
|
405
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule, imports: [ContentDensityDirective], exports: [ContentDensityDirective] }); }
|
|
406
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule }); }
|
|
399
407
|
}
|
|
400
408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule, decorators: [{
|
|
401
409
|
type: NgModule,
|
|
402
410
|
args: [{
|
|
403
|
-
imports: [
|
|
411
|
+
imports: [ContentDensityDirective],
|
|
404
412
|
exports: [ContentDensityDirective]
|
|
405
413
|
}]
|
|
406
414
|
}] });
|
|
@@ -659,5 +667,5 @@ function mockedLocalContentDensityDirective(defaultValue = ContentDensityGlobalK
|
|
|
659
667
|
* Generated bundle index. Do not edit.
|
|
660
668
|
*/
|
|
661
669
|
|
|
662
|
-
export { CONTENT_DENSITY_DIRECTIVE, ContentDensityDefaultKeyword, ContentDensityDirective, ContentDensityGlobalKeyword, ContentDensityMode, ContentDensityModule, ContentDensityObserver, ContentDensityObserverSettings, ContentDensityStorage, GlobalContentDensityService, contentDensityObserverProviders, defaultContentDensityObserverConfigs, isCompact, isCondensed, isContentDensityMode, isCozy, mockedLocalContentDensityDirective };
|
|
670
|
+
export { CONTENT_DENSITY_DIRECTIVE, ContentDensityDefaultKeyword, ContentDensityDirective, ContentDensityGlobalKeyword, ContentDensityMode, ContentDensityModule, ContentDensityObserver, ContentDensityObserverSettings, ContentDensityStorage, GlobalContentDensityService, contentDensityObserverProviders, defaultContentDensityObserverConfigs, isCompact, isCondensed, isContentDensityMode, isCozy, mockedLocalContentDensityDirective, provideContentDensity };
|
|
663
671
|
//# 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/types/content-density.mode.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/classes/content-density-observer.settings.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/services/content-density-observer.service.ts","../../../../libs/core/src/lib/content-density/providers/content-density-observer-providers.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/cdk/utils';\nimport { ContentDensityObserverSettings } from './classes/content-density-observer.settings';\nimport { ContentDensityMode } from './types/content-density.mode';\n\nexport const ContentDensityGlobalKeyword = 'global';\nexport const ContentDensityDefaultKeyword = 'default';\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 { LocalContentDensityMode } from '../content-density.types';\n\nexport const CONTENT_DENSITY_DIRECTIVE = new InjectionToken<Observable<LocalContentDensityMode>>(\n 'ContentDensityDirective'\n);\n","export enum ContentDensityMode {\n COZY = 'cozy',\n CONDENSED = 'condensed',\n COMPACT = 'compact'\n}\n","import { ContentDensityGlobalKeyword } from '../content-density.types';\nimport { ContentDensityMode } from '../types/content-density.mode';\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, LocalContentDensityMode } from '../content-density.types';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { isContentDensityMode } from '../helpers/density-type-checkers';\nimport { ContentDensityMode } from '../types/content-density.mode';\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 standalone: true\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 '../types/content-density.mode';\n\nexport const DEFAULT_CONTENT_DENSITY = new InjectionToken<ContentDensityMode>('Default global content density', {\n factory: () => ContentDensityMode.COZY\n});\n","import { ContentDensityMode } from '../types/content-density.mode';\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 '../types/content-density.mode';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\n\n@Injectable()\nexport class MemoryContentDensityStorage implements ContentDensityStorage {\n /** @hidden */\n private _currentContentDensity$: BehaviorSubject<ContentDensityMode>;\n\n /** @hidden */\n constructor(@Inject(DEFAULT_CONTENT_DENSITY) defaultContentDensity: ContentDensityMode) {\n this._currentContentDensity$ = new BehaviorSubject(defaultContentDensity);\n }\n\n /** Content density observable */\n getContentDensity(): Observable<ContentDensityMode> {\n return this._currentContentDensity$.asObservable();\n }\n\n /** Change content density */\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 '../types/content-density.mode';\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/cdk/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 '../types/content-density.mode';\n\n@Injectable()\nexport class LocalContentDensityStorage implements ContentDensityStorage {\n /** @hidden */\n private _update$ = new Subject<void>();\n\n /** @hidden */\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 /** Content density observable */\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 /** Change content density */\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._storage.set(this._storageKey, density);\n this._update$.next();\n return of(undefined);\n }\n\n /** @hidden */\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 '../types/content-density.mode';\nimport { BehaviorSubject, distinctUntilChanged, filter, Observable, of } from 'rxjs';\n\n@Injectable()\nexport class UrlContentDensityStorage implements ContentDensityStorage {\n /** @hidden */\n private _current$: BehaviorSubject<ContentDensityMode>;\n\n /** @hidden */\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 /** @hidden */\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 /** @hidden */\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 /** Content density observable */\n getContentDensity(): Observable<ContentDensityMode> {\n return this._current$.asObservable().pipe(distinctUntilChanged());\n }\n\n /** Change content density */\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 '../types/content-density.mode';\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 /** @hidden */\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 { 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/cdk/utils';\nimport { DeprecatedContentDensityService } from './services/deprecated-content-density.service';\nimport { ContentDensityMode } from './types/content-density.mode';\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, ContentDensityDirective],\n exports: [ContentDensityDirective]\n})\nexport class ContentDensityModule {\n /** Module with providers */\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 { FactorySansProvider, ProviderToken } from '@angular/core';\nimport { ContentDensityMode } from '../types/content-density.mode';\n\nexport class ContentDensityObserverSettings {\n /** Classes to be added to the element. */\n modifiers?: Partial<Record<ContentDensityMode, string>>;\n /** Supported content densities. */\n supportedContentDensity?: ContentDensityMode[];\n /** Default content density. */\n defaultContentDensity?: ContentDensityMode | ProviderToken<ContentDensityMode> | FactorySansProvider;\n /** Whether in debug mode. */\n debug?: boolean;\n /** Whether to always add class modifiers. Useful for components that are detached from its parent component. */\n alwaysAddModifiers?: boolean;\n /** Whether to force child components to restrict supported content density with current component's one. */\n restrictChildContentDensity?: boolean;\n}\n","import { Observable, of, switchMap } from 'rxjs';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport {\n ContentDensityDefaultKeyword,\n ContentDensityGlobalKeyword,\n LocalContentDensityMode\n} from '../content-density.types';\nimport { ContentDensityMode } from '../types/content-density.mode';\n\nexport const getChangesSource$ = (params: {\n defaultContentDensity: ContentDensityMode;\n contentDensityDirective?: Observable<LocalContentDensityMode>;\n contentDensityService?: GlobalContentDensityService;\n parentContentDensityService?: Observable<ContentDensityMode>;\n}): Observable<ContentDensityMode> => {\n const serviceValue$: Observable<ContentDensityMode> = params.contentDensityService\n ? params.contentDensityService.contentDensityListener()\n : of(params.defaultContentDensity);\n const changesSource$ = params.parentContentDensityService\n ? params.parentContentDensityService\n : params.contentDensityDirective\n ? params.contentDensityDirective\n : 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 '../types/content-density.mode';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nexport const defaultContentDensityObserverConfigs: Required<ContentDensityObserverSettings> = {\n modifiers: {\n [ContentDensityMode.COMPACT]: 'is-compact',\n [ContentDensityMode.COZY]: 'is-cozy',\n [ContentDensityMode.CONDENSED]: 'is-condensed'\n },\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY],\n defaultContentDensity: ContentDensityMode.COZY,\n debug: false,\n alwaysAddModifiers: false,\n restrictChildContentDensity: false\n};\n","import {\n DestroyRef,\n ElementRef,\n FactorySansProvider,\n inject,\n Injectable,\n InjectFlags,\n Injector,\n Renderer2\n} from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\nimport { ContentDensityObserverTarget } from '../content-density.types';\nimport { getChangesSource$ } from '../helpers/get-changes-source.provider';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { ContentDensityMode } from '../types/content-density.mode';\nimport { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 /** @hidden */\n readonly config: ContentDensityObserverSettings;\n /** @hidden */\n private readonly _isCompact$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n private readonly _isCozy$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n private readonly _isCondensed$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly isCompact$ = this._isCompact$.asObservable();\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly isCozy$ = this._isCozy$.asObservable();\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly isCondensed$ = this._isCondensed$.asObservable();\n /** @hidden */\n get isCompact(): boolean {\n return this._isCompact$.value;\n }\n /** @hidden */\n get isCozy(): boolean {\n return this._isCozy$.value;\n }\n /** @hidden */\n get isCondensed(): boolean {\n return this._isCondensed$.value;\n }\n\n /** @hidden */\n private _globalContentDensityService = inject(GlobalContentDensityService, {\n optional: true\n });\n\n /** @hidden */\n private _contentDensityDirective = inject(CONTENT_DENSITY_DIRECTIVE, {\n optional: true\n });\n\n /** @hidden */\n private _parentContentDensityObserver = inject(ContentDensityObserver, {\n optional: true,\n skipSelf: true\n });\n\n /** @hidden */\n private _renderer: Renderer2 | null = inject(Renderer2);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _elementRef: ElementRef<any> | null = inject(ElementRef);\n\n /** @hidden */\n private _elements = [this._elementRef];\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 /** @hidden */\n constructor(private _injector: Injector, private _providedConfig?: ContentDensityObserverSettings) {\n super(initialContentDensity(_injector, _providedConfig));\n\n this._destroyRef.onDestroy(() => {\n this.complete();\n if (this.config.debug) {\n console.log('ContentDensityObserver: destroyed');\n }\n });\n\n this.config = {\n ...defaultContentDensityObserverConfigs,\n ...(this._parentContentDensityObserver?.config ?? {}),\n ...(_providedConfig || {})\n };\n\n getChangesSource$({\n defaultContentDensity: this.value,\n contentDensityDirective: this._contentDensityDirective ?? undefined,\n contentDensityService: this._globalContentDensityService ?? undefined,\n parentContentDensityService: this.config.restrictChildContentDensity\n ? this._parentContentDensityObserver?.asObservable() ?? undefined\n : undefined\n })\n .pipe(\n map((density) => {\n if (this.config.debug) {\n console.log(`ContentDensityObserver: density changed to ${density}`);\n }\n if (!this._isSupported(density)) {\n try {\n if (this.config.debug) {\n console.log(\n `ContentDensityObserver: ${density} is not supported. Failing back to alternative one.`\n );\n }\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 takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((density) => {\n this.next(density);\n this._applyClass();\n this._isCompact$.next(density === ContentDensityMode.COMPACT);\n this._isCozy$.next(density === ContentDensityMode.COZY);\n this._isCondensed$.next(density === ContentDensityMode.CONDENSED);\n });\n }\n\n /** @hidden */\n consume(...consumers: ContentDensityObserverTarget[]): void {\n this._elements.concat(...consumers.map((c) => c.elementRef));\n }\n\n /**\n * Completes the stream and closes all internal subscriptions.\n */\n override complete(): void {\n super.complete();\n this._isCondensed$.complete();\n this._isCozy$.complete();\n this._isCompact$.complete();\n this._parentContentDensityObserver = null;\n this._contentDensityDirective = null;\n this._globalContentDensityService = null;\n this._elementRef = null;\n this._renderer = null;\n this._elements = [];\n }\n\n /** @hidden */\n removeConsumer(consumer: ContentDensityObserverTarget): void {\n this._elements.splice(this._elements.indexOf(consumer.elementRef), 1);\n }\n\n /** @hidden */\n private _applyClass(): void {\n if (!this.config?.modifiers) {\n return;\n }\n const modifiers = this.config.modifiers;\n\n const parentContentDensityEqual = this._parentContentDensityObserver?.value === this.value;\n\n this._elements.forEach((element) => {\n Object.values(modifiers).forEach((className) => {\n this._renderer?.removeClass(element?.nativeElement, className);\n });\n\n // Simply remove all modifiers from current element. Content density state is covered by parent element.\n if (parentContentDensityEqual && !this.config.alwaysAddModifiers) {\n return;\n }\n\n this._renderer?.addClass(element?.nativeElement, modifiers[this.value]!);\n });\n }\n\n /** Check if the given density is supported */\n private _isSupported(density: ContentDensityMode): boolean {\n return this.config.supportedContentDensity?.includes(density) ?? false;\n }\n}\n","import { Provider } from '@angular/core';\nimport { consumerProviderFactory } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver } from '../services/content-density-observer.service';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\n/**\n * Creates provider for ContentDensityObserver\n */\nexport function contentDensityObserverProviders(params?: ContentDensityObserverSettings): Provider[] {\n return [consumerProviderFactory(ContentDensityObserver, params)];\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\n/** @hidden */\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 './index';\n"],"names":["i1","map","i1.ContentDensityObserverSettings"],"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/types/content-density.mode.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/classes/abstract-content-density-storage.ts","../../../../libs/core/src/lib/content-density/tokens/default-content-density.token.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/memory-content-density-storage.ts","../../../../libs/core/src/lib/content-density/providers/url-content-density-storage.ts","../../../../libs/core/src/lib/content-density/services/global-content-density.service.ts","../../../../libs/core/src/lib/content-density/services/deprecated-content-density.service.ts","../../../../libs/core/src/lib/content-density/provide-content-density.ts","../../../../libs/core/src/lib/content-density/content-density.module.ts","../../../../libs/core/src/lib/content-density/classes/content-density-observer.settings.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/services/content-density-observer.service.ts","../../../../libs/core/src/lib/content-density/providers/content-density-observer-providers.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/cdk/utils';\nimport { ContentDensityObserverSettings } from './classes/content-density-observer.settings';\nimport { ContentDensityMode } from './types/content-density.mode';\n\nexport const ContentDensityGlobalKeyword = 'global';\nexport const ContentDensityDefaultKeyword = 'default';\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 { LocalContentDensityMode } from '../content-density.types';\n\nexport const CONTENT_DENSITY_DIRECTIVE = new InjectionToken<Observable<LocalContentDensityMode>>(\n 'ContentDensityDirective'\n);\n","export enum ContentDensityMode {\n COZY = 'cozy',\n CONDENSED = 'condensed',\n COMPACT = 'compact'\n}\n","import { ContentDensityGlobalKeyword } from '../content-density.types';\nimport { ContentDensityMode } from '../types/content-density.mode';\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, LocalContentDensityMode } from '../content-density.types';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { isContentDensityMode } from '../helpers/density-type-checkers';\nimport { ContentDensityMode } from '../types/content-density.mode';\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 standalone: true\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 { ContentDensityMode } from '../types/content-density.mode';\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 { InjectionToken } from '@angular/core';\nimport { ContentDensityMode } from '../types/content-density.mode';\n\nexport const DEFAULT_CONTENT_DENSITY = new InjectionToken<ContentDensityMode>('Default global content density', {\n factory: () => ContentDensityMode.COZY\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/cdk/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 '../types/content-density.mode';\n\n@Injectable()\nexport class LocalContentDensityStorage implements ContentDensityStorage {\n /** @hidden */\n private _update$ = new Subject<void>();\n\n /** @hidden */\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 /** Content density observable */\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 /** Change content density */\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._storage.set(this._storageKey, density);\n this._update$.next();\n return of(undefined);\n }\n\n /** @hidden */\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 { BehaviorSubject, Observable, of } from 'rxjs';\nimport { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { ContentDensityMode } from '../types/content-density.mode';\nimport { DEFAULT_CONTENT_DENSITY } from '../tokens/default-content-density.token';\n\n@Injectable()\nexport class MemoryContentDensityStorage implements ContentDensityStorage {\n /** @hidden */\n private _currentContentDensity$: BehaviorSubject<ContentDensityMode>;\n\n /** @hidden */\n constructor(@Inject(DEFAULT_CONTENT_DENSITY) defaultContentDensity: ContentDensityMode) {\n this._currentContentDensity$ = new BehaviorSubject(defaultContentDensity);\n }\n\n /** Content density observable */\n getContentDensity(): Observable<ContentDensityMode> {\n return this._currentContentDensity$.asObservable();\n }\n\n /** Change content density */\n setContentDensity(density: ContentDensityMode): Observable<void> {\n this._currentContentDensity$.next(density);\n return of(undefined);\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 '../types/content-density.mode';\nimport { BehaviorSubject, distinctUntilChanged, filter, Observable, of } from 'rxjs';\n\n@Injectable()\nexport class UrlContentDensityStorage implements ContentDensityStorage {\n /** @hidden */\n private _current$: BehaviorSubject<ContentDensityMode>;\n\n /** @hidden */\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 /** @hidden */\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 /** @hidden */\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 /** Content density observable */\n getContentDensity(): Observable<ContentDensityMode> {\n return this._current$.asObservable().pipe(distinctUntilChanged());\n }\n\n /** Change content density */\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 { ContentDensityStorage } from '../classes/abstract-content-density-storage';\nimport { Observable, Subscription } from 'rxjs';\nimport { ContentDensityMode } from '../types/content-density.mode';\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 { 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 '../types/content-density.mode';\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 /** @hidden */\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 { DOCUMENT } from '@angular/common';\nimport { Provider } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ContentDensityService } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityStorage } from './classes/abstract-content-density-storage';\nimport { ContentDensityModuleConfig } from './content-density.types';\nimport { LocalContentDensityStorage } from './providers/local-content-density-storage';\nimport { MemoryContentDensityStorage } from './providers/memory-content-density-storage';\nimport { UrlContentDensityStorage } from './providers/url-content-density-storage';\nimport { DeprecatedContentDensityService } from './services/deprecated-content-density.service';\nimport { GlobalContentDensityService } from './services/global-content-density.service';\nimport { CONTENT_DENSITY_STORAGE_KEY } from './tokens/content-density-storage-key.token';\nimport { DEFAULT_CONTENT_DENSITY } from './tokens/default-content-density.token';\nimport { ContentDensityMode } from './types/content-density.mode';\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/**\n * Provides content density services and configurations\n * @param config\n */\nexport function provideContentDensity(config?: ContentDensityModuleConfig): Provider[] {\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 return [\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","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ContentDensityModuleConfig } from './content-density.types';\nimport { ContentDensityDirective } from './directives/content-density.directive';\nimport { provideContentDensity } from './provide-content-density';\n\n@NgModule({\n imports: [ContentDensityDirective],\n exports: [ContentDensityDirective]\n})\nexport class ContentDensityModule {\n /** Module with providers */\n static forRoot(config?: ContentDensityModuleConfig): ModuleWithProviders<ContentDensityModule> {\n return {\n ngModule: ContentDensityModule,\n providers: [provideContentDensity(config)]\n };\n }\n}\n","import { FactorySansProvider, ProviderToken } from '@angular/core';\nimport { ContentDensityMode } from '../types/content-density.mode';\n\nexport class ContentDensityObserverSettings {\n /** Classes to be added to the element. */\n modifiers?: Partial<Record<ContentDensityMode, string>>;\n /** Supported content densities. */\n supportedContentDensity?: ContentDensityMode[];\n /** Default content density. */\n defaultContentDensity?: ContentDensityMode | ProviderToken<ContentDensityMode> | FactorySansProvider;\n /** Whether in debug mode. */\n debug?: boolean;\n /** Whether to always add class modifiers. Useful for components that are detached from its parent component. */\n alwaysAddModifiers?: boolean;\n /** Whether to force child components to restrict supported content density with current component's one. */\n restrictChildContentDensity?: boolean;\n}\n","import { Observable, of, switchMap } from 'rxjs';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport {\n ContentDensityDefaultKeyword,\n ContentDensityGlobalKeyword,\n LocalContentDensityMode\n} from '../content-density.types';\nimport { ContentDensityMode } from '../types/content-density.mode';\n\nexport const getChangesSource$ = (params: {\n defaultContentDensity: ContentDensityMode;\n contentDensityDirective?: Observable<LocalContentDensityMode>;\n contentDensityService?: GlobalContentDensityService;\n parentContentDensityService?: Observable<ContentDensityMode>;\n}): Observable<ContentDensityMode> => {\n const serviceValue$: Observable<ContentDensityMode> = params.contentDensityService\n ? params.contentDensityService.contentDensityListener()\n : of(params.defaultContentDensity);\n const changesSource$ = params.parentContentDensityService\n ? params.parentContentDensityService\n : params.contentDensityDirective\n ? params.contentDensityDirective\n : 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 '../types/content-density.mode';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\nexport const defaultContentDensityObserverConfigs: Required<ContentDensityObserverSettings> = {\n modifiers: {\n [ContentDensityMode.COMPACT]: 'is-compact',\n [ContentDensityMode.COZY]: 'is-cozy',\n [ContentDensityMode.CONDENSED]: 'is-condensed'\n },\n supportedContentDensity: [ContentDensityMode.COMPACT, ContentDensityMode.COZY],\n defaultContentDensity: ContentDensityMode.COZY,\n debug: false,\n alwaysAddModifiers: false,\n restrictChildContentDensity: false\n};\n","import {\n DestroyRef,\n ElementRef,\n FactorySansProvider,\n inject,\n Injectable,\n InjectFlags,\n Injector,\n Renderer2\n} from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\nimport { ContentDensityObserverTarget } from '../content-density.types';\nimport { getChangesSource$ } from '../helpers/get-changes-source.provider';\nimport { GlobalContentDensityService } from '../services/global-content-density.service';\nimport { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';\nimport { ContentDensityMode } from '../types/content-density.mode';\nimport { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 /** @hidden */\n readonly config: ContentDensityObserverSettings;\n /** @hidden */\n private readonly _isCompact$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n private readonly _isCozy$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n private readonly _isCondensed$ = new BehaviorSubject<boolean>(false);\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly isCompact$ = this._isCompact$.asObservable();\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly isCozy$ = this._isCozy$.asObservable();\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly isCondensed$ = this._isCondensed$.asObservable();\n /** @hidden */\n get isCompact(): boolean {\n return this._isCompact$.value;\n }\n /** @hidden */\n get isCozy(): boolean {\n return this._isCozy$.value;\n }\n /** @hidden */\n get isCondensed(): boolean {\n return this._isCondensed$.value;\n }\n\n /** @hidden */\n private _globalContentDensityService = inject(GlobalContentDensityService, {\n optional: true\n });\n\n /** @hidden */\n private _contentDensityDirective = inject(CONTENT_DENSITY_DIRECTIVE, {\n optional: true\n });\n\n /** @hidden */\n private _parentContentDensityObserver = inject(ContentDensityObserver, {\n optional: true,\n skipSelf: true\n });\n\n /** @hidden */\n private _renderer: Renderer2 | null = inject(Renderer2);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _elementRef: ElementRef<any> | null = inject(ElementRef);\n\n /** @hidden */\n private _elements = [this._elementRef];\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 /** @hidden */\n constructor(private _injector: Injector, private _providedConfig?: ContentDensityObserverSettings) {\n super(initialContentDensity(_injector, _providedConfig));\n\n this._destroyRef.onDestroy(() => {\n this.complete();\n if (this.config.debug) {\n console.log('ContentDensityObserver: destroyed');\n }\n });\n\n this.config = {\n ...defaultContentDensityObserverConfigs,\n ...(this._parentContentDensityObserver?.config ?? {}),\n ...(_providedConfig || {})\n };\n\n getChangesSource$({\n defaultContentDensity: this.value,\n contentDensityDirective: this._contentDensityDirective ?? undefined,\n contentDensityService: this._globalContentDensityService ?? undefined,\n parentContentDensityService: this.config.restrictChildContentDensity\n ? this._parentContentDensityObserver?.asObservable() ?? undefined\n : undefined\n })\n .pipe(\n map((density) => {\n if (this.config.debug) {\n console.log(`ContentDensityObserver: density changed to ${density}`);\n }\n if (!this._isSupported(density)) {\n try {\n if (this.config.debug) {\n console.log(\n `ContentDensityObserver: ${density} is not supported. Failing back to alternative one.`\n );\n }\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 takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((density) => {\n this.next(density);\n this._applyClass();\n this._isCompact$.next(density === ContentDensityMode.COMPACT);\n this._isCozy$.next(density === ContentDensityMode.COZY);\n this._isCondensed$.next(density === ContentDensityMode.CONDENSED);\n });\n }\n\n /** @hidden */\n consume(...consumers: ContentDensityObserverTarget[]): void {\n this._elements.concat(...consumers.map((c) => c.elementRef));\n }\n\n /**\n * Completes the stream and closes all internal subscriptions.\n */\n override complete(): void {\n super.complete();\n this._isCondensed$.complete();\n this._isCozy$.complete();\n this._isCompact$.complete();\n this._parentContentDensityObserver = null;\n this._contentDensityDirective = null;\n this._globalContentDensityService = null;\n this._elementRef = null;\n this._renderer = null;\n this._elements = [];\n }\n\n /** @hidden */\n removeConsumer(consumer: ContentDensityObserverTarget): void {\n this._elements.splice(this._elements.indexOf(consumer.elementRef), 1);\n }\n\n /** @hidden */\n private _applyClass(): void {\n if (!this.config?.modifiers) {\n return;\n }\n const modifiers = this.config.modifiers;\n\n const parentContentDensityEqual = this._parentContentDensityObserver?.value === this.value;\n\n this._elements.forEach((element) => {\n Object.values(modifiers).forEach((className) => {\n this._renderer?.removeClass(element?.nativeElement, className);\n });\n\n // Simply remove all modifiers from current element. Content density state is covered by parent element.\n if (parentContentDensityEqual && !this.config.alwaysAddModifiers) {\n return;\n }\n\n this._renderer?.addClass(element?.nativeElement, modifiers[this.value]!);\n });\n }\n\n /** Check if the given density is supported */\n private _isSupported(density: ContentDensityMode): boolean {\n return this.config.supportedContentDensity?.includes(density) ?? false;\n }\n}\n","import { Provider } from '@angular/core';\nimport { consumerProviderFactory } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver } from '../services/content-density-observer.service';\nimport { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';\n\n/**\n * Creates provider for ContentDensityObserver\n */\nexport function contentDensityObserverProviders(params?: ContentDensityObserverSettings): Provider[] {\n return [consumerProviderFactory(ContentDensityObserver, params)];\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\n/** @hidden */\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 './index';\n"],"names":["i1","map","i1.ContentDensityObserverSettings"],"mappings":"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"}
|