@theseam/ui-common 1.0.0-beta.0 → 1.0.0-beta.10

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 (153) hide show
  1. package/breadcrumbs/index.d.ts +1 -2
  2. package/buttons/index.d.ts +20 -13
  3. package/datatable/index.d.ts +77 -39
  4. package/dynamic/index.d.ts +5 -5
  5. package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
  6. package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
  7. package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
  8. package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  9. package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
  10. package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
  11. package/fesm2022/theseam-ui-common-card.mjs +21 -21
  12. package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
  13. package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
  14. package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
  15. package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
  16. package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
  17. package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
  18. package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  19. package/fesm2022/theseam-ui-common-core.mjs +31 -11
  20. package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
  21. package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
  22. package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
  23. package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
  24. package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
  25. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
  26. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
  27. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
  28. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  29. package/fesm2022/theseam-ui-common-datatable.mjs +727 -420
  30. package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
  31. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
  32. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  33. package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
  34. package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
  35. package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
  36. package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
  37. package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
  38. package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
  39. package/fesm2022/theseam-ui-common-form-field.mjs +129 -76
  40. package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
  41. package/fesm2022/theseam-ui-common-framework.mjs +669 -543
  42. package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
  44. package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
  45. package/fesm2022/theseam-ui-common-graphql.mjs +311 -254
  46. package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
  47. package/fesm2022/theseam-ui-common-icon.mjs +125 -89
  48. package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
  49. package/fesm2022/theseam-ui-common-layout.mjs +18 -26
  50. package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
  51. package/fesm2022/theseam-ui-common-loading.mjs +19 -28
  52. package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
  53. package/fesm2022/theseam-ui-common-menu.mjs +124 -95
  54. package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
  55. package/fesm2022/theseam-ui-common-modal.mjs +178 -129
  56. package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
  57. package/fesm2022/theseam-ui-common-models.mjs +3 -3
  58. package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
  59. package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
  60. package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
  61. package/fesm2022/theseam-ui-common-popover.mjs +81 -88
  62. package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
  63. package/fesm2022/theseam-ui-common-progress.mjs +15 -19
  64. package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
  65. package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
  66. package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
  67. package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
  68. package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
  69. package/fesm2022/theseam-ui-common-services.mjs +41 -26
  70. package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
  71. package/fesm2022/theseam-ui-common-shared.mjs +149 -159
  72. package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
  73. package/fesm2022/theseam-ui-common-storage.mjs +9 -6
  74. package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
  75. package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
  76. package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
  78. package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2022/theseam-ui-common-table-cell-type.mjs +63 -39
  80. package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
  81. package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
  82. package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
  83. package/fesm2022/theseam-ui-common-table.mjs +62 -41
  84. package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
  85. package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
  86. package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
  87. package/fesm2022/theseam-ui-common-testing.mjs +13 -10
  88. package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
  89. package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
  90. package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
  91. package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
  92. package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
  93. package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
  94. package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
  95. package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
  96. package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
  97. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
  98. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  99. package/fesm2022/theseam-ui-common-utils.mjs +113 -77
  100. package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
  101. package/fesm2022/theseam-ui-common-validators.mjs +10 -9
  102. package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
  103. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
  104. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  105. package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
  106. package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
  107. package/fesm2022/theseam-ui-common-widget.mjs +288 -314
  108. package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
  109. package/form-field/index.d.ts +1 -1
  110. package/framework/base-layout/base-layout.component.scss +9 -4
  111. package/framework/base-layout/styles/_variables.scss +4 -9
  112. package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
  113. package/framework/index.d.ts +6 -6
  114. package/framework/nav/nav-item/nav-item.component.scss +7 -6
  115. package/framework/nav/styles/_themes/light/_variables.scss +21 -5
  116. package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
  117. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
  118. package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
  119. package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
  120. package/graphql/index.d.ts +49 -7
  121. package/modal/README.md +5 -5
  122. package/modal/index.d.ts +1 -1
  123. package/models/index.d.ts +1 -1
  124. package/package.json +59 -60
  125. package/popover/index.d.ts +0 -2
  126. package/progress/progress-circle/styles/_variables.scss +15 -3
  127. package/shared/index.d.ts +0 -13
  128. package/story-helpers/index.d.ts +11 -1
  129. package/styles/bootstrap/_bootstrap.scss +34 -34
  130. package/styles/bootstrap/_bs-styles.scss +4 -8
  131. package/styles/bootstrap/_bs-utilities.scss +4 -4
  132. package/styles/bootstrap/_bs-variables.scss +65 -70
  133. package/styles/common/_forms.scss +9 -10
  134. package/styles/common/_global.scss +0 -1
  135. package/styles/common/_hacks.scss +1 -1
  136. package/styles/common/_table.scss +0 -1
  137. package/styles/common/_text.scss +3 -1
  138. package/styles/theme.scss +1 -1
  139. package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
  140. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
  141. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
  142. package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
  143. package/styles/vendor/quill/_quill.scss +15 -9
  144. package/table/index.d.ts +4 -1
  145. package/table-cell-type/index.d.ts +27 -2
  146. package/tel-input/README.md +27 -27
  147. package/utils/index.d.ts +3 -3
  148. package/viewers/index.d.ts +9 -2
  149. package/widget/_widget-theme.scss +1 -1
  150. package/widget/styles/_variables.scss +2 -2
  151. package/widget/widget/widget.component.scss +0 -2
  152. package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
  153. package/widget/widget-footer/widget-footer.component.scss +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-services.mjs","sources":["../../../projects/ui-common/services/preferences/preferences-record.ts","../../../projects/ui-common/services/preferences/preferences-manager.service.ts","../../../projects/ui-common/services/asset-loader.service.ts","../../../projects/ui-common/services/router-helpers.service.ts","../../../projects/ui-common/services/font-loader.service.ts","../../../projects/ui-common/services/theseam-ui-common-services.ts"],"sourcesContent":["import { isDevMode } from '@angular/core'\nimport { map, Observable, of, shareReplay, startWith, Subject, switchMap, take, tap } from 'rxjs'\n\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TheSeamPreferencesAccessor } from './preferences-accessor'\nimport { TheSeamPreferencesBase } from './preferences.models'\n\nexport type TheSeamPreferencesRecordStatus = 'pending' | 'loaded'\n\nexport interface TheSeamPreferencesRecordStatusChange {\n previous: TheSeamPreferencesRecordStatus\n current: TheSeamPreferencesRecordStatus\n}\n\nexport class TheSeamPreferencesMapRecord {\n\n private readonly _refreshSubject = new Subject<void>()\n private readonly _statusChangeSubject = new Subject<TheSeamPreferencesRecordStatusChange>()\n\n private _status: TheSeamPreferencesRecordStatus = 'pending'\n\n public readonly observable: Observable<TheSeamPreferencesBase>\n public readonly statusChange: Observable<TheSeamPreferencesRecordStatusChange>\n\n constructor(\n private readonly _key: string,\n private readonly _accessor: TheSeamPreferencesAccessor,\n private readonly _emptyPrefs: TheSeamPreferencesBase,\n ) {\n this.observable = this._createObservable()\n this.statusChange = this._statusChangeSubject.asObservable()\n }\n\n private _createObservable(): Observable<TheSeamPreferencesBase> {\n if (!this._accessor) {\n return of(this._emptyPrefs)\n }\n\n const accessor = (key: string): Observable<string> =>\n this._accessor ? this._accessor.get(key) : of(JSON.stringify(this._emptyPrefs))\n\n return this._refreshSubject.pipe(\n startWith(undefined),\n switchMap(() => accessor(this._key).pipe(\n map(v => {\n if (!v) {\n return null\n }\n\n // TODO: Add a schema validator and migration tool to avoid parsing issues.\n try {\n return this._descerializePreferences(v)\n } catch (error) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n return null\n }\n }),\n map(v => notNullOrUndefined(v) ? v : this._emptyPrefs),\n tap(() => {\n this._setStatus('loaded')\n })\n )),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public update(value: TheSeamPreferencesBase): void {\n this._accessor.update(this._key, JSON.stringify(value)).pipe(take(1)).subscribe()\n }\n\n public delete(): void {\n this._accessor.delete(this._key).pipe(take(1)).subscribe()\n }\n\n public refresh(): void {\n this._setStatus('pending')\n this._refreshSubject.next()\n }\n\n public isSameAccessor(accessor: TheSeamPreferencesAccessor): boolean {\n return this._accessor === accessor\n }\n\n public isSameEmptyPrefs(emptyPrefs: TheSeamPreferencesBase): boolean {\n return JSON.stringify(this._emptyPrefs) === JSON.stringify(emptyPrefs)\n }\n\n get status(): TheSeamPreferencesRecordStatus {\n return this._status\n }\n\n private _setStatus(status: TheSeamPreferencesRecordStatus): void {\n if (this._status === status) {\n return\n }\n const prev = this._status\n this._status = status\n this._statusChangeSubject.next({ previous: prev, current: status })\n }\n\n private _descerializePreferences(serialized: string): TheSeamPreferencesBase {\n const prefs = JSON.parse(serialized)\n\n // TODO: Implement migration\n\n return prefs\n }\n}\n","import { Injectable } from '@angular/core'\nimport { map, Observable } from 'rxjs'\n\nimport { TheSeamPreferencesBase } from './preferences.models'\nimport { TheSeamPreferencesAccessor } from './preferences-accessor'\nimport { TheSeamPreferencesMapRecord } from './preferences-record'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TheSeamPreferencesManagerService {\n\n private readonly _tablePrefsMap = new Map<string, TheSeamPreferencesMapRecord>()\n\n public preferences(\n preferenceKey: string,\n accessor: TheSeamPreferencesAccessor,\n emptyPrefs: TheSeamPreferencesBase,\n ): Observable<TheSeamPreferencesBase> {\n let prefs = this._tablePrefsMap.get(preferenceKey)\n\n if (prefs && !prefs.isSameAccessor(accessor)) {\n throw Error(`Preferences accessor mismatch for key '${preferenceKey}'. Changing the accessor is not supported.`)\n }\n\n if (prefs && !prefs.isSameEmptyPrefs(emptyPrefs)) {\n throw Error(`Preferences emptyPrefs mismatch for key '${preferenceKey}'. Changing the emptyPrefs is not supported.`)\n }\n\n if (!prefs) {\n prefs = new TheSeamPreferencesMapRecord(preferenceKey, accessor, emptyPrefs)\n this._tablePrefsMap.set(preferenceKey, prefs)\n }\n return prefs.observable.pipe(\n map(v => {\n // This is for assuming the accessor returned an empty object, as a\n // default for a missing preference. Instead of throwing an error, we\n // return a valid empty preferences.\n //\n // NOTE: May remove this, when a more generic preferences implementation\n // is finished.\n if (Object.keys(v).length === 0) {\n return emptyPrefs\n }\n\n return v\n }),\n )\n }\n\n public update(preferenceKey: string, value: TheSeamPreferencesBase): void {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n prefs.update(value)\n }\n }\n\n public delete(preferenceKey: string): void {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n prefs.delete()\n }\n }\n\n public refresh(preferenceKey: string): void {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n prefs.refresh()\n }\n }\n\n public isPending(preferenceKey: string): boolean {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n return prefs ? prefs.status === 'pending' : false\n }\n\n public isLoaded(preferenceKey: string): boolean {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n return prefs ? prefs.status === 'loaded' : false\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { defer, Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { loadStyle, loadStyleSheet } from '@theseam/ui-common/utils'\n\nexport class LoadedAssetRef<T extends HTMLLinkElement | HTMLScriptElement | HTMLStyleElement> {\n\n constructor(\n public readonly nativeElement: T,\n public readonly path?: string,\n public readonly content?: string\n ) {\n\n }\n\n public destroy(): void {\n this.nativeElement.parentElement?.removeChild(this.nativeElement)\n }\n\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetLoaderService {\n\n public loadStyleSheet(path: string): Observable<LoadedAssetRef<HTMLLinkElement>> {\n return defer(() => loadStyleSheet(path)).pipe(map(v => new LoadedAssetRef(v, path)))\n }\n\n public loadStyle(content: string): Observable<LoadedAssetRef<HTMLStyleElement>> {\n return defer(() => loadStyle(content)).pipe(map(v => new LoadedAssetRef(v, undefined, content)))\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { IsActiveMatchOptions, NavigationEnd, Router, UrlTree } from '@angular/router'\nimport { Observable } from 'rxjs'\nimport { filter, map, startWith } from 'rxjs/operators'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouterHelpersService {\n\n constructor(\n private _router: Router\n ) { }\n\n public isActive(url: string | UrlTree, exact: boolean): Observable<boolean> {\n const opts: IsActiveMatchOptions = exact\n ? { paths: 'exact', queryParams: 'exact', fragment: 'ignored', matrixParams: 'ignored' }\n : { paths: 'subset', queryParams: 'subset', fragment: 'ignored', matrixParams: 'ignored' }\n\n return this._router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => this._router.isActive(url, opts)),\n startWith(this._router.isActive(url, opts))\n )\n }\n}\n","import { Injectable } from '@angular/core'\n\nimport { Observable, Subscriber } from 'rxjs'\nimport WebFont from 'webfontloader'\n\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nexport type TheSeamFontEvents =\n { type: 'loading' } |\n { type: 'active' } |\n { type: 'inactive' } |\n { type: 'fontloading', familyName: string, fvd: string } |\n { type: 'fontactive', familyName: string, fvd: string } |\n { type: 'fontinactive', familyName: string, fvd: string }\n\n/**\n * Service to help loading fonts.\n *\n * Currently this is just a wrapper for the parts of webfontloader that we need.\n * Eventually this should be generic enough that we can switch loaders without\n * config differences being confusing.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TheSeamFontLoaderService {\n\n /**\n * Since this method is just a wrapper for webfontloader right now it accepts\n * anything webfontloader's config accepts, so the event callbacks can still\n * be used, but you should us the emitted objects instead. If we decide to\n * support other font loaders then the event callbacks will most likely be\n * removed.\n *\n * NOTE: If you need to use the events callbacks for some reason, this\n * method's returned observable will still need to be subscribed to, because\n * it doesn't start till subscribed to.\n */\n public load(config: WebFont.Config): Observable<TheSeamFontEvents> {\n return new Observable((subscriber: Subscriber<TheSeamFontEvents>) => {\n WebFont.load({\n ...config,\n /** This event is triggered when all fonts have been requested. */\n loading: () => {\n if (hasProperty(config, 'loading')) {\n config.loading()\n }\n subscriber.next({ type: 'loading' })\n },\n /** This event is triggered when the fonts have rendered. */\n active: () => {\n if (hasProperty(config, 'active')) {\n config.active()\n }\n subscriber.next({ type: 'active' })\n },\n /** This event is triggered when the browser does not support linked fonts or if none of the fonts could be loaded. */\n inactive: () => {\n if (hasProperty(config, 'inactive')) {\n config.inactive()\n }\n subscriber.next({ type: 'inactive' })\n },\n /** This event is triggered once for each font that's loaded. */\n fontloading: (familyName: string, fvd: string) => {\n if (hasProperty(config, 'fontloading')) {\n config.fontloading(familyName, fvd)\n }\n subscriber.next({ type: 'fontloading', familyName, fvd })\n },\n /** This event is triggered once for each font that renders. */\n fontactive: (familyName: string, fvd: string) => {\n if (hasProperty(config, 'fontactive')) {\n config.fontactive(familyName, fvd)\n }\n subscriber.next({ type: 'fontactive', familyName, fvd })\n },\n /** This event is triggered if the font can't be loaded. */\n fontinactive: (familyName: string, fvd: string) => {\n if (hasProperty(config, 'fontinactive')) {\n config.fontinactive(familyName, fvd)\n }\n subscriber.next({ type: 'fontinactive', familyName, fvd })\n },\n })\n })\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","startWith"],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-services.mjs","sources":["../../../projects/ui-common/services/preferences/preferences-record.ts","../../../projects/ui-common/services/preferences/preferences-manager.service.ts","../../../projects/ui-common/services/asset-loader.service.ts","../../../projects/ui-common/services/router-helpers.service.ts","../../../projects/ui-common/services/font-loader.service.ts","../../../projects/ui-common/services/theseam-ui-common-services.ts"],"sourcesContent":["import { isDevMode } from '@angular/core'\nimport {\n map,\n Observable,\n of,\n shareReplay,\n startWith,\n Subject,\n switchMap,\n take,\n tap,\n} from 'rxjs'\n\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { TheSeamPreferencesAccessor } from './preferences-accessor'\nimport { TheSeamPreferencesBase } from './preferences.models'\n\nexport type TheSeamPreferencesRecordStatus = 'pending' | 'loaded'\n\nexport interface TheSeamPreferencesRecordStatusChange {\n previous: TheSeamPreferencesRecordStatus\n current: TheSeamPreferencesRecordStatus\n}\n\nexport class TheSeamPreferencesMapRecord {\n private readonly _refreshSubject = new Subject<void>()\n private readonly _statusChangeSubject =\n new Subject<TheSeamPreferencesRecordStatusChange>()\n\n private _status: TheSeamPreferencesRecordStatus = 'pending'\n\n public readonly observable: Observable<TheSeamPreferencesBase>\n public readonly statusChange: Observable<TheSeamPreferencesRecordStatusChange>\n\n constructor(\n private readonly _key: string,\n private readonly _accessor: TheSeamPreferencesAccessor,\n private readonly _emptyPrefs: TheSeamPreferencesBase,\n ) {\n this.observable = this._createObservable()\n this.statusChange = this._statusChangeSubject.asObservable()\n }\n\n private _createObservable(): Observable<TheSeamPreferencesBase> {\n if (!this._accessor) {\n return of(this._emptyPrefs)\n }\n\n const accessor = (key: string): Observable<string> =>\n this._accessor\n ? this._accessor.get(key)\n : of(JSON.stringify(this._emptyPrefs))\n\n return this._refreshSubject.pipe(\n startWith(undefined),\n switchMap(() =>\n accessor(this._key).pipe(\n map((v) => {\n if (!v) {\n return null\n }\n\n // TODO: Add a schema validator and migration tool to avoid parsing issues.\n try {\n return this._descerializePreferences(v)\n } catch (error) {\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n return null\n }\n }),\n map((v) => (notNullOrUndefined(v) ? v : this._emptyPrefs)),\n tap(() => {\n this._setStatus('loaded')\n }),\n ),\n ),\n shareReplay({ bufferSize: 1, refCount: true }),\n )\n }\n\n public update(value: TheSeamPreferencesBase): void {\n this._accessor\n .update(this._key, JSON.stringify(value))\n .pipe(take(1))\n .subscribe()\n }\n\n public delete(): void {\n this._accessor.delete(this._key).pipe(take(1)).subscribe()\n }\n\n public refresh(): void {\n this._setStatus('pending')\n this._refreshSubject.next()\n }\n\n public isSameAccessor(accessor: TheSeamPreferencesAccessor): boolean {\n return this._accessor === accessor\n }\n\n public isSameEmptyPrefs(emptyPrefs: TheSeamPreferencesBase): boolean {\n return JSON.stringify(this._emptyPrefs) === JSON.stringify(emptyPrefs)\n }\n\n get status(): TheSeamPreferencesRecordStatus {\n return this._status\n }\n\n private _setStatus(status: TheSeamPreferencesRecordStatus): void {\n if (this._status === status) {\n return\n }\n const prev = this._status\n this._status = status\n this._statusChangeSubject.next({ previous: prev, current: status })\n }\n\n private _descerializePreferences(serialized: string): TheSeamPreferencesBase {\n const prefs = JSON.parse(serialized)\n\n // TODO: Implement migration\n\n return prefs\n }\n}\n","import { Injectable } from '@angular/core'\nimport { map, Observable } from 'rxjs'\n\nimport { TheSeamPreferencesBase } from './preferences.models'\nimport { TheSeamPreferencesAccessor } from './preferences-accessor'\nimport { TheSeamPreferencesMapRecord } from './preferences-record'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TheSeamPreferencesManagerService {\n private readonly _tablePrefsMap = new Map<\n string,\n TheSeamPreferencesMapRecord\n >()\n\n public preferences(\n preferenceKey: string,\n accessor: TheSeamPreferencesAccessor,\n emptyPrefs: TheSeamPreferencesBase,\n ): Observable<TheSeamPreferencesBase> {\n let prefs = this._tablePrefsMap.get(preferenceKey)\n\n if (prefs && !prefs.isSameAccessor(accessor)) {\n throw Error(\n `Preferences accessor mismatch for key '${preferenceKey}'. Changing the accessor is not supported.`,\n )\n }\n\n if (prefs && !prefs.isSameEmptyPrefs(emptyPrefs)) {\n throw Error(\n `Preferences emptyPrefs mismatch for key '${preferenceKey}'. Changing the emptyPrefs is not supported.`,\n )\n }\n\n if (!prefs) {\n prefs = new TheSeamPreferencesMapRecord(\n preferenceKey,\n accessor,\n emptyPrefs,\n )\n this._tablePrefsMap.set(preferenceKey, prefs)\n }\n return prefs.observable.pipe(\n map((v) => {\n // This is for assuming the accessor returned an empty object, as a\n // default for a missing preference. Instead of throwing an error, we\n // return a valid empty preferences.\n //\n // NOTE: May remove this, when a more generic preferences implementation\n // is finished.\n if (Object.keys(v).length === 0) {\n return emptyPrefs\n }\n\n return v\n }),\n )\n }\n\n public update(preferenceKey: string, value: TheSeamPreferencesBase): void {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n prefs.update(value)\n }\n }\n\n public delete(preferenceKey: string): void {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n prefs.delete()\n }\n }\n\n public refresh(preferenceKey: string): void {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n if (prefs) {\n prefs.refresh()\n }\n }\n\n public isPending(preferenceKey: string): boolean {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n return prefs ? prefs.status === 'pending' : false\n }\n\n public isLoaded(preferenceKey: string): boolean {\n const prefs = this._tablePrefsMap.get(preferenceKey)\n return prefs ? prefs.status === 'loaded' : false\n }\n}\n","import { Injectable } from '@angular/core'\nimport { defer, Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { loadStyle, loadStyleSheet } from '@theseam/ui-common/utils'\n\nexport class LoadedAssetRef<\n T extends HTMLLinkElement | HTMLScriptElement | HTMLStyleElement,\n> {\n constructor(\n public readonly nativeElement: T,\n public readonly path?: string,\n public readonly content?: string,\n ) {}\n\n public destroy(): void {\n this.nativeElement.parentElement?.removeChild(this.nativeElement)\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AssetLoaderService {\n public loadStyleSheet(\n path: string,\n ): Observable<LoadedAssetRef<HTMLLinkElement>> {\n return defer(() => loadStyleSheet(path)).pipe(\n map((v) => new LoadedAssetRef(v, path)),\n )\n }\n\n public loadStyle(\n content: string,\n ): Observable<LoadedAssetRef<HTMLStyleElement>> {\n return defer(() => loadStyle(content)).pipe(\n map((v) => new LoadedAssetRef(v, undefined, content)),\n )\n }\n}\n","import { Injectable } from '@angular/core'\nimport {\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n UrlTree,\n} from '@angular/router'\nimport { Observable } from 'rxjs'\nimport { filter, map, startWith } from 'rxjs/operators'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterHelpersService {\n constructor(private _router: Router) {}\n\n public isActive(url: string | UrlTree, exact: boolean): Observable<boolean> {\n const opts: IsActiveMatchOptions = exact\n ? {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n }\n : {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n }\n\n return this._router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n map((event) => this._router.isActive(url, opts)),\n startWith(this._router.isActive(url, opts)),\n )\n }\n}\n","import { Injectable } from '@angular/core'\n\nimport { Observable, Subscriber } from 'rxjs'\nimport WebFont from 'webfontloader'\n\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nexport type TheSeamFontEvents =\n | { type: 'loading' }\n | { type: 'active' }\n | { type: 'inactive' }\n | { type: 'fontloading'; familyName: string; fvd: string }\n | { type: 'fontactive'; familyName: string; fvd: string }\n | { type: 'fontinactive'; familyName: string; fvd: string }\n\n/**\n * Service to help loading fonts.\n *\n * Currently this is just a wrapper for the parts of webfontloader that we need.\n * Eventually this should be generic enough that we can switch loaders without\n * config differences being confusing.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TheSeamFontLoaderService {\n /**\n * Since this method is just a wrapper for webfontloader right now it accepts\n * anything webfontloader's config accepts, so the event callbacks can still\n * be used, but you should us the emitted objects instead. If we decide to\n * support other font loaders then the event callbacks will most likely be\n * removed.\n *\n * NOTE: If you need to use the events callbacks for some reason, this\n * method's returned observable will still need to be subscribed to, because\n * it doesn't start till subscribed to.\n */\n public load(config: WebFont.Config): Observable<TheSeamFontEvents> {\n return new Observable((subscriber: Subscriber<TheSeamFontEvents>) => {\n WebFont.load({\n ...config,\n /** This event is triggered when all fonts have been requested. */\n loading: () => {\n if (hasProperty(config, 'loading')) {\n config.loading()\n }\n subscriber.next({ type: 'loading' })\n },\n /** This event is triggered when the fonts have rendered. */\n active: () => {\n if (hasProperty(config, 'active')) {\n config.active()\n }\n subscriber.next({ type: 'active' })\n },\n /** This event is triggered when the browser does not support linked fonts or if none of the fonts could be loaded. */\n inactive: () => {\n if (hasProperty(config, 'inactive')) {\n config.inactive()\n }\n subscriber.next({ type: 'inactive' })\n },\n /** This event is triggered once for each font that's loaded. */\n fontloading: (familyName: string, fvd: string) => {\n if (hasProperty(config, 'fontloading')) {\n config.fontloading(familyName, fvd)\n }\n subscriber.next({ type: 'fontloading', familyName, fvd })\n },\n /** This event is triggered once for each font that renders. */\n fontactive: (familyName: string, fvd: string) => {\n if (hasProperty(config, 'fontactive')) {\n config.fontactive(familyName, fvd)\n }\n subscriber.next({ type: 'fontactive', familyName, fvd })\n },\n /** This event is triggered if the font can't be loaded. */\n fontinactive: (familyName: string, fvd: string) => {\n if (hasProperty(config, 'fontinactive')) {\n config.fontinactive(familyName, fvd)\n }\n subscriber.next({ type: 'fontinactive', familyName, fvd })\n },\n })\n })\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","startWith"],"mappings":"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"}