@memberjunction/ng-whiteboard 0.0.1 → 5.42.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.
- package/README.md +302 -28
- package/dist/lib/whiteboard-agent-sees-popover.component.d.ts +31 -0
- package/dist/lib/whiteboard-agent-sees-popover.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-agent-sees-popover.component.js +132 -0
- package/dist/lib/whiteboard-agent-sees-popover.component.js.map +1 -0
- package/dist/lib/whiteboard-board.component.d.ts +458 -0
- package/dist/lib/whiteboard-board.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-board.component.js +2357 -0
- package/dist/lib/whiteboard-board.component.js.map +1 -0
- package/dist/lib/whiteboard-context-menu.d.ts +57 -0
- package/dist/lib/whiteboard-context-menu.d.ts.map +1 -0
- package/dist/lib/whiteboard-context-menu.js +69 -0
- package/dist/lib/whiteboard-context-menu.js.map +1 -0
- package/dist/lib/whiteboard-export.d.ts +94 -0
- package/dist/lib/whiteboard-export.d.ts.map +1 -0
- package/dist/lib/whiteboard-export.js +592 -0
- package/dist/lib/whiteboard-export.js.map +1 -0
- package/dist/lib/whiteboard-host.component.d.ts +174 -0
- package/dist/lib/whiteboard-host.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-host.component.js +758 -0
- package/dist/lib/whiteboard-host.component.js.map +1 -0
- package/dist/lib/whiteboard-pages.component.d.ts +83 -0
- package/dist/lib/whiteboard-pages.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-pages.component.js +211 -0
- package/dist/lib/whiteboard-pages.component.js.map +1 -0
- package/dist/lib/whiteboard-snapshot.component.d.ts +30 -0
- package/dist/lib/whiteboard-snapshot.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-snapshot.component.js +91 -0
- package/dist/lib/whiteboard-snapshot.component.js.map +1 -0
- package/dist/lib/whiteboard-srcdoc.pipe.d.ts +60 -0
- package/dist/lib/whiteboard-srcdoc.pipe.d.ts.map +1 -0
- package/dist/lib/whiteboard-srcdoc.pipe.js +75 -0
- package/dist/lib/whiteboard-srcdoc.pipe.js.map +1 -0
- package/dist/lib/whiteboard-state.d.ts +1113 -0
- package/dist/lib/whiteboard-state.d.ts.map +1 -0
- package/dist/lib/whiteboard-state.js +1396 -0
- package/dist/lib/whiteboard-state.js.map +1 -0
- package/dist/lib/whiteboard-toolbar.component.d.ts +95 -0
- package/dist/lib/whiteboard-toolbar.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-toolbar.component.js +344 -0
- package/dist/lib/whiteboard-toolbar.component.js.map +1 -0
- package/dist/lib/whiteboard-tools.d.ts +103 -0
- package/dist/lib/whiteboard-tools.d.ts.map +1 -0
- package/dist/lib/whiteboard-tools.js +748 -0
- package/dist/lib/whiteboard-tools.js.map +1 -0
- package/dist/lib/whiteboard-widget-bridge.d.ts +217 -0
- package/dist/lib/whiteboard-widget-bridge.d.ts.map +1 -0
- package/dist/lib/whiteboard-widget-bridge.js +254 -0
- package/dist/lib/whiteboard-widget-bridge.js.map +1 -0
- package/dist/lib/whiteboard-zoom.component.d.ts +55 -0
- package/dist/lib/whiteboard-zoom.component.d.ts.map +1 -0
- package/dist/lib/whiteboard-zoom.component.js +139 -0
- package/dist/lib/whiteboard-zoom.component.js.map +1 -0
- package/dist/lib/whiteboard.module.d.ts +29 -0
- package/dist/lib/whiteboard.module.d.ts.map +1 -0
- package/dist/lib/whiteboard.module.js +78 -0
- package/dist/lib/whiteboard.module.js.map +1 -0
- package/dist/public-api.d.ts +49 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +59 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +43 -6
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
import { AfterViewChecked, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { WhiteboardBounds, WhiteboardConnectorItem, WhiteboardFontFamily, WhiteboardHighlightItem, WhiteboardHtmlItem, WhiteboardImageItem, WhiteboardInkItem, WhiteboardItem, WhiteboardMarkdownItem, WhiteboardPoint, WhiteboardShapeItem, WhiteboardState, WhiteboardStickyItem, WhiteboardTextItem } from './whiteboard-state';
|
|
3
|
+
import { WhiteboardTool, WhiteboardTextStyleEvent } from './whiteboard-toolbar.component';
|
|
4
|
+
import { WhiteboardWidgetInteractionEvent, WhiteboardWidgetSubmitEvent, WhiteboardWidgetSubmittingEventArgs } from './whiteboard-widget-bridge';
|
|
5
|
+
import { WhiteboardContextMenuAction, WhiteboardContextMenuActionID } from './whiteboard-context-menu';
|
|
6
|
+
import { WhiteboardPageChipContextMenuEvent } from './whiteboard-pages.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/** The agent presence cursor state (input-driven; the host animates it to mutation points). */
|
|
9
|
+
export interface WhiteboardAgentPresence {
|
|
10
|
+
Active: boolean;
|
|
11
|
+
X: number;
|
|
12
|
+
Y: number;
|
|
13
|
+
Label: string;
|
|
14
|
+
}
|
|
15
|
+
/** Item kinds whose content can be committed through an in-board editor. */
|
|
16
|
+
export type WhiteboardEditableContentKind = 'sticky' | 'text' | 'shape' | 'markdown' | 'html';
|
|
17
|
+
/**
|
|
18
|
+
* BEFORE-event args for the board/host `ContentApplying` output — raised when an
|
|
19
|
+
* in-board editor commit (inline sticky/text/shape edit, or the markdown/HTML rich
|
|
20
|
+
* editor's Apply/Done) is about to write the draft into the state engine. Handlers run
|
|
21
|
+
* synchronously; set {@link Cancel} to `true` to discard the commit (the item keeps its
|
|
22
|
+
* previous content and `ContentApplied` never fires). Handlers may also rewrite
|
|
23
|
+
* {@link Content} / {@link Title} — the edited values are what gets applied.
|
|
24
|
+
*/
|
|
25
|
+
export interface WhiteboardContentApplyingEventArgs {
|
|
26
|
+
/** The target item's ID. */
|
|
27
|
+
ItemID: string;
|
|
28
|
+
/** The target item's kind (decides which field the content lands in). */
|
|
29
|
+
Kind: WhiteboardEditableContentKind;
|
|
30
|
+
/** The committed content: Text (sticky/text), Label (shape), Markdown or Html source. */
|
|
31
|
+
Content: string;
|
|
32
|
+
/** HTML widgets only: the committed header title ('' clears it). */
|
|
33
|
+
Title?: string;
|
|
34
|
+
/** Set to `true` (in a synchronous handler) to discard the commit. */
|
|
35
|
+
Cancel: boolean;
|
|
36
|
+
}
|
|
37
|
+
/** AFTER-event args for the board/host `ContentApplied` output — the commit applied. */
|
|
38
|
+
export interface WhiteboardContentAppliedEventArgs {
|
|
39
|
+
/** The updated item's ID. */
|
|
40
|
+
ItemID: string;
|
|
41
|
+
/** The updated item's kind. */
|
|
42
|
+
Kind: WhiteboardEditableContentKind;
|
|
43
|
+
/** The content that was applied. */
|
|
44
|
+
Content: string;
|
|
45
|
+
/** HTML widgets only: the applied header title. */
|
|
46
|
+
Title?: string;
|
|
47
|
+
}
|
|
48
|
+
type ResizeHandle = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w';
|
|
49
|
+
type BoardInteraction = {
|
|
50
|
+
Type: 'move';
|
|
51
|
+
ItemID: string;
|
|
52
|
+
StartX: number;
|
|
53
|
+
StartY: number;
|
|
54
|
+
OrigBounds: WhiteboardBounds;
|
|
55
|
+
DX: number;
|
|
56
|
+
DY: number;
|
|
57
|
+
Moved: boolean;
|
|
58
|
+
Group: boolean;
|
|
59
|
+
} | {
|
|
60
|
+
Type: 'resize';
|
|
61
|
+
ItemID: string;
|
|
62
|
+
Handle: ResizeHandle;
|
|
63
|
+
StartX: number;
|
|
64
|
+
StartY: number;
|
|
65
|
+
OrigBounds: WhiteboardBounds;
|
|
66
|
+
CurBounds: WhiteboardBounds;
|
|
67
|
+
} | {
|
|
68
|
+
Type: 'pen';
|
|
69
|
+
Points: WhiteboardPoint[];
|
|
70
|
+
} | {
|
|
71
|
+
Type: 'shape';
|
|
72
|
+
StartX: number;
|
|
73
|
+
StartY: number;
|
|
74
|
+
CurX: number;
|
|
75
|
+
CurY: number;
|
|
76
|
+
} | {
|
|
77
|
+
Type: 'marquee';
|
|
78
|
+
StartX: number;
|
|
79
|
+
StartY: number;
|
|
80
|
+
CurX: number;
|
|
81
|
+
CurY: number;
|
|
82
|
+
Additive: boolean;
|
|
83
|
+
} | {
|
|
84
|
+
Type: 'pan';
|
|
85
|
+
StartClientX: number;
|
|
86
|
+
StartClientY: number;
|
|
87
|
+
OrigPanX: number;
|
|
88
|
+
OrigPanY: number;
|
|
89
|
+
};
|
|
90
|
+
interface PendingConnector {
|
|
91
|
+
FromItemID: string | null;
|
|
92
|
+
FromPoint: WhiteboardPoint | null;
|
|
93
|
+
CurX: number;
|
|
94
|
+
CurY: number;
|
|
95
|
+
}
|
|
96
|
+
/** Transient state of the in-board rich-content editor panel (markdown / html items). */
|
|
97
|
+
interface RichEditorState {
|
|
98
|
+
ItemID: string;
|
|
99
|
+
Kind: 'markdown' | 'html';
|
|
100
|
+
/** The in-flight source draft (committed only on Apply / Done). */
|
|
101
|
+
Draft: string;
|
|
102
|
+
/** HTML widgets only: the in-flight header title draft. */
|
|
103
|
+
TitleDraft: string;
|
|
104
|
+
/** Markdown only: show the rendered preview instead of the source editor. */
|
|
105
|
+
Preview: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Starter document placed by the HTML-widget tool (user click-place) — a one-question
|
|
109
|
+
* quiz that demos the `MJWhiteboard.submit` input bridge: the Submit button posts the
|
|
110
|
+
* picked answer to the host, which surfaces it to the session agent as a context note.
|
|
111
|
+
* (Hardcoded colors are fine here: this is an isolated sandboxed document — the app's
|
|
112
|
+
* design tokens cannot reach inside the opaque-origin frame.)
|
|
113
|
+
*/
|
|
114
|
+
export declare const WHITEBOARD_WIDGET_STARTER_HTML = "<!doctype html>\n<html>\n<head>\n<style>\n body { font-family: system-ui, sans-serif; margin: 14px; color: #1f2937; }\n h3 { margin: 0 0 6px; }\n label { display: block; margin: 4px 0; }\n button { margin-top: 8px; padding: 5px 12px; border: 1px solid #cbd5e1; border-radius: 6px; background: #f1f5f9; cursor: pointer; }\n .hint { margin-top: 8px; color: #6b7280; font-size: 12px; }\n</style>\n</head>\n<body>\n<h3>Quick quiz</h3>\n<p>Which planet is closest to the sun?</p>\n<label><input type=\"radio\" name=\"q\" value=\"Mercury\"> Mercury</label>\n<label><input type=\"radio\" name=\"q\" value=\"Venus\"> Venus</label>\n<label><input type=\"radio\" name=\"q\" value=\"Mars\"> Mars</label>\n<button id=\"go\">Submit answer</button>\n<p class=\"hint\">Submitting sends your answer to the agent via MJWhiteboard.submit.</p>\n<script>\n document.getElementById('go').addEventListener('click', function () {\n var picked = document.querySelector('input[name=\"q\"]:checked');\n MJWhiteboard.submit({ question: 'closest planet to the sun', answer: picked ? picked.value : null });\n });\n</script>\n</body>\n</html>";
|
|
115
|
+
/**
|
|
116
|
+
* The LIVE WHITEBOARD canvas surface (`mj-realtime-whiteboard`): dotted-grid board with
|
|
117
|
+
* pan/zoom, per-tool pointer interactions (select/move with ghost + handles, pan, smoothed
|
|
118
|
+
* freehand pen, drag-create shapes, click-place stickies/text with inline edit, image paste,
|
|
119
|
+
* item→item connectors with floating-point fallback, eraser, dismissible highlights),
|
|
120
|
+
* ownership chips, agent pop-in flash and the input-driven agent presence cursor.
|
|
121
|
+
*
|
|
122
|
+
* All mutations go through the shared {@link WhiteboardState} engine — the same API the
|
|
123
|
+
* agent's channel tools use — so undo/redo and the perception feed see one history.
|
|
124
|
+
*/
|
|
125
|
+
export declare class RealtimeWhiteboardBoardComponent implements OnInit, OnDestroy, AfterViewChecked {
|
|
126
|
+
/** Shared board state engine (owned by the integration layer, passed via the host). */
|
|
127
|
+
State: WhiteboardState;
|
|
128
|
+
/** Display name of the session's agent ("Sage") — chips, highlight tags, presence label. */
|
|
129
|
+
AgentName: string;
|
|
130
|
+
/** Active tool (owned by the host; toolbar + keyboard drive it). */
|
|
131
|
+
set Tool(value: WhiteboardTool);
|
|
132
|
+
get Tool(): WhiteboardTool;
|
|
133
|
+
/** Selected pen ink color. */
|
|
134
|
+
PenColor: string;
|
|
135
|
+
/** Selected pen stroke width. */
|
|
136
|
+
PenWidth: number;
|
|
137
|
+
/** Selected shape kind for drag-create. */
|
|
138
|
+
ShapeKind: WhiteboardShapeItem['Shape'];
|
|
139
|
+
/** Selected text font size for click-placed text (curated steps; 12 = CSS default). */
|
|
140
|
+
TextSize: number;
|
|
141
|
+
/** Selected text font family for click-placed text. */
|
|
142
|
+
TextFamily: WhiteboardFontFamily;
|
|
143
|
+
/** Selected text bold state for click-placed text (labels render bold by default). */
|
|
144
|
+
TextBold: boolean;
|
|
145
|
+
/** Selected text color for click-placed text (null = theme default). */
|
|
146
|
+
TextColor: string | null;
|
|
147
|
+
/** Agent presence cursor (pulsing ring + "… is drawing" label), driven by the host. */
|
|
148
|
+
AgentPresence: WhiteboardAgentPresence | null;
|
|
149
|
+
/**
|
|
150
|
+
* Read-only mode (artifact viewer / session review): all mutating pointer interactions,
|
|
151
|
+
* paste, and inline editing are disabled; pan + zoom remain available for navigation.
|
|
152
|
+
*/
|
|
153
|
+
ReadOnly: boolean;
|
|
154
|
+
/** Requests a tool switch decided by a board gesture (e.g. Esc → select). */
|
|
155
|
+
ToolChangeRequest: EventEmitter<WhiteboardTool>;
|
|
156
|
+
/**
|
|
157
|
+
* Cancelable BEFORE event: a sandboxed HTML widget called `MJWhiteboard.submit(data)`
|
|
158
|
+
* and the payload passed validation (marker + tracked source window + size cap).
|
|
159
|
+
* Handlers run synchronously — set `Cancel = true` on the args to drop the submission
|
|
160
|
+
* ({@link WidgetSubmitted} then never fires).
|
|
161
|
+
*/
|
|
162
|
+
WidgetSubmitting: EventEmitter<WhiteboardWidgetSubmittingEventArgs>;
|
|
163
|
+
/**
|
|
164
|
+
* AFTER event: a validated widget submission was accepted (not canceled). Integration
|
|
165
|
+
* layers forward this to their agent/automation runtime — e.g. MJ's realtime channel
|
|
166
|
+
* plugin surfaces it to the live agent as a `[whiteboard]` context note.
|
|
167
|
+
*/
|
|
168
|
+
WidgetSubmitted: EventEmitter<WhiteboardWidgetSubmitEvent>;
|
|
169
|
+
/**
|
|
170
|
+
* AMBIENT widget telemetry: the injected recorder observed passive form activity
|
|
171
|
+
* (clicks / changes / typing / focus) inside a sandboxed HTML widget — no widget-authored
|
|
172
|
+
* script involved. The batch was validated (marker + tracked source + size cap + shape)
|
|
173
|
+
* and pre-summarized into one compact human line. Integration layers forward it to their
|
|
174
|
+
* agent runtime as low-priority background context (MJ's channel plugin throttles per
|
|
175
|
+
* widget and frames it as a do-not-respond `[whiteboard]` note).
|
|
176
|
+
*/
|
|
177
|
+
WidgetInteraction: EventEmitter<WhiteboardWidgetInteractionEvent>;
|
|
178
|
+
/**
|
|
179
|
+
* Cancelable BEFORE event: an in-board editor commit (inline sticky/text/shape edit or
|
|
180
|
+
* the markdown/HTML rich editor's Apply/Done) is about to write to the state engine.
|
|
181
|
+
* Set `Cancel = true` synchronously to discard the commit; handlers may also rewrite
|
|
182
|
+
* the args' `Content` / `Title`.
|
|
183
|
+
*/
|
|
184
|
+
ContentApplying: EventEmitter<WhiteboardContentApplyingEventArgs>;
|
|
185
|
+
/** AFTER event: an editor commit applied to the state engine. */
|
|
186
|
+
ContentApplied: EventEmitter<WhiteboardContentAppliedEventArgs>;
|
|
187
|
+
private canvasRef?;
|
|
188
|
+
/** The page strip — the context menu's "Rename page" routes to its inline editor. */
|
|
189
|
+
private pagesStrip?;
|
|
190
|
+
PanX: number;
|
|
191
|
+
PanY: number;
|
|
192
|
+
Zoom: number;
|
|
193
|
+
MinimapOpen: boolean;
|
|
194
|
+
Interaction: BoardInteraction | null;
|
|
195
|
+
PendingConnector: PendingConnector | null;
|
|
196
|
+
EditingID: string | null;
|
|
197
|
+
/** The rich-content editor panel state (markdown / html items), or null when closed. */
|
|
198
|
+
RichEditor: RichEditorState | null;
|
|
199
|
+
/** The open right-click context menu (canvas-relative position + model), or null. */
|
|
200
|
+
ContextMenu: {
|
|
201
|
+
Left: number;
|
|
202
|
+
Top: number;
|
|
203
|
+
/** Board-coordinate click point — "add … here" placement target. */
|
|
204
|
+
Point: WhiteboardPoint;
|
|
205
|
+
/** Target item, or null for the empty-canvas / page-chip menus. */
|
|
206
|
+
ItemID: string | null;
|
|
207
|
+
/** Target page (a right-clicked page chip), or null for item/canvas menus. */
|
|
208
|
+
PageID: string | null;
|
|
209
|
+
Actions: WhiteboardContextMenuAction[];
|
|
210
|
+
} | null;
|
|
211
|
+
private editIsNew;
|
|
212
|
+
private pendingFocus;
|
|
213
|
+
private userStickyCount;
|
|
214
|
+
/** Agent items that just popped in (drive the .pop-in violet flash). */
|
|
215
|
+
PopInIDs: Set<string>;
|
|
216
|
+
private popInTimers;
|
|
217
|
+
private _tool;
|
|
218
|
+
private changedSub?;
|
|
219
|
+
private cdr;
|
|
220
|
+
private _boxItems;
|
|
221
|
+
private _inkItems;
|
|
222
|
+
private _connectorItems;
|
|
223
|
+
private _highlightItems;
|
|
224
|
+
/** Whether the single window 'message' listener (the widget input bridge) is attached. */
|
|
225
|
+
private widgetMessageListenerAttached;
|
|
226
|
+
ngOnInit(): void;
|
|
227
|
+
/**
|
|
228
|
+
* Partition `State.Items` (one Array.from + sort) into the four render buckets
|
|
229
|
+
* the template binds to. Called on init and on every {@link WhiteboardState.Changed$}
|
|
230
|
+
* emission — the engine emits there for adds/updates/removes and page switches, so
|
|
231
|
+
* the buckets always reflect the active page's current items.
|
|
232
|
+
*/
|
|
233
|
+
private recomputeRenderBuckets;
|
|
234
|
+
ngOnDestroy(): void;
|
|
235
|
+
ngAfterViewChecked(): void;
|
|
236
|
+
/** Observer driving {@link onCanvasResize}; created once the canvas element exists. */
|
|
237
|
+
private canvasResizeObserver;
|
|
238
|
+
/** True once the canvas has had a real (non-zero) layout. */
|
|
239
|
+
private hadRealLayout;
|
|
240
|
+
/** True once the user pans/zooms — the auto-fit must never fight a chosen viewport. */
|
|
241
|
+
private viewportTouched;
|
|
242
|
+
/** Attaches the ResizeObserver exactly once (no-op where ResizeObserver is unavailable). */
|
|
243
|
+
private observeCanvasSize;
|
|
244
|
+
/** First non-zero layout: recompute culling and (if untouched) frame the content. */
|
|
245
|
+
private onCanvasResize;
|
|
246
|
+
get BoxItems(): (WhiteboardStickyItem | WhiteboardShapeItem | WhiteboardTextItem | WhiteboardImageItem | WhiteboardMarkdownItem | WhiteboardHtmlItem)[];
|
|
247
|
+
get InkItems(): WhiteboardInkItem[];
|
|
248
|
+
get ConnectorItems(): WhiteboardConnectorItem[];
|
|
249
|
+
get HighlightItems(): WhiteboardHighlightItem[];
|
|
250
|
+
get ViewportTransform(): string;
|
|
251
|
+
get GridBackgroundSize(): string;
|
|
252
|
+
get GridBackgroundPosition(): string;
|
|
253
|
+
get ZoomPercent(): number;
|
|
254
|
+
get CursorClass(): string;
|
|
255
|
+
TrackItem(index: number, item: WhiteboardItem): string;
|
|
256
|
+
/**
|
|
257
|
+
* Explicit wrap width for a text label (resize / tool w) — null lets the CSS max-width
|
|
258
|
+
* wrap. Honors an in-flight RESIZE transient so the live preview tracks the handle drag
|
|
259
|
+
* (a move transient is deliberately ignored: its W is the rough bounds ESTIMATE, and
|
|
260
|
+
* stamping it inline would re-wrap an unsized label mid-drag).
|
|
261
|
+
*/
|
|
262
|
+
TextWrapWidth(item: WhiteboardItem): number | null;
|
|
263
|
+
/** Left position of an item, honoring an in-flight move/resize transient. */
|
|
264
|
+
ItemX(item: WhiteboardItem): number;
|
|
265
|
+
ItemY(item: WhiteboardItem): number;
|
|
266
|
+
ItemW(item: WhiteboardItem): number | null;
|
|
267
|
+
ItemH(item: WhiteboardItem): number | null;
|
|
268
|
+
/** A markdown panel's optional max height (its rendered height stays content-driven). */
|
|
269
|
+
MarkdownMaxHeight(item: WhiteboardMarkdownItem): number | null;
|
|
270
|
+
/** Whether the item is part of the current (single OR multi) selection. */
|
|
271
|
+
IsSelected(item: WhiteboardItem): boolean;
|
|
272
|
+
/** Dragging visuals: the grabbed item, plus every other member during a GROUP drag. */
|
|
273
|
+
IsDragging(item: WhiteboardItem): boolean;
|
|
274
|
+
/**
|
|
275
|
+
* 8 handles render on the selected, resizable item (gate: {@link IsResizableKind}) —
|
|
276
|
+
* but only for a SINGLE selection; a multi-selection shows the outline treatment only.
|
|
277
|
+
*/
|
|
278
|
+
ShowHandles(item: WhiteboardItem): boolean;
|
|
279
|
+
readonly Handles: ResizeHandle[];
|
|
280
|
+
/** The drag ghost rectangle ("from here") at the moved item's original bounds. */
|
|
281
|
+
get DragGhost(): WhiteboardBounds | null;
|
|
282
|
+
/** Live shape-create preview rectangle. */
|
|
283
|
+
get ShapePreview(): WhiteboardBounds | null;
|
|
284
|
+
/** Live marquee (rubber-band) selection rectangle, or null when none is in flight. */
|
|
285
|
+
get MarqueeRect(): WhiteboardBounds | null;
|
|
286
|
+
StickyRotation(item: WhiteboardStickyItem): string;
|
|
287
|
+
StickyTintClass(item: WhiteboardStickyItem): string;
|
|
288
|
+
HighlightTag(item: WhiteboardHighlightItem): string;
|
|
289
|
+
/** Family key → CSS font stack ('sans' = null so the board's default font cascades). */
|
|
290
|
+
private static readonly FontStacks;
|
|
291
|
+
/** Inline font-size for a styled text/sticky item (null = the kind's CSS default). */
|
|
292
|
+
ItemFontSize(item: WhiteboardStickyItem | WhiteboardTextItem): string | null;
|
|
293
|
+
/** Inline font-family stack for a styled text/sticky item (null = inherit). */
|
|
294
|
+
ItemFontFamily(item: WhiteboardStickyItem | WhiteboardTextItem): string | null;
|
|
295
|
+
/** Inline font-weight for a styled text/sticky item (null = the kind's CSS default). */
|
|
296
|
+
ItemFontWeight(item: WhiteboardStickyItem | WhiteboardTextItem): string | null;
|
|
297
|
+
/**
|
|
298
|
+
* Inline color for a USER text label. Agent labels keep their violet authorship
|
|
299
|
+
* treatment from CSS — `Color` never overrides it.
|
|
300
|
+
*/
|
|
301
|
+
ItemTextColor(item: WhiteboardTextItem): string | null;
|
|
302
|
+
/**
|
|
303
|
+
* Apply a toolbar style pick to the selected text/sticky item (the "restyle existing"
|
|
304
|
+
* path — the toolbar emits `StyleSelection`, the host routes it here). No-op when
|
|
305
|
+
* nothing applicable is selected; color only applies to user text labels.
|
|
306
|
+
*/
|
|
307
|
+
ApplyTextStyleToSelection(style: WhiteboardTextStyleEvent): void;
|
|
308
|
+
/** Smoothed freehand path (quadratic curves through segment midpoints). */
|
|
309
|
+
InkPath(points: WhiteboardPoint[]): string;
|
|
310
|
+
/** Curved connector path between resolved (edge-clipped) endpoints. */
|
|
311
|
+
ConnectorPath(conn: WhiteboardConnectorItem): string;
|
|
312
|
+
/** Two short arrowhead strokes at the connector's target end. */
|
|
313
|
+
ConnectorArrow(conn: WhiteboardConnectorItem): string;
|
|
314
|
+
get PendingConnectorPath(): string;
|
|
315
|
+
get LivePenPath(): string;
|
|
316
|
+
private connectorEndpoints;
|
|
317
|
+
/** Intersect the segment bounds-center → towards with the bounds rectangle edge. */
|
|
318
|
+
private edgePoint;
|
|
319
|
+
private curveBetween;
|
|
320
|
+
private arrowAt;
|
|
321
|
+
OnCanvasPointerDown(event: PointerEvent): void;
|
|
322
|
+
OnItemPointerDown(event: PointerEvent, item: WhiteboardItem): void;
|
|
323
|
+
OnHandlePointerDown(event: PointerEvent, item: WhiteboardItem, handle: ResizeHandle): void;
|
|
324
|
+
/** Click on a highlight region dismisses it (mockup: "click dismisses"). */
|
|
325
|
+
OnHighlightClick(event: MouseEvent, item: WhiteboardHighlightItem): void;
|
|
326
|
+
OnWindowPointerMove(event: PointerEvent): void;
|
|
327
|
+
OnWindowPointerUp(): void;
|
|
328
|
+
OnWheel(event: WheelEvent): void;
|
|
329
|
+
/** Paste an image from the clipboard onto the board (mockup: pasted-image card). */
|
|
330
|
+
OnPaste(event: ClipboardEvent): void;
|
|
331
|
+
BeginItemEdit(event: Event, item: WhiteboardItem): void;
|
|
332
|
+
/**
|
|
333
|
+
* Commit the inline editor's value to the edited sticky / text / shape item. Routes
|
|
334
|
+
* through the {@link ContentApplying} (cancelable) / {@link ContentApplied} event pair;
|
|
335
|
+
* an empty commit on a JUST-PLACED sticky/text abandons the placement instead (the item
|
|
336
|
+
* is removed — that path raises the engine's remove events, not the content pair).
|
|
337
|
+
*/
|
|
338
|
+
CommitEdit(value: string): void;
|
|
339
|
+
/**
|
|
340
|
+
* Run one editor commit through the {@link ContentApplying} / {@link ContentApplied}
|
|
341
|
+
* pair: raise the cancelable BEFORE event, apply the (possibly handler-edited) content
|
|
342
|
+
* via the state engine when not canceled, and raise the AFTER event when the engine
|
|
343
|
+
* applied it (an engine-level `ItemUpdating$` veto also suppresses the AFTER event).
|
|
344
|
+
*/
|
|
345
|
+
private applyContent;
|
|
346
|
+
OnEditKeydown(event: KeyboardEvent, value: string): void;
|
|
347
|
+
/** Attach/detach the SINGLE window 'message' listener so it only runs while widgets exist. */
|
|
348
|
+
private syncWidgetMessageListener;
|
|
349
|
+
/**
|
|
350
|
+
* The widget input bridge's host-side listener. The sandboxed frames have OPAQUE
|
|
351
|
+
* origins (their helper posts with `'*'`), so validation happens HERE: the payload
|
|
352
|
+
* must carry the bridge marker AND `event.source` must be the contentWindow of one of
|
|
353
|
+
* this board's tracked widget iframes — anything else is dropped. Accepted payloads
|
|
354
|
+
* are JSON-capped and surfaced through the {@link WidgetSubmitting} (cancelable) /
|
|
355
|
+
* {@link WidgetSubmitted} event pair.
|
|
356
|
+
*/
|
|
357
|
+
private onWindowMessage;
|
|
358
|
+
/**
|
|
359
|
+
* Second leg of the message listener: evaluate a non-submit message against the ambient
|
|
360
|
+
* interaction contract and surface accepted batches through {@link WidgetInteraction}.
|
|
361
|
+
* `'not-interaction'` is unrelated postMessage traffic — ignored silently, like the
|
|
362
|
+
* submit path's `'not-submit'`.
|
|
363
|
+
*/
|
|
364
|
+
private handleInteractionMessage;
|
|
365
|
+
/** Resolve a message `event.source` to the tracked widget iframe (window → item) it belongs to. */
|
|
366
|
+
private resolveWidgetFromSource;
|
|
367
|
+
/**
|
|
368
|
+
* Cheap "on-screen-ish" check that gates iframe instantiation for HTML widgets: only
|
|
369
|
+
* widgets within (or near) the current viewport get a live sandboxed frame; the rest
|
|
370
|
+
* render a static placeholder until panned/zoomed into view. Re-entering view re-creates
|
|
371
|
+
* the frame (any internal widget state resets — acceptable for board decorations).
|
|
372
|
+
*/
|
|
373
|
+
IsNearViewport(item: WhiteboardItem): boolean;
|
|
374
|
+
/** Header title for an HTML widget. */
|
|
375
|
+
HtmlTitle(item: WhiteboardHtmlItem): string;
|
|
376
|
+
/** Open the rich editor for a markdown panel / HTML widget (dblclick or header edit). */
|
|
377
|
+
BeginRichEdit(event: Event, item: WhiteboardItem): void;
|
|
378
|
+
/** Delete affordance on the HTML widget header (the user removing their own widget). */
|
|
379
|
+
RemoveItemClick(event: Event, item: WhiteboardItem): void;
|
|
380
|
+
/** Markdown editor: flip between the source editor and the rendered preview. */
|
|
381
|
+
RichEditorSetPreview(preview: boolean): void;
|
|
382
|
+
OnRichEditorDraftChange(value: string): void;
|
|
383
|
+
OnRichEditorTitleChange(value: string): void;
|
|
384
|
+
/**
|
|
385
|
+
* Commit the draft to the item (ONE update = one undo step) and keep the panel open.
|
|
386
|
+
* Routes through the {@link ContentApplying} (cancelable) / {@link ContentApplied} pair.
|
|
387
|
+
*/
|
|
388
|
+
RichEditorApply(): void;
|
|
389
|
+
/** Commit the draft and close the editor panel. */
|
|
390
|
+
RichEditorDone(): void;
|
|
391
|
+
/** Close the editor, discarding any uncommitted draft changes. */
|
|
392
|
+
RichEditorCancel(): void;
|
|
393
|
+
/** Esc inside the editor panel closes it; keys must not leak to the board shortcuts. */
|
|
394
|
+
OnRichEditorKeydown(event: KeyboardEvent): void;
|
|
395
|
+
private openRichEditor;
|
|
396
|
+
/** Right-click on empty canvas → the "add … here" menu (suppresses the native menu). */
|
|
397
|
+
OnCanvasContextMenu(event: MouseEvent): void;
|
|
398
|
+
/** Right-click on a board item → the item action menu (selects the item first). */
|
|
399
|
+
OnItemContextMenu(event: MouseEvent, item: WhiteboardItem): void;
|
|
400
|
+
/** Dispatch one picked context-menu action, then close the menu. */
|
|
401
|
+
OnContextMenuAction(actionId: WhiteboardContextMenuActionID): void;
|
|
402
|
+
/** Click-away closes the menu (the menu root stops pointerdown propagation for itself). */
|
|
403
|
+
CloseContextMenu(): void;
|
|
404
|
+
/**
|
|
405
|
+
* Right-click on a PAGE CHIP in the page strip (forwarded by the strip's
|
|
406
|
+
* `ChipContextMenu` output) → the page action menu: Rename (routes back into the
|
|
407
|
+
* strip's inline-rename editor) and Delete (offered only when more than one page
|
|
408
|
+
* exists — the engine's last-page guard). Never opens in ReadOnly.
|
|
409
|
+
*/
|
|
410
|
+
OnPageChipContextMenu(payload: WhiteboardPageChipContextMenuEvent): void;
|
|
411
|
+
private openContextMenu;
|
|
412
|
+
/** Position + open the shared context-menu panel for any target (item / canvas / page chip). */
|
|
413
|
+
private showContextMenu;
|
|
414
|
+
ZoomIn(): void;
|
|
415
|
+
/**
|
|
416
|
+
* Continuous zoom by a multiplicative factor at the viewport center — the
|
|
417
|
+
* hold-to-zoom tick path (the zoom cluster emits ~3.5% factors every 50 ms while a
|
|
418
|
+
* +/− button is held). Clamped to the same 25%–200% limits as the stepped zoom.
|
|
419
|
+
*/
|
|
420
|
+
ZoomByFactor(factor: number): void;
|
|
421
|
+
ZoomOut(): void;
|
|
422
|
+
/** Fit all content into the viewport (25%–200%, 60px padding). */
|
|
423
|
+
FitToContent(): void;
|
|
424
|
+
ToggleMinimap(): void;
|
|
425
|
+
/** Cancel any in-flight transient gesture (tool switch, Esc) — incl. the rich editor + context menu. */
|
|
426
|
+
CancelTransient(): void;
|
|
427
|
+
get MinimapViewBox(): string;
|
|
428
|
+
get MinimapItems(): {
|
|
429
|
+
X: number;
|
|
430
|
+
Y: number;
|
|
431
|
+
W: number;
|
|
432
|
+
H: number;
|
|
433
|
+
Agent: boolean;
|
|
434
|
+
}[];
|
|
435
|
+
get MinimapViewport(): WhiteboardBounds;
|
|
436
|
+
private minimapWorld;
|
|
437
|
+
private toBoard;
|
|
438
|
+
private viewportCenter;
|
|
439
|
+
private clampZoom;
|
|
440
|
+
private zoomCentered;
|
|
441
|
+
private zoomAt;
|
|
442
|
+
private resizeBounds;
|
|
443
|
+
private transientBounds;
|
|
444
|
+
private placeSticky;
|
|
445
|
+
private placeText;
|
|
446
|
+
private placeImage;
|
|
447
|
+
/** Click-place a starter markdown panel and open its editor. */
|
|
448
|
+
private placeMarkdown;
|
|
449
|
+
/** Click-place a starter HTML widget (sandboxed) and open its editor. */
|
|
450
|
+
private placeHtml;
|
|
451
|
+
private beginEdit;
|
|
452
|
+
private connectorClick;
|
|
453
|
+
private pendingFromPoint;
|
|
454
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RealtimeWhiteboardBoardComponent, never>;
|
|
455
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RealtimeWhiteboardBoardComponent, "mj-realtime-whiteboard", never, { "State": { "alias": "State"; "required": true; }; "AgentName": { "alias": "AgentName"; "required": false; }; "Tool": { "alias": "Tool"; "required": false; }; "PenColor": { "alias": "PenColor"; "required": false; }; "PenWidth": { "alias": "PenWidth"; "required": false; }; "ShapeKind": { "alias": "ShapeKind"; "required": false; }; "TextSize": { "alias": "TextSize"; "required": false; }; "TextFamily": { "alias": "TextFamily"; "required": false; }; "TextBold": { "alias": "TextBold"; "required": false; }; "TextColor": { "alias": "TextColor"; "required": false; }; "AgentPresence": { "alias": "AgentPresence"; "required": false; }; "ReadOnly": { "alias": "ReadOnly"; "required": false; }; }, { "ToolChangeRequest": "ToolChangeRequest"; "WidgetSubmitting": "WidgetSubmitting"; "WidgetSubmitted": "WidgetSubmitted"; "WidgetInteraction": "WidgetInteraction"; "ContentApplying": "ContentApplying"; "ContentApplied": "ContentApplied"; }, never, never, true, never>;
|
|
456
|
+
}
|
|
457
|
+
export {};
|
|
458
|
+
//# sourceMappingURL=whiteboard-board.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whiteboard-board.component.d.ts","sourceRoot":"","sources":["../../src/lib/whiteboard-board.component.ts"],"names":[],"mappings":"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"}
|