@meshmakers/shared-services 3.3.34 → 3.3.380
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -13
- package/fesm2022/meshmakers-shared-services.mjs +583 -348
- package/fesm2022/meshmakers-shared-services.mjs.map +1 -1
- package/package.json +5 -5
- package/types/meshmakers-shared-services.d.ts +304 -0
- package/index.d.ts +0 -189
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshmakers-shared-services.mjs","sources":["../../../../projects/meshmakers/shared-services/src/lib/services/message.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/nfcReader.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/qrCodeScanner.service.ts","../../../../projects/meshmakers/shared-services/src/lib/services/macoSchemeDecoder.service.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/mm-http-error-interceptor.service.ts","../../../../projects/meshmakers/shared-services/src/lib/shared-services.module.ts","../../../../projects/meshmakers/shared-services/src/lib/services/breadcrumb.service.ts","../../../../projects/meshmakers/shared-services/src/lib/models/autoCompleteResult.ts","../../../../projects/meshmakers/shared-services/src/lib/models/errorMessage.ts","../../../../projects/meshmakers/shared-services/src/lib/models/pagedResultDto.ts","../../../../projects/meshmakers/shared-services/src/lib/dataSources/dataSourceBase.ts","../../../../projects/meshmakers/shared-services/src/lib/dataSources/genericDataSource.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/isoDateTime.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/enumReader.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/objectCloner.ts","../../../../projects/meshmakers/shared-services/src/public-api.ts","../../../../projects/meshmakers/shared-services/src/meshmakers-shared-services.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ErrorMessage } from '../models/errorMessage';\n\n@Injectable()\nexport class MessageService {\n private readonly snackBar = inject(MatSnackBar);\n\n latestErrorMessage: BehaviorSubject<ErrorMessage | null>;\n\n errorMessages: ErrorMessage[];\n\n constructor() {\n this.latestErrorMessage = new BehaviorSubject<ErrorMessage | null>(null);\n this.errorMessages = new Array<ErrorMessage>();\n }\n\n getErrorMessageCount(): number {\n return this.errorMessages.length;\n }\n\n getErrorMessage(index: number): ErrorMessage {\n return this.errorMessages[index];\n }\n\n getLatestErrorMessage(): Observable<ErrorMessage | null> {\n return this.latestErrorMessage.asObservable();\n }\n\n showError(message: string, title: string): void {\n console.error(message);\n\n const errorMessage = {\n title,\n message\n } as ErrorMessage;\n this.errorMessages.push(errorMessage);\n\n this.latestErrorMessage.next(errorMessage);\n }\n\n showErrorWithDetails(error: any): void {\n if (error instanceof Error) {\n this.showError(error.message, 'Error');\n } else if (error === 'string') {\n this.showError(error, 'Error');\n } else if (error instanceof Object) {\n this.showError(JSON.stringify(error), 'Error');\n } else {\n this.showError('Unknown error', 'Error');\n }\n }\n\n showErrorMessage(message: string): void {\n console.error(message);\n\n const errorMessage = {\n title: message,\n message\n } as ErrorMessage;\n this.errorMessages.push(errorMessage);\n\n this.latestErrorMessage.next(errorMessage);\n }\n\n showInformation(message: string): void {\n this.snackBar.open(message, undefined, {\n duration: 3000,\n // here specify the position\n horizontalPosition: 'center',\n verticalPosition: 'bottom'\n });\n }\n\n clearCurrentError(): void {\n this.latestErrorMessage.next(null);\n }\n\n clearAllErrors(): void {\n this.errorMessages = [];\n this.latestErrorMessage.next(null);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class NfcReaderService {\n private ndef: NDEFReader | null = null;\n private abortController: AbortController | null = null;\n\n // Emits NFC status updates to subscribers\n private nfcStatusSubject = new BehaviorSubject<string>('');\n nfcStatus$ = this.nfcStatusSubject.asObservable();\n\n constructor() {}\n\n private convertSerialToEmployeeNumber(serial: string): string {\n if (!serial) return '';\n\n const cleanHex = serial.replace(/:/g, '');\n const bytes = cleanHex.match(/.{1,2}/g) ?? [];\n const reversedHex = bytes.reverse().join('');\n const decimalValue = BigInt('0x' + reversedHex);\n\n return decimalValue.toString();\n }\n\n async startScan(\n onSuccess: (serial: string, employeeNumber: string, messages: string[]) => void,\n onError: (error: string) => void\n ): Promise<void> {\n if (!('NDEFReader' in window)) {\n this.nfcStatusSubject.next('Web NFC is not supported in this browser.');\n onError('Web NFC is not supported in this browser.');\n return;\n }\n\n this.abortController = new AbortController();\n this.ndef = new NDEFReader();\n\n try {\n await this.ndef.scan({ signal: this.abortController.signal });\n\n this.nfcStatusSubject.next('NFC scan started. Waiting for a tag...');\n onSuccess('', '', []); // Optional: Notify scan started\n\n this.ndef.onreading = (event: NDEFReadingEvent) => {\n console.log('Tag read event fired', event);\n\n const serial = event.serialNumber ?? 'Unknown Serial';\n const employeeNumber = this.convertSerialToEmployeeNumber(serial);\n\n const messages: string[] = [];\n\n if (event.message.records && event.message.records.length > 0) {\n for (const record of event.message.records) {\n if (record.data) {\n const text = new TextDecoder().decode(record.data.buffer);\n messages.push(`Type: ${record.recordType}, MIME: ${record.mediaType ?? 'n/a'}, Text: ${text}`);\n }\n }\n }\n\n this.nfcStatusSubject.next('NFC tag read successfully.');\n onSuccess(serial, employeeNumber, messages);\n };\n\n this.ndef.onreadingerror = () => {\n this.nfcStatusSubject.next('Error reading NFC tag.');\n onError('Error reading NFC tag.');\n };\n } catch (err) {\n console.error('Error reading NFC tag: ', err);\n this.nfcStatusSubject.next('Error starting NFC scan.');\n onError('Error starting NFC scan.');\n }\n }\n\n stopScan(): void {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n this.ndef = null;\n this.nfcStatusSubject.next('NFC scan stopped.');\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n\n@Injectable()\nexport class QrCodeScannerService {\n private stream: MediaStream | null = null;\n\n async isSupported(): Promise<boolean> {\n const BarcodeDetectorClass = (window as any).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 any).BarcodeDetector;\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\n // Ensure video is playing before scanning\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\n requestAnimationFrame(detectLoop);\n };\n\n detectLoop();\n });\n } catch (err) {\n console.error(\"Camera access or scan error\", 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","import { Injectable } from \"@angular/core\";\n\nexport interface ParseResult {\n location: string;\n machineId: string;\n}\n\nexport interface ParseResponse {\n success: boolean;\n message: string;\n data?: ParseResult;\n}\n\n@Injectable()\nexport class MacoSchemeDecoderService {\n private locationMap: Record<string, string> = {\n AT10: 'ATSA',\n AT20: 'ATTR',\n AT30: 'ATMA',\n DE20: 'DEHE',\n PL91: 'POGL',\n };\n\n /**\n * Parses a MACO scheme URL and extracts a mapped location code and machine ID from the last URL segment.\n *\n * @param url - The URL to parse.\n * @returns A `ParseResponse` containing:\n * - `success: true` with extracted location and machine ID if parsing is successful.\n * - `success: false` with an error message if the input is invalid or cannot be parsed.\n */\n parseUrl(url: string): ParseResponse {\n if (!url || url.trim() === '') {\n return {\n success: false,\n message: 'The URL is empty. Please enter a valid URL.'\n };\n }\n\n // Extract last path segment\n const parts = url.split('/');\n const lastSegment = parts.pop() || '';\n\n if (!lastSegment) {\n return {\n success: false,\n message: 'URL does not contain a valid last segment.'\n };\n }\n\n if (lastSegment.length < 4) {\n return {\n success: false,\n message: 'The last segment format is invalid or too short.'\n };\n }\n\n const locationCode = lastSegment.substring(0, 4); // e.g. 'AT10'\n const machineCode = lastSegment.substring(4); // e.g. 'MAFEB2'\n\n if (!this.locationMap[locationCode]) {\n return {\n success: false,\n message: 'Location code is not recognized or supported.'\n };\n }\n\n if (!machineCode || machineCode.trim() === '') {\n return {\n success: false,\n message: 'Machine identifier is missing.'\n };\n }\n\n return {\n success: true,\n message: `Successfully parsed URL: location=${this.locationMap[locationCode]}, machine=${machineCode}`,\n data: {\n location: this.locationMap[locationCode],\n machineId: machineCode,\n }\n };\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 } from \"@angular/core\";\nimport { MessageService } from \"../services/message.service\";\nimport { ApiErrorDto } from \"../models/apiErrorDto\";\n\n@Injectable()\nexport class MmHttpErrorInterceptor implements HttpInterceptor {\n\n private readonly messageService = inject(MessageService);\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n retry(0),\n catchError((error: HttpErrorResponse) => {\n\n if (error.status === 0) {\n this.messageService.showError('Cannot connect to server. Please check your network connection or if the server is down.', 'Connection Error');\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.showError(details, apiError.message);\n }\n\n return throwError(() => error);\n })\n );\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MessageService } from './services/message.service';\nimport { NfcReaderService } from \"./services/nfcReader.service\";\nimport { QrCodeScannerService } from \"./services/qrCodeScanner.service\";\nimport { MacoSchemeDecoderService } from \"./services/macoSchemeDecoder.service\";\nimport { MmHttpErrorInterceptor } from \"./shared/mm-http-error-interceptor.service\";\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class SharedServicesModule {\n static forRoot(): ModuleWithProviders<SharedServicesModule> {\n return {\n ngModule: SharedServicesModule,\n providers: [MessageService, NfcReaderService, QrCodeScannerService, MacoSchemeDecoderService, MmHttpErrorInterceptor],\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport {Breadcrumb} from \"../models/breadcrumb\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreadcrumbService {\n private readonly _breadcrumbLabels: BehaviorSubject<any>;\n private readonly _newBreadcrumb: BehaviorSubject<Breadcrumb[]>;\n\n constructor() {\n this._breadcrumbLabels = new BehaviorSubject<any>([]);\n this._newBreadcrumb = new BehaviorSubject<Breadcrumb[]>([]);\n }\n\n public get breadcrumbLabels() : BehaviorSubject<any> {\n return this._breadcrumbLabels;\n }\n\n public get newBreadcrumb() : BehaviorSubject<Breadcrumb[]> {\n return this._newBreadcrumb;\n }\n\n public updateBreadcrumbLabels(labels: any): void {\n this.breadcrumbLabels.next(labels);\n }\n\n public updateBreadcrumb(newBreadcrumb: Breadcrumb[]): void {\n this.newBreadcrumb.next(newBreadcrumb);\n }\n}\n","export class AutoCompleteResult {\n searchTerm?: string;\n\n list?: string[];\n}\n","export class ErrorMessage {\n title?: string;\n message?: 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 { BehaviorSubject, Observable } from \"rxjs\";\nimport { CollectionViewer, DataSource } from \"@angular/cdk/collections\";\nimport { PagedResultDto } from \"../models/pagedResultDto\";\n\nexport class DataSourceBase<TDto> implements DataSource<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[] = new Array<TDto>();\n private readonly removedDtoList: TDto[] = new Array<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\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\n this.onEndLoad();\n }\n\n public removeTemporaryDto(dto: TDto): void {\n\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\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\n connect(_: CollectionViewer): Observable<readonly TDto[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(_: CollectionViewer): 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\n this.lastPagedResult = pagedResult;\n\n this.onEndLoad();\n }\n\n private onEndLoad(): void {\n\n if (this.lastPagedResult !== null) {\n\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\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n }\n else {\n const totalCount = this.addedDtoList.length;\n const list = this.addedDtoList;\n\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n }\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\n\nexport class GenericDataSource<TEntity> implements DataSource<TEntity> {\n private readonly dataSubject = new BehaviorSubject<TEntity[]>([]);\n\n constructor(public data: TEntity[]) {\n this.dataSubject.next(data);\n }\n\n emitChanged(): void {\n this.dataSubject.next(this.data);\n }\n\n connect(_: CollectionViewer): Observable<TEntity[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(_: CollectionViewer): void {\n this.dataSubject.complete();\n }\n}\n","import { formatISO, parseISO } from 'date-fns';\n\nexport class IsoDateTime {\n public static utcToLocalDateTimeIso(utcDateTime: string): string | null {\n if (!utcDateTime) {\n return null;\n }\n\n return parseISO(utcDateTime).toISOString();\n }\n\n public static localToUtcDateTimeIso(localDateTime: string): string | null {\n if (!localDateTime) {\n return null;\n }\n return formatISO(localDateTime);\n }\n\n public static currentUtcDateTimeIso(): string {\n return formatISO(Date.now());\n }\n}\n","export class EnumTuple<TValue = number> {\n id: string | undefined;\n name: TValue | undefined;\n}\n\nexport class EnumReader<TValue = number> {\n constructor(private readonly value: Record<string, TValue>) {}\n\n public getNamesAndValues(): EnumTuple<TValue>[] {\n return this.getNames().map((n) => {\n return { name: this.value[n], id: n } as EnumTuple<TValue>;\n });\n }\n\n public getNames(): string[] {\n return Object.keys(this.value);\n }\n\n private getObjValues(): TValue[] {\n return Object.keys(this.value).map((k) => this.value[k]);\n }\n}\n","export class ObjectCloner {\n\n public static cloneArray<TR, TS1>(source: TS1[], ignoreProperties: string[] | null = null): TR[] {\n // Klone das Array\n let clonedArray = [...source] as TR as TR[];\n\n if (ignoreProperties && typeof clonedArray[0] === 'object') {\n clonedArray = clonedArray.map(item => {\n const clonedItem = { ...item } as any;\n ignoreProperties.forEach(prop => delete clonedItem[prop]);\n return clonedItem as TR;\n }) as unknown as TR[];\n }\n\n return clonedArray;\n }\n\n public static cloneObject<TR, TS1>(source: TS1, ignoreProperties: string[] | null = null): TR {\n const clonedObject = Object.assign({} as any, source);\n\n if (ignoreProperties != null) {\n for (const prop of ignoreProperties) {\n\n delete clonedObject[prop];\n }\n }\n return clonedObject as TR;\n }\n\n\n public static cloneObject2<TR, TS1, TS2>(source: TS1, source2: TS2, ignoreProperties: string[] | null = null): TR {\n const clonedObject = Object.assign({} as any, source, source2);\n\n if (ignoreProperties != null) {\n for (const prop of ignoreProperties) {\n\n delete clonedObject[prop];\n }\n }\n return clonedObject as TR;\n }\n}\n","/*\n * Public API Surface of shared-services\n */\n\nexport * from './lib/shared-services.module';\nexport * from './lib/services/breadcrumb.service';\nexport * from './lib/services/message.service';\nexport * from './lib/models/autoCompleteResult';\nexport * from './lib/models/errorMessage';\nexport * from './lib/models/pagedResultDto';\nexport * from './lib/models/breadcrumb';\nexport * from './lib/dataSources/dataSourceBase';\nexport * from './lib/dataSources/genericDataSource';\nexport * from './lib/dataSources/entitySelectDataSource';\nexport * from './lib/dataSources/autoCompleteDataSource';\nexport * from './lib/shared/isoDateTime';\nexport * from './lib/shared/enumReader';\nexport * from './lib/shared/objectCloner';\nexport * from './lib/services/nfcReader.service';\nexport * from './lib/services/qrCodeScanner.service';\nexport * from './lib/services/macoSchemeDecoder.service';\nexport * from './lib/shared/mm-http-error-interceptor.service';\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?: any): 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 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): 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();\n }\n }\n return false;\n }\n\n private static async getLink(commandItem: CommandItem, data?: any): 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?: any): 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?: any): 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?: any): string | null {\n return template?.replace(/{{\\s*(\\w+)\\s*}}/g, (match, propName) => {\n return data && data[propName] !== undefined ? data[propName] : 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[] = []): BreadCrumbData[] {\n const children = route.children;\n\n for (const child of children) {\n\n const breadCrumbRouteItems: BreadCrumbRouteItem[] = child.snapshot.data['breadcrumb'];\n if (breadCrumbRouteItems) {\n\n for (const breadCrumbRouteItem of breadCrumbRouteItems) {\n\n let label = breadCrumbRouteItem.label;\n let url = breadCrumbRouteItem.url;\n\n // We replace the route parameters with the actual values\n // Match all :paramName patterns in the 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 // 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 = child.snapshot.params[labelParam] as string;\n if (routerParamID) {\n label = label.replace('{{' + labelParam + '}}', routerParamID);\n }\n }\n }\n\n path.push({\n text: label,\n title: label,\n labelTemplate: breadCrumbRouteItem.label,\n svgIcon: breadCrumbRouteItem.svgIcon,\n url: url\n });\n }\n }\n\n return this.createBreadCrumbs(child, path);\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: any): Promise<void> {\n\n const list = await firstValueFrom(this._breadCrumbItems);\n for (const breadCrumbDataItem of list) {\n // noinspection RegExpDuplicateCharacterInClass\n const labelParams = breadCrumbDataItem.labelTemplate.match(/[^{{]+(?=}})/g);\n if (labelParams) {\n for (const labelParam of labelParams) {\n\n const value = data[labelParam];\n if (!value) {\n continue;\n }\n breadCrumbDataItem.title = breadCrumbDataItem.labelTemplate.replace('{{' + labelParam + '}}', data[labelParam]);\n breadCrumbDataItem.text = breadCrumbDataItem.title;\n }\n }\n }\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 } from \"@angular/core\";\nimport { MessageService } from \"../services/message.service\";\nimport { ApiErrorDto } from \"../models/apiErrorDto\";\n\n@Injectable()\nexport class MmHttpErrorInterceptor implements HttpInterceptor {\n\n private readonly messageService = inject(MessageService);\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n retry(0),\n catchError((error: HttpErrorResponse) => {\n\n if (error.status === 0) {\n this.messageService.showError('Cannot connect to server. Please check your network connection or if the server is down.');\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 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(): any;\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 Refinery Studio 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: any): Observable<readonly TDto[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(_collectionViewer: any): 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\n@Injectable()\nexport class QrCodeScannerService {\n private stream: MediaStream | null = null;\n\n async isSupported(): Promise<boolean> {\n const BarcodeDetectorClass = (window as any).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 any).BarcodeDetector;\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,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshmakers/shared-services",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.380",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
5
|
+
"@angular/common": "^21.0.6",
|
|
6
|
+
"@angular/core": "^21.0.6"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"tslib": "^2.8.1"
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": false,
|
|
12
12
|
"module": "fesm2022/meshmakers-shared-services.mjs",
|
|
13
|
-
"typings": "
|
|
13
|
+
"typings": "types/meshmakers-shared-services.d.ts",
|
|
14
14
|
"exports": {
|
|
15
15
|
"./package.json": {
|
|
16
16
|
"default": "./package.json"
|
|
17
17
|
},
|
|
18
18
|
".": {
|
|
19
|
-
"types": "./
|
|
19
|
+
"types": "./types/meshmakers-shared-services.d.ts",
|
|
20
20
|
"default": "./fesm2022/meshmakers-shared-services.mjs"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
3
|
+
import { Observable, BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { BreadCrumbItem } from '@progress/kendo-angular-navigation';
|
|
5
|
+
import { SVGIcon as SVGIcon$1 } from '@progress/kendo-svg-icons';
|
|
6
|
+
import { SVGIcon } from '@progress/kendo-svg-icons/dist/svg-icon.interface';
|
|
7
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
8
|
+
import { DrawerItem } from '@progress/kendo-angular-layout';
|
|
9
|
+
import { MenuItem } from '@progress/kendo-angular-menu';
|
|
10
|
+
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
|
|
11
|
+
|
|
12
|
+
declare class CommandOptions {
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare class AppTitleService {
|
|
16
|
+
private readonly _appTitle;
|
|
17
|
+
setTitle(title: string): void;
|
|
18
|
+
getTitle(): string | null;
|
|
19
|
+
get appTitle(): Observable<string | null>;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AppTitleService, never>;
|
|
21
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AppTitleService>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type MessageLevel = 'error' | 'warning' | 'info' | 'success';
|
|
25
|
+
interface NotificationMessage {
|
|
26
|
+
level: MessageLevel;
|
|
27
|
+
message: string;
|
|
28
|
+
details?: string;
|
|
29
|
+
timestamp: Date;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
declare class MessageService {
|
|
33
|
+
latestErrorMessage: BehaviorSubject<NotificationMessage | null>;
|
|
34
|
+
errorMessages: NotificationMessage[];
|
|
35
|
+
private readonly messageSubject;
|
|
36
|
+
readonly messages$: Observable<NotificationMessage>;
|
|
37
|
+
constructor();
|
|
38
|
+
getErrorMessageCount(): number;
|
|
39
|
+
getErrorMessage(index: number): NotificationMessage;
|
|
40
|
+
getLatestErrorMessage(): Observable<NotificationMessage | null>;
|
|
41
|
+
showErrorWithDetails(message: string, details: string): void;
|
|
42
|
+
showError(message: string): void;
|
|
43
|
+
showInformation(message: string): void;
|
|
44
|
+
showSuccess(message: string): void;
|
|
45
|
+
showWarning(message: string): void;
|
|
46
|
+
showWarningWithDetails(message: string, details: string): void;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MessageService, never>;
|
|
48
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MessageService>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface CommandItem {
|
|
52
|
+
id: string;
|
|
53
|
+
type: 'link' | 'section' | 'separator';
|
|
54
|
+
selected?: boolean;
|
|
55
|
+
svgIcon?: SVGIcon;
|
|
56
|
+
text?: string;
|
|
57
|
+
link?: string | ((eventArgs: CommandItemExecuteEventArgs) => Promise<string>);
|
|
58
|
+
href?: string | ((eventArgs: CommandItemExecuteEventArgs) => Promise<string>);
|
|
59
|
+
onClick?: (eventArgs: CommandItemExecuteEventArgs) => Promise<void>;
|
|
60
|
+
target?: string;
|
|
61
|
+
isVisible?: boolean | (() => Promise<boolean>);
|
|
62
|
+
isDisabled?: boolean | (() => boolean);
|
|
63
|
+
children?: CommandItem[];
|
|
64
|
+
}
|
|
65
|
+
interface CommandItemExecuteEventArgs {
|
|
66
|
+
commandItem: CommandItem;
|
|
67
|
+
data?: any;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declare class CommandSettingsService {
|
|
71
|
+
private readonly _activatedRoute;
|
|
72
|
+
constructor();
|
|
73
|
+
get navigateRelativeToRoute(): ActivatedRoute;
|
|
74
|
+
get commandItems(): CommandItem[];
|
|
75
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CommandSettingsService, never>;
|
|
76
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CommandSettingsService>;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
declare abstract class CommandBaseService {
|
|
80
|
+
protected readonly commandSettingsService: CommandSettingsService;
|
|
81
|
+
private readonly router;
|
|
82
|
+
protected constructor(commandSettingsService: CommandSettingsService, router: Router);
|
|
83
|
+
protected navigateAsync(commandItem: CommandItem, data?: any): Promise<void>;
|
|
84
|
+
protected static getIsVisible(commandItem: CommandItem): Promise<boolean>;
|
|
85
|
+
protected static getIsDisabled(commandItem: CommandItem): boolean;
|
|
86
|
+
private static getLink;
|
|
87
|
+
private static getHref;
|
|
88
|
+
private static executeClickEvent;
|
|
89
|
+
private static interpolateString;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
declare class CommandService extends CommandBaseService {
|
|
93
|
+
private readonly options;
|
|
94
|
+
private readonly _drawerItems;
|
|
95
|
+
private readonly _commandsMap;
|
|
96
|
+
constructor();
|
|
97
|
+
initialize(): Promise<void>;
|
|
98
|
+
private createDrawerItems;
|
|
99
|
+
get drawerItems(): Observable<DrawerItem[]>;
|
|
100
|
+
setSelectedDrawerItem(value: DrawerItem): Promise<void>;
|
|
101
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CommandService, never>;
|
|
102
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CommandService>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare class BreadCrumbData implements BreadCrumbItem {
|
|
106
|
+
constructor(label: string, labelTemplate: string, url: string);
|
|
107
|
+
text?: string;
|
|
108
|
+
title?: string;
|
|
109
|
+
disabled?: boolean;
|
|
110
|
+
icon?: string;
|
|
111
|
+
svgIcon?: SVGIcon$1;
|
|
112
|
+
iconClass?: string;
|
|
113
|
+
imageUrl?: string;
|
|
114
|
+
labelTemplate: string;
|
|
115
|
+
url: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
declare class BreadCrumbService {
|
|
119
|
+
private readonly activatedRoute;
|
|
120
|
+
private readonly router;
|
|
121
|
+
private readonly _breadCrumbItems;
|
|
122
|
+
constructor();
|
|
123
|
+
private createBreadCrumbs;
|
|
124
|
+
updateBreadcrumbLabels(data: any): Promise<void>;
|
|
125
|
+
get breadCrumbItems(): Observable<BreadCrumbData[]>;
|
|
126
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BreadCrumbService, never>;
|
|
127
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BreadCrumbService>;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare class ComponentMenuService extends CommandBaseService {
|
|
131
|
+
private readonly activatedRoute;
|
|
132
|
+
private readonly _menuItems;
|
|
133
|
+
constructor();
|
|
134
|
+
get menuItems(): Observable<MenuItem[]>;
|
|
135
|
+
private createNavigationMenu;
|
|
136
|
+
setSelectedMenuItem(value: MenuItem): Promise<void>;
|
|
137
|
+
private buildMenuItems;
|
|
138
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentMenuService, never>;
|
|
139
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ComponentMenuService>;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
interface BreadCrumbRouteItem {
|
|
143
|
+
label: string;
|
|
144
|
+
url: string;
|
|
145
|
+
svgIcon?: SVGIcon;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
declare class PagedResultDto<T> {
|
|
149
|
+
skip: number;
|
|
150
|
+
take: number;
|
|
151
|
+
totalCount: number;
|
|
152
|
+
list: T[];
|
|
153
|
+
constructor();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
interface TreeItemData {
|
|
157
|
+
get id(): string;
|
|
158
|
+
get text(): string;
|
|
159
|
+
get tooltip(): string;
|
|
160
|
+
get item(): any;
|
|
161
|
+
get svgIcon(): SVGIcon | null;
|
|
162
|
+
get expandable(): boolean;
|
|
163
|
+
set expandable(value: boolean);
|
|
164
|
+
get isExpanded(): boolean;
|
|
165
|
+
set isExpanded(value: boolean);
|
|
166
|
+
}
|
|
167
|
+
declare class TreeItemDataTyped<TDto> implements TreeItemData {
|
|
168
|
+
private readonly _id;
|
|
169
|
+
private readonly _text;
|
|
170
|
+
private readonly _tooltip;
|
|
171
|
+
private readonly _item;
|
|
172
|
+
private readonly _svgIcon;
|
|
173
|
+
private _isExpandable;
|
|
174
|
+
private _isExpanded;
|
|
175
|
+
constructor(_id: string, _text: string, _tooltip: string, _item: TDto, _svgIcon: SVGIcon, expandable?: boolean, isExpanded?: boolean);
|
|
176
|
+
get id(): string;
|
|
177
|
+
get text(): string;
|
|
178
|
+
get tooltip(): string;
|
|
179
|
+
get item(): TDto;
|
|
180
|
+
get svgIcon(): SVGIcon | null;
|
|
181
|
+
get expandable(): boolean;
|
|
182
|
+
set expandable(value: boolean);
|
|
183
|
+
get isExpanded(): boolean;
|
|
184
|
+
set isExpanded(value: boolean);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
declare class MmHttpErrorInterceptor implements HttpInterceptor {
|
|
188
|
+
private readonly messageService;
|
|
189
|
+
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
190
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MmHttpErrorInterceptor, never>;
|
|
191
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MmHttpErrorInterceptor>;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Interface for entity selection data sources
|
|
196
|
+
* Provides filtering and display functionality for entity autocomplete controls
|
|
197
|
+
*/
|
|
198
|
+
interface EntitySelectResult<T> {
|
|
199
|
+
/** Total number of entities matching the filter */
|
|
200
|
+
totalCount: number;
|
|
201
|
+
/** List of entities returned for this page */
|
|
202
|
+
items: T[];
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Data source interface for entity selection components
|
|
206
|
+
*/
|
|
207
|
+
interface EntitySelectDataSource<T> {
|
|
208
|
+
/**
|
|
209
|
+
* Filter entities based on search text
|
|
210
|
+
* @param filter The search filter string
|
|
211
|
+
* @param take Optional maximum number of results to return (default: 50)
|
|
212
|
+
* @returns Promise resolving to filtered entities
|
|
213
|
+
*/
|
|
214
|
+
onFilter: (filter: string, take?: number) => Promise<EntitySelectResult<T>>;
|
|
215
|
+
/**
|
|
216
|
+
* Get display text for an entity
|
|
217
|
+
* @param entity The entity to display
|
|
218
|
+
* @returns String representation of the entity
|
|
219
|
+
*/
|
|
220
|
+
onDisplayEntity: (entity: T) => string;
|
|
221
|
+
/**
|
|
222
|
+
* Get unique identifier for an entity
|
|
223
|
+
* @param entity The entity to get ID from
|
|
224
|
+
* @returns Unique identifier for the entity
|
|
225
|
+
*/
|
|
226
|
+
getIdEntity: (entity: T) => any;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Legacy DataSourceBase class for backward compatibility with libraries
|
|
231
|
+
* that import DataSourceBase from @meshmakers/shared-services.
|
|
232
|
+
*
|
|
233
|
+
* In the Refinery Studio version, DataSourceBase moved to @meshmakers/shared-ui.
|
|
234
|
+
* This re-export ensures old compiled libraries (octo-services, etc.) continue to work.
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
declare class DataSourceBase<TDto> {
|
|
238
|
+
private readonly dataSubject;
|
|
239
|
+
private readonly loadingSubject;
|
|
240
|
+
private readonly totalCountSubject;
|
|
241
|
+
readonly loading$: Observable<boolean>;
|
|
242
|
+
readonly totalCount$: Observable<number>;
|
|
243
|
+
private readonly addedDtoList;
|
|
244
|
+
private readonly removedDtoList;
|
|
245
|
+
private lastPagedResult;
|
|
246
|
+
get totalCount(): Observable<number>;
|
|
247
|
+
reset(): void;
|
|
248
|
+
addTemporaryDto(dto: TDto): void;
|
|
249
|
+
removeTemporaryDto(dto: TDto): void;
|
|
250
|
+
get addedTemporaryDtos(): TDto[];
|
|
251
|
+
get removedTemporaryDtos(): TDto[];
|
|
252
|
+
connect(_collectionViewer: any): Observable<readonly TDto[]>;
|
|
253
|
+
disconnect(_collectionViewer: any): void;
|
|
254
|
+
clear(): void;
|
|
255
|
+
protected onBeginLoad(): void;
|
|
256
|
+
protected onCompleteLoad(pagedResult: PagedResultDto<TDto>): void;
|
|
257
|
+
private onEndLoad;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Legacy IsoDateTime utility class for backward compatibility.
|
|
262
|
+
* Uses native Date API instead of date-fns.
|
|
263
|
+
*/
|
|
264
|
+
declare class IsoDateTime {
|
|
265
|
+
static utcToLocalDateTimeIso(utcDateTime: string): string | null;
|
|
266
|
+
static localToUtcDateTimeIso(localDateTime: string): string | null;
|
|
267
|
+
static currentUtcDateTimeIso(): string;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
declare class QrCodeScannerService {
|
|
271
|
+
private stream;
|
|
272
|
+
isSupported(): Promise<boolean>;
|
|
273
|
+
scan(video: HTMLVideoElement): Promise<string>;
|
|
274
|
+
stop(): void;
|
|
275
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QrCodeScannerService, never>;
|
|
276
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<QrCodeScannerService>;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Legacy ErrorMessage class for backward compatibility.
|
|
281
|
+
*/
|
|
282
|
+
declare class ErrorMessage {
|
|
283
|
+
title?: string;
|
|
284
|
+
message?: string;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Legacy AutoCompleteDataSource interface and AutoCompleteResult class
|
|
289
|
+
* for backward compatibility.
|
|
290
|
+
*/
|
|
291
|
+
|
|
292
|
+
declare class AutoCompleteResult {
|
|
293
|
+
searchTerm?: string;
|
|
294
|
+
list?: string[];
|
|
295
|
+
}
|
|
296
|
+
interface AutoCompleteDataSource {
|
|
297
|
+
onFilter: (filter: string) => Observable<AutoCompleteResult>;
|
|
298
|
+
onPreprocessSearchString: (search: string) => string;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
declare function provideMmSharedServices(commandOptions?: CommandOptions): EnvironmentProviders;
|
|
302
|
+
|
|
303
|
+
export { AppTitleService, AutoCompleteResult, BreadCrumbData, BreadCrumbService, BreadCrumbService as BreadcrumbService, CommandBaseService, CommandOptions, CommandService, CommandSettingsService, ComponentMenuService, DataSourceBase, ErrorMessage, IsoDateTime, MessageService, MmHttpErrorInterceptor, PagedResultDto, QrCodeScannerService, TreeItemDataTyped, provideMmSharedServices };
|
|
304
|
+
export type { AutoCompleteDataSource, BreadCrumbRouteItem, CommandItem, CommandItemExecuteEventArgs, EntitySelectDataSource, EntitySelectResult, MessageLevel, NotificationMessage, TreeItemData };
|