@fundamental-ngx/core 0.46.0-rc.13 → 0.46.0-rc.14

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.
Files changed (32) hide show
  1. package/content-density/content-density.module.d.ts +2 -3
  2. package/content-density/index.d.ts +3 -2
  3. package/content-density/provide-content-density.d.ts +7 -0
  4. package/esm2022/content-density/content-density.module.mjs +6 -68
  5. package/esm2022/content-density/index.mjs +4 -3
  6. package/esm2022/content-density/provide-content-density.mjs +71 -0
  7. package/esm2022/generic-tag/fundamental-ngx-core-generic-tag.mjs +5 -0
  8. package/esm2022/generic-tag/generic-tag.component.mjs +75 -0
  9. package/esm2022/generic-tag/generic-tag.module.mjs +16 -0
  10. package/esm2022/generic-tag/index.mjs +4 -0
  11. package/esm2022/generic-tag/tokens.mjs +3 -0
  12. package/esm2022/theming/index.mjs +4 -3
  13. package/esm2022/theming/provide-theming.mjs +16 -0
  14. package/esm2022/theming/theming.module.mjs +6 -24
  15. package/esm2022/theming/tokens.mjs +5 -2
  16. package/fesm2022/fundamental-ngx-core-content-density.mjs +111 -103
  17. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  18. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +96 -0
  19. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -0
  20. package/fesm2022/fundamental-ngx-core-theming.mjs +22 -23
  21. package/fesm2022/fundamental-ngx-core-theming.mjs.map +1 -1
  22. package/fundamental-ngx-core-v0.46.0-rc.14.tgz +0 -0
  23. package/generic-tag/README.md +25 -0
  24. package/generic-tag/generic-tag.component.d.ts +43 -0
  25. package/generic-tag/generic-tag.module.d.ts +7 -0
  26. package/generic-tag/index.d.ts +3 -0
  27. package/generic-tag/tokens.d.ts +2 -0
  28. package/package.json +9 -3
  29. package/schematics/add-dependencies/index.js +4 -4
  30. package/theming/index.d.ts +3 -2
  31. package/theming/provide-theming.d.ts +7 -0
  32. 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 { DOCUMENT, CommonModule } from '@angular/common';
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
- class MemoryContentDensityStorage {
138
- /** @hidden */
139
- constructor(defaultContentDensity) {
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: [CommonModule, ContentDensityDirective], exports: [ContentDensityDirective] }); }
398
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityModule, imports: [CommonModule] }); }
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: [CommonModule, ContentDensityDirective],
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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"}