{"version":3,"file":"skyux-angular-tree-component.mjs","sources":["../../../../../libs/components/angular-tree-component/src/lib/modules/shared/sky-angular-tree-component-resources.module.ts","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-context-menu.component.ts","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-context-menu.component.html","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-adapter.service.ts","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-toolbar.component.ts","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-toolbar.component.html","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-wrapper.component.ts","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-wrapper.component.html","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-node.component.ts","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree-node.component.html","../../../../../libs/components/angular-tree-component/src/lib/modules/angular-tree/angular-tree.module.ts","../../../../../libs/components/angular-tree-component/src/skyux-angular-tree-component.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-angular-tree-component' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n  SkyI18nModule,\n  SkyLibResources,\n  SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n  'EN-US': {\n    skyux_angular_tree_clear_all: { message: 'Clear all' },\n    skyux_angular_tree_click_to_expand: { message: 'Click to expand' },\n    skyux_angular_tree_collapse_all: { message: 'Collapse' },\n    skyux_angular_tree_expand_all: { message: 'Expand' },\n    skyux_angular_tree_select_all: { message: 'Select all' },\n  },\n  'FR-CA': {\n    skyux_angular_tree_clear_all: { message: 'Effacer tout' },\n    skyux_angular_tree_click_to_expand: { message: 'Cliquez pour agrandir' },\n    skyux_angular_tree_collapse_all: { message: 'Réduire' },\n    skyux_angular_tree_expand_all: { message: 'Agrandir' },\n    skyux_angular_tree_select_all: { message: 'Sélectionner tout' },\n  },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n  exports: [SkyI18nModule],\n})\nexport class SkyAngularTreeComponentResourcesModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-angular-tree-context-menu',\n  templateUrl: './angular-tree-context-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAngularTreeContextMenuComponent {}\n","<div class=\"sky-angular-tree-context-menu\">\n  <ng-content />\n</div>\n","import { Injectable, inject } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAngularTreeAdapterService {\n  readonly #coreAdapterService = inject(SkyCoreAdapterService);\n\n  public getFocusableChildren(element: HTMLElement): HTMLElement[] {\n    return this.#coreAdapterService.getFocusableChildren(element);\n  }\n\n  public setTabIndexOfFocusableEls(\n    element: HTMLElement,\n    tabIndex: number,\n  ): void {\n    const focusableEls = this.#coreAdapterService.getFocusableChildren(element);\n    let index = focusableEls.length;\n    while (index--) {\n      focusableEls[index].tabIndex = tabIndex;\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyToolbarModule } from '@skyux/layout';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-angular-tree-toolbar',\n  templateUrl: './angular-tree-toolbar.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [SkyI18nModule, SkyIconModule, SkyToolbarModule],\n})\nexport class SkyAngularTreeToolbarComponent {\n  @Input()\n  public showSelectButtons: boolean | undefined;\n\n  @Output()\n  public clearAllClick = new EventEmitter<void>();\n\n  @Output()\n  public collapseAllClick = new EventEmitter<void>();\n\n  @Output()\n  public expandAllClick = new EventEmitter<void>();\n\n  @Output()\n  public selectAllClick = new EventEmitter<void>();\n\n  public onClearAllClick(): void {\n    this.clearAllClick.emit();\n  }\n\n  public onCollapseAllClick(): void {\n    this.collapseAllClick.emit();\n  }\n\n  public onExpandAllClick(): void {\n    this.expandAllClick.emit();\n  }\n\n  public onSelectAllClick(): void {\n    this.selectAllClick.emit();\n  }\n}\n","<div class=\"sky-angular-tree-toolbar\" role=\"toolbar\">\n  <sky-toolbar>\n    @if (showSelectButtons) {\n      <sky-toolbar-item>\n        <button\n          class=\"sky-btn sky-btn-link sky-angular-tree-select-all-btn\"\n          type=\"button\"\n          (click)=\"onSelectAllClick()\"\n        >\n          {{ 'skyux_angular_tree_select_all' | skyLibResources }}\n        </button>\n      </sky-toolbar-item>\n      <sky-toolbar-item>\n        <button\n          class=\"sky-btn sky-btn-link sky-angular-tree-clear-all-btn\"\n          type=\"button\"\n          (click)=\"onClearAllClick()\"\n        >\n          {{ 'skyux_angular_tree_clear_all' | skyLibResources }}\n        </button>\n      </sky-toolbar-item>\n    }\n    <sky-toolbar-view-actions>\n      <button\n        class=\"sky-btn sky-btn-default sky-theme-margin-right-s sky-angular-tree-expand-all-btn\"\n        type=\"button\"\n        [title]=\"'skyux_angular_tree_expand_all' | skyLibResources\"\n        (click)=\"onExpandAllClick()\"\n      >\n        <sky-icon iconName=\"chevron-double-down\" />\n      </button>\n      <button\n        class=\"sky-btn sky-btn-default sky-theme-margin-right-s sky-angular-tree-collapse-all-btn\"\n        type=\"button\"\n        [title]=\"'skyux_angular_tree_collapse_all' | skyLibResources\"\n        (click)=\"onCollapseAllClick()\"\n      >\n        <sky-icon iconName=\"chevron-double-up\" />\n      </button>\n    </sky-toolbar-view-actions>\n  </sky-toolbar>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Input,\n} from '@angular/core';\nimport {\n  KEYS,\n  TREE_ACTIONS,\n  TreeComponent,\n  TreeModel,\n  TreeNode,\n} from '@blackbaud/angular-tree-component';\n\nimport { SkyAngularTreeToolbarComponent } from './angular-tree-toolbar.component';\n\n/**\n * Wraps the Angular `tree-root` component as part of the `SkyAngularTreeModule` that provides\n * SKY UX components and styles to complement the `angular-tree-component` library and apply SKY UX\n * themes and functionality to hierarchical list views. For information about the `tree-root` component, see the\n * [Angular tree component documentation](https://angular2-tree.readme.io/docs).\n */\n@Component({\n  selector: 'sky-angular-tree-wrapper',\n  templateUrl: './angular-tree-wrapper.component.html',\n  styleUrls: ['./angular-tree-wrapper.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [SkyAngularTreeToolbarComponent],\n})\nexport class SkyAngularTreeWrapperComponent implements AfterViewInit {\n  /**\n   * Whether to render the tree view in read-only mode.\n   * This mode disables selected and active states on the tree view nodes.\n   * @default false\n   */\n  @Input()\n  public readOnly: boolean | undefined = false;\n\n  /**\n   * Whether to use leaf-only selection mode. For tree views with\n   * [checkboxes](https://angular2-tree.readme.io/docs/tri-state-checkboxes),\n   * this mode limits user selections to leaf nodes and prevents users from selecting parent nodes.\n   * @default false\n   */\n  @Input()\n  public selectLeafNodesOnly: boolean | undefined = false;\n\n  /**\n   * Whether to use single-select mode. For tree views with\n   * [checkboxes](https://angular2-tree.readme.io/docs/tri-state-checkboxes),\n   * this mode limits user selections to one node at a time.\n   * @default false\n   */\n  @Input()\n  public selectSingle: boolean | undefined = false;\n\n  /**\n   * Whether to display a toolbar with buttons to expand and collapse all nodes and buttons to select and clear all checkboxes.\n   * The select and clear buttons only appear when you enable checkboxes.\n   * To enable [checkboxes](https://angular2-tree.readme.io/docs/tri-state-checkboxes).\n   * @default false\n   */\n  @Input()\n  public showToolbar: boolean | undefined = false;\n\n  public selectableNodeIds: Record<string, unknown> = {};\n\n  @ContentChild(TreeComponent)\n  public treeComponent: TreeComponent | undefined;\n\n  public ngAfterViewInit(): void {\n    if (\n      this.selectSingle &&\n      this.treeComponent?.treeModel.options.useTriState\n    ) {\n      console.warn(\n        'Single select mode should not be enabled while the tree is in triState mode (cascading selection). ' +\n          'Please set \"useTriState\" to \"false\" if you want to remain in single select mode.',\n      );\n    }\n    this.#overrideActionMapping();\n  }\n\n  public multiselectable(): boolean {\n    return (\n      !!this.treeComponent &&\n      this.treeComponent.treeModel.options.useCheckbox &&\n      !this.selectSingle\n    );\n  }\n\n  public onClearAllClick(): void {\n    /* istanbul ignore else */\n    if (!this.selectSingle && this.treeComponent) {\n      const currentState = this.treeComponent.treeModel.getState();\n      this.treeComponent.state = {\n        ...currentState,\n        selectedLeafNodeIds: {},\n      };\n    }\n  }\n\n  public onCollapseAllClick(): void {\n    this.treeComponent?.treeModel.collapseAll();\n  }\n\n  public onExpandAllClick(): void {\n    this.treeComponent?.treeModel.expandAll();\n  }\n\n  public onSelectAllClick(): void {\n    /* istanbul ignore else */\n    if (!this.selectSingle && this.treeComponent) {\n      // Get a list of all node ids that are selectable.\n      this.selectableNodeIds = {};\n      const getSelectableNodeIds = (node: TreeNode): void => {\n        const selectable =\n          node.isSelectable() &&\n          !(node.hasChildren && this.selectLeafNodesOnly);\n        if (selectable && !node.data.virtual) {\n          this.selectableNodeIds[node.id] = true;\n        }\n        if (!node.children) {\n          return;\n        }\n        node.children.forEach((child) => getSelectableNodeIds(child));\n      };\n      getSelectableNodeIds(this.treeComponent.treeModel.virtualRoot);\n\n      // Update tree state with new list of selected node ids.\n      const currentState = this.treeComponent.treeModel.getState();\n      this.treeComponent.state = {\n        ...currentState,\n        selectedLeafNodeIds: this.selectableNodeIds,\n      };\n    }\n  }\n\n  public showSelectButtons(): boolean {\n    return (\n      !!this.treeComponent &&\n      this.treeComponent.treeModel.options.useCheckbox &&\n      !this.selectSingle\n    );\n  }\n\n  #isSelectable(node: TreeNode): boolean {\n    return node.isLeaf || !node.hasChildren || !this.selectLeafNodesOnly;\n  }\n\n  #nodeDefaultAction(tree: TreeModel, node: TreeNode, event: any): void {\n    if (this.readOnly) {\n      return;\n    }\n\n    if (node.options.useCheckbox && this.#isSelectable(node)) {\n      this.#toggleSelected(node, event);\n    } else {\n      TREE_ACTIONS.TOGGLE_ACTIVE(tree, node, event);\n    }\n\n    return;\n  }\n\n  #onKeyDownAction(tree: TreeModel, node: TreeNode, event: any): void {\n    const targetNodeId = event.target.getAttribute('data-node-id');\n\n    // Key press did not happen on the node.\n    if (!node || targetNodeId !== node.id.toString()) {\n      // angular-tree-component will preventDefault() on anything using a key action handler,\n      // thus stopping \"enter\" and \"space\" keys to throw \"click\" events on interactive elements.\n      // This logic ensures components looking for \"clicks\" on those keystrokes still work (dropdown component).\n      // https://github.com/500tech/angular-tree-component/blob/master/lib/models/tree.model.ts#L341\n      /* istanbul ignore else */\n      if (event.defaultPrevented) {\n        event.target.click();\n      }\n\n      return;\n    }\n\n    this.#nodeDefaultAction(tree, node, event);\n  }\n\n  #overrideActionMapping(): void {\n    const defaultActionMapping =\n      this.treeComponent?.treeModel.options.actionMapping;\n\n    if (defaultActionMapping?.mouse) {\n      // Override default click/enter/space action to check for unsupported options (leaf node, single-select).\n      defaultActionMapping.mouse.click = (tree, node, event): void =>\n        this.#nodeDefaultAction(tree, node, event);\n    }\n\n    if (defaultActionMapping?.keys) {\n      defaultActionMapping.keys[KEYS.SPACE] = (tree, node, event): void =>\n        this.#onKeyDownAction(tree, node, event);\n      defaultActionMapping.keys[KEYS.ENTER] = (tree, node, event): void =>\n        this.#onKeyDownAction(tree, node, event);\n\n      // Disable left/right arrow keys to support navigating through interactive elements with keyboard.\n      // See onArrowLeft() / onArrowRight() methods inside the angular-tree-node.component.ts.\n      /* istanbul ignore next */\n      defaultActionMapping.keys[KEYS.RIGHT] = (tree, node, $event): void =>\n        undefined;\n      /* istanbul ignore next */\n      defaultActionMapping.keys[KEYS.LEFT] = (tree, node, $event): void =>\n        undefined;\n      /* istanbul ignore next */\n      defaultActionMapping.keys[KEYS.DOWN] = (tree, node, $event): void =>\n        undefined;\n      /* istanbul ignore next */\n      defaultActionMapping.keys[KEYS.UP] = (tree, node, $event): void =>\n        undefined;\n    }\n  }\n\n  #toggleSelected(node: TreeNode, event: any): void {\n    // If single-selection is enabled, only select the node clicked.\n    if (this.selectSingle && !node.isSelected) {\n      const oldState = this.treeComponent?.treeModel.getState();\n      const newState = {\n        expandedNodeIds: oldState?.expandedNodeIds,\n        selectedLeafNodeIds: Object.assign({}, node.id, { [node.id]: true }),\n        activeNodeIds: oldState?.activeNodeIds,\n        hiddenNodeIds: oldState?.hiddenNodeIds,\n        focusedNodeId: node.id,\n      };\n      // Reconstruct the state in one go, so we don't create multiple events for the consumer.\n      this.treeComponent?.treeModel.setState(newState);\n    } else {\n      TREE_ACTIONS.TOGGLE_SELECTED(node.treeModel, node, event);\n    }\n  }\n}\n","<div\n  class=\"sky-angular-tree-wrapper\"\n  [class.sky-angular-tree-read-only]=\"readOnly\"\n>\n  @if (showToolbar) {\n    <sky-angular-tree-toolbar\n      [showSelectButtons]=\"showSelectButtons()\"\n      (clearAllClick)=\"onClearAllClick()\"\n      (collapseAllClick)=\"onCollapseAllClick()\"\n      (expandAllClick)=\"onExpandAllClick()\"\n      (selectAllClick)=\"onSelectAllClick()\"\n    />\n  }\n  <div\n    class=\"sky-angular-tree-root\"\n    role=\"tree\"\n    [attr.aria-multiselectable]=\"multiselectable()\"\n  >\n    <ng-content select=\"tree-root\" />\n  </div>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n  inject,\n} from '@angular/core';\nimport {\n  ITreeState,\n  TreeModule,\n  TreeNode,\n} from '@blackbaud/angular-tree-component';\nimport { SkyContentInfoProvider } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\n\nimport { SkyAngularTreeAdapterService } from './angular-tree-adapter.service';\nimport { SkyAngularTreeContextMenuComponent } from './angular-tree-context-menu.component';\nimport { SkyAngularTreeWrapperComponent } from './angular-tree-wrapper.component';\n\n/**\n * Replaces the default tree node template with a SKY UX node as part of the `SkyAngularTreeModule` that\n * provides SKY UX components and styles to complement the `angular-tree-component` library and apply SKY UX\n * themes and functionality to hierarchical list views. You must wrap this component in an `ng-template`\n * tag with the template reference variable `#treeNodeFullTemplate`. For information about tree node templates,\n * see the [Angular tree component documentation](https://angular2-tree.readme.io/docs/templates).\n * To display context menus with actions for individual items in hierarchical lists, place\n * [dropdowns](https://developer.blackbaud.com/skyux/components/dropdown) inside the\n * Angular tree node component, which automatically handles styling and positioning for context menus.\n */\n@Component({\n  selector: 'sky-angular-tree-node',\n  templateUrl: './angular-tree-node.component.html',\n  providers: [SkyAngularTreeAdapterService, SkyContentInfoProvider],\n  imports: [\n    TreeModule,\n    SkyAngularTreeContextMenuComponent,\n    SkyCheckboxModule,\n    SkyHelpInlineModule,\n    SkyIconModule,\n    NgTemplateOutlet,\n  ],\n})\nexport class SkyAngularTreeNodeComponent implements AfterViewInit, OnInit {\n  /**\n   * The `index` property from the parent `ng-template`.\n   * @required\n   */\n  @Input()\n  public index: number | undefined;\n\n  /**\n   * The `node` property from the parent `ng-template`. For information about the `TreeNode` object, see the\n   * [Angular tree component documentation](https://angular2-tree.readme.io/docs/api).\n   * @required\n   */\n  @Input()\n  public node: TreeNode | undefined;\n\n  /**\n   * The `templates` property from the parent `ng-template`.\n   */\n  @Input()\n  public templates: any;\n\n  /**\n   * A help key that identifies the global help content to display. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is placed beside the tree node label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n   * as configured by the application.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * The content of the help popover. When specified, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the tree node. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  public set childFocusIndex(value: number | undefined) {\n    if (value !== this.#_childFocusIndex) {\n      this.#_childFocusIndex = value;\n      if (this.#focusableChildren.length > 0 && value !== undefined) {\n        this.#focusableChildren[value].focus();\n      } else {\n        this.nodeContentWrapperRef?.nativeElement.focus();\n      }\n    }\n  }\n\n  public get childFocusIndex(): number | undefined {\n    return this.#_childFocusIndex;\n  }\n\n  public set focused(value: boolean) {\n    this.tabIndex = value ? 0 : -1;\n    if (value) {\n      this.nodeContentWrapperRef?.nativeElement.focus();\n    }\n  }\n\n  public set isPartiallySelected(value: boolean) {\n    if (value !== this.#_isPartiallySelected) {\n      this.#_isPartiallySelected = value;\n      this.#changeDetectorRef.markForCheck();\n    }\n  }\n\n  public get isPartiallySelected(): boolean {\n    return this.#_isPartiallySelected;\n  }\n\n  public set isSelected(value: boolean) {\n    if (value !== this.#_isSelected) {\n      this.#_isSelected = value;\n      this.#changeDetectorRef.markForCheck();\n    }\n  }\n\n  public get isSelected(): boolean {\n    return this.#_isSelected;\n  }\n\n  public set tabIndex(value: number) {\n    this.#_tabIndex = value;\n  }\n\n  public get tabIndex(): number {\n    return this.#_tabIndex;\n  }\n\n  @ViewChild('nodeContentWrapper', { read: ElementRef })\n  public nodeContentWrapperRef: ElementRef | undefined;\n\n  protected set nodeName(value: string) {\n    this.#_nodeName = value;\n    this.#contentInfoProvider.patchInfo({\n      descriptor: { type: 'text', value },\n    });\n  }\n\n  protected get nodeName(): string {\n    return this.#_nodeName;\n  }\n\n  #focusableChildren: HTMLElement[] = [];\n\n  #mouseDown = false;\n\n  #_childFocusIndex: number | undefined;\n\n  #_isPartiallySelected = false;\n\n  #_isSelected = false;\n\n  #_tabIndex = -1;\n\n  #_nodeName = '';\n\n  readonly #adapterService = inject(SkyAngularTreeAdapterService);\n  readonly #changeDetectorRef = inject(ChangeDetectorRef);\n  readonly #contentInfoProvider = inject(SkyContentInfoProvider);\n  readonly #skyAngularTreeWrapper = inject(SkyAngularTreeWrapperComponent, {\n    optional: true,\n  });\n\n  public ngOnInit(): void {\n    if (!this.#skyAngularTreeWrapper) {\n      console.error(\n        `<sky-angular-tree-node-wrapper> must be wrapped inside a <sky-angular-tree-wrapper> component.`,\n      );\n    }\n\n    if (this.node) {\n      this.nodeName = this.node.data.name;\n      // Because we're binding the checkbox to node's children properties, we need to manually control change detection.\n      // Here, we listen to the tree's state and force change detection in the setters if the value has changed.\n      this.node.treeModel.subscribeToState((state: ITreeState) => {\n        if (this.node) {\n          this.isSelected = this.node.isSelected;\n          this.isPartiallySelected = this.node.isPartiallySelected;\n\n          if (state.focusedNodeId) {\n            this.focused = state.focusedNodeId === this.node.id;\n          }\n        }\n      });\n\n      this.node.treeModel.subscribe('updateData', () => {\n        if (this.node) {\n          this.nodeName = this.node.data.name;\n        }\n      });\n\n      // Make the first root node tabbable.\n      if (this.node.isRoot && this.node.index === 0) {\n        this.tabIndex = 0;\n      }\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    // Wait 1s for the node to render, then reset all child tabIndexes to -1.\n    // Units smaller than 1s may consistently fail if there are many nodes, or multiple trees are on the same screen.\n    setTimeout(() => {\n      if (this.nodeContentWrapperRef) {\n        this.#focusableChildren = this.#adapterService.getFocusableChildren(\n          this.nodeContentWrapperRef.nativeElement,\n        );\n        this.#adapterService.setTabIndexOfFocusableEls(\n          this.nodeContentWrapperRef.nativeElement,\n          -1,\n        );\n      }\n    }, 1000);\n  }\n\n  /**\n   * If single-select, set aria-selected=true for the selected node and undefined for all the others.\n   * For multiple-select, set aria-selected to either true or false.\n   * If node cannot be selected, aria-selected should be undefined (e.g. parent nodes in leaf-select-only mode).\n   * @internal\n   */\n  public ariaSelected(): boolean | undefined {\n    if (!this.#skyAngularTreeWrapper) {\n      return;\n    }\n\n    if (this.#skyAngularTreeWrapper.selectSingle) {\n      return this.isSelected ? true : undefined;\n    }\n\n    if (!this.#isSelectable()) {\n      return;\n    }\n\n    return !!this.isSelected;\n  }\n\n  public showCheckbox(): boolean {\n    // Check for checkbox mode enabled, but also respect leaf-node and single-select settings.\n    return (\n      !!this.node &&\n      this.node.options.useCheckbox &&\n      this.#isSelectable() &&\n      (!this.#skyAngularTreeWrapper ||\n        !this.#skyAngularTreeWrapper.selectSingle)\n    );\n  }\n\n  public showSelectedClass(): boolean {\n    return this.#isSelectable() && this.isSelected && !this.isPartiallySelected;\n  }\n\n  public showActiveClass(): boolean {\n    return (\n      !!this.node &&\n      this.node.isActive &&\n      !this.node.treeModel.options.useCheckbox\n    );\n  }\n\n  public showTogglePlaceholder(): boolean {\n    return (\n      !this.node?.hasChildren &&\n      !this.#skyAngularTreeWrapper?.selectLeafNodesOnly\n    );\n  }\n\n  public onFocus(): void {\n    // <tree-node-content> has its own click handler, so we need to check if this focus event\n    // is coming from the mouse click or the keyboard to prevent the logic from running twice.\n    if (!this.#mouseDown) {\n      this.node?.treeModel.setFocus(true);\n      this.node?.focus();\n      this.childFocusIndex = undefined;\n    }\n  }\n\n  public onMouseDown(): void {\n    this.#mouseDown = true;\n  }\n\n  public onMouseUp(): void {\n    this.#mouseDown = false;\n  }\n\n  public onKeyDown(event: KeyboardEvent): void {\n    /* istanbul ignore else */\n    if (document.activeElement === event.target) {\n      const key = event.key.toLowerCase();\n      switch (key) {\n        case 'up':\n        case 'arrowup':\n          // Focus on previous node.\n          this.node?.treeModel.focusPreviousNode();\n          break;\n\n        case 'down':\n        case 'arrowdown':\n          // Focus on next node.\n          this.node?.treeModel.focusNextNode();\n          break;\n\n        case 'left':\n        case 'arrowleft':\n          // Cycle backwards through interactive child elements\n          // If user reaches the beginning, activate drill up.\n          /* istanbul ignore else */\n          if (this.childFocusIndex !== undefined) {\n            if (this.childFocusIndex === 0) {\n              this.childFocusIndex = undefined;\n            } else {\n              this.childFocusIndex--;\n            }\n          } else {\n            this.node?.setIsExpanded(false);\n          }\n          event.stopPropagation();\n          event.preventDefault();\n          break;\n\n        case 'right':\n        case 'arrowright':\n          // Cycle forward through interactive child elements.\n          // If user reaches the end, activate drill down.\n          /* istanbul ignore else */\n          if (\n            this.#focusableChildren.length <= 0 ||\n            this.childFocusIndex === this.#focusableChildren.length - 1\n          ) {\n            this.node?.setIsExpanded(true);\n          } else {\n            if (this.childFocusIndex === undefined) {\n              this.childFocusIndex = 0;\n            } else {\n              this.childFocusIndex++;\n            }\n          }\n          event.stopPropagation();\n          event.preventDefault();\n          break;\n\n        default:\n          break;\n      }\n    }\n  }\n\n  #isSelectable(): boolean {\n    if (this.#skyAngularTreeWrapper) {\n      return (\n        !!this.node &&\n        (this.node.isLeaf ||\n          !this.node.hasChildren ||\n          !this.#skyAngularTreeWrapper.selectLeafNodesOnly)\n      );\n    } else {\n      return false;\n    }\n  }\n}\n","@if (node && index !== undefined) {\n  <div\n    [class]=\"node.getClass()\"\n    [class.tree-node]=\"true\"\n    [class.tree-node-active]=\"node.isActive\"\n    [class.tree-node-collapsed]=\"node.isCollapsed && node.hasChildren\"\n    [class.tree-node-expanded]=\"node.isExpanded && node.hasChildren\"\n    [class.tree-node-focused]=\"node.isFocused\"\n    [class.tree-node-leaf]=\"node.isLeaf\"\n  >\n    @if (index === 0) {\n      <tree-node-drop-slot [dropIndex]=\"node.index\" [node]=\"node.parent\" />\n    }\n\n    <!-- #region <tree-node-wrapper> custom template --->\n    <div\n      #nodeContentWrapper\n      class=\"node-wrapper\"\n      role=\"treeitem\"\n      [allowDragoverStyling]=\"node.allowDragoverStyling()\"\n      [attr.aria-current]=\"node.isActive\"\n      [attr.aria-expanded]=\"node.children?.length ? node.isExpanded : null\"\n      [attr.aria-selected]=\"ariaSelected()\"\n      [attr.data-node-id]=\"node.id\"\n      [attr.tabindex]=\"tabIndex\"\n      [class.sky-angular-tree-node-active]=\"showActiveClass()\"\n      [class.sky-angular-tree-node-has-checkbox]=\"showCheckbox()\"\n      [class.sky-angular-tree-node-selected]=\"showSelectedClass()\"\n      [style.--sky-angular-tree-node-padding]=\"node.getNodePadding()\"\n      [treeAllowDrop]=\"node.allowDrop\"\n      [treeDrag]=\"node\"\n      [treeDragEnabled]=\"node.allowDrag()\"\n      (contextmenu)=\"node.mouseAction('contextMenu', $event)\"\n      (dblclick)=\"node.mouseAction('dblClick', $event)\"\n      (focus)=\"onFocus()\"\n      (mousedown)=\"onMouseDown()\"\n      (mouseup)=\"onMouseUp()\"\n      (keydown)=\"onKeyDown($event)\"\n      (treeDrop)=\"node.onDrop($event)\"\n      (treeDropDragEnter)=\"node.mouseAction('dragEnter', $event)\"\n      (treeDropDragLeave)=\"node.mouseAction('dragLeave', $event)\"\n      (treeDropDragOver)=\"node.mouseAction('dragOver', $event)\"\n    >\n      <!-- #region <tree-node-expander> custom template --->\n      <div class=\"sky-toggle-children-wrapper\">\n        @if (node.hasChildren) {\n          <button\n            class=\"sky-btn sky-btn-icon-borderless sky-toggle-children\"\n            tabindex=\"-1\"\n            type=\"button\"\n            [attr.aria-label]=\"nodeName\"\n            [class.toggle-children-wrapper-expanded]=\"node.isExpanded\"\n            [class.toggle-children-wrapper-collapsed]=\"node.isCollapsed\"\n            (click)=\"node.mouseAction('expanderClick', $event)\"\n          >\n            <sky-icon\n              [iconName]=\"node.isExpanded ? 'chevron-down' : 'chevron-right'\"\n            />\n          </button>\n        }\n        @if (showTogglePlaceholder()) {\n          <span class=\"toggle-children-placeholder\"> </span>\n        }\n      </div>\n      <!-- #endregion <tree-node-expander> --->\n\n      <!-- Note: we've made changes to the click event, tabindex, and classes when compared to the original template. -->\n      <!-- https://github.com/500tech/angular-tree-component/blob/master/lib/components/tree-node-wrapper.component.ts -->\n      <div class=\"node-content-wrapper\">\n        @if (showCheckbox()) {\n          <sky-checkbox\n            [checked]=\"isSelected\"\n            [id]=\"node.data.id\"\n            [label]=\"nodeName\"\n            [indeterminate]=\"isPartiallySelected\"\n            (change)=\"node.mouseAction('checkboxClick', $event)\"\n          />\n        }\n\n        <sky-angular-tree-context-menu>\n          <ng-content select=\"sky-dropdown\" />\n        </sky-angular-tree-context-menu>\n\n        <tree-node-content\n          [index]=\"index\"\n          [node]=\"node\"\n          [template]=\"templates?.treeNodeTemplate\"\n          (click)=\"node.mouseAction('click', $event)\"\n        /><span class=\"sky-control-help-container\">\n          @if (helpKey || helpPopoverContent) {\n            <sky-help-inline\n              [helpKey]=\"helpKey\"\n              [labelText]=\"nodeName\"\n              [popoverContent]=\"helpPopoverContent\"\n              [popoverTitle]=\"helpPopoverTitle\"\n            />\n          } @else {\n            <ng-content select=\".sky-control-help\" />\n          }\n        </span>\n      </div>\n    </div>\n\n    <ng-container\n      [ngTemplateOutlet]=\"templates?.treeNodeWrapperTemplate\"\n      [ngTemplateOutletContext]=\"{\n        $implicit: node,\n        node: node,\n        index: index,\n        templates: templates\n      }\"\n    />\n    <!-- #endregion <tree-node-wrapper> -->\n\n    <tree-node-children role=\"group\" [node]=\"node\" [templates]=\"templates\" />\n\n    <tree-node-drop-slot [dropIndex]=\"node.index + 1\" [node]=\"node.parent\" />\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport { SkyCoreAdapterService } from '@skyux/core';\n\nimport { SkyAngularTreeComponentResourcesModule } from '../shared/sky-angular-tree-component-resources.module';\n\nimport { SkyAngularTreeContextMenuComponent } from './angular-tree-context-menu.component';\nimport { SkyAngularTreeNodeComponent } from './angular-tree-node.component';\nimport { SkyAngularTreeToolbarComponent } from './angular-tree-toolbar.component';\nimport { SkyAngularTreeWrapperComponent } from './angular-tree-wrapper.component';\n\n@NgModule({\n  imports: [\n    SkyAngularTreeComponentResourcesModule,\n    SkyAngularTreeContextMenuComponent,\n    SkyAngularTreeNodeComponent,\n    SkyAngularTreeToolbarComponent,\n    SkyAngularTreeWrapperComponent,\n  ],\n  providers: [SkyCoreAdapterService],\n  exports: [SkyAngularTreeNodeComponent, SkyAngularTreeWrapperComponent],\n})\nexport class SkyAngularTreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i4"],"mappings":"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"}