treeUtil.d.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import * as React from 'react';
  2. import type { BasicDataNode, DataEntity, DataNode, EventDataNode, FieldNames, FlattenNode, GetKey, Key, KeyEntities, NodeElement, TreeNodeProps } from '../interface';
  3. export declare function getPosition(level: string | number, index: number): string;
  4. export declare function isTreeNode(node: NodeElement): boolean;
  5. export declare function getKey(key: Key, pos: string): React.Key;
  6. export declare function fillFieldNames(fieldNames?: FieldNames): Required<FieldNames>;
  7. /**
  8. * Warning if TreeNode do not provides key
  9. */
  10. export declare function warningWithoutKey(treeData: DataNode[], fieldNames: FieldNames): void;
  11. /**
  12. * Convert `children` of Tree into `treeData` structure.
  13. */
  14. export declare function convertTreeToData(rootNodes: React.ReactNode): DataNode[];
  15. /**
  16. * Flat nest tree data into flatten list. This is used for virtual list render.
  17. * @param treeNodeList Origin data node list
  18. * @param expandedKeys
  19. * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).
  20. */
  21. export declare function flattenTreeData<TreeDataType extends BasicDataNode = DataNode>(treeNodeList: TreeDataType[], expandedKeys: Key[] | true, fieldNames: FieldNames): FlattenNode<TreeDataType>[];
  22. type ExternalGetKey = GetKey<DataNode> | string;
  23. interface TraverseDataNodesConfig {
  24. childrenPropName?: string;
  25. externalGetKey?: ExternalGetKey;
  26. fieldNames?: FieldNames;
  27. }
  28. /**
  29. * Traverse all the data by `treeData`.
  30. * Please not use it out of the `rc-tree` since we may refactor this code.
  31. */
  32. export declare function traverseDataNodes(dataNodes: DataNode[], callback: (data: {
  33. node: DataNode;
  34. index: number;
  35. pos: string;
  36. key: Key;
  37. parentPos: string | number;
  38. level: number;
  39. nodes: DataNode[];
  40. }) => void, config?: TraverseDataNodesConfig | string): void;
  41. interface Wrapper {
  42. posEntities: Record<string, DataEntity>;
  43. keyEntities: KeyEntities;
  44. }
  45. /**
  46. * Convert `treeData` into entity records.
  47. */
  48. export declare function convertDataToEntities(dataNodes: DataNode[], { initWrapper, processEntity, onProcessFinished, externalGetKey, childrenPropName, fieldNames, }?: {
  49. initWrapper?: (wrapper: Wrapper) => Wrapper;
  50. processEntity?: (entity: DataEntity, wrapper: Wrapper) => void;
  51. onProcessFinished?: (wrapper: Wrapper) => void;
  52. externalGetKey?: ExternalGetKey;
  53. childrenPropName?: string;
  54. fieldNames?: FieldNames;
  55. },
  56. /** @deprecated Use `config.externalGetKey` instead */
  57. legacyExternalGetKey?: ExternalGetKey): Wrapper;
  58. export interface TreeNodeRequiredProps<TreeDataType extends BasicDataNode = DataNode> {
  59. expandedKeys: Key[];
  60. selectedKeys: Key[];
  61. loadedKeys: Key[];
  62. loadingKeys: Key[];
  63. checkedKeys: Key[];
  64. halfCheckedKeys: Key[];
  65. dragOverNodeKey: Key;
  66. dropPosition: number;
  67. keyEntities: KeyEntities<TreeDataType>;
  68. }
  69. /**
  70. * Get TreeNode props with Tree props.
  71. */
  72. export declare function getTreeNodeProps<TreeDataType extends BasicDataNode = DataNode>(key: Key, { expandedKeys, selectedKeys, loadedKeys, loadingKeys, checkedKeys, halfCheckedKeys, dragOverNodeKey, dropPosition, keyEntities, }: TreeNodeRequiredProps<TreeDataType>): {
  73. eventKey: React.Key;
  74. expanded: boolean;
  75. selected: boolean;
  76. loaded: boolean;
  77. loading: boolean;
  78. checked: boolean;
  79. halfChecked: boolean;
  80. pos: string;
  81. dragOver: boolean;
  82. dragOverGapTop: boolean;
  83. dragOverGapBottom: boolean;
  84. };
  85. export declare function convertNodePropsToEventData<TreeDataType extends BasicDataNode = DataNode>(props: TreeNodeProps<TreeDataType>): EventDataNode<TreeDataType>;
  86. export {};