@meshmakers/shared-services 3.3.830 → 3.3.850

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.
@@ -18,10 +18,10 @@ class CommandSettingsService {
18
18
  get commandItems() {
19
19
  return [];
20
20
  }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CommandSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CommandSettingsService });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandSettingsService });
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CommandSettingsService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandSettingsService, decorators: [{
25
25
  type: Injectable
26
26
  }], ctorParameters: () => [] });
27
27
 
@@ -142,17 +142,19 @@ class CommandService extends CommandBaseService {
142
142
  await this.createDrawerItems(commandItems, items, null);
143
143
  this._drawerItems.next(items);
144
144
  }
145
- async createDrawerItems(commandItems, items, parentId) {
145
+ async createDrawerItems(commandItems, items, parentId, depth = 0) {
146
146
  for (const commandItem of commandItems) {
147
147
  const visible = await CommandBaseService.getIsVisible(commandItem);
148
148
  if (!visible) {
149
149
  continue;
150
150
  }
151
+ const hierarchyClass = `mm-drawer-level-${depth}`;
151
152
  if (commandItem.type === 'separator') {
152
153
  items.push({
153
154
  id: commandItem.id,
154
155
  parentId: parentId ?? undefined,
155
- separator: true
156
+ separator: true,
157
+ cssClass: hierarchyClass
156
158
  });
157
159
  }
158
160
  else {
@@ -161,10 +163,11 @@ class CommandService extends CommandBaseService {
161
163
  parentId: parentId ?? undefined,
162
164
  text: commandItem.text,
163
165
  selected: commandItem.selected,
164
- svgIcon: commandItem.svgIcon
166
+ svgIcon: commandItem.svgIcon,
167
+ cssClass: hierarchyClass
165
168
  });
166
169
  if (commandItem.children) {
167
- await this.createDrawerItems(commandItem.children, items, commandItem.id);
170
+ await this.createDrawerItems(commandItem.children, items, commandItem.id, depth + 1);
168
171
  }
169
172
  this._commandsMap.set(commandItem.id, commandItem);
170
173
  }
@@ -186,10 +189,10 @@ class CommandService extends CommandBaseService {
186
189
  }
187
190
  await this.navigateAsync(commandItem);
188
191
  }
189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CommandService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
190
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CommandService });
192
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
193
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandService });
191
194
  }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CommandService, decorators: [{
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandService, decorators: [{
193
196
  type: Injectable
194
197
  }], ctorParameters: () => [] });
195
198
 
@@ -300,10 +303,10 @@ class MessageService {
300
303
  timestamp: new Date()
301
304
  });
302
305
  }
303
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
304
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: MessageService, providedIn: 'root' });
306
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
307
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MessageService, providedIn: 'root' });
305
308
  }
306
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: MessageService, decorators: [{
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MessageService, decorators: [{
307
310
  type: Injectable,
308
311
  args: [{
309
312
  providedIn: 'root'
@@ -383,10 +386,10 @@ class ComponentMenuService extends CommandBaseService {
383
386
  }
384
387
  return items;
385
388
  }
386
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: ComponentMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
387
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: ComponentMenuService });
389
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ComponentMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
390
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ComponentMenuService });
388
391
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: ComponentMenuService, decorators: [{
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ComponentMenuService, decorators: [{
390
393
  type: Injectable
391
394
  }], ctorParameters: () => [] });
392
395
 
@@ -514,10 +517,10 @@ class BreadCrumbService {
514
517
  get breadCrumbItems() {
515
518
  return this._breadCrumbItems;
516
519
  }
517
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: BreadCrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
518
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: BreadCrumbService });
520
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BreadCrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
521
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BreadCrumbService });
519
522
  }
520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: BreadCrumbService, decorators: [{
523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: BreadCrumbService, decorators: [{
521
524
  type: Injectable
522
525
  }], ctorParameters: () => [] });
523
526
 
@@ -532,10 +535,10 @@ class AppTitleService {
532
535
  get appTitle() {
533
536
  return this._appTitle.asObservable();
534
537
  }
535
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AppTitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
536
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AppTitleService });
538
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppTitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
539
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppTitleService });
537
540
  }
538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AppTitleService, decorators: [{
541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppTitleService, decorators: [{
539
542
  type: Injectable
540
543
  }] });
541
544
 
@@ -564,11 +567,14 @@ class MmHttpErrorInterceptor {
564
567
  intercept(request, next) {
565
568
  return next.handle(request).pipe(retry(0), catchError((error) => {
566
569
  if (error.status === 0) {
567
- if (this.onConnectionLost) {
568
- this.onConnectionLost();
569
- }
570
- else {
571
- this.messageService.showError('OctoMesh backend is not reachable. Please check if your network connection is working or contact your Administrator.');
570
+ const isHealthCheck = request.url.endsWith('/health');
571
+ if (!isHealthCheck) {
572
+ if (this.onConnectionLost) {
573
+ this.onConnectionLost();
574
+ }
575
+ else {
576
+ this.messageService.showError('OctoMesh backend is not reachable. Please check if your network connection is working or contact your Administrator.');
577
+ }
572
578
  }
573
579
  }
574
580
  if (error.status === 403) {
@@ -589,10 +595,10 @@ class MmHttpErrorInterceptor {
589
595
  return throwError(() => error);
590
596
  }));
591
597
  }
592
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: MmHttpErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
593
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: MmHttpErrorInterceptor });
598
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MmHttpErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
599
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MmHttpErrorInterceptor });
594
600
  }
595
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: MmHttpErrorInterceptor, decorators: [{
601
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: MmHttpErrorInterceptor, decorators: [{
596
602
  type: Injectable
597
603
  }] });
598
604
 
@@ -833,10 +839,10 @@ class QrCodeScannerService {
833
839
  this.stream = null;
834
840
  }
835
841
  }
836
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: QrCodeScannerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
837
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: QrCodeScannerService });
842
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: QrCodeScannerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
843
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: QrCodeScannerService });
838
844
  }
839
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: QrCodeScannerService, decorators: [{
845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: QrCodeScannerService, decorators: [{
840
846
  type: Injectable
841
847
  }] });
842
848
 
