{"version":3,"file":"yuuvis-client-framework-actions.mjs","sources":["../../../../../libs/yuuvis/client-framework/actions/src/lib/actions.module.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenu.component.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenu.component.html","../../../../../libs/yuuvis/client-framework/actions/src/lib/components/contextmenu/contextmenuTrigger.directive.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/models/actions.icon.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/models/actions.models.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/services/action.priority-levels.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/services/action.validation.service.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/copy-action/copy-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/cut-action/cut-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete/delete.component.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete/delete.component.html","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/delete-action/delete-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/actions/download-action/download-action.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/services/actions.service.ts","../../../../../libs/yuuvis/client-framework/actions/src/lib/tokens/actions.token.ts","../../../../../libs/yuuvis/client-framework/actions/src/yuuvis-client-framework-actions.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n/**\n * Module for the actions library.\n */\n@NgModule({\n  imports: [TranslateModule]\n})\nexport class ActionsModule {}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\n\nimport { CdkMenu, CdkMenuItem } from '@angular/cdk/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { YuvListModule } from '@yuuvis/client-framework/list';\n\nimport {\n  afterRenderEffect,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  inject,\n  input,\n  output,\n  untracked,\n  viewChild,\n  viewChildren\n} from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ContextMenuAction, ContextMenuItemSelectEvent } from './contextmenu.model';\n\n@Component({\n  selector: 'yuv-contextmenu',\n  imports: [CommonModule, MatIconModule, YuvListModule, A11yModule, CdkMenu, CdkMenuItem, MatTooltip],\n  providers: [MatTooltip],\n  templateUrl: './contextmenu.component.html',\n  styleUrls: ['./contextmenu.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContextmenuComponent {\n  actions = input<ContextMenuAction[]>([]);\n  selection = input<unknown[]>([]);\n  itemSelect = output<ContextMenuItemSelectEvent>();\n  private translate = inject(TranslateService);\n\n  cdkMenu = viewChild.required(CdkMenu);\n  menuItems = viewChildren<CdkMenuItem | null>(CdkMenuItem);\n\n  sortedActions = computed(() =>\n    [...this.actions()].sort((a, b) => a.label.localeCompare(b.label, this.translate.getCurrentLang()))\n  );\n\n  constructor() {\n    afterRenderEffect(() => {\n      //Focus First Item when @for is finished\n      untracked(() => {\n        //firstElement?.nativeElement.focus();\n        this.cdkMenu().focusFirstItem('program');\n      });\n    });\n  }\n\n  onItemTrigger({ action }: ContextMenuItemSelectEvent): void {\n    this.itemSelect.emit({ action });\n  }\n}\n","<div class=\"context-menu\" cdkMenu>\n  @for (a of sortedActions(); track a.id) {\n    <span [matTooltip]=\"a.description\" [matTooltipDisabled]=\"!a.description\">\n      <div\n        class=\"context-menu__item\"\n        [class.context-menu__item--disabled]=\"a.disabled\"\n        cdkMenuItem\n        [cdkMenuItemDisabled]=\"a.disabled\"\n        [attr.aria-label]=\"'Execute Action: ' + a.label\"\n        (cdkMenuItemTriggered)=\"onItemTrigger({ action: a })\"\n      >\n        <mat-icon class=\"context-menu__item-icon ymt-icon--size-s\">{{ a.icon }}</mat-icon>\n        {{ a.label }}\n      </div>\n    </span>\n  }\n</div>\n","import { CdkContextMenuTrigger, MENU_STACK, MENU_TRIGGER, MenuStack } from '@angular/cdk/menu';\nimport { Directive, effect, Input, input, signal, TemplateRef, untracked } from '@angular/core';\n\n@Directive({\n  selector: '[yuvContextMenuTrigger]',\n  exportAs: 'yuvContextMenuTrigger',\n  standalone: true,\n  providers: [\n    { provide: MENU_TRIGGER, useExisting: YuvContextMenuTriggerDirective },\n    { provide: MENU_STACK, useClass: MenuStack }\n  ]\n})\nexport class YuvContextMenuTriggerDirective extends CdkContextMenuTrigger {\n  @Input({ alias: 'yuvContextMenuTrigger' })\n  override menuTemplateRef!: TemplateRef<unknown>;\n\n  triggerWhen = input<boolean | null>(null, { alias: 'yuvContextMenuTriggerWhen' });\n  \n  #contextMenuEvent = signal<MouseEvent | null>(null);\n\n  constructor() {\n    super();\n\n    effect(() => {\n      const event = this.#contextMenuEvent();\n      const triggerWhen = this.triggerWhen();\n      untracked(() => {\n        if ((event && triggerWhen) || (event && triggerWhen === null)) {\n          super._openOnContextMenu(event);\n        }\n      });\n    });\n  }\n\n  override _openOnContextMenu(event: MouseEvent) {\n    this.#contextMenuEvent.set(event);\n  }\n}\n","export const ACTION_ICON = {\n    download: 'download',\n    delete: 'delete',\n    copy: 'content_copy',\n    cut: 'content_cut',\n    manageFlavor: 'cards_star'\n}","import { DmsObject } from '@yuuvis/client-core';\nimport { Observable } from 'rxjs';\n\nexport type ActionClass = { \n  new (...args: any[]): any \n};\n\nexport class AbstractContextAction {\n  context?: ActionContext;\n  constructor(context?: ActionContext) {\n    this.context = context;\n  }\n}\n\nexport interface BaseAction {\n  /**\n   * Equals the selector of the actions selector (will be set by the action service)\n   */\n  id: string;\n  /**\n   * label to be displayed inside the action menu\n   */\n  label: string;\n  /**\n   * description to be displayed inside the action menu\n   */\n  description?: string;\n  /**\n   * @ignore\n   */\n  icon: string;\n  /**\n   * actions priority defining the position of the action within the whole list of actions\n   */\n  priority: number;\n  /**\n   * group of actions the action should be part of ('common' or 'further')\n   */\n  group: string;\n  /**\n   * number of selected items supported by the action\n   * (SelectionRange.SINGLE_SELECT, SelectionRange.MULTI_SELECT, SelectionRange.MULTI_SELECT_ONLY )\n   */\n  range: SelectionRange;\n\n  /**\n   * Types that are supported by the action\n   */\n  supports: ActionSupport;\n\n  /**\n   * Determining whether or not the action is executable for the given selection.\n   * Controls visibility: when false, the action is hidden from the UI entirely.\n   * @param item Current selection\n   * @returns true if the action is executable for the current selection, false otherwise\n   */\n  isExecutable: (items: DmsObject[]) => Observable<boolean>;\n\n  /**\n   * Optional check whether the action should be disabled for the given selection.\n   * Unlike isExecutable (which controls visibility), isDisabled controls whether\n   * a visible action can be triggered. When absent, the action is never disabled.\n   * @param items Current selection\n   * @returns true if the action should be disabled, false otherwise\n   */\n  isDisabled?: (items: DmsObject[]) => Observable<boolean>;\n\n  /**\n   * Resolved disabled state for template binding. Set by ActionsService after\n   * evaluating isDisabled(). Do not set manually on action classes.\n   */\n  disabled?: boolean;\n}\n\nexport interface ActionSupport {\n  // object types\n  types?: string[];\n  // object types\n  sots?: string[];\n  // pattern to match the type name against\n  pattern?: string;\n}\n\nexport interface ActionContext {\n  /**\n   * As actions deal with DmsObjects the subject property is the property that\n   * should be used to display the name of the object. This may be used for\n   * showing the name of the object in a confirmation/error dialog or similar.\n   */\n  subjectProperty?: string;\n  /**\n   * The appId is the id of the application that the action is executed in.\n   */\n  appId?: string;\n}\n\nexport interface Action extends BaseAction {\n  run: (items: DmsObject[]) => Observable<boolean>;\n  /**\n   * Optional child actions. When present, this action renders as a sub-menu\n   * trigger instead of executing `run`. Nesting can be arbitrarily deep.\n   * An empty array is treated as \"no children\" (leaf action).\n   */\n  children?: Action[];\n}\n\nexport interface ActionOptions {\n  context?: ActionContext;\n  exclude?: string[] | RegExp;\n}\n\nexport enum SelectionRange {\n  SINGLE_SELECT,\n  MULTI_SELECT,\n  MULTI_SELECT_ONLY,\n  ANY\n}\n\nexport const BASE_ACTION = {\n  copy: 'yuv.base.copy',\n  cut: 'yuv.base.cut',\n  download: 'yuv.base.download',\n  delete: 'yuv.base.delete'\n};\n","export const ActionPriorityLevel = {\n  LEVEL_1: 1,\n  LEVEL_2: 2,\n  LEVEL_3: 3,\n  LEVEL_4: 4,\n  LEVEL_5: 5,\n  LEVEL_6: 6,\n  LEVEL_7: 7,\n  LEVEL_8: 8,\n  LEVEL_9: 9,\n  LEVEL_10: 10\n} as const;\n","import { inject, Injectable } from '@angular/core';\nimport { AppCacheService, DmsObject, ObjectLockingService, TranslateService, YuvUser } from '@yuuvis/client-core';\nimport { map, Observable, of } from 'rxjs';\n\n/**\n * Service responsible for validating actions on DMS objects.\n * Provides checks for document lock states and related user information.\n */\n/** @deprecated */\n@Injectable({\n  providedIn: 'root'\n})\nexport class ActionsValidationService {\n  private readonly translate = inject(TranslateService);\n  readonly #appCache = inject(AppCacheService);\n  readonly #objectLocking = inject(ObjectLockingService);\n\n  /** Cache key used to retrieve the list of users from the application cache. */\n  readonly #STORAGE_USER_KEY = 'yuv.core.users.storage';\n\n  /** @deprecated */\n  checkDocumentLock(dmsObject: DmsObject): Observable<{ state: boolean; description?: string }> {\n    const lockState = this.#objectLocking.getLockState(dmsObject);\n    if (!lockState.locked || lockState.lockedByCurrentUser) return of({ state: false });\n    return this.#appCache.getItem<YuvUser[]>(this.#STORAGE_USER_KEY).pipe(\n      map((users) => {\n        const lockUser = users?.find((user) => user.id === lockState.ownerId);\n        const user = lockUser ? lockUser.title || lockUser.email || lockUser.id : null;\n        const description = user\n          ? this.translate.instant('yuv.action-menu.action.unlock.description-locked-by-other', { user })\n          : this.translate.instant('yuv.action-menu.action.unlock.description-locked-by-unknown-user');\n        return { state: true, description };\n      })\n    );\n  }\n}\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, BASE_ACTION, SelectionRange } from '../../models';\nimport { ActionPriorityLevel } from '../../services';\n\nexport class CopyAction extends AbstractContextAction implements Action {\n  readonly #clipboardService = inject(ClipboardService);\n  readonly #translate = inject(TranslateService);\n\n  id = BASE_ACTION.copy;\n  label = this.#translate.instant('yuv.action-menu.action.copy.dms.object.label');\n  description = this.#translate.instant('yuv.action-menu.action.copy.dms.object.description');\n  priority = ActionPriorityLevel.LEVEL_8;\n  icon = ACTION_ICON.copy;\n  group = 'common';\n  range = SelectionRange.MULTI_SELECT;\n  supports: ActionSupport = {\n    pattern: '*'\n  };\n\n  isExecutable(items: DmsObject[]): Observable<boolean> {\n    const notAllowed = items.some((item) => !item.permissions?.writeIndexData);\n    return of(items.length > 0 && !notAllowed);\n  }\n\n  run(items: DmsObject[]): Observable<boolean> {\n    this.#clipboardService.addObjects(items, 'copy', this.context?.appId);\n    return of(true);\n  }\n}\n","import { inject } from '@angular/core';\nimport { ClipboardService, DmsObject, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, BASE_ACTION, SelectionRange } from '../../models';\nimport { ActionPriorityLevel } from '../../services';\n\nexport class CutAction extends AbstractContextAction implements Action {\n  readonly #clipboardService = inject(ClipboardService);\n  readonly #translate = inject(TranslateService);\n\n  id = BASE_ACTION.cut;\n  label = this.#translate.instant('yuv.action-menu.action.cut.dms.object.label');\n  description = this.#translate.instant('yuv.action-menu.action.cut.dms.object.description');\n  priority = ActionPriorityLevel.LEVEL_8;\n  icon = ACTION_ICON.cut;\n  group = 'common';\n  range = SelectionRange.MULTI_SELECT;\n  supports: ActionSupport = {\n    pattern: '*'\n  };\n\n  isExecutable(items: DmsObject[]): Observable<boolean> {\n    return of(\n      items.length > 0 &&\n        items.every(\n          (item) => item.permissions?.writeContent && item.permissions.writeIndexData && item.permissions.deleteObject\n        )\n    );\n  }\n\n  run(items: DmsObject[]): Observable<boolean> {\n    this.#clipboardService.addObjects(items, 'cut', this.context?.appId);\n    return of(true);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {\n  DmsObject,\n  DmsService,\n  ObjectDeleteError,\n  ObjectDeleteResult,\n  TranslatePipe,\n  TranslateService\n} from '@yuuvis/client-core';\nimport { DialogComponent } from '@yuuvis/client-framework/common';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { ActionContext } from '../../../models';\n\n/**\n * @ignore\n */\n\n@Component({\n  selector: 'yuv-delete',\n  standalone: true,\n  imports: [CommonModule, TranslatePipe, MatButtonModule, DialogComponent, MatProgressBar, YmtButtonDirective],\n  templateUrl: './delete.component.html',\n  styleUrls: ['./delete.component.scss']\n})\nexport class DeleteComponent {\n  readonly #dmsService = inject(DmsService);\n  private readonly translate = inject(TranslateService);\n  #dialogData = inject<any>(MAT_DIALOG_DATA);\n  readonly #dialogRef = inject(MatDialogRef<DeleteComponent>);\n\n  errors = signal<\n    {\n      status: number;\n      subject: string;\n      message: string;\n    }[]\n  >([]);\n\n  deleting = signal(false);\n  deleteItems: DmsObject[] = this.#dialogData.items;\n  context: ActionContext = this.#dialogData.context;\n\n  run() {\n    this.errors.set([]);\n    if (this.deleteItems.length) {\n      this.deleting.set(true);\n      this.#dmsService\n        .deleteDmsObjects(\n          this.deleteItems.map((o) => ({\n            id: o.id,\n            subject: o.data[this.context.subjectProperty || o.id] as string\n          }))\n        )\n        .subscribe({\n          next: (res: ObjectDeleteResult[]) => {\n            this.errors.set(\n              res\n                .filter((r) => !!r._error)\n                .map((r: any) => ({\n                  status: r._error.status,\n                  subject: this.context?.subjectProperty ? r.properties[this.context.subjectProperty].value : r.id,\n                  message: this.#getErrorMessage(r._error)\n                }))\n            );\n            !this.errors().length && this.#dialogRef.close();\n          },\n          error: (err: ObjectDeleteError) => {\n            this.deleting.set(false);\n          },\n          complete: () => this.deleting.set(false)\n        });\n    }\n  }\n\n  #getErrorMessage(error: ObjectDeleteError): string {\n    switch (error.status) {\n      case 403:\n        return this.translate.instant('yuv.action-menu.action.delete.error.403');\n      case 404:\n        return this.translate.instant('yuv.action-menu.action.delete.error.404');\n      default:\n        return this.translate.instant('yuv.action-menu.action.delete.error.default');\n    }\n  }\n\n  cancel() {\n    this.#dialogRef.close();\n  }\n}\n","<yuv-dialog [headertitle]=\"'yuv.action-menu.action.delete.dms.object.label' | translate\">\n  <main class=\"yuv-delete\" [ngClass]=\"{ deleting: deleting() }\">\n    <mat-progress-bar mode=\"indeterminate\" class=\"progress-bar\"></mat-progress-bar>\n\n    @if (errors().length) {\n      <ul class=\"errors\">\n        @for (e of errors(); track $index) {\n          <li class=\"error\">\n            <span class=\"subject\">{{ e.subject }}</span>\n            <span class=\"message\">{{ e.message }}</span>\n          </li>\n        }\n      </ul>\n    } @else {\n      <p>{{ 'yuv.action-menu.action.delete.dms.object.confirm.message' | translate }}</p>\n    }\n  </main>\n  <footer class=\"form-buttons\">\n    <button ymtButton=\"secondary\" [disabled]=\"deleting()\" (click)=\"cancel()\">\n      {{ 'yuv.action-menu.action.delete.dms.object.confirm.cancel' | translate }}\n    </button>\n\n    <button ymtButton=\"primary\" [disabled]=\"deleting() || !!errors().length\" (click)=\"run()\">\n      {{ 'yuv.action-menu.action.delete.dms.object.confirm.ok' | translate }}\n    </button>\n  </footer>\n</yuv-dialog>\n","import { inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DmsObject, IdmService, ObjectLockingService, RetentionService, TranslateService } from '@yuuvis/client-core';\nimport { map, Observable, of } from 'rxjs';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, BASE_ACTION, SelectionRange } from '../../models';\nimport { ActionPriorityLevel } from '../../services';\nimport { DeleteComponent } from './delete/delete.component';\n\nexport class DeleteAction extends AbstractContextAction implements Action {\n  readonly #translate = inject(TranslateService);\n  readonly #dialog = inject(MatDialog);\n  readonly #retention = inject(RetentionService);\n  readonly #idmService = inject(IdmService);\n  readonly #objectLocking = inject(ObjectLockingService);\n\n  id = BASE_ACTION.delete;\n  label = this.#translate.instant('yuv.action-menu.action.delete.dms.object.label');\n  description = this.#translate.instant('yuv.action-menu.action.delete.dms.object.description');\n  priority = ActionPriorityLevel.LEVEL_8;\n  icon = ACTION_ICON.delete;\n  group = 'common';\n  range = SelectionRange.MULTI_SELECT;\n  supports: ActionSupport = {\n    pattern: '*'\n  };\n\n  isDisabled(items: DmsObject[]): Observable<boolean> {\n    const lockState = this.#objectLocking.getLockState(items[0]);\n    if (!lockState.locked) return of(false);\n    return this.#idmService.getUserById(lockState.ownerId || '').pipe(\n      map((user) => {\n        const userName = user ? user.title || user.email || user.id : null;\n        this.description = userName\n          ? this.#translate.instant('yuv.action-menu.action.unlock.description-locked-by-other', { user: userName })\n          : this.#translate.instant('yuv.action-menu.action.unlock.description-locked-by-unknown-user');\n        return true;\n      })\n    );\n  }\n\n  isExecutable(items: DmsObject[]): Observable<boolean> {\n    const dmsObject = items[0];\n    return of(\n      !!dmsObject.permissions &&\n        dmsObject.permissions.deleteObject &&\n        !this.#retention.getRetentionState(dmsObject).underRetention\n    );\n  }\n\n  run(items: DmsObject[]): Observable<boolean> {\n    this.#dialog.open(DeleteComponent, {\n      data: {\n        items,\n        context: this.context\n      }\n    });\n    return of(true);\n  }\n}\n","import { inject } from '@angular/core';\nimport { DmsObject, DmsService, SystemType, TranslateService } from '@yuuvis/client-core';\nimport { Observable, of } from 'rxjs';\nimport { AbstractContextAction, Action, ACTION_ICON, ActionSupport, BASE_ACTION, SelectionRange } from '../../models';\nimport { ActionPriorityLevel } from '../../services';\n\nexport class DownloadAction extends AbstractContextAction implements Action {\n  readonly #translate = inject(TranslateService);\n  readonly #dmsService = inject(DmsService);\n\n  id = BASE_ACTION.download;\n  label = this.#translate.instant('yuv.action-menu.action.download.dms.object.content.label');\n  description = this.#translate.instant('yuv.action-menu.action.download.dms.object.content.description');\n  priority = ActionPriorityLevel.LEVEL_2;\n  icon = ACTION_ICON.download;\n  group = 'common';\n  range = SelectionRange.MULTI_SELECT;\n  supports: ActionSupport = {\n    types: [SystemType.DOCUMENT]\n  };\n\n  isExecutable(selection: DmsObject[]): Observable<boolean> {\n    const noContentMatch = (Array.isArray(selection) ? selection : [selection]).find((e) => !e.content);\n    if (selection.length < 1) return of(false);\n    return of(!noContentMatch);\n  }\n\n  run(selection: DmsObject[]): Observable<boolean> {\n    this.#dmsService.downloadContent(Array.isArray(selection) ? selection : [selection]);\n    return of(true);\n  }\n}\n","import { Injectable, Injector, Signal, inject, runInInjectionContext } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DmsObject, Utils } from '@yuuvis/client-core';\nimport { Observable, forkJoin, map, of, switchMap } from 'rxjs';\nimport { CopyAction } from '../actions/copy-action/copy-action';\nimport { CutAction } from '../actions/cut-action/cut-action';\nimport { DeleteAction } from '../actions/delete-action/delete-action';\nimport { DownloadAction } from '../actions/download-action/download-action';\nimport { ContextmenuComponent } from '../components/contextmenu/contextmenu.component';\nimport { Action, ActionClass, ActionContext, ActionOptions, BASE_ACTION } from '../models';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ActionsService {\n  readonly injector = inject(Injector);\n  #dialog = inject(MatDialog);\n  readonly iconRegistry = inject(MatIconRegistry);\n\n  private _registeredActions: Record<string, ActionClass> = {};\n\n  /**\n   * Registers actions that can be used in the application.\n   * @param a Array of actions to register, each action must have an id and a\n   * class that extends ActionClass\n   */\n  registerActions(actions: { id: string; action: ActionClass }[]): void {\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n    Array.isArray(actions) &&\n      actions.forEach((action) => {\n        this._registeredActions[action.id] = action.action;\n      });\n  }\n\n  /**\n   * Conceals actions that are no longer needed or should not be available.\n   * This will remove the actions from the registered actions list.\n   * @param actionIDs  Array of action IDs to conceal\n   */\n  concealActions(actionIDs: string[]): void {\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n    Array.isArray(actionIDs) && actionIDs.forEach((id) => delete this._registeredActions[id]);\n  }\n\n  /**\n   * Returns all actions that are executable for the given selection.\n   * @param selection Array of DmsObjects to check for executable actions\n   * @param options options to filter the actions\n   * @returns Observable of actions that are executable for the given selection\n   */\n  getActions(selection: DmsObject[], options?: ActionOptions): Observable<Action[]> {\n    // TODO: check if selection is empty or if nessasery at all\n    // if (!selection || selection.length === 0) return of([]);\n    const selections: Observable<{ action: Action; executable: boolean }>[] = this.getAvailableActions(options?.context)\n      .filter((action) =>\n        options?.exclude\n          ? Array.isArray(options.exclude)\n            ? !options.exclude.includes(action.id)\n            : options.exclude instanceof RegExp\n              ? !options.exclude.test(action.id)\n              : true\n          : true\n      )\n      .map((action: Action) =>\n        action.isExecutable(selection).pipe(\n          map((executable: boolean) => ({\n            action,\n            executable\n          }))\n        )\n      );\n\n    return forkJoin(selections).pipe(\n      map((res: { action: Action; executable: boolean }[]) =>\n        res.filter((result) => result.executable).map((executable) => executable.action)\n      ),\n      switchMap((actions: Action[]) => this.resolveDisabledState(actions, selection))\n    );\n  }\n\n  /**\n   * Get all available actions. This includes the default actions and all registered actions but\n   * without checking if they are executable.\n   * @param context Context passed to the actions\n   * @returns Array of available actions\n   */\n  getAvailableActions(context?: ActionContext): Action[] {\n    let actions: Action[] = [];\n\n    runInInjectionContext(this.injector, () => {\n      actions = [...Object.values(this._registeredActions).map((action: ActionClass) => new action(context))];\n    });\n    return actions;\n  }\n\n  getActionsForType(objectTypeId: string, context?: ActionContext): Action[] {\n    return this.getAvailableActions(context).filter((action: Action) =>\n      this.#actionsSupportsType(action, objectTypeId)\n    );\n  }\n\n  getActionById(id: string, context?: ActionContext): Action | undefined {\n    return this.getAvailableActions(context).find((action) => action.id === id);\n  }\n\n  getActionsById(ids: string[], context?: ActionContext): Action[] {\n    return this.getAvailableActions(context).filter((action: Action) => ids.includes(action.id));\n  }\n\n  /**\n   * Resolves the disabled state for the given actions against the given selection.\n   * Sets the `disabled` property on each action instance.\n   * @param actions Array of actions to resolve\n   * @param selection Array of DmsObjects to check against\n   * @returns Observable emitting the same actions with `disabled` set\n   */\n  resolveDisabledState(actions: Action[], selection: DmsObject[]): Observable<Action[]> {\n    if (actions.length === 0) return of([]);\n\n    const disabledChecks = actions.map((action: Action) => {\n      const resolve$ = action.isDisabled\n        ? action.isDisabled(selection).pipe(\n            map((disabled: boolean) => {\n              action.disabled = disabled;\n              return action;\n            })\n          )\n        : of(Object.assign(action, { disabled: false }));\n\n      // Recursively resolve children\n      if (action.children?.length) {\n        return resolve$.pipe(\n          switchMap((action) => this.resolveDisabledState(action.children!, selection).pipe(map(() => action)))\n        );\n      }\n      return resolve$;\n    });\n\n    return forkJoin(disabledChecks);\n  }\n\n  openContextMenu(\n    actions: Signal<Action[]>,\n    callback: (action: Action) => void,\n    overlayOrigin: { x: number; y: number }\n  ): void {\n    if (actions().length)\n      this.#dialog.open(ContextmenuComponent, {\n        data: { actions, callback },\n        panelClass: 'context-menu-dialog'\n        // position: { top: `${overlayOrigin.y}`, left: `${overlayOrigin.x}` }\n      });\n    const width = 10;\n    const hight = 10;\n\n    setTimeout(() => {\n      const dialog = document.querySelector('.context-menu-dialog') as HTMLElement;\n\n      const dialogWidth = dialog.offsetWidth;\n      const dialogHeight = dialog.offsetHeight;\n      const screenW = window.innerWidth;\n      const screenH = window.innerHeight;\n\n      let left = overlayOrigin.x;\n      let top = overlayOrigin.y;\n      if (left + dialogWidth > screenW) {\n        left = screenW - dialogWidth - width;\n      }\n      if (top + dialogHeight > screenH) {\n        top = screenH - dialogHeight - hight;\n      }\n\n      dialog.style.position = 'fixed';\n      dialog.style.left = `${left}px`;\n      dialog.style.top = `${top}px`;\n    });\n  }\n\n  /**\n   * Registers a set of default actions that are commonly used in the application.\n   * These actions include delete, download, copy and cut. This method can be called\n   * during the initialization of the application to ensure that these actions\n   * are available for use.\n   */\n  registerDefaultActions(): void {\n    this.registerActions([\n      { id: BASE_ACTION.delete, action: DeleteAction },\n      { id: BASE_ACTION.download, action: DownloadAction },\n      { id: BASE_ACTION.copy, action: CopyAction },\n      { id: BASE_ACTION.cut, action: CutAction }\n    ]);\n  }\n\n  #actionsSupportsType(action: Action, objectTypeId: string): boolean {\n    const matchesTypes = action.supports.types ? action.supports.types.includes(objectTypeId) : false;\n    const matchesSOTs = action.supports.sots ? action.supports.sots.includes(objectTypeId) : false;\n    const matchesPattern = action.supports.pattern\n      ? Utils.patternToRegExp(action.supports.pattern).test(objectTypeId)\n      : false;\n    return matchesTypes || matchesSOTs || matchesPattern;\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ActionContext } from '../models';\n\nexport const ACTION_CONTEXT_TOKEN = new InjectionToken<ActionContext>('action-context');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TranslateService","i1"],"mappings":"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"}