@neta-art/cohub 10.0.0 → 11.1.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.
Files changed (155) hide show
  1. package/README.md +42 -7
  2. package/dist/board/editor/animation.d.ts +3 -0
  3. package/dist/board/editor/animation.js +16 -1
  4. package/dist/board/editor/clipboard.js +7 -0
  5. package/dist/board/editor/copy.js +23 -18
  6. package/dist/board/editor/creation.d.ts +7 -3
  7. package/dist/board/editor/creation.js +5 -4
  8. package/dist/board/editor/deletion.js +3 -3
  9. package/dist/board/editor/document.d.ts +8 -2
  10. package/dist/board/editor/document.js +54 -7
  11. package/dist/board/editor/editor.d.ts +22 -7
  12. package/dist/board/editor/editor.js +12 -2
  13. package/dist/board/editor/index.d.ts +2 -2
  14. package/dist/board/editor/interaction.d.ts +8 -2
  15. package/dist/board/editor/interaction.js +34 -1
  16. package/dist/board/editor/query.d.ts +5 -5
  17. package/dist/board/editor/query.js +14 -12
  18. package/dist/board/editor/selection.js +2 -1
  19. package/dist/board/editor/snapshots.d.ts +0 -2
  20. package/dist/board/editor/snapshots.js +4 -20
  21. package/dist/board/export/index.d.ts +25 -4
  22. package/dist/board/export/index.js +45 -12
  23. package/dist/board/export/node/index.d.ts +5 -4
  24. package/dist/board/export/node/index.js +16 -11
  25. package/dist/board/export/node/scripts.d.ts +16 -0
  26. package/dist/board/export/node/scripts.js +258 -0
  27. package/dist/board/export/scene.d.ts +2 -1
  28. package/dist/board/export/scene.js +24 -7
  29. package/dist/board/model/animation.d.ts +4 -1
  30. package/dist/board/model/animation.js +34 -7
  31. package/dist/board/model/authoring.d.ts +20 -0
  32. package/dist/board/model/authoring.js +185 -0
  33. package/dist/board/model/export-plan.js +1 -0
  34. package/dist/board/model/file-preview.js +1 -1
  35. package/dist/board/model/file-snapshot.js +3 -2
  36. package/dist/board/model/image-key.js +7 -3
  37. package/dist/board/model/index.d.ts +15 -7
  38. package/dist/board/model/index.js +16 -9
  39. package/dist/board/model/items/builtin.js +2 -2
  40. package/dist/board/model/items/create.d.ts +19 -4
  41. package/dist/board/model/items/create.js +130 -9
  42. package/dist/board/model/items/index.d.ts +2 -2
  43. package/dist/board/model/items/index.js +2 -2
  44. package/dist/board/model/media-playback.d.ts +2 -1
  45. package/dist/board/model/media-playback.js +15 -5
  46. package/dist/board/model/media.js +7 -1
  47. package/dist/board/model/overlay-placement.d.ts +25 -0
  48. package/dist/board/model/overlay-placement.js +35 -0
  49. package/dist/board/model/replay.d.ts +1 -1
  50. package/dist/board/model/replay.js +1 -0
  51. package/dist/board/model/sampling.d.ts +19 -0
  52. package/dist/board/model/sampling.js +96 -0
  53. package/dist/board/model/script-example.d.ts +4 -0
  54. package/dist/board/model/script-example.js +21 -0
  55. package/dist/board/model/script-hit.d.ts +27 -0
  56. package/dist/board/model/script-hit.js +109 -0
  57. package/dist/board/model/script-index.d.ts +7 -0
  58. package/dist/board/model/script-index.js +15 -0
  59. package/dist/board/model/script-observers.d.ts +18 -0
  60. package/dist/board/model/script-observers.js +92 -0
  61. package/dist/board/model/script-scene.d.ts +24 -0
  62. package/dist/board/model/script-scene.js +294 -0
  63. package/dist/board/model/script.d.ts +149 -0
  64. package/dist/board/model/script.js +1 -0
  65. package/dist/board/render/board-background.js +5 -4
  66. package/dist/board/render/css-color.d.ts +6 -1
  67. package/dist/board/render/css-color.js +34 -20
  68. package/dist/board/render/diagnostics.d.ts +20 -0
  69. package/dist/board/render/diagnostics.js +117 -0
  70. package/dist/board/render/index.d.ts +9 -6
  71. package/dist/board/render/index.js +10 -7
  72. package/dist/board/render/media-interaction.js +1 -1
  73. package/dist/board/render/palette.d.ts +2 -1
  74. package/dist/board/render/palette.js +6 -2
  75. package/dist/board/render/renderers/arrow-card-renderer.js +3 -2
  76. package/dist/board/render/renderers/audio-card-renderer.js +2 -1
  77. package/dist/board/render/renderers/board-renderer-registry.d.ts +25 -5
  78. package/dist/board/render/renderers/board-renderer-registry.js +11 -4
  79. package/dist/board/render/renderers/custom-card-renderer.d.ts +5 -0
  80. package/dist/board/render/renderers/{sketch-card-renderer.js → custom-card-renderer.js} +18 -16
  81. package/dist/board/render/renderers/draw-card-renderer.js +3 -2
  82. package/dist/board/render/renderers/effect-card-renderer.js +22 -5
  83. package/dist/board/render/renderers/frame-card-renderer.js +30 -14
  84. package/dist/board/render/renderers/image-card-renderer.js +43 -4
  85. package/dist/board/render/renderers/shape-card-renderer.js +10 -27
  86. package/dist/board/render/renderers/task-card-renderer.d.ts +2 -1
  87. package/dist/board/render/renderers/task-card-renderer.js +220 -71
  88. package/dist/board/render/renderers/text-card-renderer.js +5 -3
  89. package/dist/board/render/renderers/unknown-card-renderer.js +1 -0
  90. package/dist/board/render/renderers/video-card-renderer.js +2 -1
  91. package/dist/board/render/sampling.d.ts +22 -0
  92. package/dist/board/render/sampling.js +21 -0
  93. package/dist/board/render/script-export.d.ts +11 -0
  94. package/dist/board/render/script-export.js +86 -0
  95. package/dist/board/render/script-host.d.ts +31 -0
  96. package/dist/board/render/script-host.js +446 -0
  97. package/dist/board/render/script-modules.d.ts +2 -0
  98. package/dist/board/render/script-modules.js +2 -0
  99. package/dist/board/render/script-runtime.d.ts +29 -0
  100. package/dist/board/render/script-runtime.js +223 -0
  101. package/dist/board/render/script-sandbox.d.ts +4 -0
  102. package/dist/board/render/script-sandbox.js +173 -0
  103. package/dist/board/render/script-texture.d.ts +11 -0
  104. package/dist/board/render/script-texture.js +33 -0
  105. package/dist/board/render/stroke.d.ts +2 -1
  106. package/dist/board/render/stroke.js +22 -1
  107. package/dist/board/render/text-measurement.js +1 -1
  108. package/dist/board/stage/assets.js +7 -2
  109. package/dist/board/stage/maintenance.d.ts +5 -0
  110. package/dist/board/stage/maintenance.js +11 -0
  111. package/dist/board/stage/scene.d.ts +2 -0
  112. package/dist/board/stage/scene.js +21 -2
  113. package/dist/board/stage/script-pointer.d.ts +20 -0
  114. package/dist/board/stage/script-pointer.js +41 -0
  115. package/dist/board/stage/stage.d.ts +21 -3
  116. package/dist/board/stage/stage.js +350 -47
  117. package/dist/board/stage/texture-pool.js +2 -3
  118. package/dist/chunks/environment.d.ts +305 -27
  119. package/dist/chunks/environment.js +12 -4
  120. package/dist/chunks/host-bridge.d.ts +2 -2
  121. package/dist/chunks/http.d.ts +90 -7
  122. package/dist/chunks/http.js +157 -64
  123. package/dist/chunks/transport.js +4 -2
  124. package/dist/chunks/websocket.d.ts +9 -1
  125. package/dist/chunks/websocket.js +16 -2
  126. package/dist/host-bridge.js +2 -1
  127. package/dist/http.d.ts +3 -3
  128. package/dist/index.d.ts +182 -4
  129. package/dist/index.js +1559 -299
  130. package/dist/protocol/dist/board-assets.d.ts +1 -0
  131. package/dist/protocol/dist/board-constants.js +2 -2
  132. package/dist/protocol/dist/board-model.d.ts +236 -11
  133. package/dist/protocol/dist/board-model.js +46 -17
  134. package/dist/protocol/dist/board-patch.js +2 -1
  135. package/dist/protocol/dist/board-schema.d.ts +4 -2
  136. package/dist/protocol/dist/board-schema.js +18 -4
  137. package/dist/protocol/dist/board-script-modules.d.ts +25 -0
  138. package/dist/protocol/dist/board-script-modules.js +127 -0
  139. package/dist/protocol/dist/board-task.d.ts +22 -0
  140. package/dist/{board/model/task.js → protocol/dist/board-task.js} +34 -7
  141. package/dist/protocol/dist/display/index.d.ts +1 -0
  142. package/dist/protocol/dist/generation/blocks.d.ts +8 -0
  143. package/dist/{generation-blocks.js → protocol/dist/generation/blocks.js} +14 -15
  144. package/dist/protocol/dist/index.d.ts +7 -2
  145. package/dist/protocol/dist/realtime/types.d.ts +1 -0
  146. package/dist/protocol/dist/rtc/index.d.ts +1 -0
  147. package/dist/protocol/dist/task/index.d.ts +4 -0
  148. package/package.json +2 -1
  149. package/dist/board/export/node/sketch.d.ts +0 -19
  150. package/dist/board/export/node/sketch.js +0 -146
  151. package/dist/board/model/task.d.ts +0 -11
  152. package/dist/board/render/renderers/sketch-card-renderer.d.ts +0 -5
  153. package/dist/board/render/sketch-host.d.ts +0 -14
  154. package/dist/board/render/sketch-host.js +0 -216
  155. package/dist/types.d.ts +0 -36
