@difizen/mana-app
Version:
79 lines • 2.88 kB
TypeScript
import type { Event, Disposable } from '@difizen/mana-common';
import type { SelectionProvider } from '@difizen/mana-core';
import { TreeNode } from './tree';
/**
* The tree selection service.
*/
export declare const TreeSelectionService: unique symbol;
export type TreeSelectionService = {
/**
* The tree selection, representing the selected nodes from the tree. If nothing is selected, the
* result will be empty.
*/
readonly selectedNodes: readonly Readonly<SelectableTreeNode>[];
/**
* Emitted when the selection has changed in the tree.
*/
readonly onSelectionChanged: Event<readonly Readonly<SelectableTreeNode>[]>;
/**
* Registers the given selection into the tree selection service. If the selection state changes after adding the
* `selectionOrTreeNode` argument, a selection changed event will be fired. If the argument is a tree node,
* a it will be treated as a tree selection with the default selection type.
*/
addSelection: (selectionOrTreeNode: TreeSelection | Readonly<SelectableTreeNode>) => void;
/**
* Store selection state.
*/
storeState: () => object;
/**
* Restore selection state.
*/
restoreState: (state: object) => void;
} & Disposable & SelectionProvider<readonly Readonly<SelectableTreeNode>[]>;
/**
* Representation of a tree selection.
*/
export type TreeSelection = {
/**
* The actual item that has been selected.
*/
readonly node: Readonly<SelectableTreeNode>;
/**
* The optional tree selection type. Defaults to `SelectionType.DEFAULT`;
*/
readonly type?: TreeSelection.SelectionType;
};
export declare namespace TreeSelection {
/**
* Enumeration of selection types.
*/
enum SelectionType {
DEFAULT = 0,
TOGGLE = 1,
RANGE = 2
}
function is(arg: Record<any, any> | undefined): arg is TreeSelection;
function isRange(arg: TreeSelection | SelectionType | undefined): boolean;
function isToggle(arg: TreeSelection | SelectionType | undefined): boolean;
}
/**
* A selectable tree node.
*/
export type SelectableTreeNode = {
/**
* `true` if the tree node is selected. Otherwise, `false`.
*/
selected: boolean;
/**
* `true` if the tree node has the focus. Otherwise, `false`. Defaults to `false`.
*/
focus?: boolean;
} & TreeNode;
export declare namespace SelectableTreeNode {
function is(node: TreeNode | undefined): node is SelectableTreeNode;
function isSelected(node: TreeNode | undefined): node is SelectableTreeNode;
function hasFocus(node: TreeNode | undefined): boolean;
function isVisible(node: TreeNode | undefined): node is SelectableTreeNode;
function getVisibleParent(node: TreeNode | undefined): SelectableTreeNode | undefined;
}
//# sourceMappingURL=tree-selection.d.ts.map