@neta-art/cohub 11.2.0 → 11.3.1
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/dist/board/export/index.js +14 -3
- package/dist/board/export/node/fonts.d.ts +13 -0
- package/dist/board/export/node/fonts.js +44 -0
- package/dist/board/export/node/index.d.ts +4 -10
- package/dist/board/export/node/index.js +12 -20
- package/dist/board/export/node/scripts.d.ts +1 -0
- package/dist/board/export/node/scripts.js +21 -8
- package/dist/board/export/scene.js +1 -1
- package/dist/board/model/index.d.ts +2 -1
- package/dist/board/model/index.js +2 -1
- package/dist/board/model/script-api.d.ts +69 -0
- package/dist/board/model/script-api.js +77 -0
- package/dist/board/render/diagnostics.d.ts +20 -2
- package/dist/board/render/diagnostics.js +17 -4
- package/dist/board/render/index.d.ts +2 -2
- package/dist/board/render/index.js +5 -5
- package/dist/board/render/renderers/arrow-card-renderer.js +1 -1
- package/dist/board/render/renderers/audio-card-renderer.js +1 -1
- package/dist/board/render/renderers/frame-card-renderer.js +1 -1
- package/dist/board/render/renderers/shape-card-renderer.js +1 -1
- package/dist/board/render/renderers/task-card-renderer.js +1 -1
- package/dist/board/render/renderers/text-card-renderer.js +2 -2
- package/dist/board/stage/stage.js +3 -3
- package/dist/chunks/app-realtime.js +1697 -0
- package/dist/chunks/environment.d.ts +1 -0
- package/dist/chunks/http.d.ts +346 -3
- package/dist/chunks/http.js +32 -1
- package/dist/chunks/websocket.d.ts +4 -0
- package/dist/chunks/websocket.js +11 -2
- package/dist/http.d.ts +1 -1
- package/dist/index.d.ts +3 -322
- package/dist/index.js +59 -1660
- package/dist/protocol/dist/board-model.js +51 -51
- package/dist/protocol/dist/board-schema.d.ts +1 -2
- package/dist/protocol/dist/board-schema.js +7 -22
- package/package.json +1 -1
|
@@ -2,11 +2,11 @@ import { buildBoardScene } from "../model/scene.js";
|
|
|
2
2
|
import { resolveBoardAnimationCamera } from "../model/sampling.js";
|
|
3
3
|
import { normalizeBoardDocument, planBoardExport } from "../model/export-plan.js";
|
|
4
4
|
import { parseBoardCssColor } from "../render/css-color.js";
|
|
5
|
+
import { ensureBoardTextMeasurement } from "../render/text-measurement.js";
|
|
5
6
|
import { defaultBoardPalette } from "../render/palette.js";
|
|
6
7
|
import { createBoardRenderSampler } from "../render/sampling.js";
|
|
7
|
-
import { ensureBoardTextMeasurement } from "../render/text-measurement.js";
|
|
8
8
|
import { createBoardExportScene } from "./scene.js";
|
|
9
|
-
import { Rectangle } from "pixi.js";
|
|
9
|
+
import { Rectangle, RendererType } from "pixi.js";
|
|
10
10
|
//#region src/board/export/index.ts
|
|
11
11
|
function resolveBackground(background, palette, document, colorScheme) {
|
|
12
12
|
if (background === "transparent") return null;
|
|
@@ -85,13 +85,24 @@ function renderBoardExport(renderer, input, options = {}) {
|
|
|
85
85
|
backgroundImage: options.backgroundImage
|
|
86
86
|
});
|
|
87
87
|
try {
|
|
88
|
-
const
|
|
88
|
+
const texture = renderer.textureGenerator.generateTexture({
|
|
89
89
|
target: exportScene.root,
|
|
90
90
|
frame: new Rectangle(0, 0, plan.width, plan.height),
|
|
91
91
|
resolution: 1,
|
|
92
92
|
antialias: true,
|
|
93
93
|
clearColor: options.background === "transparent" ? void 0 : palette.bg
|
|
94
94
|
});
|
|
95
|
+
let canvas;
|
|
96
|
+
const surface = renderer.type === RendererType.CANVAS ? texture.source.resource : void 0;
|
|
97
|
+
try {
|
|
98
|
+
canvas = renderer.texture.generateCanvas(texture);
|
|
99
|
+
} finally {
|
|
100
|
+
texture.destroy(true);
|
|
101
|
+
if (surface) {
|
|
102
|
+
surface.width = 1;
|
|
103
|
+
surface.height = 1;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
95
106
|
const warnings = [];
|
|
96
107
|
if (plan.clamped) warnings.push({
|
|
97
108
|
kind: "scale-clamped",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/board/export/node/fonts.d.ts
|
|
2
|
+
type BoardNodeFont = {
|
|
3
|
+
path: string;
|
|
4
|
+
family?: string;
|
|
5
|
+
};
|
|
6
|
+
type BoardFontRegistry = {
|
|
7
|
+
registerFromPath(path: string, family?: string): unknown;
|
|
8
|
+
has(family: string): boolean;
|
|
9
|
+
setAlias?: (family: string, alias: string) => boolean;
|
|
10
|
+
};
|
|
11
|
+
declare function initializeBoardFonts(registry: BoardFontRegistry, fonts: readonly BoardNodeFont[]): void;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { BoardFontRegistry, BoardNodeFont, initializeBoardFonts };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//#region src/board/export/node/fonts.ts
|
|
2
|
+
function initializeBoardFonts(registry, fonts) {
|
|
3
|
+
for (const font of fonts) registry.registerFromPath(font.path, font.family);
|
|
4
|
+
if (!registry.setAlias) return;
|
|
5
|
+
for (const [alias, candidates] of Object.entries({
|
|
6
|
+
"system-ui": [
|
|
7
|
+
"Noto Sans",
|
|
8
|
+
"DejaVu Sans",
|
|
9
|
+
"Liberation Sans",
|
|
10
|
+
"FreeSans",
|
|
11
|
+
"Helvetica Neue",
|
|
12
|
+
"Arial",
|
|
13
|
+
"Segoe UI"
|
|
14
|
+
],
|
|
15
|
+
"sans-serif": [
|
|
16
|
+
"Geist",
|
|
17
|
+
"Noto Sans",
|
|
18
|
+
"DejaVu Sans",
|
|
19
|
+
"Liberation Sans",
|
|
20
|
+
"FreeSans",
|
|
21
|
+
"Arial"
|
|
22
|
+
],
|
|
23
|
+
serif: [
|
|
24
|
+
"Noto Serif",
|
|
25
|
+
"DejaVu Serif",
|
|
26
|
+
"Liberation Serif",
|
|
27
|
+
"FreeSerif",
|
|
28
|
+
"Times New Roman"
|
|
29
|
+
],
|
|
30
|
+
monospace: [
|
|
31
|
+
"Geist Mono",
|
|
32
|
+
"DejaVu Sans Mono",
|
|
33
|
+
"Liberation Mono",
|
|
34
|
+
"FreeMono",
|
|
35
|
+
"Courier New"
|
|
36
|
+
]
|
|
37
|
+
})) {
|
|
38
|
+
if (registry.has(alias)) continue;
|
|
39
|
+
const family = candidates.find((name) => registry.has(name));
|
|
40
|
+
if (family) registry.setAlias(family, alias);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { initializeBoardFonts };
|
|
@@ -2,21 +2,14 @@ import { BoardDocument } from "../../../protocol/dist/board-model.js";
|
|
|
2
2
|
import "../../../protocol/dist/index.js";
|
|
3
3
|
import { BoardScriptHost } from "../../render/renderers/board-renderer-registry.js";
|
|
4
4
|
import { BoardExportOptions, BoardExportResult } from "../index.js";
|
|
5
|
+
import { BoardFontRegistry, BoardNodeFont } from "./fonts.js";
|
|
5
6
|
import { createNodeBoardScriptHost } from "./scripts.js";
|
|
6
7
|
import { Renderer } from "pixi.js";
|
|
7
8
|
//#region src/board/export/node/index.d.ts
|
|
8
9
|
type NodeCanvasModule = {
|
|
9
10
|
createCanvas: (width: number, height: number) => unknown;
|
|
10
11
|
Image: new () => unknown;
|
|
11
|
-
GlobalFonts:
|
|
12
|
-
registerFromPath: (path: string, name?: string) => unknown;
|
|
13
|
-
has: (name: string) => boolean;
|
|
14
|
-
setAlias?: (fontName: string, alias: string) => boolean;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
type BoardNodeFont = {
|
|
18
|
-
path: string;
|
|
19
|
-
family?: string;
|
|
12
|
+
GlobalFonts: BoardFontRegistry;
|
|
20
13
|
};
|
|
21
14
|
type BoardNodeRendererOptions = {
|
|
22
15
|
fonts?: BoardNodeFont[];
|
|
@@ -29,6 +22,7 @@ type BoardNodeTexture = {
|
|
|
29
22
|
type BoardNodeRenderer = {
|
|
30
23
|
renderer: Renderer;
|
|
31
24
|
canvasModule: NodeCanvasModule;
|
|
25
|
+
fonts?: readonly BoardNodeFont[];
|
|
32
26
|
decodeImage: (bytes: Uint8Array, mimeType?: string) => Promise<BoardNodeTexture>;
|
|
33
27
|
destroy: () => void;
|
|
34
28
|
};
|
|
@@ -53,4 +47,4 @@ type BoardNodeExportResult = Omit<BoardExportResult, "canvas"> & {
|
|
|
53
47
|
declare function boardImageMimeType(format: BoardNodeExportFormat): string;
|
|
54
48
|
declare function exportBoardImageBytes(renderer: BoardNodeRenderer, document: BoardDocument, options?: BoardNodeExportOptions): BoardNodeExportResult | null;
|
|
55
49
|
//#endregion
|
|
56
|
-
export { BoardNodeExportFormat, BoardNodeExportOptions, BoardNodeExportResult, BoardNodeFont, BoardNodeRenderer, BoardNodeRendererOptions, BoardNodeTexture, NodeCanvasModule, boardImageMimeType, createNodeBoardRenderer, createNodeBoardScriptHost, exportBoardImageBytes };
|
|
50
|
+
export { BoardNodeExportFormat, BoardNodeExportOptions, BoardNodeExportResult, type BoardNodeFont, BoardNodeRenderer, BoardNodeRendererOptions, BoardNodeTexture, NodeCanvasModule, boardImageMimeType, createNodeBoardRenderer, createNodeBoardScriptHost, exportBoardImageBytes };
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
import "../../../protocol/dist/board-constants.js";
|
|
2
2
|
import { installBoardTextMeasurement } from "../../render/text-measurement.js";
|
|
3
3
|
import { renderBoardExport } from "../index.js";
|
|
4
|
+
import { initializeBoardFonts } from "./fonts.js";
|
|
4
5
|
import { createNodeBoardScriptHost } from "./scripts.js";
|
|
5
6
|
import { CanvasGraphicsContextSystem, CanvasGraphicsPipe, CanvasRenderer, CanvasRendererTextSystem, CanvasTextPipe, CanvasTextSystem, DOMAdapter, GraphicsContextSystem, GraphicsPipe, ImageSource, Texture, extensions } from "pixi.js";
|
|
6
7
|
//#region src/board/export/node/index.ts
|
|
7
|
-
const SYSTEM_UI_FAMILIES = [
|
|
8
|
-
"Noto Sans",
|
|
9
|
-
"DejaVu Sans",
|
|
10
|
-
"Liberation Sans",
|
|
11
|
-
"FreeSans",
|
|
12
|
-
"Helvetica Neue",
|
|
13
|
-
"Arial",
|
|
14
|
-
"Segoe UI"
|
|
15
|
-
];
|
|
16
|
-
function aliasSystemUi(fonts) {
|
|
17
|
-
if (!fonts.setAlias || fonts.has("system-ui")) return;
|
|
18
|
-
const family = SYSTEM_UI_FAMILIES.find((name) => fonts.has(name));
|
|
19
|
-
if (family) fonts.setAlias(family, "system-ui");
|
|
20
|
-
}
|
|
21
8
|
const WEBGL_PROBE_STUB = {
|
|
22
9
|
getShaderPrecisionFormat: () => ({
|
|
23
10
|
precision: 1,
|
|
@@ -64,8 +51,11 @@ function installAnimationFrameShim() {
|
|
|
64
51
|
async function createNodeBoardRenderer(options = {}) {
|
|
65
52
|
const canvasModule = options.canvasModule ?? await loadCanvasModule();
|
|
66
53
|
extensions.add(CanvasGraphicsPipe, GraphicsPipe, CanvasGraphicsContextSystem, GraphicsContextSystem, CanvasRendererTextSystem, CanvasTextSystem, CanvasTextPipe);
|
|
67
|
-
|
|
68
|
-
|
|
54
|
+
const fonts = (options.fonts ?? []).map((font) => ({
|
|
55
|
+
...font,
|
|
56
|
+
family: font.family ?? "Geist"
|
|
57
|
+
}));
|
|
58
|
+
initializeBoardFonts(canvasModule.GlobalFonts, fonts);
|
|
69
59
|
function createCanvas(width = 1, height = 1) {
|
|
70
60
|
const canvas = canvasModule.createCanvas(Math.max(1, Math.ceil(width)), Math.max(1, Math.ceil(height)));
|
|
71
61
|
const nativeGetContext = canvas.getContext.bind(canvas);
|
|
@@ -102,14 +92,16 @@ async function createNodeBoardRenderer(options = {}) {
|
|
|
102
92
|
return {
|
|
103
93
|
renderer,
|
|
104
94
|
canvasModule,
|
|
105
|
-
|
|
95
|
+
fonts,
|
|
96
|
+
decodeImage: async (bytes) => {
|
|
106
97
|
const image = new canvasModule.Image();
|
|
107
|
-
const base64 = Buffer.from(bytes).toString("base64");
|
|
108
98
|
await new Promise((resolve, reject) => {
|
|
109
99
|
image.onload = () => resolve();
|
|
110
100
|
image.onerror = (error) => reject(error);
|
|
111
|
-
image.src =
|
|
101
|
+
image.src = bytes;
|
|
112
102
|
});
|
|
103
|
+
image.onload = void 0;
|
|
104
|
+
image.onerror = void 0;
|
|
113
105
|
return new Texture({ source: new ImageSource({
|
|
114
106
|
resource: image,
|
|
115
107
|
width: image.width,
|
|
@@ -146,7 +138,7 @@ function exportBoardImageBytes(renderer, document, options = {}) {
|
|
|
146
138
|
try {
|
|
147
139
|
const bytes = format === "png" ? canvas.toBuffer(MIME.png) : canvas.toBuffer(MIME[format], Math.round(quality * 100));
|
|
148
140
|
return {
|
|
149
|
-
bytes: new Uint8Array(bytes),
|
|
141
|
+
bytes: new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength),
|
|
150
142
|
plan: result.plan,
|
|
151
143
|
warnings: result.warnings,
|
|
152
144
|
format
|
|
@@ -2,13 +2,15 @@ import { boardScriptScope, composeBoardScriptItems } from "../../model/script-sc
|
|
|
2
2
|
import { buildBoardScene } from "../../model/scene.js";
|
|
3
3
|
import { createBoardScriptModuleReader, loadBoardScriptSources } from "../../../protocol/dist/board-script-modules.js";
|
|
4
4
|
import { createScriptRuntime } from "../../render/script-runtime.js";
|
|
5
|
+
import { initializeBoardFonts } from "./fonts.js";
|
|
5
6
|
import { Worker } from "node:worker_threads";
|
|
6
7
|
import { fileURLToPath } from "node:url";
|
|
7
8
|
//#region src/board/export/node/scripts.ts
|
|
8
9
|
const WORKER = `
|
|
9
10
|
const {parentPort, workerData} = require('node:worker_threads');
|
|
10
11
|
const {createContext, Script, SourceTextModule} = require('node:vm');
|
|
11
|
-
const {createCanvas} = require(workerData.canvasModule);
|
|
12
|
+
const {createCanvas, GlobalFonts} = require(workerData.canvasModule);
|
|
13
|
+
(${initializeBoardFonts.toString()})(GlobalFonts, workerData.fonts);
|
|
12
14
|
const instances = new Map();
|
|
13
15
|
const graphs = new Map();
|
|
14
16
|
const update = new Script('__runtime.update(JSON.parse(__inputJson)); __runtime.step(__time)');
|
|
@@ -17,7 +19,10 @@ const output = new Script('JSON.stringify(__runtime.output())');
|
|
|
17
19
|
const dispose = new Script('__runtime.destroy()');
|
|
18
20
|
function release(id) {
|
|
19
21
|
const entry=instances.get(id);instances.delete(id);
|
|
20
|
-
if(entry) {
|
|
22
|
+
if(entry) {
|
|
23
|
+
try {dispose.runInContext(entry.context,{timeout:workerData.timeout});} catch {}
|
|
24
|
+
if(entry.canvas) {entry.canvas.width=1;entry.canvas.height=1;}
|
|
25
|
+
}
|
|
21
26
|
}
|
|
22
27
|
async function create(data) {
|
|
23
28
|
const context = createContext({console:{log(){},warn(){},error(){}},structuredClone},{codeGeneration:{strings:false,wasm:false}});
|
|
@@ -67,22 +72,29 @@ parentPort.on('message',async data=>{
|
|
|
67
72
|
const width=Math.max(1,Math.round(data.input.width*data.scale));
|
|
68
73
|
const height=Math.max(1,Math.round(data.input.height*data.scale));
|
|
69
74
|
const canvas=entry.canvas??=createCanvas(width,height);
|
|
70
|
-
canvas.width=width;canvas.height=height;
|
|
71
|
-
const drawing=canvas.getContext('2d');drawing.scale(data.scale,data.scale);
|
|
72
|
-
context.__drawing=drawing;
|
|
73
|
-
|
|
75
|
+
if(canvas.width!==width || canvas.height!==height) {canvas.width=width;canvas.height=height;}
|
|
76
|
+
const drawing=canvas.getContext('2d');drawing.reset();drawing.scale(data.scale,data.scale);
|
|
77
|
+
context.__drawing=drawing;
|
|
78
|
+
try {
|
|
79
|
+
draw.runInContext(context,{timeout:workerData.timeout});
|
|
80
|
+
png=canvas.toBuffer('image/png');
|
|
81
|
+
} finally {
|
|
82
|
+
delete context.__drawing;canvas.width=1;canvas.height=1;
|
|
83
|
+
}
|
|
74
84
|
}
|
|
75
85
|
parentPort.postMessage({png,output:JSON.parse(output.runInContext(context,{timeout:workerData.timeout}))});
|
|
76
|
-
} catch(error) {
|
|
86
|
+
} catch(error) { release(data.input?.id);parentPort.postMessage({error:String(error.stack||error)}); }
|
|
77
87
|
});
|
|
78
88
|
`;
|
|
79
89
|
function createNodeBoardScriptHost(renderer, options) {
|
|
90
|
+
const concurrency = options.concurrency ?? 4;
|
|
91
|
+
if (!Number.isSafeInteger(concurrency) || concurrency < 1 || concurrency > 4) throw new Error("Script concurrency must be an integer between 1 and 4.");
|
|
80
92
|
const textures = /* @__PURE__ */ new Map();
|
|
81
93
|
const outputs = /* @__PURE__ */ new Map();
|
|
82
94
|
const errors = /* @__PURE__ */ new Map();
|
|
83
95
|
const sources = /* @__PURE__ */ new Map();
|
|
84
96
|
const modules = createBoardScriptModuleReader(options.readModule, options.readTimeoutMs);
|
|
85
|
-
const lanes = Array.from({ length:
|
|
97
|
+
const lanes = Array.from({ length: concurrency }, () => ({
|
|
86
98
|
worker: null,
|
|
87
99
|
tail: Promise.resolve(),
|
|
88
100
|
graphs: /* @__PURE__ */ new Set()
|
|
@@ -123,6 +135,7 @@ function createNodeBoardScriptHost(renderer, options) {
|
|
|
123
135
|
workerData: {
|
|
124
136
|
runtime: createScriptRuntime.toString(),
|
|
125
137
|
timeout,
|
|
138
|
+
fonts: renderer.fonts ?? [],
|
|
126
139
|
canvasModule: fileURLToPath(import.meta.resolve("@napi-rs/canvas"))
|
|
127
140
|
}
|
|
128
141
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { buildFallbackShapeColors } from "../model/palette.js";
|
|
2
2
|
import { imageAssetKey } from "../model/image-key.js";
|
|
3
|
-
import { defaultBoardPalette } from "../render/palette.js";
|
|
4
3
|
import { clippingAncestor, isClippingFrame, syncClipGroup } from "../render/clip.js";
|
|
4
|
+
import { defaultBoardPalette } from "../render/palette.js";
|
|
5
5
|
import { DEFAULT_BOARD_RENDER_LABELS, getBoardCardRenderer } from "../render/renderers/board-renderer-registry.js";
|
|
6
6
|
import { resolveBoardRenderStyle } from "../render/style.js";
|
|
7
7
|
import { Container, Graphics, Sprite, TilingSprite } from "pixi.js";
|
|
@@ -13,6 +13,7 @@ import { BoardScriptAnchor, BoardScriptContext, BoardScriptEvent, BoardScriptEve
|
|
|
13
13
|
import { boardScriptItems, hasBoardScripts } from "./script-index.js";
|
|
14
14
|
import { BoardScene, BoardSceneItem, SceneItem, buildBoardScene, orderBoardItems, placeItem, refreshBoardScene, sceneItemToItem, sceneItemsToRecord, toSceneItem } from "./scene.js";
|
|
15
15
|
import { boardScriptHitVisible, boardScriptTarget, resolveBoardScriptHit } from "./script-hit.js";
|
|
16
|
+
import { BOARD_SCRIPT_API } from "./script-api.js";
|
|
16
17
|
import { BOARD_SCRIPT_DRAWING_EXAMPLE } from "./script-example.js";
|
|
17
18
|
import { boardScriptScope, composeBoardScriptItems, prepareBoardScriptOutput, scriptTemporaryPrefix, validateBoardScriptCommit, validateBoardScriptOutput } from "./script-scene.js";
|
|
18
19
|
import { BoardCameraOverride, BoardColorResolver, BoardEaseFunction, BoardEvaluateOptions, BoardEvaluation, CompiledAnimation, CompiledBoardAnimations, CompiledTrack, applyBoardEvaluation, boardAnimationTime, boardDocumentAt, boardEase, compileBoardAnimations, evaluateBoardAnimations, parseHexColor, sampleBoardTrack } from "./animation.js";
|
|
@@ -40,4 +41,4 @@ import "./items/index.js";
|
|
|
40
41
|
import { BoardMediaKind, getMediaExtension, getMediaResourceTitle, inferBoardMediaKind } from "./media.js";
|
|
41
42
|
import { BoardAssetSource, BoardPlayableMedia, playableBoardMedia, playableBoardMediaList, resetBoardPlaybackUrlCache, resolveBoardMediaUrl } from "./media-playback.js";
|
|
42
43
|
import { BoardReplayActorKind, BoardReplayEntry, BoardReplayPlayer, boardReplayActorKind, createBoardReplayPlayer } from "./replay.js";
|
|
43
|
-
export { ARROW_BINDING_GAP, ArrowFrameLookup, BOARD_ANCHOR_SIDES, BOARD_ARROW_ROUTES, BOARD_CAMERA_TARGET, BOARD_COLORS, BOARD_COLOR_TOKENS, BOARD_DASHES, BOARD_DERIVED_SIZE_TYPES, BOARD_EFFECT_KINDS, BOARD_EFFECT_KIND_INFO, BOARD_ENTER_PRESETS, BOARD_EXPORT_DEFAULT_PADDING, BOARD_EXPORT_DEFAULT_SCALE, BOARD_EXPORT_ITEM_WARN_THRESHOLD, BOARD_EXPORT_MAX_EDGE, BOARD_EXPORT_MAX_PIXELS, BOARD_EXPORT_MAX_TEXTURES, BOARD_EXTENSION_TYPE_PATTERN, BOARD_GRID_DEFAULT_SIZE, BOARD_GRID_MAX_SIZE, BOARD_GRID_MIN_SIZE, BOARD_ID_MAX_LENGTH, BOARD_ITEM_SCHEMAS, BOARD_ITEM_TYPES, BOARD_PLAY_MODES, BOARD_PRESET_NAMES, BOARD_SCHEMA_TARGETS, BOARD_SCRIPT_DRAWING_EXAMPLE, BOARD_SHAPE_GEOMETRIES, BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, BOARD_TASK_ARTIFACT_LIMIT, BOARD_TASK_SOURCE_PREFIX, BOARD_TEXT_ALIGNS, BoardAnchorSide, BoardAnimation, BoardAnimationHeader, BoardAnimationHeaderSchema, BoardAnimationSampler, BoardAnimationSchema, BoardAppMetadata, BoardApplyOptions, BoardArrowAnchor, BoardArrowAnchorSchema, BoardArrowBinding, BoardArrowBindingSchema, BoardArrowEnd, BoardArrowEndSchema, BoardArrowItem, BoardArrowItemSchema, BoardArrowRoute, BoardAssetSource, BoardAudioItem, BoardAudioItemSchema, BoardBackgroundSchema, BoardBuiltinItem, BoardBuiltinItemType, BoardCameraFit, BoardCameraFocus, BoardCameraOverride, BoardCameraState, BoardChapter, BoardColor, BoardColorEntry, BoardColorId, BoardColorResolver, BoardColorSchema, BoardColorToken, BoardColorValue, BoardCropSchema, BoardCustomItem, BoardCustomItemSchema, BoardDash, BoardDelta, BoardDiagnostic, BoardDocument, BoardDrawInputSample, BoardDrawItem, BoardDrawItemSchema, BoardDrawPoint, BoardDrawPointSchema, BoardEaseFunction, BoardEaseSchema, BoardEffectItem, BoardEffectItemSchema, BoardEffectKind, BoardEnterPreset, BoardEvaluateOptions, BoardEvaluation, BoardExportAssetSelection, BoardExportPlan, BoardExportPlanInput, BoardExportRegion, BoardExtensionItem, BoardExtensionItemSchema, BoardFileBackedItem, BoardFileItem, BoardFileItemSchema, type BoardFileSnapshotFacts, BoardFrame, BoardFrameItem, BoardFrameItemSchema, BoardIdSchema, BoardImageItem, BoardImageItemSchema, BoardItem, BoardItemCapabilities, BoardItemDefinition, BoardItemEntry, BoardItemInput, BoardItemLookup, BoardItemOf, BoardItemResizeMode, BoardItemType, BoardKeySchema, BoardKeyframe, BoardKeyframeSchema, BoardLayout, BoardMarker, BoardMarkerSchema, BoardMatrix, BoardMediaItemKind, BoardMediaKind, BoardMediaOrigin, BoardMediaOriginSchema, BoardMediaSnapshot, BoardMediaSnapshotSchema, BoardMediaSource, BoardMediaSourceSchema, BoardNestedAnimationOptions, BoardNormalizedPoint, BoardPatch, BoardPatchResult, BoardPatchSchema, BoardPlacement, BoardPlayMode, BoardPlayableMedia, BoardPresetName, BoardPresetOptions, BoardPropertySpec, BoardRect, BoardRegistry, BoardReplayActorKind, BoardReplayEntry, BoardReplayPlayer, BoardScene, BoardSceneItem, BoardScreenOffset, BoardScreenPoint, BoardScript, BoardScriptAnchor, BoardScriptContext, BoardScriptEvent, BoardScriptEventOf, BoardScriptFrame, BoardScriptHit, BoardScriptHostEvents, BoardScriptItemPatch, BoardScriptModule, BoardScriptOutput, BoardScriptParameter, BoardScriptSceneOptions, BoardScriptSchema, BoardScriptSnapshot, BoardScriptView, BoardSettings, BoardSettingsSchema, BoardShapeColors, BoardShapeGeometry, BoardShapeItem, BoardShapeItemSchema, BoardSize, BoardSizeSchema, BoardState, BoardStyle, BoardStyleSchema, BoardStyledToolId, BoardTaskArtifact, BoardTaskArtifactSchema, BoardTaskItem, BoardTaskItemSchema, type BoardTaskRunSource, BoardTaskSnapshot, BoardTaskSnapshotSchema, BoardTextItem, BoardTextItemSchema, BoardTextLayout, BoardTextMeasurer, BoardToolStyleMap, BoardToolStylePatch, BoardTrack, BoardTrackSchema, BoardValueKind, BoardVec2, BoardVec2Schema, BoardVideoItem, BoardVideoItemSchema, BoardViewport, BoardWorldOffset, BoardWorldPoint, BoardWorldRect, type BuildSnapshotInput, CORNER_RESIZE_HANDLES, CORNER_ROTATION_ZONE_WIDTH, CompiledAnimation, CompiledBoardAnimations, CompiledTrack, CornerResizeHandle, DEFAULT_BOARD_COLOR, DEFAULT_BOARD_TOOL_STYLES, EDGE_RESIZE_HANDLES, FILE_EXCERPT_MAX_BYTES, FILE_EXCERPT_MAX_CHARS, FIT_PADDING, FULL_CAPABILITIES, FileAvailability, type FileCategory, FilePreviewKind, HANDLE_DIRECTION, HANDLE_HIT_RADIUS, IDENTITY_MATRIX, MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, MIN_ITEM_SIZE, Point, RESIZE_HANDLES, ROTATION_HANDLE_OFFSET, Rect, ResizeHandle, ResolvedArrow, ResolvedArrowEnd, type ResolvedCover, SHAPE_KINDS, SceneItem, ScreenPoint, ShapeKind, Size, StrokeRibbonBuilder, StrokeRibbonGeometry, StrokeRibbonMesh, TEXT_FONT_FAMILY, TEXT_FONT_SIZE, TEXT_LINE_HEIGHT, TEXT_MAX_FONT_SIZE, TEXT_MIN_FONT_SIZE, VIEWPORT_MARGIN_RATIO, WorldPoint, anchorPoint, angleFromCenter, appendBoardDrawSamples, applyBoardDelta, applyBoardEvaluation, applyBoardPatch, applyBoardPatchToDocument, applyMatrix, arrowBindings, arrowHitRadius, arrowPathBounds, autoAnchorSide, availabilityFromError, bendControl, boardAnimationTime, boardColorCssVar, boardDocumentAt, boardEase, boardFontFamily, boardImageKeySource, boardItemOrigin, boardItemSchema, boardJsonSchema, boardNestedAnimation, boardNestedAnimationTrack, boardOriginKey, boardPatchTouches, boardPathTrack, boardPresetTracks, boardReplayActorKind, boardSchemaOverview, boardScriptHitVisible, boardScriptItems, boardScriptScope, boardScriptTarget, boardSequence, boardSequencePatch, boardTaskSource, buildBoardScene, buildCodeExcerpt, buildFallbackShapeColors, buildFileExcerpt, buildFileSnapshot, buildStrokeOutline, buildStrokeRibbonGeometry, builtinBoardItems, cameraForFocus, cameraForRect, cameraForState, clamp, clampBoardFontSize, clampBoardStrokeSize, clampBoardFontSize as clampBoardTextFontSize, clampZoom, compileBoardAnimations, composeBoardScriptItems, computeDrawBounds, createAppBoardItem, createArrowBoardItem, createBoardAnimationSampler, createBoardEntityId, createBoardItemId, createBoardLayout, createBoardRegistry, createBoardReplayPlayer, createBoardToolStyles, createDocumentLayout, createDocumentState, createDrawBoardItem, createFileNodeForPath, createFrameBoardItem, createMediaBoardItem, createShapeBoardItem, createStrokeRibbonBuilder, createTaskBoardItem, createTaskResultItems, createTextBoardItem, defaultBoardRegistry, defineBoardItem, degToRad, diffBoardDocuments, diffMergePatch, distanceToArrow, distanceToStroke, drawPointsBounds, drawSampleRadius, emptyBoardDocument, estimateTextWidth, evaluateBoardAnimations, expandRect, exportItemBounds, featuredTaskArtifact, fileBaseName, fileCategory, fileCategoryAccent, fileMetaLine, filePreviewKind, filePreviewMemoKey, filePreviewScope, fileStem, fileTypeLabel, fitToContent, formatFileSize, frameContainsPoint, frameCornerRotationHandleAt, frameCorners, frameEdgeHandleAt, frameHandlePosition, framePoint, frameRayIntersection, frameRect, getMediaExtension, getMediaResourceTitle, handlePosition, hasAuthoredSize, hasBoardScripts, imageAssetKey, inferBoardMediaKind, invertMatrix, isArrowBinding, isBoardColorId, isBoardColorString, isBoardEase, isBoardPath, isBoardPresetName, isBuiltinItem, isBuiltinItemType, isEmptyBoardDelta, isEmptyBoardPatch, isFileBackedItem, isFileSnapshotFresh, isMediaItem, isPublicBoardRemoteAddress, isSafeBoardSourcePath, isShapeKind, isStrokeCorner, itemBounds, layoutBoardText, listBoardPresets, listBoardProperties, mediaFrameSize, mergeFileSnapshot, mergePatch, multiplyMatrix, normalizeBoardDocument, normalizeBoardRemoteUrl, normalizeRotation, normalizeViewport, normalizedPoint, orderBoardItems, panBy, parseBoardDocument, parseBoardItem, parseBoardManifest, parseBoardMediaSource, parseHexColor, pathMidpoint, pathPointAt, pickBoardColor, placeBoardOverlay, placeItem, planBoardExport, playableBoardMedia, playableBoardMediaList, pointToWorld, pointsBounds, pointsRect, prepareBoardScriptOutput, pruneBoardTrack, quantizeDrawCoordinate, radToDeg, rankedTaskArtifacts, readCoverFromFrontmatter, readFrontmatterScalars, readTitleFromFrontmatter, rectCenter, rectContainsPoint, rectForCameraFocus, rectsIntersect, refreshBoardScene, resetBoardPlaybackUrlCache, resizeFrame, resizeFrameToSize, resolveAnchor, resolveArrow, resolveBoardAnimationCamera, resolveBoardColor, resolveBoardMediaUrl, resolveBoardProperty, resolveBoardScriptHit, resolveCoverRef, resolveFileTitle, resolveItemColor, resolveSceneArrow, resolveSpacePath, rotateAround, rotateFrames, rotatePointAround, rotationHandleAnchor, rotationHandlePosition, sampleBoardTrack, sampleRadius, scaleFrames, scaleVector, sceneItemToItem, sceneItemsToRecord, screenOffset, screenPoint, screenToWorld, scriptTemporaryPrefix, selectBoardExportAssets, selectionBounds, serializeBoardManifest, setBoardTextMeasurer, shouldFetchFileExcerpt, sideAnchor, simplifyDrawIndices, splitFrontmatter, stableCullRect, taskArtifactPreviewUrl, taskArtifacts, taskRunArtifacts, taskRunToBoardTaskSnapshot, titleForBoardItem, toSceneItem, trackReferences, trimDrawPoints, unionRects, validateBoardScriptCommit, validateBoardScriptOutput, visibleWorldRect, withObservedArtifactFacts, worldOffset, worldPoint, worldRect, worldToScreen, zoomAround };
|
|
44
|
+
export { ARROW_BINDING_GAP, ArrowFrameLookup, BOARD_ANCHOR_SIDES, BOARD_ARROW_ROUTES, BOARD_CAMERA_TARGET, BOARD_COLORS, BOARD_COLOR_TOKENS, BOARD_DASHES, BOARD_DERIVED_SIZE_TYPES, BOARD_EFFECT_KINDS, BOARD_EFFECT_KIND_INFO, BOARD_ENTER_PRESETS, BOARD_EXPORT_DEFAULT_PADDING, BOARD_EXPORT_DEFAULT_SCALE, BOARD_EXPORT_ITEM_WARN_THRESHOLD, BOARD_EXPORT_MAX_EDGE, BOARD_EXPORT_MAX_PIXELS, BOARD_EXPORT_MAX_TEXTURES, BOARD_EXTENSION_TYPE_PATTERN, BOARD_GRID_DEFAULT_SIZE, BOARD_GRID_MAX_SIZE, BOARD_GRID_MIN_SIZE, BOARD_ID_MAX_LENGTH, BOARD_ITEM_SCHEMAS, BOARD_ITEM_TYPES, BOARD_PLAY_MODES, BOARD_PRESET_NAMES, BOARD_SCHEMA_TARGETS, BOARD_SCRIPT_API, BOARD_SCRIPT_DRAWING_EXAMPLE, BOARD_SHAPE_GEOMETRIES, BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, BOARD_TASK_ARTIFACT_LIMIT, BOARD_TASK_SOURCE_PREFIX, BOARD_TEXT_ALIGNS, BoardAnchorSide, BoardAnimation, BoardAnimationHeader, BoardAnimationHeaderSchema, BoardAnimationSampler, BoardAnimationSchema, BoardAppMetadata, BoardApplyOptions, BoardArrowAnchor, BoardArrowAnchorSchema, BoardArrowBinding, BoardArrowBindingSchema, BoardArrowEnd, BoardArrowEndSchema, BoardArrowItem, BoardArrowItemSchema, BoardArrowRoute, BoardAssetSource, BoardAudioItem, BoardAudioItemSchema, BoardBackgroundSchema, BoardBuiltinItem, BoardBuiltinItemType, BoardCameraFit, BoardCameraFocus, BoardCameraOverride, BoardCameraState, BoardChapter, BoardColor, BoardColorEntry, BoardColorId, BoardColorResolver, BoardColorSchema, BoardColorToken, BoardColorValue, BoardCropSchema, BoardCustomItem, BoardCustomItemSchema, BoardDash, BoardDelta, BoardDiagnostic, BoardDocument, BoardDrawInputSample, BoardDrawItem, BoardDrawItemSchema, BoardDrawPoint, BoardDrawPointSchema, BoardEaseFunction, BoardEaseSchema, BoardEffectItem, BoardEffectItemSchema, BoardEffectKind, BoardEnterPreset, BoardEvaluateOptions, BoardEvaluation, BoardExportAssetSelection, BoardExportPlan, BoardExportPlanInput, BoardExportRegion, BoardExtensionItem, BoardExtensionItemSchema, BoardFileBackedItem, BoardFileItem, BoardFileItemSchema, type BoardFileSnapshotFacts, BoardFrame, BoardFrameItem, BoardFrameItemSchema, BoardIdSchema, BoardImageItem, BoardImageItemSchema, BoardItem, BoardItemCapabilities, BoardItemDefinition, BoardItemEntry, BoardItemInput, BoardItemLookup, BoardItemOf, BoardItemResizeMode, BoardItemType, BoardKeySchema, BoardKeyframe, BoardKeyframeSchema, BoardLayout, BoardMarker, BoardMarkerSchema, BoardMatrix, BoardMediaItemKind, BoardMediaKind, BoardMediaOrigin, BoardMediaOriginSchema, BoardMediaSnapshot, BoardMediaSnapshotSchema, BoardMediaSource, BoardMediaSourceSchema, BoardNestedAnimationOptions, BoardNormalizedPoint, BoardPatch, BoardPatchResult, BoardPatchSchema, BoardPlacement, BoardPlayMode, BoardPlayableMedia, BoardPresetName, BoardPresetOptions, BoardPropertySpec, BoardRect, BoardRegistry, BoardReplayActorKind, BoardReplayEntry, BoardReplayPlayer, BoardScene, BoardSceneItem, BoardScreenOffset, BoardScreenPoint, BoardScript, BoardScriptAnchor, BoardScriptContext, BoardScriptEvent, BoardScriptEventOf, BoardScriptFrame, BoardScriptHit, BoardScriptHostEvents, BoardScriptItemPatch, BoardScriptModule, BoardScriptOutput, BoardScriptParameter, BoardScriptSceneOptions, BoardScriptSchema, BoardScriptSnapshot, BoardScriptView, BoardSettings, BoardSettingsSchema, BoardShapeColors, BoardShapeGeometry, BoardShapeItem, BoardShapeItemSchema, BoardSize, BoardSizeSchema, BoardState, BoardStyle, BoardStyleSchema, BoardStyledToolId, BoardTaskArtifact, BoardTaskArtifactSchema, BoardTaskItem, BoardTaskItemSchema, type BoardTaskRunSource, BoardTaskSnapshot, BoardTaskSnapshotSchema, BoardTextItem, BoardTextItemSchema, BoardTextLayout, BoardTextMeasurer, BoardToolStyleMap, BoardToolStylePatch, BoardTrack, BoardTrackSchema, BoardValueKind, BoardVec2, BoardVec2Schema, BoardVideoItem, BoardVideoItemSchema, BoardViewport, BoardWorldOffset, BoardWorldPoint, BoardWorldRect, type BuildSnapshotInput, CORNER_RESIZE_HANDLES, CORNER_ROTATION_ZONE_WIDTH, CompiledAnimation, CompiledBoardAnimations, CompiledTrack, CornerResizeHandle, DEFAULT_BOARD_COLOR, DEFAULT_BOARD_TOOL_STYLES, EDGE_RESIZE_HANDLES, FILE_EXCERPT_MAX_BYTES, FILE_EXCERPT_MAX_CHARS, FIT_PADDING, FULL_CAPABILITIES, FileAvailability, type FileCategory, FilePreviewKind, HANDLE_DIRECTION, HANDLE_HIT_RADIUS, IDENTITY_MATRIX, MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, MIN_ITEM_SIZE, Point, RESIZE_HANDLES, ROTATION_HANDLE_OFFSET, Rect, ResizeHandle, ResolvedArrow, ResolvedArrowEnd, type ResolvedCover, SHAPE_KINDS, SceneItem, ScreenPoint, ShapeKind, Size, StrokeRibbonBuilder, StrokeRibbonGeometry, StrokeRibbonMesh, TEXT_FONT_FAMILY, TEXT_FONT_SIZE, TEXT_LINE_HEIGHT, TEXT_MAX_FONT_SIZE, TEXT_MIN_FONT_SIZE, VIEWPORT_MARGIN_RATIO, WorldPoint, anchorPoint, angleFromCenter, appendBoardDrawSamples, applyBoardDelta, applyBoardEvaluation, applyBoardPatch, applyBoardPatchToDocument, applyMatrix, arrowBindings, arrowHitRadius, arrowPathBounds, autoAnchorSide, availabilityFromError, bendControl, boardAnimationTime, boardColorCssVar, boardDocumentAt, boardEase, boardFontFamily, boardImageKeySource, boardItemOrigin, boardItemSchema, boardJsonSchema, boardNestedAnimation, boardNestedAnimationTrack, boardOriginKey, boardPatchTouches, boardPathTrack, boardPresetTracks, boardReplayActorKind, boardSchemaOverview, boardScriptHitVisible, boardScriptItems, boardScriptScope, boardScriptTarget, boardSequence, boardSequencePatch, boardTaskSource, buildBoardScene, buildCodeExcerpt, buildFallbackShapeColors, buildFileExcerpt, buildFileSnapshot, buildStrokeOutline, buildStrokeRibbonGeometry, builtinBoardItems, cameraForFocus, cameraForRect, cameraForState, clamp, clampBoardFontSize, clampBoardStrokeSize, clampBoardFontSize as clampBoardTextFontSize, clampZoom, compileBoardAnimations, composeBoardScriptItems, computeDrawBounds, createAppBoardItem, createArrowBoardItem, createBoardAnimationSampler, createBoardEntityId, createBoardItemId, createBoardLayout, createBoardRegistry, createBoardReplayPlayer, createBoardToolStyles, createDocumentLayout, createDocumentState, createDrawBoardItem, createFileNodeForPath, createFrameBoardItem, createMediaBoardItem, createShapeBoardItem, createStrokeRibbonBuilder, createTaskBoardItem, createTaskResultItems, createTextBoardItem, defaultBoardRegistry, defineBoardItem, degToRad, diffBoardDocuments, diffMergePatch, distanceToArrow, distanceToStroke, drawPointsBounds, drawSampleRadius, emptyBoardDocument, estimateTextWidth, evaluateBoardAnimations, expandRect, exportItemBounds, featuredTaskArtifact, fileBaseName, fileCategory, fileCategoryAccent, fileMetaLine, filePreviewKind, filePreviewMemoKey, filePreviewScope, fileStem, fileTypeLabel, fitToContent, formatFileSize, frameContainsPoint, frameCornerRotationHandleAt, frameCorners, frameEdgeHandleAt, frameHandlePosition, framePoint, frameRayIntersection, frameRect, getMediaExtension, getMediaResourceTitle, handlePosition, hasAuthoredSize, hasBoardScripts, imageAssetKey, inferBoardMediaKind, invertMatrix, isArrowBinding, isBoardColorId, isBoardColorString, isBoardEase, isBoardPath, isBoardPresetName, isBuiltinItem, isBuiltinItemType, isEmptyBoardDelta, isEmptyBoardPatch, isFileBackedItem, isFileSnapshotFresh, isMediaItem, isPublicBoardRemoteAddress, isSafeBoardSourcePath, isShapeKind, isStrokeCorner, itemBounds, layoutBoardText, listBoardPresets, listBoardProperties, mediaFrameSize, mergeFileSnapshot, mergePatch, multiplyMatrix, normalizeBoardDocument, normalizeBoardRemoteUrl, normalizeRotation, normalizeViewport, normalizedPoint, orderBoardItems, panBy, parseBoardDocument, parseBoardItem, parseBoardManifest, parseBoardMediaSource, parseHexColor, pathMidpoint, pathPointAt, pickBoardColor, placeBoardOverlay, placeItem, planBoardExport, playableBoardMedia, playableBoardMediaList, pointToWorld, pointsBounds, pointsRect, prepareBoardScriptOutput, pruneBoardTrack, quantizeDrawCoordinate, radToDeg, rankedTaskArtifacts, readCoverFromFrontmatter, readFrontmatterScalars, readTitleFromFrontmatter, rectCenter, rectContainsPoint, rectForCameraFocus, rectsIntersect, refreshBoardScene, resetBoardPlaybackUrlCache, resizeFrame, resizeFrameToSize, resolveAnchor, resolveArrow, resolveBoardAnimationCamera, resolveBoardColor, resolveBoardMediaUrl, resolveBoardProperty, resolveBoardScriptHit, resolveCoverRef, resolveFileTitle, resolveItemColor, resolveSceneArrow, resolveSpacePath, rotateAround, rotateFrames, rotatePointAround, rotationHandleAnchor, rotationHandlePosition, sampleBoardTrack, sampleRadius, scaleFrames, scaleVector, sceneItemToItem, sceneItemsToRecord, screenOffset, screenPoint, screenToWorld, scriptTemporaryPrefix, selectBoardExportAssets, selectionBounds, serializeBoardManifest, setBoardTextMeasurer, shouldFetchFileExcerpt, sideAnchor, simplifyDrawIndices, splitFrontmatter, stableCullRect, taskArtifactPreviewUrl, taskArtifacts, taskRunArtifacts, taskRunToBoardTaskSnapshot, titleForBoardItem, toSceneItem, trackReferences, trimDrawPoints, unionRects, validateBoardScriptCommit, validateBoardScriptOutput, visibleWorldRect, withObservedArtifactFacts, worldOffset, worldPoint, worldRect, worldToScreen, zoomAround };
|
|
@@ -11,6 +11,7 @@ import { boardScriptItems, hasBoardScripts } from "./script-index.js";
|
|
|
11
11
|
import { CORNER_RESIZE_HANDLES, CORNER_ROTATION_ZONE_WIDTH, EDGE_RESIZE_HANDLES, FIT_PADDING, HANDLE_DIRECTION, HANDLE_HIT_RADIUS, MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, MIN_ITEM_SIZE, RESIZE_HANDLES, ROTATION_HANDLE_OFFSET, VIEWPORT_MARGIN_RATIO, angleFromCenter, cameraForFocus, cameraForRect, cameraForState, clamp, clampZoom, degToRad, expandRect, fitToContent, frameContainsPoint, frameCornerRotationHandleAt, frameCorners, frameEdgeHandleAt, frameHandlePosition, frameRayIntersection, frameRect, handlePosition, itemBounds, normalizeRotation, normalizeViewport, normalizedPoint, panBy, pointToWorld, pointsBounds, radToDeg, rectCenter, rectContainsPoint, rectForCameraFocus, rectsIntersect, resizeFrame, resizeFrameToSize, rotateFrames, rotatePointAround, rotationHandleAnchor, rotationHandlePosition, scaleFrames, screenOffset, screenPoint, screenToWorld, selectionBounds, stableCullRect, unionRects, visibleWorldRect, worldOffset, worldPoint, worldRect, worldToScreen, zoomAround } from "./geometry.js";
|
|
12
12
|
import { boardScriptScope, composeBoardScriptItems, prepareBoardScriptOutput, scriptTemporaryPrefix, validateBoardScriptCommit, validateBoardScriptOutput } from "./script-scene.js";
|
|
13
13
|
import { boardScriptHitVisible, boardScriptTarget, resolveBoardScriptHit } from "./script-hit.js";
|
|
14
|
+
import { BOARD_SCRIPT_API } from "./script-api.js";
|
|
14
15
|
import { BOARD_SCRIPT_DRAWING_EXAMPLE } from "./script-example.js";
|
|
15
16
|
import { applyBoardEvaluation, boardAnimationTime, boardDocumentAt, boardEase, compileBoardAnimations, evaluateBoardAnimations, parseHexColor, sampleBoardTrack } from "./animation.js";
|
|
16
17
|
import { buildBoardScene, orderBoardItems, placeItem, refreshBoardScene, sceneItemToItem, sceneItemsToRecord, toSceneItem } from "./scene.js";
|
|
@@ -37,4 +38,4 @@ import { boardItemOrigin, boardOriginKey, createAppBoardItem, createArrowBoardIt
|
|
|
37
38
|
import { createBoardRegistry, defaultBoardRegistry } from "./items/registry.js";
|
|
38
39
|
import { playableBoardMedia, playableBoardMediaList, resetBoardPlaybackUrlCache, resolveBoardMediaUrl } from "./media-playback.js";
|
|
39
40
|
import { boardReplayActorKind, createBoardReplayPlayer } from "./replay.js";
|
|
40
|
-
export { ARROW_BINDING_GAP, BOARD_ANCHOR_SIDES, BOARD_ARROW_ROUTES, BOARD_CAMERA_TARGET, BOARD_COLORS, BOARD_COLOR_TOKENS, BOARD_DASHES, BOARD_DERIVED_SIZE_TYPES, BOARD_EFFECT_KINDS, BOARD_EFFECT_KIND_INFO, BOARD_ENTER_PRESETS, BOARD_EXPORT_DEFAULT_PADDING, BOARD_EXPORT_DEFAULT_SCALE, BOARD_EXPORT_ITEM_WARN_THRESHOLD, BOARD_EXPORT_MAX_EDGE, BOARD_EXPORT_MAX_PIXELS, BOARD_EXPORT_MAX_TEXTURES, BOARD_EXTENSION_TYPE_PATTERN, BOARD_GRID_DEFAULT_SIZE, BOARD_GRID_MAX_SIZE, BOARD_GRID_MIN_SIZE, BOARD_ID_MAX_LENGTH, BOARD_ITEM_SCHEMAS, BOARD_ITEM_TYPES, BOARD_PLAY_MODES, BOARD_PRESET_NAMES, BOARD_SCHEMA_TARGETS, BOARD_SCRIPT_DRAWING_EXAMPLE, BOARD_SHAPE_GEOMETRIES, BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, BOARD_TASK_ARTIFACT_LIMIT, BOARD_TASK_SOURCE_PREFIX, BOARD_TEXT_ALIGNS, BoardAnimationHeaderSchema, BoardAnimationSchema, BoardArrowAnchorSchema, BoardArrowBindingSchema, BoardArrowEndSchema, BoardArrowItemSchema, BoardAudioItemSchema, BoardBackgroundSchema, BoardColorSchema, BoardCropSchema, BoardCustomItemSchema, BoardDrawItemSchema, BoardDrawPointSchema, BoardEaseSchema, BoardEffectItemSchema, BoardExtensionItemSchema, BoardFileItemSchema, BoardFrameItemSchema, BoardIdSchema, BoardImageItemSchema, BoardKeySchema, BoardKeyframeSchema, BoardMarkerSchema, BoardMediaOriginSchema, BoardMediaSnapshotSchema, BoardMediaSourceSchema, BoardPatchSchema, BoardScriptSchema, BoardSettingsSchema, BoardShapeItemSchema, BoardSizeSchema, BoardStyleSchema, BoardTaskArtifactSchema, BoardTaskItemSchema, BoardTaskSnapshotSchema, BoardTextItemSchema, BoardTrackSchema, BoardVec2Schema, BoardVideoItemSchema, CORNER_RESIZE_HANDLES, CORNER_ROTATION_ZONE_WIDTH, DEFAULT_BOARD_COLOR, DEFAULT_BOARD_TOOL_STYLES, EDGE_RESIZE_HANDLES, FILE_EXCERPT_MAX_BYTES, FILE_EXCERPT_MAX_CHARS, FIT_PADDING, FULL_CAPABILITIES, HANDLE_DIRECTION, HANDLE_HIT_RADIUS, IDENTITY_MATRIX, MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, MIN_ITEM_SIZE, RESIZE_HANDLES, ROTATION_HANDLE_OFFSET, SHAPE_KINDS, TEXT_FONT_FAMILY, TEXT_FONT_SIZE, TEXT_LINE_HEIGHT, TEXT_MAX_FONT_SIZE, TEXT_MIN_FONT_SIZE, VIEWPORT_MARGIN_RATIO, anchorPoint, angleFromCenter, appendBoardDrawSamples, applyBoardDelta, applyBoardEvaluation, applyBoardPatch, applyBoardPatchToDocument, applyMatrix, arrowBindings, arrowHitRadius, arrowPathBounds, autoAnchorSide, availabilityFromError, bendControl, boardAnimationTime, boardColorCssVar, boardDocumentAt, boardEase, boardFontFamily, boardImageKeySource, boardItemOrigin, boardItemSchema, boardJsonSchema, boardNestedAnimation, boardNestedAnimationTrack, boardOriginKey, boardPatchTouches, boardPathTrack, boardPresetTracks, boardReplayActorKind, boardSchemaOverview, boardScriptHitVisible, boardScriptItems, boardScriptScope, boardScriptTarget, boardSequence, boardSequencePatch, boardTaskSource, buildBoardScene, buildCodeExcerpt, buildFallbackShapeColors, buildFileExcerpt, buildFileSnapshot, buildStrokeOutline, buildStrokeRibbonGeometry, builtinBoardItems, cameraForFocus, cameraForRect, cameraForState, clamp, clampBoardFontSize, clampBoardStrokeSize, clampBoardFontSize as clampBoardTextFontSize, clampZoom, compileBoardAnimations, composeBoardScriptItems, computeDrawBounds, createAppBoardItem, createArrowBoardItem, createBoardAnimationSampler, createBoardEntityId, createBoardItemId, createBoardLayout, createBoardRegistry, createBoardReplayPlayer, createBoardToolStyles, createDocumentLayout, createDocumentState, createDrawBoardItem, createFileNodeForPath, createFrameBoardItem, createMediaBoardItem, createShapeBoardItem, createStrokeRibbonBuilder, createTaskBoardItem, createTaskResultItems, createTextBoardItem, defaultBoardRegistry, defineBoardItem, degToRad, diffBoardDocuments, diffMergePatch, distanceToArrow, distanceToStroke, drawPointsBounds, drawSampleRadius, emptyBoardDocument, estimateTextWidth, evaluateBoardAnimations, expandRect, exportItemBounds, featuredTaskArtifact, fileBaseName, fileCategory, fileCategoryAccent, fileMetaLine, filePreviewKind, filePreviewMemoKey, filePreviewScope, fileStem, fileTypeLabel, fitToContent, formatFileSize, frameContainsPoint, frameCornerRotationHandleAt, frameCorners, frameEdgeHandleAt, frameHandlePosition, framePoint, frameRayIntersection, frameRect, getMediaExtension, getMediaResourceTitle, handlePosition, hasAuthoredSize, hasBoardScripts, imageAssetKey, inferBoardMediaKind, invertMatrix, isArrowBinding, isBoardColorId, isBoardColorString, isBoardEase, isBoardPath, isBoardPresetName, isBuiltinItem, isBuiltinItemType, isEmptyBoardDelta, isEmptyBoardPatch, isFileBackedItem, isFileSnapshotFresh, isMediaItem, isPublicBoardRemoteAddress, isSafeBoardSourcePath, isShapeKind, isStrokeCorner, itemBounds, layoutBoardText, listBoardPresets, listBoardProperties, mediaFrameSize, mergeFileSnapshot, mergePatch, multiplyMatrix, normalizeBoardDocument, normalizeBoardRemoteUrl, normalizeRotation, normalizeViewport, normalizedPoint, orderBoardItems, panBy, parseBoardDocument, parseBoardItem, parseBoardManifest, parseBoardMediaSource, parseHexColor, pathMidpoint, pathPointAt, pickBoardColor, placeBoardOverlay, placeItem, planBoardExport, playableBoardMedia, playableBoardMediaList, pointToWorld, pointsBounds, pointsRect, prepareBoardScriptOutput, pruneBoardTrack, quantizeDrawCoordinate, radToDeg, rankedTaskArtifacts, readCoverFromFrontmatter, readFrontmatterScalars, readTitleFromFrontmatter, rectCenter, rectContainsPoint, rectForCameraFocus, rectsIntersect, refreshBoardScene, resetBoardPlaybackUrlCache, resizeFrame, resizeFrameToSize, resolveAnchor, resolveArrow, resolveBoardAnimationCamera, resolveBoardColor, resolveBoardMediaUrl, resolveBoardProperty, resolveBoardScriptHit, resolveCoverRef, resolveFileTitle, resolveItemColor, resolveSceneArrow, resolveSpacePath, rotateAround, rotateFrames, rotatePointAround, rotationHandleAnchor, rotationHandlePosition, sampleBoardTrack, sampleRadius, scaleFrames, scaleVector, sceneItemToItem, sceneItemsToRecord, screenOffset, screenPoint, screenToWorld, scriptTemporaryPrefix, selectBoardExportAssets, selectionBounds, serializeBoardManifest, setBoardTextMeasurer, shouldFetchFileExcerpt, sideAnchor, simplifyDrawIndices, splitFrontmatter, stableCullRect, taskArtifactPreviewUrl, taskArtifacts, taskRunArtifacts, taskRunToBoardTaskSnapshot, titleForBoardItem, toSceneItem, trackReferences, trimDrawPoints, unionRects, validateBoardScriptCommit, validateBoardScriptOutput, visibleWorldRect, withObservedArtifactFacts, worldOffset, worldPoint, worldRect, worldToScreen, zoomAround };
|
|
41
|
+
export { ARROW_BINDING_GAP, BOARD_ANCHOR_SIDES, BOARD_ARROW_ROUTES, BOARD_CAMERA_TARGET, BOARD_COLORS, BOARD_COLOR_TOKENS, BOARD_DASHES, BOARD_DERIVED_SIZE_TYPES, BOARD_EFFECT_KINDS, BOARD_EFFECT_KIND_INFO, BOARD_ENTER_PRESETS, BOARD_EXPORT_DEFAULT_PADDING, BOARD_EXPORT_DEFAULT_SCALE, BOARD_EXPORT_ITEM_WARN_THRESHOLD, BOARD_EXPORT_MAX_EDGE, BOARD_EXPORT_MAX_PIXELS, BOARD_EXPORT_MAX_TEXTURES, BOARD_EXTENSION_TYPE_PATTERN, BOARD_GRID_DEFAULT_SIZE, BOARD_GRID_MAX_SIZE, BOARD_GRID_MIN_SIZE, BOARD_ID_MAX_LENGTH, BOARD_ITEM_SCHEMAS, BOARD_ITEM_TYPES, BOARD_PLAY_MODES, BOARD_PRESET_NAMES, BOARD_SCHEMA_TARGETS, BOARD_SCRIPT_API, BOARD_SCRIPT_DRAWING_EXAMPLE, BOARD_SHAPE_GEOMETRIES, BOARD_STROKE_MAX_SIZE, BOARD_STROKE_MIN_SIZE, BOARD_TASK_ARTIFACT_LIMIT, BOARD_TASK_SOURCE_PREFIX, BOARD_TEXT_ALIGNS, BoardAnimationHeaderSchema, BoardAnimationSchema, BoardArrowAnchorSchema, BoardArrowBindingSchema, BoardArrowEndSchema, BoardArrowItemSchema, BoardAudioItemSchema, BoardBackgroundSchema, BoardColorSchema, BoardCropSchema, BoardCustomItemSchema, BoardDrawItemSchema, BoardDrawPointSchema, BoardEaseSchema, BoardEffectItemSchema, BoardExtensionItemSchema, BoardFileItemSchema, BoardFrameItemSchema, BoardIdSchema, BoardImageItemSchema, BoardKeySchema, BoardKeyframeSchema, BoardMarkerSchema, BoardMediaOriginSchema, BoardMediaSnapshotSchema, BoardMediaSourceSchema, BoardPatchSchema, BoardScriptSchema, BoardSettingsSchema, BoardShapeItemSchema, BoardSizeSchema, BoardStyleSchema, BoardTaskArtifactSchema, BoardTaskItemSchema, BoardTaskSnapshotSchema, BoardTextItemSchema, BoardTrackSchema, BoardVec2Schema, BoardVideoItemSchema, CORNER_RESIZE_HANDLES, CORNER_ROTATION_ZONE_WIDTH, DEFAULT_BOARD_COLOR, DEFAULT_BOARD_TOOL_STYLES, EDGE_RESIZE_HANDLES, FILE_EXCERPT_MAX_BYTES, FILE_EXCERPT_MAX_CHARS, FIT_PADDING, FULL_CAPABILITIES, HANDLE_DIRECTION, HANDLE_HIT_RADIUS, IDENTITY_MATRIX, MAX_BOARD_ZOOM, MIN_BOARD_ZOOM, MIN_ITEM_SIZE, RESIZE_HANDLES, ROTATION_HANDLE_OFFSET, SHAPE_KINDS, TEXT_FONT_FAMILY, TEXT_FONT_SIZE, TEXT_LINE_HEIGHT, TEXT_MAX_FONT_SIZE, TEXT_MIN_FONT_SIZE, VIEWPORT_MARGIN_RATIO, anchorPoint, angleFromCenter, appendBoardDrawSamples, applyBoardDelta, applyBoardEvaluation, applyBoardPatch, applyBoardPatchToDocument, applyMatrix, arrowBindings, arrowHitRadius, arrowPathBounds, autoAnchorSide, availabilityFromError, bendControl, boardAnimationTime, boardColorCssVar, boardDocumentAt, boardEase, boardFontFamily, boardImageKeySource, boardItemOrigin, boardItemSchema, boardJsonSchema, boardNestedAnimation, boardNestedAnimationTrack, boardOriginKey, boardPatchTouches, boardPathTrack, boardPresetTracks, boardReplayActorKind, boardSchemaOverview, boardScriptHitVisible, boardScriptItems, boardScriptScope, boardScriptTarget, boardSequence, boardSequencePatch, boardTaskSource, buildBoardScene, buildCodeExcerpt, buildFallbackShapeColors, buildFileExcerpt, buildFileSnapshot, buildStrokeOutline, buildStrokeRibbonGeometry, builtinBoardItems, cameraForFocus, cameraForRect, cameraForState, clamp, clampBoardFontSize, clampBoardStrokeSize, clampBoardFontSize as clampBoardTextFontSize, clampZoom, compileBoardAnimations, composeBoardScriptItems, computeDrawBounds, createAppBoardItem, createArrowBoardItem, createBoardAnimationSampler, createBoardEntityId, createBoardItemId, createBoardLayout, createBoardRegistry, createBoardReplayPlayer, createBoardToolStyles, createDocumentLayout, createDocumentState, createDrawBoardItem, createFileNodeForPath, createFrameBoardItem, createMediaBoardItem, createShapeBoardItem, createStrokeRibbonBuilder, createTaskBoardItem, createTaskResultItems, createTextBoardItem, defaultBoardRegistry, defineBoardItem, degToRad, diffBoardDocuments, diffMergePatch, distanceToArrow, distanceToStroke, drawPointsBounds, drawSampleRadius, emptyBoardDocument, estimateTextWidth, evaluateBoardAnimations, expandRect, exportItemBounds, featuredTaskArtifact, fileBaseName, fileCategory, fileCategoryAccent, fileMetaLine, filePreviewKind, filePreviewMemoKey, filePreviewScope, fileStem, fileTypeLabel, fitToContent, formatFileSize, frameContainsPoint, frameCornerRotationHandleAt, frameCorners, frameEdgeHandleAt, frameHandlePosition, framePoint, frameRayIntersection, frameRect, getMediaExtension, getMediaResourceTitle, handlePosition, hasAuthoredSize, hasBoardScripts, imageAssetKey, inferBoardMediaKind, invertMatrix, isArrowBinding, isBoardColorId, isBoardColorString, isBoardEase, isBoardPath, isBoardPresetName, isBuiltinItem, isBuiltinItemType, isEmptyBoardDelta, isEmptyBoardPatch, isFileBackedItem, isFileSnapshotFresh, isMediaItem, isPublicBoardRemoteAddress, isSafeBoardSourcePath, isShapeKind, isStrokeCorner, itemBounds, layoutBoardText, listBoardPresets, listBoardProperties, mediaFrameSize, mergeFileSnapshot, mergePatch, multiplyMatrix, normalizeBoardDocument, normalizeBoardRemoteUrl, normalizeRotation, normalizeViewport, normalizedPoint, orderBoardItems, panBy, parseBoardDocument, parseBoardItem, parseBoardManifest, parseBoardMediaSource, parseHexColor, pathMidpoint, pathPointAt, pickBoardColor, placeBoardOverlay, placeItem, planBoardExport, playableBoardMedia, playableBoardMediaList, pointToWorld, pointsBounds, pointsRect, prepareBoardScriptOutput, pruneBoardTrack, quantizeDrawCoordinate, radToDeg, rankedTaskArtifacts, readCoverFromFrontmatter, readFrontmatterScalars, readTitleFromFrontmatter, rectCenter, rectContainsPoint, rectForCameraFocus, rectsIntersect, refreshBoardScene, resetBoardPlaybackUrlCache, resizeFrame, resizeFrameToSize, resolveAnchor, resolveArrow, resolveBoardAnimationCamera, resolveBoardColor, resolveBoardMediaUrl, resolveBoardProperty, resolveBoardScriptHit, resolveCoverRef, resolveFileTitle, resolveItemColor, resolveSceneArrow, resolveSpacePath, rotateAround, rotateFrames, rotatePointAround, rotationHandleAnchor, rotationHandlePosition, sampleBoardTrack, sampleRadius, scaleFrames, scaleVector, sceneItemToItem, sceneItemsToRecord, screenOffset, screenPoint, screenToWorld, scriptTemporaryPrefix, selectBoardExportAssets, selectionBounds, serializeBoardManifest, setBoardTextMeasurer, shouldFetchFileExcerpt, sideAnchor, simplifyDrawIndices, splitFrontmatter, stableCullRect, taskArtifactPreviewUrl, taskArtifacts, taskRunArtifacts, taskRunToBoardTaskSnapshot, titleForBoardItem, toSceneItem, trackReferences, trimDrawPoints, unionRects, validateBoardScriptCommit, validateBoardScriptOutput, visibleWorldRect, withObservedArtifactFacts, worldOffset, worldPoint, worldRect, worldToScreen, zoomAround };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
//#region src/board/model/script-api.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* A compact reference for Board script authors, printed by `cohub boards schema script`.
|
|
4
|
+
* Each group is checked against its type, so a new member fails to compile until it is described.
|
|
5
|
+
*/
|
|
6
|
+
declare const BOARD_SCRIPT_API: {
|
|
7
|
+
readonly runtime: readonly ["Modules are .js or .mjs Space files that import only literal relative paths (at most 64 modules, 2 MB).", "They run in a worker with no DOM or network. Use Apps for HTML content.", "Exports replay deterministically from ctx.onFrame, the frame clock, ctx.random() and ctx.state; timers, Date.now() and Math.random() do not."];
|
|
8
|
+
readonly module: {
|
|
9
|
+
draw: string;
|
|
10
|
+
animated: string;
|
|
11
|
+
parameters: string;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
readonly frame: {
|
|
15
|
+
t: string;
|
|
16
|
+
dt: string;
|
|
17
|
+
width: string;
|
|
18
|
+
height: string;
|
|
19
|
+
seed: string;
|
|
20
|
+
params: string;
|
|
21
|
+
state: string;
|
|
22
|
+
};
|
|
23
|
+
readonly context: {
|
|
24
|
+
self: string;
|
|
25
|
+
params: string;
|
|
26
|
+
targets: string;
|
|
27
|
+
state: string;
|
|
28
|
+
frame: string;
|
|
29
|
+
view: string;
|
|
30
|
+
random: string;
|
|
31
|
+
on: string;
|
|
32
|
+
onFrame: string;
|
|
33
|
+
onDispose: string;
|
|
34
|
+
invalidate: string;
|
|
35
|
+
get: string;
|
|
36
|
+
present: string;
|
|
37
|
+
scene: string;
|
|
38
|
+
hitRegions: string;
|
|
39
|
+
emit: string;
|
|
40
|
+
commit: string;
|
|
41
|
+
capabilities: string;
|
|
42
|
+
};
|
|
43
|
+
readonly scope: "The owner, a Frame owner's descendants, and script.targets.";
|
|
44
|
+
readonly hitRegions: {
|
|
45
|
+
readonly forms: readonly ["{ target: \"self\" }: the owner.", "{ item: id }: a scene item.", "{ x, y, width, height }: a rectangle in owner coordinates."];
|
|
46
|
+
readonly options: "label (also a keyboard focus target) and cursor.";
|
|
47
|
+
readonly rule: "Only declared regions receive input; everything else passes through to the Board. Event target is the region's key.";
|
|
48
|
+
};
|
|
49
|
+
readonly sceneOptions: {
|
|
50
|
+
space: string;
|
|
51
|
+
anchor: string;
|
|
52
|
+
};
|
|
53
|
+
readonly events: {
|
|
54
|
+
readonly input: "pointerenter, pointerleave, pointerdown, pointermove, pointerup, pointercancel, click, focus, blur, keydown, keyup. Pointer events carry point in owner coordinates; key events carry key.";
|
|
55
|
+
readonly host: {
|
|
56
|
+
selectionchange: string;
|
|
57
|
+
transformend: string;
|
|
58
|
+
viewchange: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
readonly view: {
|
|
62
|
+
camera: string;
|
|
63
|
+
width: string;
|
|
64
|
+
height: string;
|
|
65
|
+
safeRect: string;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { BOARD_SCRIPT_API };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//#region src/board/model/script-api.ts
|
|
2
|
+
/**
|
|
3
|
+
* A compact reference for Board script authors, printed by `cohub boards schema script`.
|
|
4
|
+
* Each group is checked against its type, so a new member fails to compile until it is described.
|
|
5
|
+
*/
|
|
6
|
+
const BOARD_SCRIPT_API = {
|
|
7
|
+
runtime: [
|
|
8
|
+
"Modules are .js or .mjs Space files that import only literal relative paths (at most 64 modules, 2 MB).",
|
|
9
|
+
"They run in a worker with no DOM or network. Use Apps for HTML content.",
|
|
10
|
+
"Exports replay deterministically from ctx.onFrame, the frame clock, ctx.random() and ctx.state; timers, Date.now() and Math.random() do not."
|
|
11
|
+
],
|
|
12
|
+
module: {
|
|
13
|
+
draw: "draw(ctx, frame): synchronous Canvas 2D drawing in item-local units.",
|
|
14
|
+
animated: "true redraws every frame; otherwise draw runs when its inputs change or after invalidate().",
|
|
15
|
+
parameters: "Declares params as { name: { type: number | boolean | string | color, label?, default?, min?, max?, step? } }.",
|
|
16
|
+
default: "Setup function (ctx) for behavior; may return a cleanup function."
|
|
17
|
+
},
|
|
18
|
+
frame: {
|
|
19
|
+
t: "Clock time in milliseconds.",
|
|
20
|
+
dt: "Milliseconds since the previous frame.",
|
|
21
|
+
width: "Item width in board units.",
|
|
22
|
+
height: "Item height in board units.",
|
|
23
|
+
seed: "script.seed, or the item id.",
|
|
24
|
+
params: "script.params merged over parameter defaults.",
|
|
25
|
+
state: "ctx.state."
|
|
26
|
+
},
|
|
27
|
+
context: {
|
|
28
|
+
self: "The owner: id, base (its authored item) and present(patch | null).",
|
|
29
|
+
params: "script.params merged over parameter defaults.",
|
|
30
|
+
targets: "script.targets: names mapped to item ids.",
|
|
31
|
+
state: "Mutable state kept across frames and restored in exports.",
|
|
32
|
+
frame: "The latest frame.",
|
|
33
|
+
view: "Camera, width, height and safeRect in screen pixels; null until a viewchange.",
|
|
34
|
+
random: "random(): a seeded number in [0, 1).",
|
|
35
|
+
on: "on(type, handler): input and host events; returns an unsubscribe function.",
|
|
36
|
+
onFrame: "onFrame(handler): a 60 Hz fixed step; returns an unsubscribe function.",
|
|
37
|
+
onDispose: "onDispose(handler): cleanup when the instance stops.",
|
|
38
|
+
invalidate: "invalidate(): redraw a non-animated draw().",
|
|
39
|
+
get: "get(id): an item in scope, as authored.",
|
|
40
|
+
present: "present(id, patch | null): temporarily override an item in scope; never saved.",
|
|
41
|
+
scene: "scene(items, options?): replace this instance's temporary Board items; never saved.",
|
|
42
|
+
hitRegions: "hitRegions(regions): replace the input declarations.",
|
|
43
|
+
emit: "emit(id, type, data?): send a custom event to another scripted item in scope.",
|
|
44
|
+
commit: "commit(patch): save a Board patch through history and permissions; it may edit items in scope or add children to a scoped frame.",
|
|
45
|
+
capabilities: "has(name) and call(name, input?) for adapters the host provides."
|
|
46
|
+
},
|
|
47
|
+
scope: "The owner, a Frame owner's descendants, and script.targets.",
|
|
48
|
+
hitRegions: {
|
|
49
|
+
forms: [
|
|
50
|
+
"{ target: \"self\" }: the owner.",
|
|
51
|
+
"{ item: id }: a scene item.",
|
|
52
|
+
"{ x, y, width, height }: a rectangle in owner coordinates."
|
|
53
|
+
],
|
|
54
|
+
options: "label (also a keyboard focus target) and cursor.",
|
|
55
|
+
rule: "Only declared regions receive input; everything else passes through to the Board. Event target is the region's key."
|
|
56
|
+
},
|
|
57
|
+
sceneOptions: {
|
|
58
|
+
space: "world (default) follows the owner's transform; screen keeps screen-pixel size and is left out of exports.",
|
|
59
|
+
anchor: "{ item, point }: pin a screen scene to an item, point in 0–1 box coordinates."
|
|
60
|
+
},
|
|
61
|
+
events: {
|
|
62
|
+
input: "pointerenter, pointerleave, pointerdown, pointermove, pointerup, pointercancel, click, focus, blur, keydown, keyup. Pointer events carry point in owner coordinates; key events carry key.",
|
|
63
|
+
host: {
|
|
64
|
+
selectionchange: "data.ids: selected items in scope.",
|
|
65
|
+
transformend: "data.ids, data.operation (move | resize | rotate | arrow), data.cancelled.",
|
|
66
|
+
viewchange: "data: the view; also stored in ctx.view."
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
view: {
|
|
70
|
+
camera: "x, y and zoom.",
|
|
71
|
+
width: "Viewport width in screen pixels.",
|
|
72
|
+
height: "Viewport height in screen pixels.",
|
|
73
|
+
safeRect: "The viewport area not covered by editor chrome."
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
export { BOARD_SCRIPT_API };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { BoardTextItem } from "../../protocol/dist/board-model.js";
|
|
2
|
+
import { BoardFrame } from "../../protocol/dist/board-layout.js";
|
|
2
3
|
import "../../protocol/dist/index.js";
|
|
4
|
+
import { Rect } from "../model/geometry.js";
|
|
3
5
|
import { BoardScene } from "../model/scene.js";
|
|
4
6
|
//#region src/board/render/diagnostics.d.ts
|
|
5
7
|
type BoardRenderDiagnostic = {
|
|
@@ -15,6 +17,22 @@ declare function measureBoardText(props: BoardTextItem["props"]): {
|
|
|
15
17
|
lineHeight: number;
|
|
16
18
|
missingCharacters: string;
|
|
17
19
|
};
|
|
18
|
-
declare function
|
|
20
|
+
declare function inspectBoardItems(scene: BoardScene, ids?: ReadonlySet<string>): {
|
|
21
|
+
diagnostics: BoardRenderDiagnostic[];
|
|
22
|
+
items: {
|
|
23
|
+
id: string;
|
|
24
|
+
bounds: BoardFrame;
|
|
25
|
+
worldBounds: Rect;
|
|
26
|
+
opacity: number;
|
|
27
|
+
text?: {
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
lines: string[];
|
|
31
|
+
lineHeight: number;
|
|
32
|
+
missingCharacters: string;
|
|
33
|
+
} | undefined;
|
|
34
|
+
}[];
|
|
35
|
+
};
|
|
36
|
+
declare function inspectBoardScene(scene: BoardScene, limit?: number, ids?: ReadonlySet<string>): BoardRenderDiagnostic[];
|
|
19
37
|
//#endregion
|
|
20
|
-
export { BoardRenderDiagnostic, inspectBoardScene, measureBoardText };
|
|
38
|
+
export { BoardRenderDiagnostic, inspectBoardItems, inspectBoardScene, measureBoardText };
|
|
@@ -46,12 +46,24 @@ function measureBoardText(props) {
|
|
|
46
46
|
missingCharacters: characters
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
function
|
|
49
|
+
function inspectBoardItems(scene, ids) {
|
|
50
|
+
return {
|
|
51
|
+
diagnostics: inspectBoardScene(scene, 100, ids),
|
|
52
|
+
items: scene.items.filter((item) => !ids || ids.has(item.id)).map((item) => ({
|
|
53
|
+
id: item.id,
|
|
54
|
+
bounds: item.frame,
|
|
55
|
+
worldBounds: itemBounds(item.frame),
|
|
56
|
+
opacity: scene.opacity(item.id),
|
|
57
|
+
...item.type === "text" ? { text: measureBoardText(item.props) } : {}
|
|
58
|
+
}))
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function inspectBoardScene(scene, limit = 100, ids) {
|
|
50
62
|
ensureBoardTextMeasurement();
|
|
51
63
|
const diagnostics = [];
|
|
52
64
|
const texts = scene.items.filter((item) => item.type === "text" && scene.opacity(item.id) > .01);
|
|
53
65
|
const push = (entry) => {
|
|
54
|
-
if (diagnostics.length < limit) diagnostics.push(entry);
|
|
66
|
+
if (diagnostics.length < limit && (!ids || ids.has(entry.item) || Boolean(entry.related && ids.has(entry.related)))) diagnostics.push(entry);
|
|
55
67
|
};
|
|
56
68
|
for (const item of scene.items) {
|
|
57
69
|
if (diagnostics.length >= limit) break;
|
|
@@ -63,7 +75,7 @@ function inspectBoardScene(scene, limit = 100) {
|
|
|
63
75
|
let glyphBudget = 256;
|
|
64
76
|
for (const item of texts) {
|
|
65
77
|
if (diagnostics.length >= limit || item.type !== "text") break;
|
|
66
|
-
if (glyphBudget-- > 0) {
|
|
78
|
+
if ((!ids || ids.has(item.id)) && glyphBudget-- > 0) {
|
|
67
79
|
const measured = measureBoardText(item.props);
|
|
68
80
|
if (measured.missingCharacters) push({
|
|
69
81
|
code: "glyph-unavailable",
|
|
@@ -102,6 +114,7 @@ function inspectBoardScene(scene, limit = 100) {
|
|
|
102
114
|
const b = sorted[j];
|
|
103
115
|
if (!b) continue;
|
|
104
116
|
if (b.rect.x >= a.rect.x + a.rect.width) break;
|
|
117
|
+
if (ids && !ids.has(a.item.id) && !ids.has(b.item.id)) continue;
|
|
105
118
|
if (++comparisons > 1e4) return diagnostics;
|
|
106
119
|
if (a.item.parent === b.item.parent && rectsIntersect(a.rect, b.rect)) push({
|
|
107
120
|
code: "text-overlap",
|
|
@@ -114,4 +127,4 @@ function inspectBoardScene(scene, limit = 100) {
|
|
|
114
127
|
return diagnostics;
|
|
115
128
|
}
|
|
116
129
|
//#endregion
|
|
117
|
-
export { inspectBoardScene, measureBoardText };
|
|
130
|
+
export { inspectBoardItems, inspectBoardScene, measureBoardText };
|