@termdraw/opentui 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,207 @@
1
+ export declare const BRUSHES: readonly ["#", "*", "+", "-", "=", "x", "o", ".", "|", "/", "\\"];
2
+ export declare const BOX_STYLES: readonly ["auto", "light", "heavy", "double"];
3
+ export declare const INK_COLORS: readonly ["white", "red", "orange", "yellow", "green", "cyan", "blue", "magenta"];
4
+ export type DrawMode = "select" | "box" | "line" | "paint" | "text";
5
+ export type BoxStyle = (typeof BOX_STYLES)[number];
6
+ export type InkColor = (typeof INK_COLORS)[number];
7
+ type Point = {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ export type CanvasInsets = {
12
+ left: number;
13
+ top: number;
14
+ right: number;
15
+ bottom: number;
16
+ };
17
+ type BaseDrawObject = {
18
+ id: string;
19
+ z: number;
20
+ parentId: string | null;
21
+ color: InkColor;
22
+ };
23
+ type BoxObject = BaseDrawObject & {
24
+ type: "box";
25
+ left: number;
26
+ top: number;
27
+ right: number;
28
+ bottom: number;
29
+ style: BoxStyle;
30
+ };
31
+ type LineObject = BaseDrawObject & {
32
+ type: "line";
33
+ x1: number;
34
+ y1: number;
35
+ x2: number;
36
+ y2: number;
37
+ brush: string;
38
+ };
39
+ type PaintObject = BaseDrawObject & {
40
+ type: "paint";
41
+ points: Point[];
42
+ brush: string;
43
+ };
44
+ type TextObject = BaseDrawObject & {
45
+ type: "text";
46
+ x: number;
47
+ y: number;
48
+ content: string;
49
+ };
50
+ export type DrawObject = BoxObject | LineObject | PaintObject | TextObject;
51
+ export type PointerEventLike = {
52
+ type: "down" | "up" | "drag" | "drag-end" | "scroll" | "move" | "drop" | "over" | "out";
53
+ button: number;
54
+ x: number;
55
+ y: number;
56
+ scrollDirection?: "up" | "down" | "left" | "right";
57
+ };
58
+ export declare function truncateToCells(input: string, width: number): string;
59
+ export declare function visibleCellCount(input: string): number;
60
+ export declare function padToWidth(content: string, width: number): string;
61
+ export declare class DrawState {
62
+ private canvasInsets;
63
+ private canvasWidth;
64
+ private canvasHeight;
65
+ private cursorX;
66
+ private cursorY;
67
+ private mode;
68
+ private brush;
69
+ private brushIndex;
70
+ private boxStyle;
71
+ private boxStyleIndex;
72
+ private inkColor;
73
+ private inkColorIndex;
74
+ private objects;
75
+ private selectedObjectIds;
76
+ private selectedObjectId;
77
+ private activeTextObjectId;
78
+ private pendingSelection;
79
+ private pendingLine;
80
+ private pendingBox;
81
+ private pendingPaint;
82
+ private dragState;
83
+ private eraseState;
84
+ private nextObjectNumber;
85
+ private nextZIndex;
86
+ private undoStack;
87
+ private redoStack;
88
+ private status;
89
+ private sceneDirty;
90
+ private renderCanvas;
91
+ private renderCanvasColors;
92
+ private renderConnections;
93
+ private renderConnectionColors;
94
+ constructor(viewWidth: number, viewHeight: number, insets?: CanvasInsets);
95
+ get currentMode(): DrawMode;
96
+ get currentBrush(): string;
97
+ get currentBoxStyle(): BoxStyle;
98
+ get currentInkColor(): InkColor;
99
+ get currentStatus(): string;
100
+ get currentCursorX(): number;
101
+ get currentCursorY(): number;
102
+ get width(): number;
103
+ get height(): number;
104
+ get canvasTopRow(): number;
105
+ get canvasLeftCol(): number;
106
+ get hasSelectedObject(): boolean;
107
+ get isEditingText(): boolean;
108
+ get hasActivePointerInteraction(): boolean;
109
+ ensureCanvasSize(viewWidth: number, viewHeight: number, insets?: CanvasInsets): void;
110
+ handlePointerEvent(event: PointerEventLike): void;
111
+ getModeLabel(): string;
112
+ getActivePreviewCharacters(): Map<string, string>;
113
+ getSelectedCellKeys(): Set<string>;
114
+ getSelectionMarqueeCharacters(): Map<string, string>;
115
+ getSelectionHandleCharacters(): Map<string, string>;
116
+ clearSelection(): boolean;
117
+ getCompositeCell(x: number, y: number): string;
118
+ getCompositeColor(x: number, y: number): InkColor | null;
119
+ moveCursor(dx: number, dy: number): void;
120
+ moveSelectedObjectBy(dx: number, dy: number): void;
121
+ setBrush(char: string): void;
122
+ cycleBrush(direction: 1 | -1): void;
123
+ setInkColor(color: InkColor): void;
124
+ cycleInkColor(direction: 1 | -1): void;
125
+ setBoxStyle(style: BoxStyle): void;
126
+ cycleBoxStyle(direction: 1 | -1): void;
127
+ cycleMode(): void;
128
+ setMode(next: DrawMode): void;
129
+ stampBrushAtCursor(): void;
130
+ eraseAtCursor(): void;
131
+ insertCharacter(input: string): void;
132
+ backspace(): void;
133
+ deleteAtCursor(): void;
134
+ deleteSelectedObject(): boolean;
135
+ clearCanvas(): void;
136
+ undo(): void;
137
+ redo(): void;
138
+ exportArt(): string;
139
+ private tryBeginObjectInteraction;
140
+ private beginMoveInteraction;
141
+ private placeTextCursor;
142
+ private beginEraseSession;
143
+ private finishPointerInteraction;
144
+ private updateDraggedObject;
145
+ private syncDragStateZ;
146
+ private eraseObjectAt;
147
+ private deleteTopmostObjectAt;
148
+ private createSnapshot;
149
+ private pushUndo;
150
+ private restoreSnapshot;
151
+ private ensureScene;
152
+ private paintRenderCell;
153
+ private getConnectionGlyph;
154
+ private getLinePreviewCharacters;
155
+ private getPaintPreviewCharacters;
156
+ private getBoxPreviewCharacters;
157
+ private resolveBoxConnectionStyle;
158
+ private getAutoBoxConnectionStyle;
159
+ private getObjectById;
160
+ private isObjectSelected;
161
+ private getSelectedObject;
162
+ private getSelectedObjects;
163
+ private getSelectedRootObjects;
164
+ private getSelectedObjectTrees;
165
+ private getMoveSelectionForObject;
166
+ private getActiveTextObject;
167
+ private getObjectTree;
168
+ private recomputeParentAssignments;
169
+ private setObjects;
170
+ private replaceObject;
171
+ private replaceObjects;
172
+ private removeObjectById;
173
+ private setSelectedObjects;
174
+ private syncSelection;
175
+ private findTopmostHandleAt;
176
+ private findTopmostObjectAt;
177
+ private findTopmostObjectHitAt;
178
+ private getObjectsWithinSelectionRect;
179
+ private translateObjectWithinCanvas;
180
+ private translateObjectTreeWithinCanvas;
181
+ private resizeBoxWithinCanvas;
182
+ private resizeObjectTreeWithinCanvas;
183
+ private transformObjectForResizedParent;
184
+ private mapPointBetweenRects;
185
+ private mapAxisBetweenRanges;
186
+ private clampTextIntoRect;
187
+ private adjustLineEndpointWithinCanvas;
188
+ private getOppositeBoxCorner;
189
+ private clampPointInsideCanvas;
190
+ private ensureBoxDoesNotCollapse;
191
+ private shiftObjectInsideCanvas;
192
+ private bringObjectToFront;
193
+ private bringObjectsToFront;
194
+ private createObjectId;
195
+ private allocateZIndex;
196
+ private describeRect;
197
+ private describeBoxStyle;
198
+ private describeInkColor;
199
+ private describeObject;
200
+ private objectsEqual;
201
+ private objectListsEqual;
202
+ private isInsideCanvas;
203
+ private markSceneDirty;
204
+ private setStatus;
205
+ }
206
+ export {};
207
+ //# sourceMappingURL=draw-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw-state.d.ts","sourceRoot":"","sources":["../src/draw-state.ts"],"names":[],"mappings":"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"}