| 74 | const DefaultAnimationTimeS = 0.15; |
| 75 | |
| 76 | export class LayoutModel { |
| 77 | /** |
| 78 | * Local atom holding the current tree state (source of truth during runtime) |
| 79 | */ |
| 80 | private localTreeStateAtom: PrimitiveAtom<LayoutTreeState>; |
| 81 | /** |
| 82 | * The tree state (local cache) |
| 83 | */ |
| 84 | treeState: LayoutTreeState; |
| 85 | /** |
| 86 | * Reference to the tab atom for accessing WaveObject |
| 87 | */ |
| 88 | private tabAtom: Atom<Tab>; |
| 89 | /** |
| 90 | * WaveObject atom for persistence |
| 91 | */ |
| 92 | private waveObjectAtom: Atom<LayoutState>; |
| 93 | /** |
| 94 | * Debounce timer for persistence |
| 95 | */ |
| 96 | private persistDebounceTimer: NodeJS.Timeout | null; |
| 97 | /** |
| 98 | * Set of action IDs that have been processed (prevents duplicate processing) |
| 99 | */ |
| 100 | private processedActionIds: Set<string>; |
| 101 | /** |
| 102 | * The jotai getter that is used to read atom values. |
| 103 | */ |
| 104 | getter: Getter; |
| 105 | /** |
| 106 | * The jotai setter that is used to update atom values. |
| 107 | */ |
| 108 | setter: Setter; |
| 109 | /** |
| 110 | * Callback that is invoked to render the block associated with a leaf node. |
| 111 | */ |
| 112 | renderContent?: ContentRenderer; |
| 113 | /** |
| 114 | * Callback that is invoked to render the drag preview for a leaf node. |
| 115 | */ |
| 116 | renderPreview?: PreviewRenderer; |
| 117 | /** |
| 118 | * Callback that is invoked when a node is closed. |
| 119 | */ |
| 120 | onNodeDelete?: (data: TabLayoutData) => Promise<void>; |
| 121 | /** |
| 122 | * The size of the gap between nodes in CSS pixels. |
| 123 | */ |
| 124 | gapSizePx: PrimitiveAtom<number>; |
| 125 | |
| 126 | /** |
| 127 | * The time a transition animation takes, in seconds. |
| 128 | */ |
| 129 | animationTimeS: PrimitiveAtom<number>; |
| 130 | |
| 131 | /** |
| 132 | * List of nodes that are leafs and should be rendered as a DisplayNode. |
| 133 | */ |
nothing calls this directly
no test coverage detected