{"version":3,"file":"laserfiche-lf-ui-components-shared.mjs","sources":["../../../projects/ui-components/shared/enums.ts","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs.component.ts","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs.component.html","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs-public-api.ts","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar.component.ts","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar.component.html","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar-public-api.ts","../../../projects/ui-components/shared/LfSelectable.ts","../../../projects/ui-components/shared/lf-shared-public-api.ts","../../../projects/ui-components/shared/laserfiche-lf-ui-components-shared.ts"],"sourcesContent":["// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport enum FieldType {\n  DateTime = 'DateTime',\n  Blob = 'Blob',\n  Date = 'Date',\n  ShortInteger = 'ShortInteger',\n  LongInteger = 'LongInteger',\n  List = 'List',\n  Number = 'Number',\n  String = 'String',\n  Time = 'Time',\n}\n\n/** FieldFormat copied from Web Access */\nexport enum FieldFormat {\n  None = 'None',\n  ShortDate = 'ShortDate',\n  LongDate = 'LongDate',\n  ShortDateTime = 'ShortDateTime',\n  LongDateTime = 'LongDateTime',\n  ShortTime = 'ShortTime',\n  LongTime = 'LongTime',\n  GeneralNumber = 'GeneralNumber',\n  Currency = 'Currency',\n  Percent = 'Percent',\n  Scientific = 'Scientific',\n  Custom = 'Custom',\n}\n\nexport enum RedirectBehavior {\n  Replace = 'Replace',\n  Popup = 'Popup',\n  None = 'None',\n}\n\nexport enum LoginState {\n  LoggingIn = 'LoggingIn', // starting OAuth flow, previous state: LoggedOut, LoggedIn\n  LoggedIn = 'LoggedIn', // have tokens, previous state: LoggingIn\n  LoggingOut = 'LoggingOut', // do have tokens, but getting rid of them, previous state: LoggedIn\n  LoggedOut = 'LoggedOut', // don't have tokens, previous state: LoggingOut, LoggingIn\n}\n\nexport enum LoginMode {\n  'Button' = 'Button',\n  'Menu' = 'Menu',\n}\n\nexport enum LoginType {\n  Cloud = 'Cloud',\n  SelfHosted = 'Self-Hosted',\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { LfBreadcrumb } from './lf-breadcrumbs-types';\n\n@Component({\n  selector: 'lf-breadcrumbs',\n  templateUrl: './lf-breadcrumbs.component.html',\n  styleUrls: ['./lf-breadcrumbs.component.css'],\n  standalone: true,\n  imports: [CommonModule, MatMenuModule, MatButtonToggleModule],\n})\nexport class LfBreadcrumbsComponent {\n  @Input() breadcrumbs: LfBreadcrumb[] = [];\n\n  @Output() breadcrumbSelected = new EventEmitter<LfBreadcrumb | undefined>();\n  @Output() breadcrumbClicked = new EventEmitter<{\n    selected: LfBreadcrumb;\n    breadcrumbs: LfBreadcrumb[];\n  }>();\n\n  /** @internal */\n  constructor() {}\n\n  /** @internal */\n  onBreadcrumbSelected(node: LfBreadcrumb): void {\n    this.breadcrumbSelected.emit(node);\n    let crumbId = -1;\n    for (let idx = 0; idx < this.breadcrumbs.length; idx++) {\n      if (this.breadcrumbs[idx].id === node.id) {\n        crumbId = idx;\n        break;\n      }\n    }\n    if (crumbId === -1) {\n      return;\n    }\n    const newBreadcrumbs = this.breadcrumbs.slice(crumbId);\n    this.breadcrumbClicked.emit({ breadcrumbs: newBreadcrumbs, selected: node });\n  }\n\n  /** @internal */\n  onDropdownMenuSelected(button: HTMLButtonElement) {\n    setTimeout(() => button.focus());\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div class=\"lf-breadcrumbs-container\">\n  @if (breadcrumbs.length > 1) {\n    <div class=\"breadcrumbs-dropdown-container\">\n      <mat-button-toggle-group class=\"breadcrumb-split-button-group\" hideSingleSelectionIndicator>\n        <mat-button-toggle\n          class=\"breadcrumb-clickable-parent lf-button primary-button breadcrumb-split-button\"\n          [ngClass]=\"{ 'single-selectable': breadcrumbs.length === 2 }\"\n          (click)=\"onBreadcrumbSelected(breadcrumbs[1])\"\n          (keydown.enter)=\"onBreadcrumbSelected(breadcrumbs[1])\"\n          (keydown.space)=\"onBreadcrumbSelected(breadcrumbs[1])\"\n          [title]=\"breadcrumbs[1]?.name\"\n        >\n          {{ breadcrumbs[1]?.name }}\n        </mat-button-toggle>\n        @if (breadcrumbs.length > 2) {\n          <mat-button-toggle\n            class=\"breadcrumb-select breadcrumb-split-button\"\n            value=\"breadcrumbDropdownMenu\"\n            (change)=\"onDropdownMenuSelected(dropdownMenuButton)\"\n            tabindex=\"-1\"\n          >\n            <button\n              #dropdownMenuButton\n              mat-icon-button\n              [matMenuTriggerFor]=\"breadcrumbDropdownMenu\"\n              (click)=\"$event.stopPropagation()\"\n              tabindex=\"0\"\n            >\n              <span class=\"material-icons breadcrumb-split-button-icon\"> arrow_drop_down </span>\n            </button>\n          </mat-button-toggle>\n        }\n      </mat-button-toggle-group>\n      <mat-menu #breadcrumbDropdownMenu=\"matMenu\" xPosition=\"before\">\n        @for (breadcrumbOption of breadcrumbs.slice(1); track breadcrumbOption) {\n          <button\n            class=\"lf-menu-item folder-dropdown\"\n            mat-menu-item\n            title=\"{{ breadcrumbOption?.name }}\"\n            (click)=\"onBreadcrumbSelected(breadcrumbOption)\"\n          >\n            {{ breadcrumbOption?.name }}\n          </button>\n        }\n      </mat-menu>\n    </div>\n  }\n  @if (breadcrumbs.length > 1) {\n    <span class=\"material-icons breadcrumb-arrow_right\" id=\"arrow-right\"> keyboard_arrow_right </span>\n  }\n  @if (breadcrumbs.length > 0) {\n    <span class=\"breadcrumb-parent\" title=\"{{ breadcrumbs[0]?.name }}\">\n      {{ breadcrumbs[0]?.name }}\n    </span>\n  }\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfBreadcrumb } from './lf-breadcrumbs-types';\nexport { LfBreadcrumbsComponent } from './lf-breadcrumbs.component';\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n  selector: 'lf-toolbar',\n  templateUrl: './lf-toolbar.component.html',\n  styleUrls: ['./lf-toolbar.component.css'],\n  standalone: true,\n  imports: [MatMenuModule, MatTooltipModule],\n})\nexport class LfToolbarComponent {\n  // TODO: if there is not enough room for displayed options, put everything in dropdown\n  @Input() displayed_options: ToolbarOption[] = [];\n  @Input() dropdown_options: ToolbarOption[] = [];\n  @Output() optionSelected: EventEmitter<ToolbarOption> = new EventEmitter<ToolbarOption>();\n\n  /** @internal */\n  constructor() {}\n\n  /** @internal */\n  onClickButton(option: ToolbarOption): void {\n    this.optionSelected.emit(option);\n  }\n\n  /** @internal */\n  getIcons(option: ToolbarOption): string[] {\n    if (!option.icon) {\n      return [];\n    }\n    if (typeof option.icon === 'string') {\n      return [option.icon];\n    } else {\n      return option.icon;\n    }\n  }\n}\n\nexport interface ToolbarOption {\n  name: string;\n  disabled: boolean;\n  icon?: string[] | string;\n  children?: ToolbarOption[];\n  tag?: any;\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div class=\"lf-toolbar-container\">\n  @for (displayedOption of displayed_options; track displayedOption) {\n    <span\n      [matTooltip]=\"displayedOption.name\"\n      matTooltipClass=\"lf-web-client-tooltip\"\n      class=\"lf-toolbar-expanded-button-span\"\n    >\n      <button class=\"lf-toolbar-button\" [disabled]=\"displayedOption.disabled\" (click)=\"onClickButton(displayedOption)\">\n        @for (icon of getIcons(displayedOption); track icon) {\n          <img [src]=\"icon\" [alt]=\"displayedOption.name\" class=\"lf-toolbar-button-icon\" />\n        }\n      </button>\n    </span>\n  }\n  @if (dropdown_options && dropdown_options.length > 0) {\n    <button class=\"lf-toolbar-button\" [matMenuTriggerFor]=\"compactButtonMenu\">\n      <span class=\"material-icons lf-toolbar-dropdown-button-icon\"> more_vert </span>\n    </button>\n  }\n  <mat-menu #compactButtonMenu=\"matMenu\" class=\"lf-dropdown-menu\">\n    @for (dropdownOption of dropdown_options; track dropdownOption) {\n      <button\n        [disabled]=\"dropdownOption.disabled\"\n        class=\"lf-dropdown-menu-option\"\n        mat-menu-item\n        (click)=\"onClickButton(dropdownOption)\"\n      >\n        {{ dropdownOption.name }}\n      </button>\n    }\n  </mat-menu>\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfToolbarComponent, ToolbarOption } from './lf-toolbar.component';\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\n/**\n * @internal\n */\nexport interface ItemWithId {\n  id: string;\n  attributes?: Map<string, PropertyValue>;\n}\n\nexport interface PropertyValue {\n  value?: string | Date | number;\n  displayValue?: string;\n}\n\n/**\n * @internal\n */\nexport interface ILfSelectable {\n  value: ItemWithId;\n  isSelectable: boolean;\n  isSelected: boolean;\n}\n\n/**\n * @internal\n */\nexport class Selectable {\n  multiSelectable: boolean = false;\n\n  get selectedItems(): ILfSelectable[] {\n    return [...this.allSelected.values()];\n  }\n\n  callback?: () => Promise<ILfSelectable[] | undefined>;\n\n  private lastSelectedIndex: number = 0;\n  private selectedItemsIndices: number[] = [];\n\n  allSelected: Map<string, ILfSelectable> = new Map<string, ILfSelectable>();\n\n  clearSelectedValues(list: ILfSelectable[], clearCached?: boolean) {\n    this.clearAllSelectedItems(list, clearCached);\n  }\n\n  async setSelectedNodesAsync(\n    selected: Map<string, ILfSelectable>,\n    list: ILfSelectable[],\n    maxFetchIterations: number,\n    lastCheckedIdx: number = 0\n  ) {\n    for (let index = 0; index < list.length; index++) {\n      const selectableItem = list[index];\n      const wantToSelect = selected.has(selectableItem.value.id) || this.allSelected.has(selectableItem.value.id);\n      if (wantToSelect) {\n        if (selectableItem.isSelectable) {\n          const findValue = this.selectedItemsIndices.find((value) => value === index + lastCheckedIdx);\n          if (!findValue) {\n            this.selectedItemsIndices.push(index + lastCheckedIdx);\n          }\n          this.allSelected.set(selectableItem.value.id, selectableItem);\n          selectableItem.isSelected = true;\n          selected.delete(selectableItem.value.id);\n        }\n      }\n    }\n    lastCheckedIdx += list.length;\n    if (selected.size > 0) {\n      if (this.callback) {\n        if (maxFetchIterations > 0) {\n          --maxFetchIterations;\n          const value = await this.callback();\n          if (!value || value.length === 0) {\n            return;\n          }\n          await this.setSelectedNodesAsync(selected, value, maxFetchIterations, lastCheckedIdx);\n        } else {\n          console.debug('MaxFetchIterations reached. Not all nodes selected');\n        }\n      }\n    } else {\n      return;\n    }\n  }\n\n  onItemClicked(\n    event: MouseEvent | KeyboardEvent,\n    item: ILfSelectable,\n    list: ILfSelectable[],\n    allowMultiple: boolean = false,\n    onlyAdd: boolean = false\n  ) {\n    if (!item.isSelectable) {\n      if (event.ctrlKey || event.shiftKey) {\n        return;\n      }\n      this.clearAllSelectedItems(list);\n      this.lastSelectedIndex = 0;\n      return;\n    }\n    const itemIndex = list.findIndex((selectable) => selectable.value.id === item.value.id);\n    if (!this.multiSelectable) {\n      this.clearAllSelectedItems(list);\n      const itemInList = list[itemIndex];\n      if (itemInList.isSelectable) {\n        this.addSelectedItem(item, itemIndex);\n        this.lastSelectedIndex = itemIndex;\n      }\n      return;\n    }\n    if (event?.ctrlKey && event?.shiftKey) {\n      onlyAdd = true;\n    }\n    if ((event?.ctrlKey && !event.shiftKey) || (!event?.ctrlKey && !event?.shiftKey && allowMultiple)) {\n      const itemInList = list[itemIndex];\n      if (itemInList.isSelected) {\n        this.unselectItem(list, itemInList);\n      } else {\n        if (itemInList.isSelectable) {\n          this.addSelectedItem(item, itemIndex);\n          this.lastSelectedIndex = itemIndex;\n        }\n      }\n    } else if (event.shiftKey) {\n      const lower = this.lastSelectedIndex <= itemIndex ? this.lastSelectedIndex : itemIndex;\n      const upper = this.lastSelectedIndex > itemIndex ? this.lastSelectedIndex : itemIndex;\n      if (!onlyAdd) {\n        this.clearAllSelectedItems(list);\n      }\n\n      for (let i = lower; i <= upper; i++) {\n        const value = list[i];\n        if (value.isSelectable && !value.isSelected) {\n          this.addSelectedItem(value, i);\n        }\n      }\n    } else if (!allowMultiple) {\n      this.clearAllSelectedItems(list);\n      const itemInList = list[itemIndex];\n      if (itemInList.isSelectable) {\n        this.addSelectedItem(itemInList, itemIndex);\n        this.lastSelectedIndex = itemIndex;\n      }\n    }\n  }\n\n  /** @internal */\n  private unselectItem(list: ILfSelectable[], itemInList: ILfSelectable) {\n    const indexIndex = this.selectedItemsIndices.findIndex(\n      (selectable) => list[selectable].value.id === itemInList.value.id\n    );\n\n    this.selectedItemsIndices.splice(indexIndex, 1);\n    this.allSelected.delete(itemInList.value.id);\n    itemInList.isSelected = false;\n  }\n\n  /** @internal */\n  private clearAllSelectedItems(list: ILfSelectable[], clearAll: boolean = true) {\n    this.selectedItemsIndices.forEach((val) => {\n      if (list[val]) {\n        list[val].isSelected = false;\n      }\n    });\n    this.selectedItemsIndices = [];\n    if (clearAll) {\n      this.allSelected.clear();\n    }\n  }\n\n  /** @internal */\n  private addSelectedItem(itemInList: ILfSelectable, itemIndex: number) {\n    if (!itemInList.isSelectable) {\n      return;\n    }\n    itemInList.isSelected = true;\n    this.selectedItemsIndices.push(itemIndex);\n    this.allSelected.set(itemInList.value.id, itemInList);\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { FieldType, FieldFormat, RedirectBehavior, LoginState, LoginMode, LoginType } from './enums';\nexport { LfBreadcrumb, LfBreadcrumbsComponent } from './lf-breadcrumbs/lf-breadcrumbs-public-api';\nexport { LfToolbarComponent, ToolbarOption } from './lf-toolbar/lf-toolbar-public-api';\nexport { ItemWithId, PropertyValue, ILfSelectable, Selectable } from './LfSelectable';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lf-shared-public-api';\n"],"names":["i2"],"mappings":"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"}