@smartsoft001-mobilems/public-collections-shell-angular 2.119.0 → 2.121.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"smartsoft001-mobilems-public-collections-shell-angular.mjs","sources":["../../../../../../packages/public-collections/shell/angular/src/lib/services/public-collections/public-collections.service.ts","../../../../../../packages/public-collections/shell/angular/src/lib/+state/public-collections.facade.ts","../../../../../../packages/public-collections/shell/angular/src/lib/+state/public-collections.reducer.ts","../../../../../../packages/public-collections/shell/angular/src/lib/components/list/list.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/components/list/list.component.html","../../../../../../packages/public-collections/shell/angular/src/lib/components/filters/filters.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/components/filters/filters.component.html","../../../../../../packages/public-collections/shell/angular/src/lib/components/components.module.ts","../../../../../../packages/public-collections/shell/angular/src/lib/services/index.ts","../../../../../../packages/public-collections/shell/angular/src/lib/public-collections.module.ts","../../../../../../packages/public-collections/shell/angular/src/lib/public-collections-shared.module.ts","../../../../../../packages/public-collections/shell/angular/src/lib/pages/list/list.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/pages/item/item.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/+state/public-collections.selectors.ts","../../../../../../packages/public-collections/shell/angular/src/smartsoft001-mobilems-public-collections-shell-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { CrudBaseService } from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\n@Injectable()\nexport class PublicCollectionsService extends CrudBaseService<PublicCollection> {\n getUrlNameForDetails(): string {\n return 'public-collections';\n }\n\n getUrlNameForList(): string {\n return 'public-collections';\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CrudFacade } from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsService } from '../services/public-collections/public-collections.service';\n\n@Injectable()\nexport class PublicCollectionsFacade extends CrudFacade<PublicCollection> {\n protected service = inject(PublicCollectionsService);\n}\n","import { Action } from '@ngrx/store';\nimport {\n State as SmartState,\n initialState as smartInitialState,\n getReducer as smartGetReducer,\n} from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\n// import {public-collectionsFacade} from \"./public-collections.facade\";\n\nexport type State = SmartState<PublicCollection>;\n\nexport const initialState = {\n ...smartInitialState,\n};\n\nconst publicCollectionsReducer = (state = initialState, action: any) => {\n switch (action.type) {\n //case public-collectionsFacade.name + ' test':\n // return {\n // ...state,\n // loaded: false,\n // }\n\n default:\n return smartGetReducer('publicCollections')(state, action);\n }\n};\n\nexport function getReducer() {\n return (state: any, action: Action) => {\n return publicCollectionsReducer(state, action);\n };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n TemplateRef,\n contentChild,\n inject,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { PublicCollectionsFacade } from '../../+state/public-collections.facade';\n\n@Component({\n selector: 'smart-mobilems-public-collections-list',\n templateUrl: './list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [NgTemplateOutlet],\n})\nexport class ListComponent {\n private facade = inject(PublicCollectionsFacade);\n\n list = this.facade.list;\n loading = this.facade.loading;\n\n itemTpl = contentChild<TemplateRef<any>>('itemTpl');\n loadingTpl = contentChild<TemplateRef<any>>('loadingTpl');\n}\n","@if (list(); as listData) {\n @if (listData && itemTpl()) {\n @for (item of listData; track item) {\n <ng-container\n *ngTemplateOutlet=\"itemTpl(); context: { $implicit: item }\"\n ></ng-container>\n }\n }\n}\n\n@if (loading()) {\n @if (loadingTpl()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl()\"></ng-container>\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { FiltersBaseComponent } from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\n@Component({\n selector: 'smart-mobilems-public-collections-filters',\n templateUrl: './filters.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [NgTemplateOutlet],\n})\nexport class FiltersComponent extends FiltersBaseComponent<PublicCollection> {}\n","<ng-container\n *ngTemplateOutlet=\"contentTpl(); context: { $implicit: context }\"\n></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FiltersComponent } from './filters/filters.component';\nimport { ListComponent } from './list/list.component';\n\nconst COMPONENTS = [FiltersComponent, ListComponent];\n\n@NgModule({\n imports: [CommonModule, COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class ComponentsModule {}\n","import { CrudService } from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollectionsService } from './public-collections/public-collections.service';\n\nexport * from './public-collections/public-collections.service';\n\nexport const SERVICES = [\n PublicCollectionsService,\n {\n provide: CrudService,\n useClass: PublicCollectionsService,\n },\n];\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n FILE_SERVICE_CONFIG,\n IFileServiceConfig,\n PaginationMode,\n} from '@smartsoft001/angular';\nimport {\n CrudConfig,\n CrudFullConfig,\n CrudFullModule,\n ICrudModuleOptionsWithoutRoutng,\n} from '@smartsoft001/crud-shell-angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport {\n provideInheritedSharedConfig,\n SharedModule,\n} from '@smartsoft001-mobilems/angular';\n\nimport { PublicCollectionsFacade } from './+state/public-collections.facade';\nimport { getReducer } from './+state/public-collections.reducer';\nimport { ComponentsModule } from './components';\nimport { SERVICES } from './services';\n\n@NgModule({\n declarations: [],\n providers: [...SERVICES, PublicCollectionsFacade],\n imports: [SharedModule, ComponentsModule, CrudFullModule],\n exports: [ComponentsModule],\n})\nexport class PublicCollectionsModule {\n static forFeature<T extends IEntity<string>>(\n options: ICrudModuleOptionsWithoutRoutng<T>,\n ): ModuleWithProviders<PublicCollectionsModule> {\n if (!options.config.reducerFactory)\n options.config.reducerFactory = getReducer;\n return {\n ngModule: PublicCollectionsModule,\n providers: [\n provideInheritedSharedConfig(options.config.apiUrl),\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ],\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FILE_SERVICE_CONFIG, IFileServiceConfig } from '@smartsoft001/angular';\nimport {\n CrudConfig,\n CrudFullConfig,\n CrudModule,\n ICrudModuleOptionsWithoutRoutng,\n} from '@smartsoft001/crud-shell-angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport {\n provideInheritedSharedConfig,\n SharedModule,\n} from '@smartsoft001-mobilems/angular';\n\nimport { PublicCollectionsFacade } from './+state/public-collections.facade';\nimport { getReducer } from './+state/public-collections.reducer';\nimport { ComponentsModule } from './components';\nimport { SERVICES } from './services';\n\n@NgModule({\n declarations: [],\n providers: [...SERVICES, PublicCollectionsFacade],\n imports: [SharedModule, ComponentsModule, CrudModule],\n exports: [ComponentsModule],\n})\nexport class PublicCollectionsSharedModule {\n static forFeature<T extends IEntity<string>>(\n options: ICrudModuleOptionsWithoutRoutng<T>,\n ): ModuleWithProviders<PublicCollectionsSharedModule> {\n if (!options.config.reducerFactory)\n options.config.reducerFactory = getReducer;\n return {\n ngModule: PublicCollectionsSharedModule,\n providers: [\n provideInheritedSharedConfig(options.config.apiUrl),\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ],\n };\n }\n}\n","import { Directive, inject, Signal } from '@angular/core';\nimport { CrudListPageBaseComponent } from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsFacade } from '../../+state/public-collections.facade';\n\n@Directive()\nexport abstract class PublicCollectionsListComponent extends CrudListPageBaseComponent<PublicCollection> {\n protected readonly facade = inject(PublicCollectionsFacade);\n\n list = this.facade.list as Signal<PublicCollection[]>;\n loading = this.facade.loading;\n filter = this.facade.filter;\n}\n","import { Directive, inject, effect, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { CrudItemPageBaseComponent } from '@smartsoft001/crud-shell-angular';\n\nimport { SeoService, TranslationService } from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsFacade } from '../../+state/public-collections.facade';\n\n@Directive()\nexport abstract class PublicCollectionsItemComponent extends CrudItemPageBaseComponent<PublicCollection> {\n protected readonly route = inject(ActivatedRoute);\n protected readonly seoService = inject(SeoService);\n protected readonly translationService = inject(TranslationService);\n protected readonly params = toSignal(this.route.params);\n\n override facade = inject(PublicCollectionsFacade);\n\n readonly loading = this.facade.loading;\n readonly item = this.facade.selected;\n\n protected constructor() {\n super();\n\n effect(() => {\n const params = this.params();\n\n const id = params['id'];\n if (id) {\n this.facade.select(id);\n }\n });\n }\n}\n","import {\n createFeatureSelector,\n //createSelector\n} from '@ngrx/store';\n\nimport { State } from './public-collections.reducer';\n\nexport const getPublicCollectionsState =\n createFeatureSelector<State>('publicCollections');\n\n//export const getpublic-collectionsTest = createSelector(\n// getpublic-collectionsState,\n// (state) => state.test\n//);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["smartInitialState","smartGetReducer"],"mappings":"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"}
1
+ {"version":3,"file":"smartsoft001-mobilems-public-collections-shell-angular.mjs","sources":["../../../../../../packages/public-collections/shell/angular/src/lib/services/public-collections/public-collections.service.ts","../../../../../../packages/public-collections/shell/angular/src/lib/+state/public-collections.facade.ts","../../../../../../packages/public-collections/shell/angular/src/lib/+state/public-collections.reducer.ts","../../../../../../packages/public-collections/shell/angular/src/lib/components/list/list.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/components/list/list.component.html","../../../../../../packages/public-collections/shell/angular/src/lib/components/filters/filters.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/components/filters/filters.component.html","../../../../../../packages/public-collections/shell/angular/src/lib/components/components.module.ts","../../../../../../packages/public-collections/shell/angular/src/lib/services/public-collection-items/public-collection-items.service.ts","../../../../../../packages/public-collections/shell/angular/src/lib/services/index.ts","../../../../../../packages/public-collections/shell/angular/src/lib/public-collections.module.ts","../../../../../../packages/public-collections/shell/angular/src/lib/public-collections-shared.module.ts","../../../../../../packages/public-collections/shell/angular/src/lib/pages/list/list.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/pages/item/item.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/+state/public-collections.selectors.ts","../../../../../../packages/public-collections/shell/angular/src/lib/catalog/collections-catalog-base.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/catalog/collection-details-base.component.ts","../../../../../../packages/public-collections/shell/angular/src/lib/catalog/collection-share-button-base.component.ts","../../../../../../packages/public-collections/shell/angular/src/smartsoft001-mobilems-public-collections-shell-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { CrudBaseService } from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\n@Injectable()\nexport class PublicCollectionsService extends CrudBaseService<PublicCollection> {\n getUrlNameForDetails(): string {\n return 'public-collections';\n }\n\n getUrlNameForList(): string {\n return 'public-collections';\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CrudFacade } from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsService } from '../services/public-collections/public-collections.service';\n\n@Injectable()\nexport class PublicCollectionsFacade extends CrudFacade<PublicCollection> {\n protected service = inject(PublicCollectionsService);\n}\n","import { Action } from '@ngrx/store';\nimport {\n State as SmartState,\n initialState as smartInitialState,\n getReducer as smartGetReducer,\n} from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\n// import {public-collectionsFacade} from \"./public-collections.facade\";\n\nexport type State = SmartState<PublicCollection>;\n\nexport const initialState = {\n ...smartInitialState,\n};\n\nconst publicCollectionsReducer = (state = initialState, action: any) => {\n switch (action.type) {\n //case public-collectionsFacade.name + ' test':\n // return {\n // ...state,\n // loaded: false,\n // }\n\n default:\n return smartGetReducer('publicCollections')(state, action);\n }\n};\n\nexport function getReducer() {\n return (state: any, action: Action) => {\n return publicCollectionsReducer(state, action);\n };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n TemplateRef,\n contentChild,\n inject,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { PublicCollectionsFacade } from '../../+state/public-collections.facade';\n\n@Component({\n selector: 'smart-mobilems-public-collections-list',\n templateUrl: './list.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [NgTemplateOutlet],\n})\nexport class ListComponent {\n private facade = inject(PublicCollectionsFacade);\n\n list = this.facade.list;\n loading = this.facade.loading;\n\n itemTpl = contentChild<TemplateRef<any>>('itemTpl');\n loadingTpl = contentChild<TemplateRef<any>>('loadingTpl');\n}\n","@if (list(); as listData) {\n @if (listData && itemTpl()) {\n @for (item of listData; track item) {\n <ng-container\n *ngTemplateOutlet=\"itemTpl(); context: { $implicit: item }\"\n ></ng-container>\n }\n }\n}\n\n@if (loading()) {\n @if (loadingTpl()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl()\"></ng-container>\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { FiltersBaseComponent } from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\n@Component({\n selector: 'smart-mobilems-public-collections-filters',\n templateUrl: './filters.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [NgTemplateOutlet],\n})\nexport class FiltersComponent extends FiltersBaseComponent<PublicCollection> {}\n","<ng-container\n *ngTemplateOutlet=\"contentTpl(); context: { $implicit: context }\"\n></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FiltersComponent } from './filters/filters.component';\nimport { ListComponent } from './list/list.component';\n\nconst COMPONENTS = [FiltersComponent, ListComponent];\n\n@NgModule({\n imports: [CommonModule, COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class ComponentsModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ICrudFilter } from '@smartsoft001/crud-shell-angular';\nimport { catchError, finalize, map, Observable, of, switchMap } from 'rxjs';\n\nimport type { Article } from '@smartsoft001-mobilems/articles-domain';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsService } from '../public-collections/public-collections.service';\n\nexport interface IPublicCollectionPaginator {\n currentPage: number;\n maxPerPage: number;\n totalItemsCount: number;\n totalPagesCount: number;\n}\n\nexport interface IPublicCollectionPage extends PublicCollection {\n paginatorDetails?: IPublicCollectionPaginator;\n publicationDate?: string | null;\n cycles?: { id: number; name: string }[] | null;\n}\n\n/** How many related articles a collection page shows. */\nexport const PUBLIC_COLLECTION_RELATED_ARTICLES_LIMIT = 20;\n\n@Injectable()\nexport class PublicCollectionItemsService extends PublicCollectionsService {\n /**\n * Status of the last failed page load. `getItems` yields `null` both for no\n * data and for an error, so without it a page cannot tell a 404 from a load\n * in progress.\n */\n readonly loadErrorStatus: WritableSignal<number | null> = signal(null);\n\n /** A collection page is loading (paging, sorting and \"load more\" go through `getItems`). */\n readonly loading: WritableSignal<boolean> = signal(false);\n\n /**\n * Fetches a page of the collection items. Call in an injection context.\n * The URL (parameter order included) is the transfer cache key: keep it as is.\n */\n getItems(\n collectionId: string,\n filter: Signal<ICrudFilter>,\n ): Signal<IPublicCollectionPage | null> {\n const data$ = toObservable(filter).pipe(\n switchMap((value) => {\n this.loadErrorStatus.set(null);\n this.loading.set(true);\n\n const url = this.collectionItemsBuildUrl(collectionId, value);\n\n return this.http.get<{ data?: IPublicCollectionPage }>(url).pipe(\n map((response) => {\n this.loadErrorStatus.set(null);\n return response?.data ?? null;\n }),\n catchError((error: unknown) => {\n this.loadErrorStatus.set(\n error instanceof HttpErrorResponse ? error.status : 0,\n );\n return of(null);\n }),\n finalize(() => this.loading.set(false)),\n );\n }),\n );\n\n return toSignal<IPublicCollectionPage | null>(data$, {\n initialValue: null,\n });\n }\n\n /**\n * Articles related to the collection. The API answers 404\n * (`NO_RESULTS_FOR_GIVEN_QUERY`) when there are none; that, like any error,\n * is an empty list.\n */\n getRelatedArticles(collectionId: string): Observable<Article[]> {\n return this.http\n .get<{ data?: { items?: Article[] } }>(\n `${this.config.apiUrl}search/Article/page/1?maxPerPage=${PUBLIC_COLLECTION_RELATED_ARTICLES_LIMIT}&filter[relatedEntryCollections]=${encodeURIComponent(collectionId)}`,\n )\n .pipe(\n map((response) => response?.data?.items ?? []),\n catchError(() => of([] as Article[])),\n );\n }\n\n private collectionItemsBuildUrl(\n collectionId: string,\n filter: ICrudFilter,\n ): string {\n let page = 1;\n\n if (filter?.offset && filter?.limit) {\n page = filter.offset / filter.limit;\n }\n\n let url = `${this.config.apiUrl}public-collections/${collectionId}?currentPage=${page}&maxPerPage=${filter?.limit ?? 20}`;\n\n if (filter?.searchText) {\n url += `&filter[phrase]=${filter.searchText}`;\n }\n\n if (filter?.sortBy) {\n url += `&sort=${filter.sortBy}-${filter.sortDesc ? 'desc' : 'asc'}`;\n }\n\n filter?.query?.forEach((q) => {\n if (Array.isArray(q.value)) {\n q.value.forEach((value: { id: string }) => {\n url += `&filter[${q.key}]${this.getQueryType(q.type, true)}=${value.id}`;\n });\n } else {\n url += `&filter[${q.key}]${this.getQueryType(q.type, false)}=${q.value}`;\n }\n });\n\n return url;\n }\n}\n","import { CrudService } from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollectionItemsService } from './public-collection-items/public-collection-items.service';\nimport { PublicCollectionsService } from './public-collections/public-collections.service';\n\nexport * from './public-collection-items/public-collection-items.service';\nexport * from './public-collections/public-collections.service';\n\nexport const SERVICES = [\n PublicCollectionsService,\n PublicCollectionItemsService,\n {\n provide: CrudService,\n useClass: PublicCollectionsService,\n },\n];\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n FILE_SERVICE_CONFIG,\n IFileServiceConfig,\n PaginationMode,\n} from '@smartsoft001/angular';\nimport {\n CrudConfig,\n CrudFullConfig,\n CrudFullModule,\n ICrudModuleOptionsWithoutRoutng,\n} from '@smartsoft001/crud-shell-angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport {\n provideInheritedSharedConfig,\n SharedModule,\n} from '@smartsoft001-mobilems/angular';\n\nimport { PublicCollectionsFacade } from './+state/public-collections.facade';\nimport { getReducer } from './+state/public-collections.reducer';\nimport { ComponentsModule } from './components';\nimport { SERVICES } from './services';\n\n@NgModule({\n declarations: [],\n providers: [...SERVICES, PublicCollectionsFacade],\n imports: [SharedModule, ComponentsModule, CrudFullModule],\n exports: [ComponentsModule],\n})\nexport class PublicCollectionsModule {\n static forFeature<T extends IEntity<string>>(\n options: ICrudModuleOptionsWithoutRoutng<T>,\n ): ModuleWithProviders<PublicCollectionsModule> {\n if (!options.config.reducerFactory)\n options.config.reducerFactory = getReducer;\n return {\n ngModule: PublicCollectionsModule,\n providers: [\n provideInheritedSharedConfig(options.config.apiUrl),\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ],\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FILE_SERVICE_CONFIG, IFileServiceConfig } from '@smartsoft001/angular';\nimport {\n CrudConfig,\n CrudFullConfig,\n CrudModule,\n ICrudModuleOptionsWithoutRoutng,\n} from '@smartsoft001/crud-shell-angular';\nimport { IEntity } from '@smartsoft001/domain-core';\n\nimport {\n provideInheritedSharedConfig,\n SharedModule,\n} from '@smartsoft001-mobilems/angular';\n\nimport { PublicCollectionsFacade } from './+state/public-collections.facade';\nimport { getReducer } from './+state/public-collections.reducer';\nimport { ComponentsModule } from './components';\nimport { SERVICES } from './services';\n\n@NgModule({\n declarations: [],\n providers: [...SERVICES, PublicCollectionsFacade],\n imports: [SharedModule, ComponentsModule, CrudModule],\n exports: [ComponentsModule],\n})\nexport class PublicCollectionsSharedModule {\n static forFeature<T extends IEntity<string>>(\n options: ICrudModuleOptionsWithoutRoutng<T>,\n ): ModuleWithProviders<PublicCollectionsSharedModule> {\n if (!options.config.reducerFactory)\n options.config.reducerFactory = getReducer;\n return {\n ngModule: PublicCollectionsSharedModule,\n providers: [\n provideInheritedSharedConfig(options.config.apiUrl),\n { provide: CrudConfig, useValue: options.config },\n { provide: CrudFullConfig, useValue: options.config },\n {\n provide: FILE_SERVICE_CONFIG,\n useValue: { apiUrl: options.config.apiUrl } as IFileServiceConfig,\n },\n ],\n };\n }\n}\n","import { Directive, inject, Signal } from '@angular/core';\nimport { CrudListPageBaseComponent } from '@smartsoft001/crud-shell-angular';\n\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsFacade } from '../../+state/public-collections.facade';\n\n@Directive()\nexport abstract class PublicCollectionsListComponent extends CrudListPageBaseComponent<PublicCollection> {\n protected readonly facade = inject(PublicCollectionsFacade);\n\n list = this.facade.list as Signal<PublicCollection[]>;\n loading = this.facade.loading;\n filter = this.facade.filter;\n}\n","import { Directive, inject, effect, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { CrudItemPageBaseComponent } from '@smartsoft001/crud-shell-angular';\n\nimport { SeoService, TranslationService } from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsFacade } from '../../+state/public-collections.facade';\n\n@Directive()\nexport abstract class PublicCollectionsItemComponent extends CrudItemPageBaseComponent<PublicCollection> {\n protected readonly route = inject(ActivatedRoute);\n protected readonly seoService = inject(SeoService);\n protected readonly translationService = inject(TranslationService);\n protected readonly params = toSignal(this.route.params);\n\n override facade = inject(PublicCollectionsFacade);\n\n readonly loading = this.facade.loading;\n readonly item = this.facade.selected;\n\n protected constructor() {\n super();\n\n effect(() => {\n const params = this.params();\n\n const id = params['id'];\n if (id) {\n this.facade.select(id);\n }\n });\n }\n}\n","import {\n createFeatureSelector,\n //createSelector\n} from '@ngrx/store';\n\nimport { State } from './public-collections.reducer';\n\nexport const getPublicCollectionsState =\n createFeatureSelector<State>('publicCollections');\n\n//export const getpublic-collectionsTest = createSelector(\n// getpublic-collectionsState,\n// (state) => state.test\n//);\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n PLATFORM_ID,\n Signal,\n signal,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ListMode, PaginationMode } from '@smartsoft001/angular';\nimport { ICrudFilter } from '@smartsoft001/crud-shell-angular';\nimport { capitalize } from '@smartsoft001/utils';\n\nimport {\n createCatalog,\n createCatalogLoadMore,\n createCycleTagSearch,\n createSafeTimeouts,\n dictionaryFilterItems,\n ICatalog,\n ICatalogLoadMore,\n ICatalogOptions,\n ICatalogSort,\n ICycleTagSearchOptions,\n IDictionaryEntry,\n IDictionaryFilterItem,\n MuseumSeoService,\n mergeSelectedTags,\n toggleDictionaryFilterItem,\n} from '@smartsoft001-mobilems/angular';\nimport { PublicCollection } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsListComponent } from '../pages/list/list.component';\n\n/**\n * Filter defaults of the collections list (Muzeum Podlasia): a 3x4 grid, 12\n * collections per page. `sortBy`/`sortDesc` match the toolbar's default label\n * ('Name A to Z'); without them `CrudBaseService` sends `sort=random`.\n */\nexport const COLLECTIONS_CATALOG_DEFAULTS: ICrudFilter = {\n paginationMode: PaginationMode.singlePage,\n offset: 0,\n limit: 12,\n sortBy: 'name',\n sortDesc: false,\n};\n\n/**\n * Query key of the theme tags — cycles (`filter[cycles][]=<id>`; checked on\n * the API: the forms with and without `[]` filter the same, an empty result\n * is a 404).\n */\nexport const COLLECTIONS_CYCLES_FILTER_KEY = 'cycles';\n\n/** Former tag key (the `Keyword` dictionary) — dropped from restored filters. */\nconst COLLECTIONS_CATALOG_LEGACY_KEYWORDS_KEY = 'keywords';\n\n/**\n * Cleans a persisted collections filter: the collections API ignores tags of\n * the former `Keyword` dictionary, so they are not restored as an invisible\n * filter.\n */\nexport function dropLegacyCollectionKeywords(saved: ICrudFilter): ICrudFilter {\n return {\n ...saved,\n query: (saved.query ?? []).filter(\n (q) => q.key !== COLLECTIONS_CATALOG_LEGACY_KEYWORDS_KEY,\n ),\n };\n}\n\n/** List SEO: `<title> - <site>`, a raw description and the canonical url. */\nexport interface ICollectionsCatalogSeo {\n /** Translation key of the page title, e.g. `PAGE_TITLES.collections`. */\n titleKey: string;\n /** Translation key of the description — not capitalised. */\n descriptionKey: string;\n /** Translation key of the site name. Default `MODEL.mainTitle`. */\n siteNameKey?: string;\n /** Canonical url of the list, e.g. `/kolekcje`. */\n url: string;\n}\n\nexport const COLLECTIONS_CATALOG_SEO: ICollectionsCatalogSeo = {\n titleKey: 'PAGE_TITLES.collections',\n descriptionKey: 'HOME.collectionsDescription',\n siteNameKey: 'MODEL.mainTitle',\n url: '/kolekcje',\n};\n\n/** Focus target and live-region message of „więcej ↓” (load more). */\nexport interface ICollectionsCatalogLoadMore {\n /** Cards inside `#listContainer`; the first appended one gets the focus. */\n itemSelector?: string;\n /** Translation key announced after a page is appended (`{ count }`). */\n loadedMoreKey?: string;\n}\n\nconst COLLECTIONS_CATALOG_ITEM_SELECTOR =\n '[data-testid=\"collection-grid-item\"], [data-testid=\"collection-list-item\"]';\nconst COLLECTIONS_CATALOG_LOADED_MORE_KEY = 'COMMON.loadedMore';\n\nexport interface ICollectionsCatalogOptions extends Partial<\n Omit<ICatalogOptions, 'facade'>\n> {\n /** Applied on creation, skipped in a search tab; `null` — no SEO. */\n seo?: ICollectionsCatalogSeo | null;\n /** Opt-in `Cycle` tag dictionary of the tag bar (requests the API). */\n cycleTags?: ICycleTagSearchOptions;\n loadMore?: ICollectionsCatalogLoadMore;\n}\n\n/**\n * Base of a collections list page on the shared catalog engine\n * (`createCatalog`): first read (also in SSR when the route carries the\n * filter), persistence, sort/size/page, the read guard, cycle tags,\n * „więcej ↓” and the list SEO. The page keeps its template.\n *\n * ```ts\n * export class ListComponent extends CollectionsCatalogBaseComponent {\n * constructor() {\n * super({ cycleTags: { debounceMs: 300 } });\n * }\n * }\n * ```\n *\n * A `#listContainer` element in the template is scrolled to after a page\n * change from the bottom pagination and holds the cards focused by load more.\n */\n@Directive()\nexport abstract class CollectionsCatalogBaseComponent extends PublicCollectionsListComponent {\n readonly ListMode = ListMode;\n protected readonly catalog: ICatalog;\n\n readonly isBrowser: Signal<boolean>;\n /** The route set the filter, so the list is read and rendered in SSR too. */\n readonly routeList: Signal<boolean>;\n readonly listMode: Signal<ListMode>;\n readonly searchEnabled: Signal<boolean | undefined>;\n readonly barPhrase: Signal<string>;\n readonly isLoading: Signal<boolean>;\n readonly hasError: Signal<unknown>;\n readonly totalCount: Signal<number>;\n /** `name-desc` style key for the toolbar. */\n readonly sortKey: Signal<string | undefined>;\n readonly selectedPage: Signal<number>;\n\n /** „więcej ↓” on mobile (2290:10510) — previous pages' cards + the current. */\n readonly loadMore: ICatalogLoadMore<PublicCollection>;\n /** Screen reader message after cards were appended. */\n readonly loadMoreStatus: WritableSignal<string> = signal('');\n\n /** Phrase of the „Search tags” field (the `q` of the `Cycle` dictionary). */\n readonly tagQuery: WritableSignal<string>;\n /** Theme tags of the filter bar; `[]` without the `cycleTags` option. */\n readonly cycleTags: Signal<IDictionaryEntry[]>;\n /** Selected cycle ids. */\n readonly selectedTagIds: Signal<(number | null)[]>;\n /**\n * Bar chips: selected cycles always first, then the rest of the result — a\n * cycle picked on a tile stays visible and can be unselected even when the\n * „Search tags” phrase does not return it.\n */\n readonly tagChips: Signal<IDictionaryEntry[]>;\n\n private readonly collectionsCatalogTranslate = inject(TranslateService);\n private readonly collectionsCatalogSeoService = inject(MuseumSeoService);\n private readonly collectionsCatalogBrowser = isPlatformBrowser(\n inject(PLATFORM_ID),\n );\n private readonly collectionsCatalogTimeouts = createSafeTimeouts();\n private readonly collectionsCatalogListContainer =\n viewChild<ElementRef<HTMLElement>>('listContainer');\n private collectionsCatalogScrollAfterLoad = false;\n\n /**\n * Selected cycles — the `cycles` item of the current filter, numeric ids\n * without repeats (`\"7\"` from a deep link = `7` from the dictionary,\n * review MOB-1815).\n */\n private readonly collectionsCatalogSelectedTags: Signal<\n IDictionaryFilterItem[]\n > = computed(() =>\n dictionaryFilterItems(\n (this.facade.filter()?.query ?? []).find(\n (q) => q.key === COLLECTIONS_CYCLES_FILTER_KEY,\n )?.value,\n ),\n );\n\n protected constructor(options: ICollectionsCatalogOptions = {}) {\n super();\n const {\n seo = COLLECTIONS_CATALOG_SEO,\n cycleTags,\n loadMore = {},\n ...catalogOptions\n } = options;\n const defaults = catalogOptions.defaults ?? COLLECTIONS_CATALOG_DEFAULTS;\n\n // Cycle tags first: Podlasie requests the dictionary before the list.\n if (cycleTags) {\n const search = createCycleTagSearch(cycleTags);\n this.tagQuery = search.query;\n this.cycleTags = search.tags;\n } else {\n this.tagQuery = signal('');\n this.cycleTags = signal<IDictionaryEntry[]>([]).asReadonly();\n }\n\n this.catalog = createCatalog({\n persistKey: 'MUSEUM_COLLECTIONS_FILTER',\n listPath: '/kolekcje',\n searchTab: 'kolekcje',\n listModeKey: 'MUSEUM_COLLECTIONS_LIST_MODE',\n restoreSaved: dropLegacyCollectionKeywords,\n ssrRead: 'route',\n ...catalogOptions,\n defaults,\n facade: this.facade,\n });\n\n this.isBrowser = this.catalog.isBrowser;\n this.routeList = this.catalog.routeList;\n this.listMode = this.catalog.listMode;\n this.searchEnabled = this.catalog.searchEnabled;\n this.barPhrase = this.catalog.barPhrase;\n this.isLoading = this.catalog.isLoading;\n this.hasError = this.catalog.hasError;\n this.totalCount = this.catalog.totalCount;\n this.sortKey = this.catalog.sortKey;\n this.selectedPage = this.catalog.selectedPage;\n\n this.selectedTagIds = computed(() =>\n this.collectionsCatalogSelectedTags().map((item) => item.id),\n );\n this.tagChips = computed(() =>\n mergeSelectedTags(\n this.collectionsCatalogSelectedTags(),\n this.cycleTags(),\n ),\n );\n\n // The focus moves to the first appended card.\n this.loadMore = createCatalogLoadMore({\n list: this.list,\n filter: this.facade.filter,\n totalCount: this.totalCount,\n loading: this.isLoading,\n read: (filter) => this.facade.read(filter),\n defaultLimit: defaults.limit || 12,\n onAppended: (added, firstIndex) => {\n this.loadMoreStatus.set(\n this.collectionsCatalogTranslate.instant(\n loadMore.loadedMoreKey ?? COLLECTIONS_CATALOG_LOADED_MORE_KEY,\n { count: added },\n ),\n );\n if (!added || !this.collectionsCatalogBrowser) return;\n this.collectionsCatalogTimeouts.later(\n () =>\n this.listContainerElement\n ?.querySelectorAll<HTMLElement>(\n loadMore.itemSelector ?? COLLECTIONS_CATALOG_ITEM_SELECTOR,\n )\n [firstIndex]?.focus({ preventScroll: true }),\n 0,\n );\n },\n });\n\n // After a page change from the bottom pagination scroll to the list top\n // once the data has loaded.\n effect(() => {\n const loading = this.isLoading();\n if (\n !loading &&\n this.collectionsCatalogScrollAfterLoad &&\n this.collectionsCatalogBrowser\n ) {\n this.collectionsCatalogScrollAfterLoad = false;\n this.collectionsCatalogTimeouts.later(\n () =>\n this.listContainerElement?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n }),\n 0,\n );\n }\n });\n\n if (seo) this.applyListSeo(seo);\n }\n\n /** The list root element (`#listContainer`). */\n protected get listContainerElement(): HTMLElement | undefined {\n return this.collectionsCatalogListContainer()?.nativeElement;\n }\n\n retryLoad(): void {\n this.catalog.retry();\n }\n\n pageChange(page: number): void {\n this.catalog.setPage(page);\n }\n\n /** Page change from the bottom pagination — scrolls to the list once loaded. */\n bottomPageChange(page: number): void {\n this.collectionsCatalogScrollAfterLoad = true;\n this.pageChange(page);\n }\n\n onSortChange(sort: ICatalogSort): void {\n this.catalog.setSort(sort);\n }\n\n /** Sort by key (`name-desc`, `random`). */\n sortChange(key: string): void {\n this.catalog.setSortKey(key);\n }\n\n onLimitChange(limit: number | string): void {\n this.catalog.setLimit(limit);\n }\n\n /**\n * Toggles one cycle in the `cycles` item (filter bar and tile pills);\n * unselecting the last one removes the whole query item. Compared by the\n * normalised id: a click on `7` also removes `\"7\"` from a deep link\n * instead of adding a second filter (review MOB-1815); an added cycle is\n * stored with its numeric id.\n */\n onTagToggle(entry: IDictionaryEntry): void {\n const current = this.facade.filter()?.query ?? [];\n const next = toggleDictionaryFilterItem(\n current.find((q) => q.key === COLLECTIONS_CYCLES_FILTER_KEY)?.value,\n entry,\n );\n if (!next) return;\n\n const query = current.filter(\n (q) => q.key !== COLLECTIONS_CYCLES_FILTER_KEY,\n );\n if (next.length) {\n query.push({\n key: COLLECTIONS_CYCLES_FILTER_KEY,\n value: next,\n type: '=',\n hidden: true,\n });\n }\n\n this.catalog.update({ query });\n }\n\n /**\n * Search from the filter bar. In the catalog it patches the filter; in a\n * search tab the phrase lives in the address (MOB-1818) — a new one opens\n * `/wyszukaj/:text/kolekcje`, a blank one `/kolekcje` with the other filters.\n */\n onFilterBarSearch(phrase: string): void {\n this.catalog.search(phrase);\n }\n\n onListModeChange(mode: ListMode): void {\n this.catalog.setListMode(mode);\n }\n\n clearAllFilters(): void {\n this.catalog.clearAll();\n }\n\n /**\n * Full list meta (title, description, canonical, og), not in a search tab —\n * there the search page sets them, and the canonical of the list must not\n * point at a phrase url. The description goes out as translated.\n */\n protected applyListSeo(seo: ICollectionsCatalogSeo): void {\n if (this.catalog.searchEnabled()) return;\n\n const t = (key: string): string =>\n this.collectionsCatalogTranslate.instant(key);\n this.collectionsCatalogSeoService.apply({\n title: `${capitalize(t(seo.titleKey))} - ${capitalize(t(seo.siteNameKey ?? 'MODEL.mainTitle'))}`,\n description: t(seo.descriptionKey),\n type: 'website',\n url: seo.url,\n });\n }\n}\n","import { DOCUMENT, formatDate, isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n LOCALE_ID,\n PLATFORM_ID,\n Signal,\n signal,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ListMode, StorageService } from '@smartsoft001/angular';\nimport { ICrudFilter } from '@smartsoft001/crud-shell-angular';\nimport { map } from 'rxjs';\n\nimport {\n createCatalogLoadMore,\n createSafeTimeouts,\n FileUrlMode,\n FileUrlService,\n ICatalogLoadMore,\n ICatalogSort,\n ISeoMetadata,\n MasonryGridComponent,\n MuseumSeoService,\n normalizeMetaText,\n pageToOffset,\n} from '@smartsoft001-mobilems/angular';\nimport type { Article } from '@smartsoft001-mobilems/articles-domain';\nimport { MsObject } from '@smartsoft001-mobilems/objects-domain';\nimport { PublicCollectionItemType } from '@smartsoft001-mobilems/public-collections-domain';\n\nimport { PublicCollectionsItemComponent } from '../pages/item/item.component';\nimport {\n IPublicCollectionPage,\n PublicCollectionItemsService,\n} from '../services/public-collection-items/public-collection-items.service';\n\n/** Local filter of a collection page (Muzeum Podlasia): 20 objects per page, unsorted. */\nexport const COLLECTION_DETAILS_DEFAULTS: ICrudFilter = {\n limit: 20,\n offset: 0,\n sortBy: '',\n sortDesc: false,\n searchText: '',\n query: [],\n};\n\n/** An item of a collection page — an object or an article. */\nexport type CollectionDetailsItem = (\n | { type: PublicCollectionItemType.object; data: MsObject }\n | { type: PublicCollectionItemType.article; data: Article }\n) & { id: string };\n\n/** A related article link: the id and its plain-text title. */\nexport interface ICollectionRelatedArticle {\n id: string;\n title: string;\n}\n\n/** Focus target and live-region message of „więcej ↓” (load more). */\nexport interface ICollectionDetailsLoadMore {\n /** Cards inside `#listContainer`; the first appended one gets the focus. */\n itemSelector?: string;\n /** Translation key announced after a page is appended (`{ count }`). */\n loadedMoreKey?: string;\n}\n\nexport interface ICollectionDetailsOptions {\n /** Initial local filter. Default `COLLECTION_DETAILS_DEFAULTS`. */\n defaults?: ICrudFilter;\n /** `StorageService` key of the grid/list mode — shared with `/obiekty` on purpose. */\n listModeKey?: string;\n /** Below this `innerWidth` the mode is forced and the toggle ignored. Default `768`. */\n mobileBreakpoint?: number;\n /** The mode forced below the breakpoint. Default `ListMode.masonryGrid`. */\n mobileListMode?: ListMode;\n /** Translation key of the site name in the titles. Default `MODEL.mainTitle`. */\n siteNameKey?: string;\n /** `FileUrlService` mode of the hero image. Default `noCache` (MOB-1564, MOB-1850). */\n heroImageMode?: FileUrlMode;\n /** Opt-in related articles (requests `search/Article`). Default `false`. */\n relatedArticles?: boolean;\n loadMore?: ICollectionDetailsLoadMore;\n}\n\nconst COLLECTION_DETAILS_LIST_MODE_KEY = 'MUSEUM_OBJECTS_LIST_MODE';\nconst COLLECTION_DETAILS_SITE_NAME_KEY = 'MODEL.mainTitle';\nconst COLLECTION_DETAILS_ITEM_SELECTOR =\n '[data-testid=\"objects-grid-item-link\"], [data-testid=\"objects-list-item\"]';\nconst COLLECTION_DETAILS_LOADED_MORE_KEY = 'COMMON.loadedMore';\n\n/**\n * Plain text of a CMS article title: tags become spaces, entities are decoded\n * without `DOMParser` (the same result in SSR), whitespace collapsed.\n */\nfunction collectionDetailsArticleTitle(title: string | undefined): string {\n return normalizeMetaText((title ?? '').replace(/<[^>]*>/g, ' '));\n}\n\nfunction collectionDetailsStripHtml(html: string | undefined): string {\n if (!html) return '';\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n}\n\n/**\n * Base of a collection page: the collection with a locally paged list of its\n * items (`PublicCollectionItemsService.getItems`), sort/size/page, 404 vs\n * other load errors, SEO (also in SSR), hero image and meta, opt-in related\n * articles, „więcej ↓” and the grid/list mode. The page keeps its template.\n *\n * ```ts\n * // Muzeum Podlasia\n * export class ItemComponent extends CollectionDetailsBaseComponent {\n * constructor() {\n * super({ relatedArticles: true });\n * }\n * }\n * ```\n *\n * A `#listContainer` element in the template is scrolled to after a page\n * change from the bottom pagination and holds the cards focused by load more.\n */\n@Directive()\nexport abstract class CollectionDetailsBaseComponent extends PublicCollectionsItemComponent {\n protected readonly collectionDetailsService = inject(\n PublicCollectionItemsService,\n );\n private readonly collectionDetailsSeo = inject(MuseumSeoService);\n private readonly collectionDetailsFileUrl = inject(FileUrlService);\n private readonly collectionDetailsStorage = inject(StorageService);\n private readonly collectionDetailsTranslate = inject(TranslateService);\n private readonly collectionDetailsLocale = inject(LOCALE_ID);\n private readonly collectionDetailsDocument = inject(DOCUMENT);\n private readonly collectionDetailsBrowser = isPlatformBrowser(\n inject(PLATFORM_ID),\n );\n private readonly collectionDetailsTimeouts = createSafeTimeouts();\n private readonly collectionDetailsListContainer =\n viewChild<ElementRef<HTMLElement>>('listContainer');\n private readonly collectionDetailsMasonry = viewChild(MasonryGridComponent);\n private readonly collectionDetailsOptions: ICollectionDetailsOptions;\n private collectionDetailsScrollAfterLoad = false;\n\n /** The collection read by the facade or a page of objects by the service. */\n readonly isLoading: Signal<boolean> = computed(\n () => this.facade.loading() || this.collectionDetailsService.loading(),\n );\n\n /** Mode of the objects list — tiles (masonry) or a vertical list. */\n readonly listMode: WritableSignal<ListMode> = signal(ListMode.masonryGrid);\n\n /** Local filter; a new value triggers a read of the items. */\n readonly localFilter: WritableSignal<ICrudFilter>;\n\n /** The collection with the current page of items. */\n readonly data: Signal<IPublicCollectionPage | null>;\n\n /** The current filter as a toolbar option key (e.g. `name-desc`). */\n readonly toolbarSortKey: Signal<string> = computed(() => {\n const filter = this.localFilter();\n return !filter.sortBy\n ? 'random'\n : `${filter.sortBy}-${filter.sortDesc ? 'desc' : 'asc'}`;\n });\n\n /**\n * The hero straight from the real file (`noCache` = `filePath` without the\n * extension swap). `FileUrlService.get()` in `cache` mode forces `.jpg` for\n * paths outside `media/dictionaries`/`media/articles`, and the CDN has no\n * preset for `entry_collections` — the `.jpg` ended in 404 /\n * ERR_BLOCKED_BY_ORB (MOB-1564), and the real `.png` came only after\n * hydration through `(error)` (Lighthouse: collection LCP 20 s, MOB-1850).\n */\n readonly heroImageSrc: Signal<string> = computed(() => {\n const collection = this.data();\n if (!collection?.image) {\n return '';\n }\n const src = this.collectionDetailsFileUrl.get(\n collection.image,\n this.collectionDetailsOptions.heroImageMode ?? 'noCache',\n );\n return src.includes('assets/no-image.svg') ? '/gfx/no-image.png' : src;\n });\n\n readonly description: Signal<string> = computed(\n () => this.data()?.description || '',\n );\n\n /**\n * „author | date” row under the hero title. `undefined` when there is\n * nothing to show — the hero then renders no paragraph at all.\n */\n readonly heroMeta: Signal<string | undefined> = computed(() => {\n const collection = this.data();\n const parts = [\n collection?.author,\n this.collectionDetailsFormatDate(collection?.publicationDate),\n ].filter((part): part is string => !!part);\n\n return parts.length ? parts.join(' | ') : undefined;\n });\n\n /** The API answered 404 — the page shows „not found” instead of nothing. */\n readonly notFound: Signal<boolean> = computed(\n () => this.collectionDetailsService.loadErrorStatus() === 404,\n );\n\n /** Other load errors — a message with a retry. */\n readonly hasLoadError: Signal<boolean> = computed(() => {\n const status = this.collectionDetailsService.loadErrorStatus();\n return status !== null && status !== 404;\n });\n\n readonly selectedPage: Signal<number> = computed(() => {\n const filter = this.localFilter();\n return filter?.offset ? filter.offset / (filter.limit || 20) : 1;\n });\n\n readonly totalCount: Signal<number> = computed(\n () => this.data()?.paginatorDetails?.totalItemsCount ?? 0,\n );\n\n readonly list: Signal<CollectionDetailsItem[]> = computed(\n () => (this.data()?.items ?? []) as CollectionDetailsItem[],\n );\n\n /** The collection's objects — the grid under „Objects in the collection”. */\n readonly objectItems: Signal<CollectionDetailsItem[]> = computed(() =>\n this.list().filter((item) => this.isObject(item.type)),\n );\n\n /**\n * „Unusual stories and articles related to the collection” — articles from\n * `search/Article` with the `relatedEntryCollections` filter (MOB-1601),\n * not from the collection items. The API title may be HTML (`<p>…</p>`)\n * with entities (`&nbsp;`, `&amp;`), so the link gets decoded plain text.\n * `[]` and no request without the `relatedArticles` option.\n */\n readonly relatedArticles: Signal<ICollectionRelatedArticle[]>;\n\n /** Screen reader message after cards were appended („więcej ↓”). */\n readonly loadMoreStatus: WritableSignal<string> = signal('');\n\n /**\n * „więcej ↓” on mobile („More objects” 2290:10482) — objects of the\n * previous pages + the current one; the focus moves to the first appended\n * card.\n */\n readonly loadMore: ICatalogLoadMore<CollectionDetailsItem>;\n\n protected constructor(options: ICollectionDetailsOptions = {}) {\n super();\n this.collectionDetailsOptions = options;\n const defaults = options.defaults ?? COLLECTION_DETAILS_DEFAULTS;\n const collectionId = this.route.snapshot.params['id'];\n\n this.localFilter = signal<ICrudFilter>({ ...defaults });\n\n // Reacts to filter changes (paging).\n this.data = this.collectionDetailsService.getItems(\n collectionId,\n this.localFilter,\n );\n\n this.relatedArticles = options.relatedArticles\n ? toSignal(\n this.collectionDetailsService.getRelatedArticles(collectionId).pipe(\n map((articles) =>\n articles\n .map((article) => ({\n id: article.id,\n title: collectionDetailsArticleTitle(article.title),\n }))\n // A title made of markup only would give a link without an accessible name.\n .filter((article) => !!article.title),\n ),\n ),\n { initialValue: [] as ICollectionRelatedArticle[] },\n )\n : signal<ICollectionRelatedArticle[]>([]).asReadonly();\n\n const loadMore = options.loadMore ?? {};\n this.loadMore = createCatalogLoadMore<CollectionDetailsItem>({\n list: this.objectItems,\n filter: this.localFilter,\n totalCount: this.totalCount,\n loading: this.collectionDetailsService.loading,\n read: (filter) => this.localFilter.set(filter),\n defaultLimit: defaults.limit ?? 20,\n onAppended: (added, firstIndex) => {\n this.loadMoreStatus.set(\n this.collectionDetailsTranslate.instant(\n loadMore.loadedMoreKey ?? COLLECTION_DETAILS_LOADED_MORE_KEY,\n { count: added },\n ),\n );\n if (!added || !this.collectionDetailsBrowser) {\n return;\n }\n this.collectionDetailsTimeouts.later(\n () =>\n this.collectionDetailsListContainer()\n ?.nativeElement.querySelectorAll<HTMLElement>(\n loadMore.itemSelector ?? COLLECTION_DETAILS_ITEM_SELECTOR,\n )\n [firstIndex]?.focus({ preventScroll: true }),\n 0,\n );\n },\n });\n\n this.collectionDetailsSeo.applyForSsr(() =>\n this.collectionDetailsFetchSsrSeo(),\n );\n\n effect(() => {\n const collection = this.data();\n if (collection) {\n this.collectionDetailsSeo.apply(this.buildSeoMetadata(collection));\n if (this.collectionDetailsBrowser) {\n this.collectionDetailsDocument.defaultView?.scrollTo({\n top: 0,\n behavior: 'instant',\n });\n }\n }\n });\n\n // On a 404 the document title must not stay the plain museum name.\n effect(() => {\n if (!this.notFound()) return;\n this.collectionDetailsSeo.apply({\n title: `${this.translationService.get('NOT_FOUND.title')} - ${this.translationService.get(this.collectionDetailsSiteNameKey)}`,\n });\n });\n\n // After a page change from the bottom pagination scroll to the list top\n // once the data has loaded.\n effect(() => {\n const loading = this.isLoading();\n if (\n !loading &&\n this.collectionDetailsScrollAfterLoad &&\n this.collectionDetailsBrowser\n ) {\n this.collectionDetailsScrollAfterLoad = false;\n this.collectionDetailsTimeouts.later(\n () =>\n this.collectionDetailsListContainer()?.nativeElement.scrollIntoView(\n { behavior: 'smooth', block: 'start' },\n ),\n 0,\n );\n }\n });\n\n // Restores the view mode from the shared key (mobile forces its mode).\n afterNextRender(() => this.collectionDetailsInitListMode());\n }\n\n onListMode(value: ListMode): void {\n // On mobile the mode is forced — the toggle is hidden and inactive.\n if (this.collectionDetailsIsMobile()) {\n return;\n }\n\n const newMode =\n value === ListMode.masonryGrid ? ListMode.masonryGrid : ListMode.desktop;\n\n this.listMode.set(newMode);\n this.collectionDetailsStorage.setItem(\n this.collectionDetailsOptions.listModeKey ??\n COLLECTION_DETAILS_LIST_MODE_KEY,\n value,\n );\n\n if (newMode !== ListMode.masonryGrid) {\n this.collectionDetailsMasonry()?.destroyMasonry();\n } else {\n this.collectionDetailsTimeouts.later(() => {\n if (this.listMode() !== ListMode.masonryGrid) return;\n this.collectionDetailsMasonry()?.initMasonry();\n }, 100);\n }\n }\n\n onToolbarSortChange({ by, desc }: ICatalogSort): void {\n // „random” = no sort (consistent with /obiekty).\n const sortBy = by === 'random' ? '' : by;\n\n this.localFilter.update((filter) => ({\n ...filter,\n sortBy,\n sortDesc: desc,\n offset: 0,\n }));\n }\n\n /** Sort by a dropdown key (`name-desc`, `random`). */\n sortChange(key: string): void {\n const sortDesc = key.endsWith('-desc');\n let sortBy = key.replace(/-asc$/, '').replace(/-desc$/, '');\n\n // „random” = no sort (consistent with /obiekty).\n if (sortBy === 'random') {\n sortBy = '';\n }\n\n this.localFilter.update((filter) => ({\n ...filter,\n sortBy,\n sortDesc,\n offset: 0,\n }));\n }\n\n /** Repeats the last request — a new filter reference forces another call. */\n retryLoad(): void {\n this.localFilter.update((filter) => ({ ...filter }));\n }\n\n limitChange(value: number | string): void {\n this.localFilter.update((filter) => ({\n ...filter,\n limit: Number(value),\n offset: 0,\n }));\n }\n\n pageChange(page: number): void {\n const currentLimit = this.localFilter().limit ?? 20;\n this.localFilter.update((filter) => ({\n ...filter,\n offset: pageToOffset(page, currentLimit),\n }));\n }\n\n /** Page change from the bottom pagination — scrolls to the list once loaded. */\n bottomPageChange(page: number): void {\n this.collectionDetailsScrollAfterLoad = true;\n this.pageChange(page);\n }\n\n isObject(type: PublicCollectionItemType): boolean {\n return type === PublicCollectionItemType.object;\n }\n\n $MsObject(item: unknown): MsObject {\n return item as MsObject;\n }\n\n /** SEO of the collection: `<title> - <site>`, description, image alt. */\n protected buildSeoMetadata(item: IPublicCollectionPage): ISeoMetadata {\n const strippedTitle = collectionDetailsStripHtml(item.title);\n const siteName = this.translationService.get(\n this.collectionDetailsSiteNameKey,\n );\n return {\n title: `${strippedTitle} - ${siteName}`,\n description: item.description\n ? collectionDetailsStripHtml(item.description)\n : undefined,\n imageAlt: strippedTitle,\n type: 'article',\n };\n }\n\n private get collectionDetailsSiteNameKey(): string {\n return (\n this.collectionDetailsOptions.siteNameKey ??\n COLLECTION_DETAILS_SITE_NAME_KEY\n );\n }\n\n private collectionDetailsIsMobile(): boolean {\n const width = this.collectionDetailsDocument.defaultView?.innerWidth;\n return (\n width !== undefined &&\n width < (this.collectionDetailsOptions.mobileBreakpoint ?? 768)\n );\n }\n\n private collectionDetailsInitListMode(): void {\n if (!this.collectionDetailsBrowser) {\n return;\n }\n\n // The mobile mock-up (2290:10471) has only the two-column grid — the\n // view toggle is hidden below md, as on /obiekty.\n if (this.collectionDetailsIsMobile()) {\n this.listMode.set(\n this.collectionDetailsOptions.mobileListMode ?? ListMode.masonryGrid,\n );\n } else {\n this.listMode.set(\n this.collectionDetailsStorage.getItem(\n this.collectionDetailsOptions.listModeKey ??\n COLLECTION_DETAILS_LIST_MODE_KEY,\n ) === ListMode.desktop\n ? ListMode.desktop\n : ListMode.masonryGrid,\n );\n }\n }\n\n private async collectionDetailsFetchSsrSeo(): Promise<ISeoMetadata | null> {\n const id = this.route.snapshot.paramMap.get('id');\n if (!id) return null;\n try {\n const item = await this.collectionDetailsService.getById(id);\n return item ? this.buildSeoMetadata(item as IPublicCollectionPage) : null;\n } catch {\n return null;\n }\n }\n\n private collectionDetailsFormatDate(\n value: string | null | undefined,\n ): string | undefined {\n if (!value) return undefined;\n return formatDate(value, 'dd.MM.yyyy', this.collectionDetailsLocale);\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Directive, inject, PLATFORM_ID, signal } from '@angular/core';\n\nimport { createSafeTimeouts } from '@smartsoft001-mobilems/angular';\n\n/** How long (ms) the \"link copied\" message stays after a click. */\nexport const COLLECTION_SHARE_COPIED_TIMEOUT = 3000;\n\n/**\n * Logic of the \"Share collection\" button: the native share sheet, or a\n * clipboard copy with a \"link copied\" flag when the browser has no share sheet.\n * The template stays in the app.\n */\n@Directive()\nexport abstract class CollectionShareButtonBaseComponent {\n private readonly collectionShareButtonPlatformId = inject(PLATFORM_ID);\n private readonly collectionShareButtonDocument = inject(DOCUMENT);\n private readonly collectionShareButtonTimeouts = createSafeTimeouts();\n\n protected readonly copied = signal(false);\n\n /** How long (ms) \"copied\" stays on; overridable, read inside `share`. */\n protected readonly collectionShareButtonCopiedTimeout: number =\n COLLECTION_SHARE_COPIED_TIMEOUT;\n\n protected async share(): Promise<void> {\n if (!isPlatformBrowser(this.collectionShareButtonPlatformId)) {\n return;\n }\n\n const doc = this.collectionShareButtonDocument;\n const url = doc.defaultView?.location.href ?? '';\n const title = doc.title;\n\n if (navigator.share) {\n // Cancelling the share sheet rejects with AbortError — not an error.\n await navigator.share({ title, url }).catch(() => undefined);\n return;\n }\n\n await navigator.clipboard.writeText(url);\n this.copied.set(true);\n this.collectionShareButtonTimeouts.later(\n () => this.copied.set(false),\n this.collectionShareButtonCopiedTimeout,\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["smartInitialState","smartGetReducer"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartsoft001-mobilems/public-collections-shell-angular",
3
- "version": "2.119.0",
3
+ "version": "2.121.0",
4
4
  "description": "This library was generated with [Nx](https://nx.dev).",
5
5
  "repository": {
6
6
  "type": "git",