febd27e3d794f3481bee61842e62ab858fe9de92bf43cdaf5e3dd7b32b6eb2dabfd45a8bd93cc60d0968a19da7a7eb0dd5659a5c047c68e63a7fa6eb2a7738 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import type { InjectionKey, UnwrapRef, VNode } from 'vue';
  2. export type Layout = 'horizontal' | 'vertical';
  3. export type PanelItemState = UnwrapRef<{
  4. uid: number;
  5. getVnode: () => VNode;
  6. el: HTMLElement;
  7. collapsible: {
  8. start?: boolean;
  9. end?: boolean;
  10. };
  11. max?: number | string;
  12. min?: number | string;
  13. resizable: boolean;
  14. size?: number | string;
  15. setIndex: (val: number) => void;
  16. }>;
  17. export interface SplitterRootContext {
  18. panels: PanelItemState[];
  19. layout: Layout;
  20. lazy: boolean;
  21. containerSize: number;
  22. movingIndex: {
  23. index: number;
  24. confirmed: boolean;
  25. } | null;
  26. percentSizes: number[];
  27. pxSizes: number[];
  28. registerPanel: (pane: PanelItemState) => void;
  29. unregisterPanel: (pane: PanelItemState) => void;
  30. onCollapse: (index: number, type: 'start' | 'end') => void;
  31. onMoveEnd: (index: number) => Promise<void>;
  32. onMoveStart: (index: number) => void;
  33. onMoving: (index: number, offset: number) => void;
  34. }
  35. export declare const splitterRootContextKey: InjectionKey<SplitterRootContext>;