@@ -0,0 +1,41 @@
1
+ //#region src/board/stage/script-pointer.ts
2
+ function createBoardScriptPointerRouter() {
3
+ const gestures = /* @__PURE__ */ new Map();
4
+ return {
5
+ needsRouting(pointerId, scriptsEnabled) {
6
+ return scriptsEnabled || gestures.has(pointerId);
7
+ },
8
+ owner(pointerId) {
9
+ const gesture = gestures.get(pointerId);
10
+ return gesture ? gesture.target ? "script" : "editor" : null;
11
+ },
12
+ route(phase, pointerId, target, point, cancelled = false) {
13
+ if (phase === "down") gestures.set(pointerId, {
14
+ target,
15
+ ...point
16
+ });
17
+ const gesture = gestures.get(pointerId);
18
+ const recipient = gesture ? gesture.cancelled ? null : gesture.target : phase === "move" ? target : null;
19
+ let click = null;
20
+ if (phase === "up") {
21
+ gestures.delete(pointerId);
22
+ if (!cancelled && !gesture?.cancelled && gesture?.target && target?.owner === gesture.target.owner && target.target === gesture.target.target && Math.hypot(point.x - gesture.x, point.y - gesture.y) < 5) click = gesture.target;
23
+ }
24
+ return {
25
+ recipient,
26
+ click
27
+ };
28
+ },
29
+ cancelScripts(cancel, owner, retained) {
30
+ for (const [pointerId, gesture] of gestures) if (!gesture.cancelled && gesture.target && (!owner || gesture.target.owner === owner) && (!retained || !Object.hasOwn(retained, gesture.target.target))) {
31
+ gesture.cancelled = true;
32
+ cancel(pointerId, gesture.target);
33
+ }
34
+ },
35
+ clear() {
36
+ gestures.clear();
37
+ }
38
+ };
39
+ }
40
+ //#endregion
41
+ export { createBoardScriptPointerRouter };
@@ -1,7 +1,8 @@
1
- import { BoardItem } from "../../protocol/dist/board-model.js";
1
+ import { BoardItem, BoardTaskItem } from "../../protocol/dist/board-model.js";
2
2
  import { BoardPlaybackSnapshot } from "../../protocol/dist/board.js";