@@ -1 +1 @@
1
- {"version":3,"file":"meshmakers-shared-services.mjs","sources":["../../../../projects/meshmakers/shared-services/src/lib/options/commandOptions.ts","../../../../projects/meshmakers/shared-services/src/lib/services/command-settings.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/command-base.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/command.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/error-message.utils.ts","../../../../projects/meshmakers/shared-services/src/lib/services/message.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/component-menu.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/bread-crumb.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/app-title.service.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/mm-http-error-interceptor.service.ts","../../../../projects/meshmakers/shared-services/src/lib/models/breadCrumbData.ts","../../../../projects/meshmakers/shared-services/src/lib/models/pagedResultDto.ts","../../../../projects/meshmakers/shared-services/src/lib/models/treeItemData.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/data-source-base.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/iso-date-time.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/qr-code-scanner.service.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/error-message.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/auto-complete-data-source.ts","../../../../projects/meshmakers/shared-services/src/public-api.ts","../../../../projects/meshmakers/shared-services/src/meshmakers-shared-services.ts"],"sourcesContent":["\nexport class CommandOptions{\n\n}\n","import {inject, Injectable} from '@angular/core';\nimport {CommandItem} from '../models/commandItem';\nimport {ActivatedRoute} from '@angular/router';\n\n@Injectable()\nexport class CommandSettingsService {\n\n private readonly _activatedRoute: ActivatedRoute;\n\n constructor() {\n this._activatedRoute = inject(ActivatedRoute);\n }\n\n public get navigateRelativeToRoute() : ActivatedRoute{\n return this._activatedRoute;\n }\n\n public get commandItems(): CommandItem[] {\n return [];\n }\n}\n","import {CommandSettingsService} from './command-settings.service';\nimport {CommandItem} from '../models/commandItem';\nimport {Router} from '@angular/router';\n\nexport abstract class CommandBaseService {\n\n protected constructor(protected readonly commandSettingsService: CommandSettingsService, private readonly router: Router) {\n }\n\n protected async navigateAsync(commandItem: CommandItem, data?: unknown): Promise<void> {\n\n console.debug('navigateAsync', commandItem);\n const hrefUri = await CommandBaseService.getHref(commandItem, data);\n const link = await CommandBaseService.getLink(commandItem, data);\n if (hrefUri) {\n window.open(hrefUri, commandItem.target ?? \"_blank\");\n } else if (link) {\n\n await this.router.navigate([link], {\n relativeTo: this.commandSettingsService.navigateRelativeToRoute\n });\n } else if (commandItem.onClick) {\n await CommandBaseService.executeClickEvent(commandItem, data);\n } else {\n console.debug('navigateAsync', 'no href or link');\n }\n }\n\n static getIsVisibleSync(commandItem: CommandItem, data?: unknown): boolean {\n if (commandItem.isVisible !== undefined) {\n if (typeof commandItem.isVisible === 'boolean') {\n return commandItem.isVisible;\n } else if (typeof commandItem.isVisible === 'function') {\n const result = commandItem.isVisible(data);\n if (result instanceof Promise) {\n return true;\n }\n return result;\n }\n }\n return true;\n }\n\n protected static async getIsVisible(commandItem: CommandItem): Promise<boolean> {\n if (commandItem.isVisible !== undefined) {\n if (typeof commandItem.isVisible === 'boolean') {\n return commandItem.isVisible;\n } else if (typeof commandItem.isVisible === 'function') {\n return await commandItem.isVisible();\n }\n }\n return true;\n }\n\n protected static getIsDisabled(commandItem: CommandItem, data?: unknown): boolean {\n if (commandItem.isDisabled !== undefined) {\n if (typeof commandItem.isDisabled === 'boolean') {\n return commandItem.isDisabled;\n } else if (typeof commandItem.isDisabled === 'function') {\n return commandItem.isDisabled(data);\n }\n }\n return false;\n }\n\n private static async getLink(commandItem: CommandItem, data?: unknown): Promise<string | null> {\n if (commandItem.link !== undefined) {\n if (typeof commandItem.link === 'string') {\n return CommandBaseService.interpolateString(commandItem.link, data);\n } else if (typeof commandItem.link === 'function') {\n return CommandBaseService.interpolateString(await commandItem.link({commandItem, data}), data);\n }\n }\n return null;\n }\n\n private static async getHref(commandItem: CommandItem, data?: unknown): Promise<string | null> {\n if (commandItem.href !== undefined) {\n if (typeof commandItem.href === 'string') {\n return CommandBaseService.interpolateString(commandItem.href, data);\n } else if (typeof commandItem.href === 'function') {\n return CommandBaseService.interpolateString(await commandItem.href({commandItem, data}), data);\n }\n }\n return null;\n }\n\n\n private static async executeClickEvent(commandItem: CommandItem, data?: unknown): Promise<void> {\n if (commandItem.onClick !== undefined) {\n return await commandItem.onClick({commandItem, data});\n }\n }\n\n private static interpolateString(template: string | null, data?: unknown): string | null {\n return template?.replace(/{{\\s*(\\w+)\\s*}}/g, (match, propName: string) => {\n if (data && typeof data === 'object' && propName in data) {\n return String((data as Record<string, unknown>)[propName]);\n }\n return match;\n }) ?? null;\n }\n}\n","import {CommandOptions} from '../options/commandOptions';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport {DrawerItem} from '@progress/kendo-angular-layout';\nimport {CommandItem} from '../models/commandItem';\nimport {Router} from '@angular/router';\nimport {CommandSettingsService} from './command-settings.service';\nimport {CommandBaseService} from './command-base.service';\n\n@Injectable()\nexport class CommandService extends CommandBaseService {\n private readonly options = inject(CommandOptions);\n\n\n private readonly _drawerItems: BehaviorSubject<DrawerItem[]> = new BehaviorSubject<DrawerItem[]>([]);\n private readonly _commandsMap: Map<string, CommandItem> = new Map<string, CommandItem>();\n\n // noinspection JSUnusedLocalSymbols\n constructor() {\n const router = inject(Router);\n const commandSettingsService = inject(CommandSettingsService);\n\n super(commandSettingsService, router);\n }\n\n // noinspection JSUnusedGlobalSymbols\n public async initialize(): Promise<void> {\n const items = new Array<DrawerItem>();\n\n const commandItems = this.commandSettingsService.commandItems;\n await this.createDrawerItems(commandItems, items, null);\n\n this._drawerItems.next(items);\n }\n\n private async createDrawerItems(commandItems: CommandItem[], items: DrawerItem[], parentId: string | null) {\n for (const commandItem of commandItems) {\n const visible = await CommandBaseService.getIsVisible(commandItem);\n\n if (!visible) {\n continue;\n }\n\n if (commandItem.type === 'separator') {\n items.push({\n id: commandItem.id,\n parentId: parentId ?? undefined,\n separator: true\n });\n } else {\n items.push({\n id: commandItem.id,\n parentId: parentId ?? undefined,\n text: commandItem.text,\n selected: commandItem.selected,\n svgIcon: commandItem.svgIcon\n });\n\n if (commandItem.children) {\n await this.createDrawerItems(commandItem.children, items, commandItem.id);\n }\n this._commandsMap.set(commandItem.id, commandItem);\n }\n }\n }\n\n\n\n // noinspection JSUnusedGlobalSymbols\n public get drawerItems(): Observable<DrawerItem[]> {\n return this._drawerItems;\n }\n\n // noinspection JSUnusedGlobalSymbols\n public async setSelectedDrawerItem(value: DrawerItem): Promise<void> {\n console.debug('setSelectedDrawerItem', value);\n\n if (typeof value.id !== \"string\") {\n return;\n }\n const commandItem = this._commandsMap.get(value.id);\n\n if (commandItem === undefined) {\n return;\n }\n await this.navigateAsync(commandItem);\n }\n}\n\n\n","/**\n * Transforms known backend error messages into user-friendly messages.\n * Returns null if the error message is not recognized and should be displayed as-is.\n */\nexport function transformErrorMessage(message: string): { userMessage: string; technicalDetails: string } | null {\n if (!message) return null;\n\n // MongoDB E11000 duplicate key error\n if (message.includes('E11000 duplicate key')) {\n return {\n userMessage: 'An entity with this ID already exists. If you are importing data, try using the \"Upsert\" strategy instead of \"Insert Only\".',\n technicalDetails: message\n };\n }\n\n return null;\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {NotificationMessage} from '../models/notification-message';\nimport {transformErrorMessage} from './error-message.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n latestErrorMessage: BehaviorSubject<NotificationMessage | null>;\n errorMessages: NotificationMessage[];\n\n // New message stream for all message types\n private readonly messageSubject = new Subject<NotificationMessage>();\n public readonly messages$ = this.messageSubject.asObservable();\n\n constructor() {\n this.latestErrorMessage = new BehaviorSubject<NotificationMessage | null>(null);\n this.errorMessages = new Array<NotificationMessage>();\n }\n\n getErrorMessageCount(): number {\n return this.errorMessages.length;\n }\n\n getErrorMessage(index: number): NotificationMessage {\n return this.errorMessages[index];\n }\n\n getLatestErrorMessage(): Observable<NotificationMessage | null> {\n return this.latestErrorMessage.asObservable();\n }\n\n showErrorWithDetails(message: string, details: string): void {\n console.error(`${details}: ${message}`);\n\n const transformed = transformErrorMessage(message);\n const displayMessage = transformed ? transformed.userMessage : message;\n const displayDetails = transformed\n ? (details ? `${details}\\n\\n${transformed.technicalDetails}` : transformed.technicalDetails)\n : details;\n\n const notificationMessage = {\n level: \"error\",\n details: displayDetails,\n message: displayMessage,\n timestamp: new Date()\n } as NotificationMessage;\n this.errorMessages.push(notificationMessage);\n\n this.latestErrorMessage.next(notificationMessage);\n\n // Emit to the new message stream\n this.messageSubject.next(notificationMessage);\n }\n\n showError(message: string): void {\n console.error(message);\n\n const transformed = transformErrorMessage(message);\n const displayMessage = transformed ? transformed.userMessage : message;\n const displayDetails = transformed ? transformed.technicalDetails : undefined;\n\n const notificationMessage = {\n level: \"error\",\n message: displayMessage,\n details: displayDetails,\n timestamp: new Date()\n } as NotificationMessage;\n this.errorMessages.push(notificationMessage);\n\n this.latestErrorMessage.next(notificationMessage);\n\n // Emit to the new message stream\n this.messageSubject.next(notificationMessage);\n }\n\n showInformation(message: string): void {\n console.log(message);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'info',\n message,\n timestamp: new Date()\n });\n }\n\n showSuccess(message: string): void {\n console.log(message);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'success',\n message,\n timestamp: new Date()\n });\n }\n\n showWarning(message: string): void {\n console.warn(message);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'warning',\n message: message,\n timestamp: new Date()\n });\n }\n\n showWarningWithDetails(message: string, details: string): void {\n console.warn(`${message}: ${details}`);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'warning',\n details: details,\n message: message,\n timestamp: new Date()\n });\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {MenuItem} from '@progress/kendo-angular-menu';\nimport {CommandItem} from '../models/commandItem';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {filter} from 'rxjs/operators';\nimport {CommandSettingsService} from './command-settings.service';\nimport {CommandBaseService} from './command-base.service';\n\n@Injectable()\nexport class ComponentMenuService extends CommandBaseService {\n private readonly activatedRoute = inject(ActivatedRoute);\n\n\n private readonly _menuItems: BehaviorSubject<MenuItem[]> = new BehaviorSubject<MenuItem[]>([]);\n\n constructor() {\n const commandSettingsService = inject(CommandSettingsService);\n const router = inject(Router);\n\n\n super(commandSettingsService, router);\n\n router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this._menuItems.next(this.createNavigationMenu(this.activatedRoute.root));\n });\n\n this._menuItems.next(this.createNavigationMenu(this.activatedRoute.root));\n }\n\n // noinspection JSUnusedGlobalSymbols\n public get menuItems(): Observable<MenuItem[]> {\n return this._menuItems;\n }\n\n private createNavigationMenu(route: ActivatedRoute, path: MenuItem[] = []): MenuItem[] {\n const children = route.children;\n\n for (const child of children) {\n\n const commandItems: CommandItem[] = child.snapshot.data['navigationMenu'];\n if (commandItems) {\n\n path.push(...this.buildMenuItems(commandItems, child));\n }\n\n return this.createNavigationMenu(child, path);\n }\n\n return path;\n }\n\n // noinspection JSUnusedGlobalSymbols\n public async setSelectedMenuItem(value: MenuItem): Promise<void> {\n console.debug('setSelectedMenuItem', value);\n\n const commandItem = value.data as CommandItem;\n if (!commandItem) {\n return;\n }\n await this.navigateAsync(commandItem);\n }\n\n private buildMenuItems(commandItems: CommandItem[], activatedRoute: ActivatedRoute): MenuItem[] {\n\n const items = new Array<MenuItem>();\n\n for (const commandItem of commandItems) {\n\n if (commandItem.type === 'separator') {\n items.push({separator: true});\n } else {\n\n let childMenuItems: MenuItem[] | undefined = undefined;\n if (commandItem.children) {\n childMenuItems = this.buildMenuItems(commandItem.children, activatedRoute)\n }\n\n let label = commandItem.text;\n if (label) {\n // We replace the label parameters with the actual values from route (use updateBreadcrumbLabels to update the labels with data)\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = label.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n const routerParamID = activatedRoute.snapshot.params[labelParam] as string;\n if (routerParamID) {\n label = label.replace('{{' + labelParam + '}}', routerParamID);\n }\n }\n }\n }\n\n items.push({\n text: label,\n svgIcon: commandItem.svgIcon,\n data: commandItem,\n items: childMenuItems\n });\n }\n }\n\n return items;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {BehaviorSubject, firstValueFrom, Observable} from 'rxjs';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {filter} from 'rxjs/operators';\nimport {BreadCrumbData} from '../models/breadCrumbData';\nimport {BreadCrumbRouteItem} from '../models/breadCrumbRouteItem';\n\n@Injectable()\nexport class BreadCrumbService {\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly router = inject(Router);\n\n private readonly _breadCrumbItems: BehaviorSubject<BreadCrumbData[]> = new BehaviorSubject<BreadCrumbData[]>([]);\n\n constructor() {\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this._breadCrumbItems.next(this.createBreadCrumbs(this.activatedRoute.root));\n });\n this._breadCrumbItems.next(this.createBreadCrumbs(this.activatedRoute.root));\n }\n\n private createBreadCrumbs(route: ActivatedRoute, path: BreadCrumbData[] = [], lastBreadcrumbRef?: BreadCrumbRouteItem[]): BreadCrumbData[] {\n const children = route.children;\n\n for (const child of children) {\n\n const breadCrumbRouteItems: BreadCrumbRouteItem[] = child.snapshot.data['breadcrumb'];\n // Skip inherited breadcrumb data (Angular passes parent route data to children by reference)\n if (breadCrumbRouteItems && breadCrumbRouteItems !== lastBreadcrumbRef) {\n\n for (const breadCrumbRouteItem of breadCrumbRouteItems) {\n\n if (!breadCrumbRouteItem || typeof breadCrumbRouteItem !== 'object') {\n console.warn('BreadCrumbService: invalid breadcrumb item encountered. Skipping.');\n continue;\n }\n\n if (breadCrumbRouteItem.label === undefined || breadCrumbRouteItem.label === null) {\n const routePath = child.snapshot.url?.map(s => s.path).join('/') ?? '';\n console.warn(`BreadCrumbService: breadcrumb item is missing a 'label' property on route '${routePath}'. Skipping item.`);\n continue;\n }\n\n let label = String(breadCrumbRouteItem.label);\n let url = String(breadCrumbRouteItem.url ?? '');\n\n if (breadCrumbRouteItem.url === undefined || breadCrumbRouteItem.url === null) {\n const routePath = child.snapshot.url?.map(s => s.path).join('/') ?? '';\n console.warn(`BreadCrumbService: breadcrumb item '${label}' is missing a 'url' property on route '${routePath}'. ` +\n `Add 'url' to the breadcrumb route data, e.g. { label: '${label}', url: '${routePath}' }.`);\n }\n\n // We replace the route parameters with the actual values\n // Match all :paramName patterns in the URL\n if (url) {\n const paramMatches = url.match(/:([a-zA-Z0-9_]+)/g);\n if (paramMatches) {\n for (const match of paramMatches) {\n const paramName = match.substring(1); // Remove leading ':'\n const paramValue = child.snapshot.params[paramName] as string;\n if (paramValue) {\n url = url.replace(match, paramValue);\n }\n }\n }\n }\n\n // We replace the label parameters with the actual values from route (use updateBreadcrumbLabels to update the labels with data)\n if (label) {\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = label.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n const routerParamID = child.snapshot.params[labelParam] as string;\n if (routerParamID) {\n label = label.replace('{{' + labelParam + '}}', routerParamID);\n }\n }\n }\n }\n\n // Replace any unresolved {{param}} placeholders with ellipsis for display\n const displayLabel = label.replace(/\\{\\{[^}]+}}/g, '\\u2026');\n\n path.push({\n text: displayLabel,\n title: displayLabel,\n labelTemplate: breadCrumbRouteItem.label,\n urlTemplate: breadCrumbRouteItem.url,\n svgIcon: breadCrumbRouteItem.svgIcon,\n url: url\n });\n }\n }\n\n return this.createBreadCrumbs(child, path, breadCrumbRouteItems ?? lastBreadcrumbRef);\n }\n\n return path;\n }\n\n /*\n * This method updates the breadcrumb labels with the data passed in the parameter. Parameters are passed in the label as {{paramName}}\n */\n // noinspection JSUnusedGlobalSymbols\n public async updateBreadcrumbLabels(data: Record<string, string>): Promise<void> {\n\n const list = await firstValueFrom(this._breadCrumbItems);\n for (const breadCrumbDataItem of list) {\n // Resolve {{param}} in labels\n if (breadCrumbDataItem.labelTemplate) {\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = breadCrumbDataItem.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n let resolvedLabel = breadCrumbDataItem.labelTemplate;\n for (const labelParam of labelParams) {\n const value = data[labelParam];\n if (value) {\n resolvedLabel = resolvedLabel.replace('{{' + labelParam + '}}', value);\n }\n }\n breadCrumbDataItem.title = resolvedLabel;\n breadCrumbDataItem.text = resolvedLabel;\n }\n }\n\n // Resolve {{param}} in URLs\n if (breadCrumbDataItem.urlTemplate) {\n // noinspection RegExpDuplicateCharacterInClass\n const urlParams = breadCrumbDataItem.urlTemplate.match(/[^{{]+(?=}})/g);\n if (urlParams) {\n let resolvedUrl = breadCrumbDataItem.urlTemplate;\n for (const urlParam of urlParams) {\n const value = data[urlParam];\n if (value) {\n resolvedUrl = resolvedUrl.replace('{{' + urlParam + '}}', value);\n }\n }\n breadCrumbDataItem.url = resolvedUrl;\n }\n }\n }\n // Re-emit to notify subscribers (e.g. translated breadcrumb pipes)\n this._breadCrumbItems.next(list);\n }\n\n // noinspection JSUnusedGlobalSymbols\n public get breadCrumbItems(): Observable<BreadCrumbData[]> {\n return this._breadCrumbItems;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport class AppTitleService {\n private readonly _appTitle: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n public setTitle(title: string): void {\n this._appTitle.next(title);\n }\n\n public getTitle(): string | null {\n return this._appTitle.value;\n }\n\n public get appTitle(): Observable<string | null> {\n return this._appTitle.asObservable();\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\nimport { inject, Injectable, InjectionToken } from \"@angular/core\";\nimport { MessageService } from \"../services/message.service\";\nimport { ApiErrorDto } from \"../models/apiErrorDto\";\n\n/**\n * Optional callback invoked when a network connectivity error (HTTP status 0) is detected.\n * When provided, the interceptor calls this handler instead of showing a generic error toast.\n * This allows host applications to implement custom connection-loss handling (e.g., a full-screen\n * error overlay with retry logic).\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * {\n * provide: ON_CONNECTION_LOST,\n * useFactory: () => {\n * const configService = inject(AppConfigurationService);\n * return () => configService.reportConnectionLost();\n * }\n * }\n * ```\n */\nexport const ON_CONNECTION_LOST = new InjectionToken<() => void>('ON_CONNECTION_LOST');\n\n@Injectable()\nexport class MmHttpErrorInterceptor implements HttpInterceptor {\n\n private readonly messageService = inject(MessageService);\n private readonly onConnectionLost = inject(ON_CONNECTION_LOST, { optional: true });\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n return next.handle(request).pipe(\n retry(0),\n catchError((error: HttpErrorResponse) => {\n\n if (error.status === 0) {\n if (this.onConnectionLost) {\n this.onConnectionLost();\n } else {\n this.messageService.showError('OctoMesh backend is not reachable. Please check if your network connection is working or contact your Administrator.');\n }\n }\n\n if (error.status === 403) {\n this.messageService.showError('Access denied. You do not have permission to access this tenant or resource.');\n }\n\n if (error.status === 400 && error.error.statusCode) {\n const apiError = error.error as ApiErrorDto;\n\n let details = '';\n if (apiError.details && apiError.details.length > 0) {\n for (const detail of apiError.details) {\n if (detail.description) {\n details += `\\n✗ ${detail.description}`;\n }\n }\n }\n\n this.messageService.showErrorWithDetails(details, apiError.message);\n }\n\n return throwError(() => error);\n })\n );\n }\n}\n","import {BreadCrumbItem} from '@progress/kendo-angular-navigation';\nimport {SVGIcon} from '@progress/kendo-svg-icons';\n\nexport class BreadCrumbData implements BreadCrumbItem {\n\n constructor(label: string, labelTemplate: string, url: string) {\n this.text = label;\n this.labelTemplate = labelTemplate;\n this.url = url;\n }\n\n text?: string;\n title?: string;\n disabled?: boolean;\n icon?: string;\n svgIcon?: SVGIcon;\n iconClass?: string;\n imageUrl?: string;\n\n labelTemplate: string;\n urlTemplate?: string;\n url: string;\n}\n","export class PagedResultDto<T> {\n skip: number;\n take: number;\n totalCount: number;\n list: T[];\n\n constructor() {\n this.skip = 0;\n this.take = 0;\n this.totalCount = 0;\n this.list = new Array<T>();\n }\n}\n","import {SVGIcon} from '@progress/kendo-svg-icons/dist/svg-icon.interface';\n\nexport interface TreeItemData {\n\n get id(): string;\n\n get text(): string;\n\n get tooltip(): string;\n\n get item(): unknown;\n\n get svgIcon(): SVGIcon | null;\n\n get expandable(): boolean;\n set expandable(value: boolean);\n\n get isExpanded(): boolean;\n set isExpanded(value: boolean);\n}\n\nexport class TreeItemDataTyped<TDto> implements TreeItemData {\n private _isExpandable: boolean;\n private _isExpanded: boolean;\n\n constructor(private readonly _id: string, private readonly _text: string, private readonly _tooltip: string,\n private readonly _item: TDto, private readonly _svgIcon: SVGIcon,\n expandable = false, isExpanded = false) {\n this._isExpandable = expandable;\n this._isExpanded = expandable && isExpanded;\n }\n\n public get id(): string {\n return this._id;\n }\n\n public get text(): string {\n return this._text;\n }\n\n public get tooltip(): string {\n return this._tooltip;\n }\n\n public get item(): TDto {\n return this._item;\n }\n\n public get svgIcon(): SVGIcon | null {\n return this._svgIcon;\n }\n\n public get expandable(): boolean {\n return this._isExpandable;\n }\n\n public set expandable(value: boolean) {\n this._isExpandable = value;\n }\n\n public get isExpanded(): boolean{\n return this._isExpanded;\n }\n public set isExpanded(value: boolean) {\n this._isExpanded = value;\n }\n}\n","/**\n * Legacy DataSourceBase class for backward compatibility with libraries\n * that import DataSourceBase from @meshmakers/shared-services.\n *\n * In the current version, DataSourceBase moved to @meshmakers/shared-ui.\n * This re-export ensures old compiled libraries (octo-services, etc.) continue to work.\n */\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {PagedResultDto} from '../models/pagedResultDto';\n\nexport class DataSourceBase<TDto> {\n private readonly dataSubject = new BehaviorSubject<TDto[]>([]);\n private readonly loadingSubject = new BehaviorSubject<boolean>(false);\n private readonly totalCountSubject = new BehaviorSubject<number>(0);\n\n public readonly loading$ = this.loadingSubject.asObservable();\n public readonly totalCount$ = this.totalCountSubject.asObservable();\n\n private readonly addedDtoList: TDto[] = [];\n private readonly removedDtoList: TDto[] = [];\n private lastPagedResult: PagedResultDto<TDto> | null = null;\n\n public get totalCount(): Observable<number> {\n return this.totalCount$;\n }\n\n public reset(): void {\n this.addedDtoList.length = 0;\n this.removedDtoList.length = 0;\n }\n\n public addTemporaryDto(dto: TDto): void {\n const index = this.removedDtoList.indexOf(dto);\n if (index !== -1) {\n this.removedDtoList.splice(index, 1);\n } else {\n this.addedDtoList.push(dto);\n }\n this.onEndLoad();\n }\n\n public removeTemporaryDto(dto: TDto): void {\n const index = this.addedDtoList.indexOf(dto);\n if (index !== -1) {\n this.addedDtoList.splice(index, 1);\n } else {\n this.removedDtoList.push(dto);\n }\n this.onEndLoad();\n }\n\n public get addedTemporaryDtos(): TDto[] {\n return this.addedDtoList;\n }\n\n public get removedTemporaryDtos(): TDto[] {\n return this.removedDtoList;\n }\n\n connect(_collectionViewer: unknown): Observable<readonly TDto[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(_collectionViewer: unknown): void {\n this.clear();\n }\n\n clear(): void {\n this.loadingSubject?.next(false);\n this.dataSubject?.next([]);\n this.totalCountSubject?.next(0);\n }\n\n protected onBeginLoad(): void {\n this.loadingSubject?.next(true);\n }\n\n protected onCompleteLoad(pagedResult: PagedResultDto<TDto>): void {\n this.lastPagedResult = pagedResult;\n this.onEndLoad();\n }\n\n private onEndLoad(): void {\n if (this.lastPagedResult !== null) {\n const totalCount = this.lastPagedResult.totalCount + this.addedDtoList.length - this.removedDtoList.length;\n const list = this.lastPagedResult.list.concat(this.addedDtoList).filter((x) => !this.removedDtoList.includes(x));\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n } else {\n const totalCount = this.addedDtoList.length;\n const list = this.addedDtoList;\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n }\n }\n}\n","/**\n * Legacy IsoDateTime utility class for backward compatibility.\n * Uses native Date API instead of date-fns.\n */\nexport class IsoDateTime {\n public static utcToLocalDateTimeIso(utcDateTime: string): string | null {\n if (!utcDateTime) {\n return null;\n }\n return new Date(utcDateTime).toISOString();\n }\n\n public static localToUtcDateTimeIso(localDateTime: string): string | null {\n if (!localDateTime) {\n return null;\n }\n return new Date(localDateTime).toISOString();\n }\n\n public static currentUtcDateTimeIso(): string {\n return new Date().toISOString();\n }\n}\n","/**\n * Legacy QrCodeScannerService for backward compatibility.\n */\nimport {Injectable} from '@angular/core';\n\ninterface BarcodeDetectorResult {\n rawValue: string;\n}\n\ninterface BarcodeDetectorInstance {\n detect(source: HTMLVideoElement): Promise<BarcodeDetectorResult[]>;\n}\n\ninterface BarcodeDetectorConstructor {\n new (options: { formats: string[] }): BarcodeDetectorInstance;\n getSupportedFormats(): Promise<string[]>;\n}\n\ninterface WindowWithBarcodeDetector {\n BarcodeDetector?: BarcodeDetectorConstructor;\n}\n\n@Injectable()\nexport class QrCodeScannerService {\n private stream: MediaStream | null = null;\n\n async isSupported(): Promise<boolean> {\n const BarcodeDetectorClass = (window as unknown as WindowWithBarcodeDetector).BarcodeDetector;\n return !!BarcodeDetectorClass &&\n await BarcodeDetectorClass.getSupportedFormats().then(\n (formats: string[]) => formats.includes('qr_code')\n );\n }\n\n async scan(video: HTMLVideoElement): Promise<string> {\n const BarcodeDetectorClass = (window as unknown as WindowWithBarcodeDetector).BarcodeDetector;\n if (!BarcodeDetectorClass) {\n throw new Error('BarcodeDetector is not supported');\n }\n const detector = new BarcodeDetectorClass({formats: ['qr_code']});\n\n try {\n this.stream = await navigator.mediaDevices.getUserMedia({\n video: {facingMode: 'environment'}\n });\n\n video.srcObject = this.stream;\n await video.play();\n\n return new Promise((resolve, reject) => {\n const detectLoop = async () => {\n try {\n const barcodes = await detector.detect(video);\n if (barcodes.length > 0) {\n this.stop();\n resolve(barcodes[0].rawValue);\n return;\n }\n } catch (err) {\n this.stop();\n reject(err);\n return;\n }\n requestAnimationFrame(detectLoop);\n };\n detectLoop();\n });\n } catch (err) {\n this.stop();\n throw err;\n }\n }\n\n stop(): void {\n if (this.stream) {\n this.stream.getTracks().forEach(track => track.stop());\n this.stream = null;\n }\n }\n}\n","/**\n * Legacy ErrorMessage class for backward compatibility.\n */\nexport class ErrorMessage {\n title?: string;\n message?: string;\n}\n","/**\n * Legacy AutoCompleteDataSource interface and AutoCompleteResult class\n * for backward compatibility.\n */\nimport {Observable} from 'rxjs';\n\nexport class AutoCompleteResult {\n searchTerm?: string;\n list?: string[];\n}\n\nexport interface AutoCompleteDataSource {\n onFilter: (filter: string) => Observable<AutoCompleteResult>;\n onPreprocessSearchString: (search: string) => string;\n}\n","/*\n * Public API Surface of shared-services\n */\nimport {CommandOptions} from './lib/options/commandOptions';\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {CommandSettingsService} from './lib/services/command-settings.service';\nimport {CommandService} from './lib/services/command.service';\nimport {MessageService} from './lib/services/message.service';\nimport {ComponentMenuService} from './lib/services/component-menu.service';\nimport {BreadCrumbService} from './lib/services/bread-crumb.service';\nimport {AppTitleService} from './lib/services/app-title.service';\nimport {MmHttpErrorInterceptor} from './lib/shared/mm-http-error-interceptor.service';\n\nexport * from './lib/services/app-title.service';\nexport * from './lib/services/message.service';\nexport * from './lib/services/command.service';\nexport * from './lib/services/command-base.service';\nexport * from './lib/services/bread-crumb.service';\nexport * from './lib/services/command-settings.service';\nexport * from './lib/services/component-menu.service';\nexport * from './lib/models/notification-message';\nexport * from './lib/models/commandItem';\nexport * from './lib/models/breadCrumbData';\nexport * from './lib/models/breadCrumbRouteItem';\nexport * from './lib/models/pagedResultDto';\nexport * from './lib/models/treeItemData';\nexport * from './lib/options/commandOptions';\nexport * from './lib/shared/mm-http-error-interceptor.service';\nexport * from './lib/data-sources/entity-select-data-source';\n\n// Backward-compatible re-exports for legacy libraries (shared-ui, octo-services)\n// that import these from @meshmakers/shared-services\nexport {BreadCrumbService as BreadcrumbService} from './lib/services/bread-crumb.service';\nexport * from './lib/compat/data-source-base';\nexport * from './lib/compat/iso-date-time';\nexport * from './lib/compat/qr-code-scanner.service';\nexport * from './lib/compat/error-message';\nexport * from './lib/compat/auto-complete-data-source';\n\nexport function provideMmSharedServices(commandOptions?: CommandOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n MessageService,\n CommandService,\n CommandSettingsService,\n ComponentMenuService,\n AppTitleService,\n MmHttpErrorInterceptor,\n BreadCrumbService,\n {\n provide: CommandOptions,\n useValue: commandOptions\n }\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meshmakers-shared-services.mjs","sources":["../../../../projects/meshmakers/shared-services/src/lib/options/commandOptions.ts","../../../../projects/meshmakers/shared-services/src/lib/services/command-settings.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/command-base.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/command.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/error-message.utils.ts","../../../../projects/meshmakers/shared-services/src/lib/services/message.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/component-menu.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/bread-crumb.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/app-title.service.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/mm-http-error-interceptor.service.ts","../../../../projects/meshmakers/shared-services/src/lib/models/breadCrumbData.ts","../../../../projects/meshmakers/shared-services/src/lib/models/pagedResultDto.ts","../../../../projects/meshmakers/shared-services/src/lib/models/treeItemData.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/data-source-base.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/iso-date-time.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/qr-code-scanner.service.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/error-message.ts","../../../../projects/meshmakers/shared-services/src/lib/compat/auto-complete-data-source.ts","../../../../projects/meshmakers/shared-services/src/public-api.ts","../../../../projects/meshmakers/shared-services/src/meshmakers-shared-services.ts"],"sourcesContent":["\nexport class CommandOptions{\n\n}\n","import {inject, Injectable} from '@angular/core';\nimport {CommandItem} from '../models/commandItem';\nimport {ActivatedRoute} from '@angular/router';\n\n@Injectable()\nexport class CommandSettingsService {\n\n private readonly _activatedRoute: ActivatedRoute;\n\n constructor() {\n this._activatedRoute = inject(ActivatedRoute);\n }\n\n public get navigateRelativeToRoute() : ActivatedRoute{\n return this._activatedRoute;\n }\n\n public get commandItems(): CommandItem[] {\n return [];\n }\n}\n","import {CommandSettingsService} from './command-settings.service';\nimport {CommandItem} from '../models/commandItem';\nimport {Router} from '@angular/router';\n\nexport abstract class CommandBaseService {\n\n protected constructor(protected readonly commandSettingsService: CommandSettingsService, private readonly router: Router) {\n }\n\n protected async navigateAsync(commandItem: CommandItem, data?: unknown): Promise<void> {\n\n console.debug('navigateAsync', commandItem);\n const hrefUri = await CommandBaseService.getHref(commandItem, data);\n const link = await CommandBaseService.getLink(commandItem, data);\n if (hrefUri) {\n window.open(hrefUri, commandItem.target ?? \"_blank\");\n } else if (link) {\n\n await this.router.navigate([link], {\n relativeTo: this.commandSettingsService.navigateRelativeToRoute\n });\n } else if (commandItem.onClick) {\n await CommandBaseService.executeClickEvent(commandItem, data);\n } else {\n console.debug('navigateAsync', 'no href or link');\n }\n }\n\n static getIsVisibleSync(commandItem: CommandItem, data?: unknown): boolean {\n if (commandItem.isVisible !== undefined) {\n if (typeof commandItem.isVisible === 'boolean') {\n return commandItem.isVisible;\n } else if (typeof commandItem.isVisible === 'function') {\n const result = commandItem.isVisible(data);\n if (result instanceof Promise) {\n return true;\n }\n return result;\n }\n }\n return true;\n }\n\n protected static async getIsVisible(commandItem: CommandItem): Promise<boolean> {\n if (commandItem.isVisible !== undefined) {\n if (typeof commandItem.isVisible === 'boolean') {\n return commandItem.isVisible;\n } else if (typeof commandItem.isVisible === 'function') {\n return await commandItem.isVisible();\n }\n }\n return true;\n }\n\n protected static getIsDisabled(commandItem: CommandItem, data?: unknown): boolean {\n if (commandItem.isDisabled !== undefined) {\n if (typeof commandItem.isDisabled === 'boolean') {\n return commandItem.isDisabled;\n } else if (typeof commandItem.isDisabled === 'function') {\n return commandItem.isDisabled(data);\n }\n }\n return false;\n }\n\n private static async getLink(commandItem: CommandItem, data?: unknown): Promise<string | null> {\n if (commandItem.link !== undefined) {\n if (typeof commandItem.link === 'string') {\n return CommandBaseService.interpolateString(commandItem.link, data);\n } else if (typeof commandItem.link === 'function') {\n return CommandBaseService.interpolateString(await commandItem.link({commandItem, data}), data);\n }\n }\n return null;\n }\n\n private static async getHref(commandItem: CommandItem, data?: unknown): Promise<string | null> {\n if (commandItem.href !== undefined) {\n if (typeof commandItem.href === 'string') {\n return CommandBaseService.interpolateString(commandItem.href, data);\n } else if (typeof commandItem.href === 'function') {\n return CommandBaseService.interpolateString(await commandItem.href({commandItem, data}), data);\n }\n }\n return null;\n }\n\n\n private static async executeClickEvent(commandItem: CommandItem, data?: unknown): Promise<void> {\n if (commandItem.onClick !== undefined) {\n return await commandItem.onClick({commandItem, data});\n }\n }\n\n private static interpolateString(template: string | null, data?: unknown): string | null {\n return template?.replace(/{{\\s*(\\w+)\\s*}}/g, (match, propName: string) => {\n if (data && typeof data === 'object' && propName in data) {\n return String((data as Record<string, unknown>)[propName]);\n }\n return match;\n }) ?? null;\n }\n}\n","import {CommandOptions} from '../options/commandOptions';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport { Injectable, inject } from '@angular/core';\nimport {DrawerItem} from '@progress/kendo-angular-layout';\nimport {CommandItem} from '../models/commandItem';\nimport {Router} from '@angular/router';\nimport {CommandSettingsService} from './command-settings.service';\nimport {CommandBaseService} from './command-base.service';\n\n@Injectable()\nexport class CommandService extends CommandBaseService {\n private readonly options = inject(CommandOptions);\n\n\n private readonly _drawerItems: BehaviorSubject<DrawerItem[]> = new BehaviorSubject<DrawerItem[]>([]);\n private readonly _commandsMap: Map<string, CommandItem> = new Map<string, CommandItem>();\n\n // noinspection JSUnusedLocalSymbols\n constructor() {\n const router = inject(Router);\n const commandSettingsService = inject(CommandSettingsService);\n\n super(commandSettingsService, router);\n }\n\n // noinspection JSUnusedGlobalSymbols\n public async initialize(): Promise<void> {\n const items = new Array<DrawerItem>();\n\n const commandItems = this.commandSettingsService.commandItems;\n await this.createDrawerItems(commandItems, items, null);\n\n this._drawerItems.next(items);\n }\n\n private async createDrawerItems(\n commandItems: CommandItem[],\n items: DrawerItem[],\n parentId: string | null,\n depth = 0,\n ) {\n for (const commandItem of commandItems) {\n const visible = await CommandBaseService.getIsVisible(commandItem);\n\n if (!visible) {\n continue;\n }\n\n const hierarchyClass = `mm-drawer-level-${depth}`;\n\n if (commandItem.type === 'separator') {\n items.push({\n id: commandItem.id,\n parentId: parentId ?? undefined,\n separator: true,\n cssClass: hierarchyClass\n });\n } else {\n items.push({\n id: commandItem.id,\n parentId: parentId ?? undefined,\n text: commandItem.text,\n selected: commandItem.selected,\n svgIcon: commandItem.svgIcon,\n cssClass: hierarchyClass\n });\n\n if (commandItem.children) {\n await this.createDrawerItems(commandItem.children, items, commandItem.id, depth + 1);\n }\n this._commandsMap.set(commandItem.id, commandItem);\n }\n }\n }\n\n\n\n // noinspection JSUnusedGlobalSymbols\n public get drawerItems(): Observable<DrawerItem[]> {\n return this._drawerItems;\n }\n\n // noinspection JSUnusedGlobalSymbols\n public async setSelectedDrawerItem(value: DrawerItem): Promise<void> {\n console.debug('setSelectedDrawerItem', value);\n\n if (typeof value.id !== \"string\") {\n return;\n }\n const commandItem = this._commandsMap.get(value.id);\n\n if (commandItem === undefined) {\n return;\n }\n await this.navigateAsync(commandItem);\n }\n}\n\n\n","/**\n * Transforms known backend error messages into user-friendly messages.\n * Returns null if the error message is not recognized and should be displayed as-is.\n */\nexport function transformErrorMessage(message: string): { userMessage: string; technicalDetails: string } | null {\n if (!message) return null;\n\n // MongoDB E11000 duplicate key error\n if (message.includes('E11000 duplicate key')) {\n return {\n userMessage: 'An entity with this ID already exists. If you are importing data, try using the \"Upsert\" strategy instead of \"Insert Only\".',\n technicalDetails: message\n };\n }\n\n return null;\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {NotificationMessage} from '../models/notification-message';\nimport {transformErrorMessage} from './error-message.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n latestErrorMessage: BehaviorSubject<NotificationMessage | null>;\n errorMessages: NotificationMessage[];\n\n // New message stream for all message types\n private readonly messageSubject = new Subject<NotificationMessage>();\n public readonly messages$ = this.messageSubject.asObservable();\n\n constructor() {\n this.latestErrorMessage = new BehaviorSubject<NotificationMessage | null>(null);\n this.errorMessages = new Array<NotificationMessage>();\n }\n\n getErrorMessageCount(): number {\n return this.errorMessages.length;\n }\n\n getErrorMessage(index: number): NotificationMessage {\n return this.errorMessages[index];\n }\n\n getLatestErrorMessage(): Observable<NotificationMessage | null> {\n return this.latestErrorMessage.asObservable();\n }\n\n showErrorWithDetails(message: string, details: string): void {\n console.error(`${details}: ${message}`);\n\n const transformed = transformErrorMessage(message);\n const displayMessage = transformed ? transformed.userMessage : message;\n const displayDetails = transformed\n ? (details ? `${details}\\n\\n${transformed.technicalDetails}` : transformed.technicalDetails)\n : details;\n\n const notificationMessage = {\n level: \"error\",\n details: displayDetails,\n message: displayMessage,\n timestamp: new Date()\n } as NotificationMessage;\n this.errorMessages.push(notificationMessage);\n\n this.latestErrorMessage.next(notificationMessage);\n\n // Emit to the new message stream\n this.messageSubject.next(notificationMessage);\n }\n\n showError(message: string): void {\n console.error(message);\n\n const transformed = transformErrorMessage(message);\n const displayMessage = transformed ? transformed.userMessage : message;\n const displayDetails = transformed ? transformed.technicalDetails : undefined;\n\n const notificationMessage = {\n level: \"error\",\n message: displayMessage,\n details: displayDetails,\n timestamp: new Date()\n } as NotificationMessage;\n this.errorMessages.push(notificationMessage);\n\n this.latestErrorMessage.next(notificationMessage);\n\n // Emit to the new message stream\n this.messageSubject.next(notificationMessage);\n }\n\n showInformation(message: string): void {\n console.log(message);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'info',\n message,\n timestamp: new Date()\n });\n }\n\n showSuccess(message: string): void {\n console.log(message);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'success',\n message,\n timestamp: new Date()\n });\n }\n\n showWarning(message: string): void {\n console.warn(message);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'warning',\n message: message,\n timestamp: new Date()\n });\n }\n\n showWarningWithDetails(message: string, details: string): void {\n console.warn(`${message}: ${details}`);\n\n // Emit to the new message stream\n this.messageSubject.next({\n level: 'warning',\n details: details,\n message: message,\n timestamp: new Date()\n });\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {MenuItem} from '@progress/kendo-angular-menu';\nimport {CommandItem} from '../models/commandItem';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {filter} from 'rxjs/operators';\nimport {CommandSettingsService} from './command-settings.service';\nimport {CommandBaseService} from './command-base.service';\n\n@Injectable()\nexport class ComponentMenuService extends CommandBaseService {\n private readonly activatedRoute = inject(ActivatedRoute);\n\n\n private readonly _menuItems: BehaviorSubject<MenuItem[]> = new BehaviorSubject<MenuItem[]>([]);\n\n constructor() {\n const commandSettingsService = inject(CommandSettingsService);\n const router = inject(Router);\n\n\n super(commandSettingsService, router);\n\n router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this._menuItems.next(this.createNavigationMenu(this.activatedRoute.root));\n });\n\n this._menuItems.next(this.createNavigationMenu(this.activatedRoute.root));\n }\n\n // noinspection JSUnusedGlobalSymbols\n public get menuItems(): Observable<MenuItem[]> {\n return this._menuItems;\n }\n\n private createNavigationMenu(route: ActivatedRoute, path: MenuItem[] = []): MenuItem[] {\n const children = route.children;\n\n for (const child of children) {\n\n const commandItems: CommandItem[] = child.snapshot.data['navigationMenu'];\n if (commandItems) {\n\n path.push(...this.buildMenuItems(commandItems, child));\n }\n\n return this.createNavigationMenu(child, path);\n }\n\n return path;\n }\n\n // noinspection JSUnusedGlobalSymbols\n public async setSelectedMenuItem(value: MenuItem): Promise<void> {\n console.debug('setSelectedMenuItem', value);\n\n const commandItem = value.data as CommandItem;\n if (!commandItem) {\n return;\n }\n await this.navigateAsync(commandItem);\n }\n\n private buildMenuItems(commandItems: CommandItem[], activatedRoute: ActivatedRoute): MenuItem[] {\n\n const items = new Array<MenuItem>();\n\n for (const commandItem of commandItems) {\n\n if (commandItem.type === 'separator') {\n items.push({separator: true});\n } else {\n\n let childMenuItems: MenuItem[] | undefined = undefined;\n if (commandItem.children) {\n childMenuItems = this.buildMenuItems(commandItem.children, activatedRoute)\n }\n\n let label = commandItem.text;\n if (label) {\n // We replace the label parameters with the actual values from route (use updateBreadcrumbLabels to update the labels with data)\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = label.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n const routerParamID = activatedRoute.snapshot.params[labelParam] as string;\n if (routerParamID) {\n label = label.replace('{{' + labelParam + '}}', routerParamID);\n }\n }\n }\n }\n\n items.push({\n text: label,\n svgIcon: commandItem.svgIcon,\n data: commandItem,\n items: childMenuItems\n });\n }\n }\n\n return items;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {BehaviorSubject, firstValueFrom, Observable} from 'rxjs';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {filter} from 'rxjs/operators';\nimport {BreadCrumbData} from '../models/breadCrumbData';\nimport {BreadCrumbRouteItem} from '../models/breadCrumbRouteItem';\n\n@Injectable()\nexport class BreadCrumbService {\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly router = inject(Router);\n\n private readonly _breadCrumbItems: BehaviorSubject<BreadCrumbData[]> = new BehaviorSubject<BreadCrumbData[]>([]);\n\n constructor() {\n\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n this._breadCrumbItems.next(this.createBreadCrumbs(this.activatedRoute.root));\n });\n this._breadCrumbItems.next(this.createBreadCrumbs(this.activatedRoute.root));\n }\n\n private createBreadCrumbs(route: ActivatedRoute, path: BreadCrumbData[] = [], lastBreadcrumbRef?: BreadCrumbRouteItem[]): BreadCrumbData[] {\n const children = route.children;\n\n for (const child of children) {\n\n const breadCrumbRouteItems: BreadCrumbRouteItem[] = child.snapshot.data['breadcrumb'];\n // Skip inherited breadcrumb data (Angular passes parent route data to children by reference)\n if (breadCrumbRouteItems && breadCrumbRouteItems !== lastBreadcrumbRef) {\n\n for (const breadCrumbRouteItem of breadCrumbRouteItems) {\n\n if (!breadCrumbRouteItem || typeof breadCrumbRouteItem !== 'object') {\n console.warn('BreadCrumbService: invalid breadcrumb item encountered. Skipping.');\n continue;\n }\n\n if (breadCrumbRouteItem.label === undefined || breadCrumbRouteItem.label === null) {\n const routePath = child.snapshot.url?.map(s => s.path).join('/') ?? '';\n console.warn(`BreadCrumbService: breadcrumb item is missing a 'label' property on route '${routePath}'. Skipping item.`);\n continue;\n }\n\n let label = String(breadCrumbRouteItem.label);\n let url = String(breadCrumbRouteItem.url ?? '');\n\n if (breadCrumbRouteItem.url === undefined || breadCrumbRouteItem.url === null) {\n const routePath = child.snapshot.url?.map(s => s.path).join('/') ?? '';\n console.warn(`BreadCrumbService: breadcrumb item '${label}' is missing a 'url' property on route '${routePath}'. ` +\n `Add 'url' to the breadcrumb route data, e.g. { label: '${label}', url: '${routePath}' }.`);\n }\n\n // We replace the route parameters with the actual values\n // Match all :paramName patterns in the URL\n if (url) {\n const paramMatches = url.match(/:([a-zA-Z0-9_]+)/g);\n if (paramMatches) {\n for (const match of paramMatches) {\n const paramName = match.substring(1); // Remove leading ':'\n const paramValue = child.snapshot.params[paramName] as string;\n if (paramValue) {\n url = url.replace(match, paramValue);\n }\n }\n }\n }\n\n // We replace the label parameters with the actual values from route (use updateBreadcrumbLabels to update the labels with data)\n if (label) {\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = label.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n const routerParamID = child.snapshot.params[labelParam] as string;\n if (routerParamID) {\n label = label.replace('{{' + labelParam + '}}', routerParamID);\n }\n }\n }\n }\n\n // Replace any unresolved {{param}} placeholders with ellipsis for display\n const displayLabel = label.replace(/\\{\\{[^}]+}}/g, '\\u2026');\n\n path.push({\n text: displayLabel,\n title: displayLabel,\n labelTemplate: breadCrumbRouteItem.label,\n urlTemplate: breadCrumbRouteItem.url,\n svgIcon: breadCrumbRouteItem.svgIcon,\n url: url\n });\n }\n }\n\n return this.createBreadCrumbs(child, path, breadCrumbRouteItems ?? lastBreadcrumbRef);\n }\n\n return path;\n }\n\n /*\n * This method updates the breadcrumb labels with the data passed in the parameter. Parameters are passed in the label as {{paramName}}\n */\n // noinspection JSUnusedGlobalSymbols\n public async updateBreadcrumbLabels(data: Record<string, string>): Promise<void> {\n\n const list = await firstValueFrom(this._breadCrumbItems);\n for (const breadCrumbDataItem of list) {\n // Resolve {{param}} in labels\n if (breadCrumbDataItem.labelTemplate) {\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = breadCrumbDataItem.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n let resolvedLabel = breadCrumbDataItem.labelTemplate;\n for (const labelParam of labelParams) {\n const value = data[labelParam];\n if (value) {\n resolvedLabel = resolvedLabel.replace('{{' + labelParam + '}}', value);\n }\n }\n breadCrumbDataItem.title = resolvedLabel;\n breadCrumbDataItem.text = resolvedLabel;\n }\n }\n\n // Resolve {{param}} in URLs\n if (breadCrumbDataItem.urlTemplate) {\n // noinspection RegExpDuplicateCharacterInClass\n const urlParams = breadCrumbDataItem.urlTemplate.match(/[^{{]+(?=}})/g);\n if (urlParams) {\n let resolvedUrl = breadCrumbDataItem.urlTemplate;\n for (const urlParam of urlParams) {\n const value = data[urlParam];\n if (value) {\n resolvedUrl = resolvedUrl.replace('{{' + urlParam + '}}', value);\n }\n }\n breadCrumbDataItem.url = resolvedUrl;\n }\n }\n }\n // Re-emit to notify subscribers (e.g. translated breadcrumb pipes)\n this._breadCrumbItems.next(list);\n }\n\n // noinspection JSUnusedGlobalSymbols\n public get breadCrumbItems(): Observable<BreadCrumbData[]> {\n return this._breadCrumbItems;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport class AppTitleService {\n private readonly _appTitle: BehaviorSubject<string | null> = new BehaviorSubject<string | null>(null);\n\n public setTitle(title: string): void {\n this._appTitle.next(title);\n }\n\n public getTitle(): string | null {\n return this._appTitle.value;\n }\n\n public get appTitle(): Observable<string | null> {\n return this._appTitle.asObservable();\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\nimport { inject, Injectable, InjectionToken } from \"@angular/core\";\nimport { MessageService } from \"../services/message.service\";\nimport { ApiErrorDto } from \"../models/apiErrorDto\";\n\n/**\n * Optional callback invoked when a network connectivity error (HTTP status 0) is detected.\n * When provided, the interceptor calls this handler instead of showing a generic error toast.\n * This allows host applications to implement custom connection-loss handling (e.g., a full-screen\n * error overlay with retry logic).\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * {\n * provide: ON_CONNECTION_LOST,\n * useFactory: () => {\n * const configService = inject(AppConfigurationService);\n * return () => configService.reportConnectionLost();\n * }\n * }\n * ```\n */\nexport const ON_CONNECTION_LOST = new InjectionToken<() => void>('ON_CONNECTION_LOST');\n\n@Injectable()\nexport class MmHttpErrorInterceptor implements HttpInterceptor {\n\n private readonly messageService = inject(MessageService);\n private readonly onConnectionLost = inject(ON_CONNECTION_LOST, { optional: true });\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n return next.handle(request).pipe(\n retry(0),\n catchError((error: HttpErrorResponse) => {\n\n if (error.status === 0) {\n const isHealthCheck = request.url.endsWith('/health');\n if (!isHealthCheck) {\n if (this.onConnectionLost) {\n this.onConnectionLost();\n } else {\n this.messageService.showError('OctoMesh backend is not reachable. Please check if your network connection is working or contact your Administrator.');\n }\n }\n }\n\n if (error.status === 403) {\n this.messageService.showError('Access denied. You do not have permission to access this tenant or resource.');\n }\n\n if (error.status === 400 && error.error.statusCode) {\n const apiError = error.error as ApiErrorDto;\n\n let details = '';\n if (apiError.details && apiError.details.length > 0) {\n for (const detail of apiError.details) {\n if (detail.description) {\n details += `\\n✗ ${detail.description}`;\n }\n }\n }\n\n this.messageService.showErrorWithDetails(details, apiError.message);\n }\n\n return throwError(() => error);\n })\n );\n }\n}\n","import {BreadCrumbItem} from '@progress/kendo-angular-navigation';\nimport {SVGIcon} from '@progress/kendo-svg-icons';\n\nexport class BreadCrumbData implements BreadCrumbItem {\n\n constructor(label: string, labelTemplate: string, url: string) {\n this.text = label;\n this.labelTemplate = labelTemplate;\n this.url = url;\n }\n\n text?: string;\n title?: string;\n disabled?: boolean;\n icon?: string;\n svgIcon?: SVGIcon;\n iconClass?: string;\n imageUrl?: string;\n\n labelTemplate: string;\n urlTemplate?: string;\n url: string;\n}\n","export class PagedResultDto<T> {\n skip: number;\n take: number;\n totalCount: number;\n list: T[];\n\n constructor() {\n this.skip = 0;\n this.take = 0;\n this.totalCount = 0;\n this.list = new Array<T>();\n }\n}\n","import {SVGIcon} from '@progress/kendo-svg-icons/dist/svg-icon.interface';\n\nexport interface TreeItemData {\n\n get id(): string;\n\n get text(): string;\n\n get tooltip(): string;\n\n get item(): unknown;\n\n get svgIcon(): SVGIcon | null;\n\n get expandable(): boolean;\n set expandable(value: boolean);\n\n get isExpanded(): boolean;\n set isExpanded(value: boolean);\n}\n\nexport class TreeItemDataTyped<TDto> implements TreeItemData {\n private _isExpandable: boolean;\n private _isExpanded: boolean;\n\n constructor(private readonly _id: string, private readonly _text: string, private readonly _tooltip: string,\n private readonly _item: TDto, private readonly _svgIcon: SVGIcon,\n expandable = false, isExpanded = false) {\n this._isExpandable = expandable;\n this._isExpanded = expandable && isExpanded;\n }\n\n public get id(): string {\n return this._id;\n }\n\n public get text(): string {\n return this._text;\n }\n\n public get tooltip(): string {\n return this._tooltip;\n }\n\n public get item(): TDto {\n return this._item;\n }\n\n public get svgIcon(): SVGIcon | null {\n return this._svgIcon;\n }\n\n public get expandable(): boolean {\n return this._isExpandable;\n }\n\n public set expandable(value: boolean) {\n this._isExpandable = value;\n }\n\n public get isExpanded(): boolean{\n return this._isExpanded;\n }\n public set isExpanded(value: boolean) {\n this._isExpanded = value;\n }\n}\n","/**\n * Legacy DataSourceBase class for backward compatibility with libraries\n * that import DataSourceBase from @meshmakers/shared-services.\n *\n * In the current version, DataSourceBase moved to @meshmakers/shared-ui.\n * This re-export ensures old compiled libraries (octo-services, etc.) continue to work.\n */\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {PagedResultDto} from '../models/pagedResultDto';\n\nexport class DataSourceBase<TDto> {\n private readonly dataSubject = new BehaviorSubject<TDto[]>([]);\n private readonly loadingSubject = new BehaviorSubject<boolean>(false);\n private readonly totalCountSubject = new BehaviorSubject<number>(0);\n\n public readonly loading$ = this.loadingSubject.asObservable();\n public readonly totalCount$ = this.totalCountSubject.asObservable();\n\n private readonly addedDtoList: TDto[] = [];\n private readonly removedDtoList: TDto[] = [];\n private lastPagedResult: PagedResultDto<TDto> | null = null;\n\n public get totalCount(): Observable<number> {\n return this.totalCount$;\n }\n\n public reset(): void {\n this.addedDtoList.length = 0;\n this.removedDtoList.length = 0;\n }\n\n public addTemporaryDto(dto: TDto): void {\n const index = this.removedDtoList.indexOf(dto);\n if (index !== -1) {\n this.removedDtoList.splice(index, 1);\n } else {\n this.addedDtoList.push(dto);\n }\n this.onEndLoad();\n }\n\n public removeTemporaryDto(dto: TDto): void {\n const index = this.addedDtoList.indexOf(dto);\n if (index !== -1) {\n this.addedDtoList.splice(index, 1);\n } else {\n this.removedDtoList.push(dto);\n }\n this.onEndLoad();\n }\n\n public get addedTemporaryDtos(): TDto[] {\n return this.addedDtoList;\n }\n\n public get removedTemporaryDtos(): TDto[] {\n return this.removedDtoList;\n }\n\n connect(_collectionViewer: unknown): Observable<readonly TDto[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(_collectionViewer: unknown): void {\n this.clear();\n }\n\n clear(): void {\n this.loadingSubject?.next(false);\n this.dataSubject?.next([]);\n this.totalCountSubject?.next(0);\n }\n\n protected onBeginLoad(): void {\n this.loadingSubject?.next(true);\n }\n\n protected onCompleteLoad(pagedResult: PagedResultDto<TDto>): void {\n this.lastPagedResult = pagedResult;\n this.onEndLoad();\n }\n\n private onEndLoad(): void {\n if (this.lastPagedResult !== null) {\n const totalCount = this.lastPagedResult.totalCount + this.addedDtoList.length - this.removedDtoList.length;\n const list = this.lastPagedResult.list.concat(this.addedDtoList).filter((x) => !this.removedDtoList.includes(x));\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n } else {\n const totalCount = this.addedDtoList.length;\n const list = this.addedDtoList;\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n }\n }\n}\n","/**\n * Legacy IsoDateTime utility class for backward compatibility.\n * Uses native Date API instead of date-fns.\n */\nexport class IsoDateTime {\n public static utcToLocalDateTimeIso(utcDateTime: string): string | null {\n if (!utcDateTime) {\n return null;\n }\n return new Date(utcDateTime).toISOString();\n }\n\n public static localToUtcDateTimeIso(localDateTime: string): string | null {\n if (!localDateTime) {\n return null;\n }\n return new Date(localDateTime).toISOString();\n }\n\n public static currentUtcDateTimeIso(): string {\n return new Date().toISOString();\n }\n}\n","/**\n * Legacy QrCodeScannerService for backward compatibility.\n */\nimport {Injectable} from '@angular/core';\n\ninterface BarcodeDetectorResult {\n rawValue: string;\n}\n\ninterface BarcodeDetectorInstance {\n detect(source: HTMLVideoElement): Promise<BarcodeDetectorResult[]>;\n}\n\ninterface BarcodeDetectorConstructor {\n new (options: { formats: string[] }): BarcodeDetectorInstance;\n getSupportedFormats(): Promise<string[]>;\n}\n\ninterface WindowWithBarcodeDetector {\n BarcodeDetector?: BarcodeDetectorConstructor;\n}\n\n@Injectable()\nexport class QrCodeScannerService {\n private stream: MediaStream | null = null;\n\n async isSupported(): Promise<boolean> {\n const BarcodeDetectorClass = (window as unknown as WindowWithBarcodeDetector).BarcodeDetector;\n return !!BarcodeDetectorClass &&\n await BarcodeDetectorClass.getSupportedFormats().then(\n (formats: string[]) => formats.includes('qr_code')\n );\n }\n\n async scan(video: HTMLVideoElement): Promise<string> {\n const BarcodeDetectorClass = (window as unknown as WindowWithBarcodeDetector).BarcodeDetector;\n if (!BarcodeDetectorClass) {\n throw new Error('BarcodeDetector is not supported');\n }\n const detector = new BarcodeDetectorClass({formats: ['qr_code']});\n\n try {\n this.stream = await navigator.mediaDevices.getUserMedia({\n video: {facingMode: 'environment'}\n });\n\n video.srcObject = this.stream;\n await video.play();\n\n return new Promise((resolve, reject) => {\n const detectLoop = async () => {\n try {\n const barcodes = await detector.detect(video);\n if (barcodes.length > 0) {\n this.stop();\n resolve(barcodes[0].rawValue);\n return;\n }\n } catch (err) {\n this.stop();\n reject(err);\n return;\n }\n requestAnimationFrame(detectLoop);\n };\n detectLoop();\n });\n } catch (err) {\n this.stop();\n throw err;\n }\n }\n\n stop(): void {\n if (this.stream) {\n this.stream.getTracks().forEach(track => track.stop());\n this.stream = null;\n }\n }\n}\n","/**\n * Legacy ErrorMessage class for backward compatibility.\n */\nexport class ErrorMessage {\n title?: string;\n message?: string;\n}\n","/**\n * Legacy AutoCompleteDataSource interface and AutoCompleteResult class\n * for backward compatibility.\n */\nimport {Observable} from 'rxjs';\n\nexport class AutoCompleteResult {\n searchTerm?: string;\n list?: string[];\n}\n\nexport interface AutoCompleteDataSource {\n onFilter: (filter: string) => Observable<AutoCompleteResult>;\n onPreprocessSearchString: (search: string) => string;\n}\n","/*\n * Public API Surface of shared-services\n */\nimport {CommandOptions} from './lib/options/commandOptions';\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {CommandSettingsService} from './lib/services/command-settings.service';\nimport {CommandService} from './lib/services/command.service';\nimport {MessageService} from './lib/services/message.service';\nimport {ComponentMenuService} from './lib/services/component-menu.service';\nimport {BreadCrumbService} from './lib/services/bread-crumb.service';\nimport {AppTitleService} from './lib/services/app-title.service';\nimport {MmHttpErrorInterceptor} from './lib/shared/mm-http-error-interceptor.service';\n\nexport * from './lib/services/app-title.service';\nexport * from './lib/services/message.service';\nexport * from './lib/services/command.service';\nexport * from './lib/services/command-base.service';\nexport * from './lib/services/bread-crumb.service';\nexport * from './lib/services/command-settings.service';\nexport * from './lib/services/component-menu.service';\nexport * from './lib/models/notification-message';\nexport * from './lib/models/commandItem';\nexport * from './lib/models/breadCrumbData';\nexport * from './lib/models/breadCrumbRouteItem';\nexport * from './lib/models/pagedResultDto';\nexport * from './lib/models/treeItemData';\nexport * from './lib/options/commandOptions';\nexport * from './lib/shared/mm-http-error-interceptor.service';\nexport * from './lib/data-sources/entity-select-data-source';\n\n// Backward-compatible re-exports for legacy libraries (shared-ui, octo-services)\n// that import these from @meshmakers/shared-services\nexport {BreadCrumbService as BreadcrumbService} from './lib/services/bread-crumb.service';\nexport * from './lib/compat/data-source-base';\nexport * from './lib/compat/iso-date-time';\nexport * from './lib/compat/qr-code-scanner.service';\nexport * from './lib/compat/error-message';\nexport * from './lib/compat/auto-complete-data-source';\n\nexport function provideMmSharedServices(commandOptions?: CommandOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n MessageService,\n CommandService,\n CommandSettingsService,\n ComponentMenuService,\n AppTitleService,\n MmHttpErrorInterceptor,\n BreadCrumbService,\n {\n provide: CommandOptions,\n useValue: commandOptions\n }\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshmakers/shared-services",
3
- "version": "3.3.830",
3
+ "version": "3.3.850",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.2.0",
6
6
  "@angular/core": "^21.2.0"