3
3
  import "../../protocol/dist/index.js";
4
- import { BoardViewport, WorldPoint } from "../model/geometry.js";
4
+ import { BoardViewport, Rect, WorldPoint } from "../model/geometry.js";
5
+ import { BoardScriptOutput, BoardScriptSnapshot } from "../model/script.js";
5
6
  import { BoardScene, BoardSceneItem } from "../model/scene.js";
6
7
  import { BoardShapeColors } from "../model/palette.js";
7
8
  import { BoardAssetSource } from "../model/media-playback.js";
@@ -9,7 +10,7 @@ import "../model/index.js";
9
10
  import { BoardPointerEvent } from "../editor/interaction.js";
10
11
  import { BoardEditor } from "../editor/editor.js";
11
12
  import "../editor/index.js";
12
- import { BoardCardRendererResolver, BoardRenderPalette } from "../render/renderers/board-renderer-registry.js";
13
+ import { BoardCardRendererResolver, BoardRenderLabels, BoardRenderPalette } from "../render/renderers/board-renderer-registry.js";
13
14
  import "../render/index.js";
14
15
  import { BoardAssetManager } from "./assets.js";
15
16
  import { BoardLiveStroke } from "./scene.js";
@@ -31,6 +32,12 @@ type BoardStageOptions = {
31
32
  renderers?: BoardCardRendererResolver;
32
33
  views?: readonly BoardItemView[];
33
34
  theme?: () => BoardStageTheme;
35
+ labels?: () => BoardRenderLabels;
36
+ taskRun?: (taskRunId: string) => {
37
+ status: BoardTaskItem["props"]["snapshot"]["status"];
38
+ startedAt?: string;
39
+ } | null;
40
+ reducedMotion?: () => boolean;
34
41
  playback?: () => BoardPlaybackSnapshot | null;
35
42
  fileState?: (path: string) => "ok" | "missing" | "unavailable";
36
43
  previews?: () => ReadonlyMap<string, BoardItem>;
@@ -47,6 +54,8 @@ type BoardStageOptions = {
47
54
  height: number;
48
55
  }) => void;
49
56
  onVisibleChange?: (ids: ReadonlySet<string> | null) => void;
57
+ safeRect?: () => Rect;
58
+ scriptCapabilities?: Record<string, (id: string, input: unknown) => Promise<unknown>>;
50
59
  };
51
60
  type BoardStage = {
52
61
  readonly ready: Promise<boolean>;
@@ -54,8 +63,17 @@ type BoardStage = {
54
63
  readonly camera: BoardViewport;
55
64
  readonly theme: BoardStageTheme;
56
65
  setActive(active: boolean): void;
66
+ setScriptMode(mode: "edit" | "interact" | "paused"): void;
67
+ resetScripts(): void;
68
+ invalidateScript(path: string): void;
69
+ scriptError(id: string): string | null;
70
+ scriptOutput(id: string): BoardScriptOutput | null;
71
+ snapshotScripts(): Promise<Record<string, BoardScriptSnapshot>>;
72
+ restoreScript(id: string, snapshot: BoardScriptSnapshot): void;
73
+ subscribeScripts(listener: () => void): () => void;
57
74
  invalidate(options?: {
58
75
  cards?: boolean;
76
+ items?: Iterable<string>;
59
77
  }): void;
60
78
  isMaterialized(id: string): boolean;
61
79
  toWorld(clientX: number, clientY: number): WorldPoint;