@hypertools/sdk 0.1.0 → 0.2.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.
Files changed (67) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +19 -19
  3. package/dist/capture/index.d.ts +1 -1
  4. package/dist/capture/index.js +13 -1
  5. package/dist/capture/index.js.map +2 -2
  6. package/dist/controls/index.js +13 -1
  7. package/dist/controls/index.js.map +2 -2
  8. package/dist/core/index.js +13 -1
  9. package/dist/core/index.js.map +2 -2
  10. package/dist/index.d.ts +6 -6
  11. package/dist/index.js +14 -1
  12. package/dist/index.js.map +3 -3
  13. package/dist/react/index.js +13 -1
  14. package/dist/react/index.js.map +2 -2
  15. package/dist/recording/index.js +13 -1
  16. package/dist/recording/index.js.map +2 -2
  17. package/package.json +34 -13
  18. package/dist/codegen/index.d.ts +0 -6
  19. package/dist/codegen/index.d.ts.map +0 -1
  20. package/dist/codegen/index.js +0 -800
  21. package/dist/codegen/index.js.map +0 -13
  22. package/dist/export/bundler.d.ts +0 -55
  23. package/dist/export/bundler.d.ts.map +0 -1
  24. package/dist/export/generators/index.d.ts +0 -6
  25. package/dist/export/generators/index.d.ts.map +0 -1
  26. package/dist/export/generators/webComponent.d.ts +0 -29
  27. package/dist/export/generators/webComponent.d.ts.map +0 -1
  28. package/dist/export/index.d.ts +0 -19
  29. package/dist/export/index.d.ts.map +0 -1
  30. package/dist/export/index.js +0 -800
  31. package/dist/export/index.js.map +0 -13
  32. package/dist/export/runtime.d.ts +0 -46
  33. package/dist/export/runtime.d.ts.map +0 -1
  34. package/dist/frame/cssBridge.d.ts +0 -34
  35. package/dist/frame/cssBridge.d.ts.map +0 -1
  36. package/dist/frame/index.d.ts +0 -9
  37. package/dist/frame/index.d.ts.map +0 -1
  38. package/dist/frame/index.js +0 -3
  39. package/dist/frame/index.js.map +0 -24
  40. package/dist/frame/runtime.d.ts +0 -39
  41. package/dist/frame/runtime.d.ts.map +0 -1
  42. package/dist/frame/types.d.ts +0 -119
  43. package/dist/frame/types.d.ts.map +0 -1
  44. package/dist/frame/utils/dom.d.ts +0 -11
  45. package/dist/frame/utils/dom.d.ts.map +0 -1
  46. package/dist/frame/wrapper-app/WrapperApp.d.ts +0 -16
  47. package/dist/frame/wrapper-app/WrapperApp.d.ts.map +0 -1
  48. package/dist/frame/wrapper-app/components/CanvasSizeWidget.d.ts +0 -17
  49. package/dist/frame/wrapper-app/components/CanvasSizeWidget.d.ts.map +0 -1
  50. package/dist/frame/wrapper-app/components/ControlsPanel.d.ts +0 -11
  51. package/dist/frame/wrapper-app/components/ControlsPanel.d.ts.map +0 -1
  52. package/dist/frame/wrapper-app/components/ExportWidget.d.ts +0 -16
  53. package/dist/frame/wrapper-app/components/ExportWidget.d.ts.map +0 -1
  54. package/dist/frame/wrapper-app/components/ResizeHandles.d.ts +0 -19
  55. package/dist/frame/wrapper-app/components/ResizeHandles.d.ts.map +0 -1
  56. package/dist/frame/wrapper-app/components/SandboxContainer.d.ts +0 -16
  57. package/dist/frame/wrapper-app/components/SandboxContainer.d.ts.map +0 -1
  58. package/dist/frame/wrapper-app/components/index.d.ts +0 -5
  59. package/dist/frame/wrapper-app/components/index.d.ts.map +0 -1
  60. package/dist/frame/wrapper-app/context/CanvasContext.d.ts +0 -37
  61. package/dist/frame/wrapper-app/context/CanvasContext.d.ts.map +0 -1
  62. package/dist/frame/wrapper-app/context/index.d.ts +0 -2
  63. package/dist/frame/wrapper-app/context/index.d.ts.map +0 -1
  64. package/dist/frame/wrapper-app/index.d.ts +0 -9
  65. package/dist/frame/wrapper-app/index.d.ts.map +0 -1
  66. package/dist/frame/wrapper-app/types.d.ts +0 -38
  67. package/dist/frame/wrapper-app/types.d.ts.map +0 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 HyperTool Team
3
+ Copyright (c) 2025 HyperTool Team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # @hypertool/sdk
1
+ # @hypertools/sdk
2
2
 
3
3
  Vanilla-first SDK for embedding interactive creative coding experiences. Works with p5.js, Three.js, WebGL, Canvas, and any other rendering library.
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/@hypertool/sdk.svg)](https://www.npmjs.com/package/@hypertool/sdk)
6
- [![npm downloads](https://img.shields.io/npm/dm/@hypertool/sdk.svg)](https://www.npmjs.com/package/@hypertool/sdk)
5
+ [![npm version](https://img.shields.io/npm/v/@hypertools/sdk.svg)](https://www.npmjs.com/package/@hypertools/sdk)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@hypertools/sdk.svg)](https://www.npmjs.com/package/@hypertools/sdk)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
8
 
9
9
  ## Features
@@ -20,16 +20,16 @@ Vanilla-first SDK for embedding interactive creative coding experiences. Works w
20
20
 
21
21
  ```bash
22
22
  # npm
23
- npm install @hypertool/sdk
23
+ npm install @hypertools/sdk
24
24
 
25
25
  # yarn
26
- yarn add @hypertool/sdk
26
+ yarn add @hypertools/sdk
27
27
 
28
28
  # pnpm
29
- pnpm add @hypertool/sdk
29
+ pnpm add @hypertools/sdk
30
30
 
31
31
  # bun
32
- bun add @hypertool/sdk
32
+ bun add @hypertools/sdk
33
33
  ```
34
34
 
35
35
  ## Quick Start
@@ -37,7 +37,7 @@ bun add @hypertool/sdk
37
37
  ### Basic Usage
38
38
 
39
39
  ```typescript
40
- import { Experience } from '@hypertool/sdk';
40
+ import { Experience } from '@hypertools/sdk';
41
41
 
42
42
  const experience = new Experience({
43
43
  mount: document.getElementById('canvas-container'),
@@ -92,7 +92,7 @@ experience.destroy();
92
92
  ### With p5.js
93
93
 
94
94
  ```typescript
95
- import { Experience } from '@hypertool/sdk';
95
+ import { Experience } from '@hypertools/sdk';
96
96
  import p5 from 'p5';
97
97
 
98
98
  new Experience({
@@ -135,7 +135,7 @@ new Experience({
135
135
  ### With Three.js
136
136
 
137
137
  ```typescript
138
- import { Experience } from '@hypertool/sdk';
138
+ import { Experience } from '@hypertools/sdk';
139
139
  import * as THREE from 'three';
140
140
 
141
141
  new Experience({
@@ -190,11 +190,11 @@ The SDK is modular - import only what you need:
190
190
 
191
191
  | Entry | Purpose |
192
192
  |-------|---------|
193
- | `@hypertool/sdk` | Core Experience class + utilities |
194
- | `@hypertool/sdk/controls` | Tweakpane-based control panel (requires `tweakpane` peer dep) |
195
- | `@hypertool/sdk/recording` | Video/image capture & timeline |
196
- | `@hypertool/sdk/react` | React hooks & components (requires `react` peer dep) |
197
- | `@hypertool/sdk/capture` | Low-level capture utilities |
193
+ | `@hypertools/sdk` | Core Experience class + utilities |
194
+ | `@hypertools/sdk/controls` | Tweakpane-based control panel (requires `tweakpane` peer dep) |
195
+ | `@hypertools/sdk/recording` | Video/image capture & timeline |
196
+ | `@hypertools/sdk/react` | React hooks & components (requires `react` peer dep) |
197
+ | `@hypertools/sdk/capture` | Low-level capture utilities |
198
198
 
199
199
  ## API Reference
200
200
 
@@ -286,7 +286,7 @@ experience.mount; // HTMLElement
286
286
  ### Recording Module
287
287
 
288
288
  ```typescript
289
- import { VideoRecorder, ImageCapture, Timeline } from '@hypertool/sdk/recording';
289
+ import { VideoRecorder, ImageCapture, Timeline } from '@hypertools/sdk/recording';
290
290
 
291
291
  // Video recording
292
292
  const recorder = VideoRecorder.start(canvas, {
@@ -325,7 +325,7 @@ timeline.seek(2500); // Jump to 2.5s
325
325
  ### React Integration
326
326
 
327
327
  ```tsx
328
- import { useExperience, ExperienceView } from '@hypertool/sdk/react';
328
+ import { useExperience, ExperienceView } from '@hypertools/sdk/react';
329
329
 
330
330
  function MyVisualization() {
331
331
  const {
@@ -383,7 +383,7 @@ function MyVisualization() {
383
383
  Add a visual control panel with Tweakpane:
384
384
 
385
385
  ```typescript
386
- import { HypertoolControls } from '@hypertool/sdk/controls';
386
+ import { HypertoolControls } from '@hypertools/sdk/controls';
387
387
 
388
388
  const controls = new HypertoolControls({
389
389
  container: document.getElementById('controls'),
@@ -431,7 +431,7 @@ import type {
431
431
  ParamDefinitions,
432
432
  ParamValues,
433
433
  ExperienceEvent,
434
- } from '@hypertool/sdk';
434
+ } from '@hypertools/sdk';
435
435
  ```
436
436
 
437
437
  ## Contributing
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Usage:
11
11
  * ```ts
12
- * import { CaptureManager } from '@hypertool/sdk/capture';
12
+ * import { CaptureManager } from '@hypertools/sdk/capture';
13
13
  *
14
14
  * // Auto-detect render target
15
15
  * const capture = new CaptureManager();
@@ -1,3 +1,13 @@
1
+ /**
2
+ * @hypertools/sdk
3
+ * Copyright (c) 2025 HyperTools Team
4
+ *
5
+ * Vanilla-first SDK for embedding interactive creative coding experiences.
6
+ * Supports p5.js, Three.js, WebGL, and more.
7
+ *
8
+ * @license MIT
9
+ * @see https://github.com/hypertools/sdk
10
+ */
1
11
  class G{config;customHandler=null;constructor(p={}){if(this.config={defaultFormat:"png",quality:0.92,...p},p.customHandler)this.customHandler=p.customHandler}registerHandler(p){this.customHandler=p}async capture(p,u=this.config.defaultFormat||"png"){if(this.customHandler)return this.customHandler(u);let H=this.findRenderTarget(p);if(!H)return console.warn("[CaptureManager] No render target found in container"),null;let{element:C,type:V}=H;switch(V){case"canvas":return this.captureCanvas(C,u);case"svg":return this.captureSvg(C,u);case"html":return this.captureHtml(C,u);default:return console.warn("[CaptureManager] Unknown render target type:",V),null}}findRenderTarget(p){if(this.config.targetSelector){let C=p.querySelector(this.config.targetSelector);if(C)return{element:C,type:this.config.targetType||this.detectType(C)}}let u=p.querySelector("canvas");if(u)return{element:u,type:"canvas"};let H=p.querySelector("svg");if(H)return{element:H,type:"svg"};return{element:p,type:"html"}}detectType(p){if(p instanceof HTMLCanvasElement)return"canvas";if(p instanceof SVGSVGElement)return"svg";return"html"}async captureCanvas(p,u){let H=this.getMimeType(u),C=u==="jpeg"?this.config.quality:void 0;return new Promise((V)=>{p.toBlob((d)=>{if(!d){V(null);return}V({blob:d,width:p.width,height:p.height,format:u})},H,C)})}async captureSvg(p,u){if(u==="svg"){let C=new XMLSerializer().serializeToString(p),V=new Blob([C],{type:"image/svg+xml"}),d=p.getBBox();return{blob:V,width:d.width||p.clientWidth,height:d.height||p.clientHeight,format:"svg"}}return this.svgToRaster(p,u)}async svgToRaster(p,u){let C=new XMLSerializer().serializeToString(p),V=new Blob([C],{type:"image/svg+xml;charset=utf-8"}),d=URL.createObjectURL(V),R=new Image;return R.src=d,new Promise((A)=>{R.onload=()=>{URL.revokeObjectURL(d);let k=document.createElement("canvas"),y=p.clientWidth||R.width,T=p.clientHeight||R.height;k.width=y,k.height=T;let F=k.getContext("2d");if(!F){A(null);return}F.drawImage(R,0,0,y,T),this.captureCanvas(k,u).then(A)},R.onerror=()=>{URL.revokeObjectURL(d),A(null)}})}async captureHtml(p,u){let H=p,C=H.offsetWidth,V=H.offsetHeight,d=document.createElement("canvas");d.width=C,d.height=V;let R=d.getContext("2d");if(!R)return null;let A=`
2
12
  <svg xmlns="http://www.w3.org/2000/svg" width="${C}" height="${V}">
3
13
  <foreignObject width="100%" height="100%">
@@ -8,4 +18,6 @@ class G{config;customHandler=null;constructor(p={}){if(this.config={defaultForma
8
18
  </svg>
9
19
  `,k=new Blob([A],{type:"image/svg+xml;charset=utf-8"}),y=URL.createObjectURL(k),T=new Image;return T.src=y,new Promise((F)=>{T.onload=()=>{URL.revokeObjectURL(y),R.drawImage(T,0,0),this.captureCanvas(d,u).then(F)},T.onerror=()=>{URL.revokeObjectURL(y),console.warn("[CaptureManager] HTML capture failed. Consider using a custom capture handler."),F(null)}})}getMimeType(p){switch(p){case"png":return"image/png";case"jpeg":return"image/jpeg";case"webp":return"image/webp";case"svg":return"image/svg+xml";default:return"image/png"}}}export{G as CaptureManager};
10
20
 
11
- //# debugId=5A7F3124CCD112A664756E2164756E21
21
+ /* @hypertools/sdk - MIT License - https://hypertools.dev */
22
+
23
+ //# debugId=1FCFAADF8D276A9864756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * CaptureManager - Rendering-target agnostic capture system\n *\n * Supports capturing from ANY rendering target:\n * - Canvas (2D, WebGL, WebGPU)\n * - SVG elements\n * - HTML elements (via html2canvas-like approach)\n * - Custom targets via handlers\n */\n\nimport type {\n CaptureFormat,\n CaptureResult,\n CaptureHandler,\n CaptureConfig,\n RenderTargetType,\n} from './types';\n\nexport class CaptureManager {\n private config: CaptureConfig;\n private customHandler: CaptureHandler | null = null;\n\n constructor(config: CaptureConfig = {}) {\n this.config = {\n defaultFormat: 'png',\n quality: 0.92,\n ...config,\n };\n\n if (config.customHandler) {\n this.customHandler = config.customHandler;\n }\n }\n\n /**\n * Register a custom capture handler\n * Use this to support any rendering target\n */\n registerHandler(handler: CaptureHandler): void {\n this.customHandler = handler;\n }\n\n /**\n * Capture image from the render target\n */\n async capture(\n container: HTMLElement,\n format: CaptureFormat = this.config.defaultFormat || 'png'\n ): Promise<CaptureResult | null> {\n // Use custom handler if registered\n if (this.customHandler) {\n return this.customHandler(format);\n }\n\n // Auto-detect render target\n const target = this.findRenderTarget(container);\n if (!target) {\n console.warn('[CaptureManager] No render target found in container');\n return null;\n }\n\n const { element, type } = target;\n\n switch (type) {\n case 'canvas':\n return this.captureCanvas(element as HTMLCanvasElement, format);\n case 'svg':\n return this.captureSvg(element as SVGSVGElement, format);\n case 'html':\n return this.captureHtml(element, format);\n default:\n console.warn('[CaptureManager] Unknown render target type:', type);\n return null;\n }\n }\n\n /**\n * Find the render target in a container\n * Priority: custom selector > canvas > svg > container itself\n */\n private findRenderTarget(\n container: HTMLElement\n ): { element: Element; type: RenderTargetType } | null {\n // Use custom selector if specified\n if (this.config.targetSelector) {\n const element = container.querySelector(this.config.targetSelector);\n if (element) {\n return {\n element,\n type: this.config.targetType || this.detectType(element),\n };\n }\n }\n\n // Auto-detect: canvas first\n const canvas = container.querySelector('canvas');\n if (canvas) {\n return { element: canvas, type: 'canvas' };\n }\n\n // Then SVG\n const svg = container.querySelector('svg');\n if (svg) {\n return { element: svg, type: 'svg' };\n }\n\n // Fall back to the container itself (HTML capture)\n return { element: container, type: 'html' };\n }\n\n /**\n * Detect the type of an element\n */\n private detectType(element: Element): RenderTargetType {\n if (element instanceof HTMLCanvasElement) return 'canvas';\n if (element instanceof SVGSVGElement) return 'svg';\n return 'html';\n }\n\n /**\n * Capture from canvas element\n */\n private async captureCanvas(\n canvas: HTMLCanvasElement,\n format: CaptureFormat\n ): Promise<CaptureResult | null> {\n const mimeType = this.getMimeType(format);\n const quality = format === 'jpeg' ? this.config.quality : undefined;\n\n return new Promise((resolve) => {\n canvas.toBlob(\n (blob) => {\n if (!blob) {\n resolve(null);\n return;\n }\n resolve({\n blob,\n width: canvas.width,\n height: canvas.height,\n format,\n });\n },\n mimeType,\n quality\n );\n });\n }\n\n /**\n * Capture from SVG element\n */\n private async captureSvg(\n svg: SVGSVGElement,\n format: CaptureFormat\n ): Promise<CaptureResult | null> {\n // For SVG format, return the SVG directly\n if (format === 'svg') {\n const serializer = new XMLSerializer();\n const svgString = serializer.serializeToString(svg);\n const blob = new Blob([svgString], { type: 'image/svg+xml' });\n const bbox = svg.getBBox();\n return {\n blob,\n width: bbox.width || svg.clientWidth,\n height: bbox.height || svg.clientHeight,\n format: 'svg',\n };\n }\n\n // For raster formats, render SVG to canvas first\n return this.svgToRaster(svg, format);\n }\n\n /**\n * Convert SVG to raster image via canvas\n */\n private async svgToRaster(\n svg: SVGSVGElement,\n format: CaptureFormat\n ): Promise<CaptureResult | null> {\n const serializer = new XMLSerializer();\n const svgString = serializer.serializeToString(svg);\n const svgBlob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const url = URL.createObjectURL(svgBlob);\n\n const img = new Image();\n img.src = url;\n\n return new Promise((resolve) => {\n img.onload = () => {\n URL.revokeObjectURL(url);\n\n const canvas = document.createElement('canvas');\n const width = svg.clientWidth || img.width;\n const height = svg.clientHeight || img.height;\n canvas.width = width;\n canvas.height = height;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n resolve(null);\n return;\n }\n\n ctx.drawImage(img, 0, 0, width, height);\n\n this.captureCanvas(canvas, format).then(resolve);\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n resolve(null);\n };\n });\n }\n\n /**\n * Capture from HTML element\n * Uses a simple approach - for complex HTML, consider html2canvas\n */\n private async captureHtml(\n element: Element,\n format: CaptureFormat\n ): Promise<CaptureResult | null> {\n // Simple approach: use browser's native rendering\n // For production, you might want to use html2canvas or similar\n\n const htmlElement = element as HTMLElement;\n const width = htmlElement.offsetWidth;\n const height = htmlElement.offsetHeight;\n\n // Create a canvas and draw the element\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return null;\n }\n\n // Use foreignObject approach\n const svgString = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\">\n <foreignObject width=\"100%\" height=\"100%\">\n <div xmlns=\"http://www.w3.org/1999/xhtml\">\n ${htmlElement.outerHTML}\n </div>\n </foreignObject>\n </svg>\n `;\n\n const svgBlob = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' });\n const url = URL.createObjectURL(svgBlob);\n\n const img = new Image();\n img.src = url;\n\n return new Promise((resolve) => {\n img.onload = () => {\n URL.revokeObjectURL(url);\n ctx.drawImage(img, 0, 0);\n this.captureCanvas(canvas, format).then(resolve);\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n // Fallback: return null, user should use custom handler for complex HTML\n console.warn(\n '[CaptureManager] HTML capture failed. Consider using a custom capture handler.'\n );\n resolve(null);\n };\n });\n }\n\n /**\n * Get MIME type for format\n */\n private getMimeType(format: CaptureFormat): string {\n switch (format) {\n case 'png':\n return 'image/png';\n case 'jpeg':\n return 'image/jpeg';\n case 'webp':\n return 'image/webp';\n case 'svg':\n return 'image/svg+xml';\n default:\n return 'image/png';\n }\n }\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "5A7F3124CCD112A664756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "1FCFAADF8D276A9864756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,3 +1,13 @@
1
+ /**
2
+ * @hypertools/sdk
3
+ * Copyright (c) 2025 HyperTools Team
4
+ *
5
+ * Vanilla-first SDK for embedding interactive creative coding experiences.
6
+ * Supports p5.js, Three.js, WebGL, and more.
7
+ *
8
+ * @license MIT
9
+ * @see https://github.com/hypertools/sdk
10
+ */
1
11
  import{Pane as k}from"tweakpane";var b={cssVariables:{"--bg":"#0a0e14","--bg-elevated":"#0f1419","--muted":"#1a2332","--text":"#e6edf3","--text-secondary":"#8b949e","--accent":"#58d5ff","--accent-2":"#42a5cc","--border":"#21262d","--border-hover":"#30363d","--success":"#3fb950","--error":"#f85149","--ht-text-color-main-200":"#00ffd4","--ht-text-color-main-300":"#6ff3dd","--ht-text-color-main-500":"#4b8e85","--ht-text-color-grey-200":"#8c8d8f","--ht-bg-color-200":"#8c8d8f","--ht-bg-color-200-active":"#7a7b7d","--ht-bg-color-200-focus":"#7e7f81","--ht-bg-color-200-hover":"#828384","--ht-bg-color-300":"#5e6068","--ht-bg-color-300-active":"#4c4e56","--ht-bg-color-300-focus":"#55575f","--ht-bg-color-300-hover":"#595b63","--ht-bg-color-400":"#cccccc","--ht-bg-color-400-active":"#b3b3b3","--ht-bg-color-400-focus":"#c0c0c0","--ht-bg-color-400-hover":"#c6c6c6","--ht-bg-color-500":"#1C1D20","--ht-bg-color-500-active":"#0a0b0e","--ht-bg-color-500-focus":"#131417","--ht-bg-color-500-hover":"#16171a","--ht-bg-color-600":"#37383D","--ht-bg-color-600-active":"#25262b","--ht-bg-color-600-focus":"#2e2f34","--ht-bg-color-600-hover":"#323338","--ht-bg-color-700":"#0f1419","--ht-bg-color-700-active":"#16171c","--ht-bg-color-700-focus":"#1f2025","--ht-bg-color-700-hover":"#232429","--ht-border-radius":"8px","--ht-base-font-family-base":'"HydrogenType400", ui-sans-serif, system-ui, sans-serif',"--ht-base-font-family-display":'"Departure Mono", Roboto Mono, Source Code Pro, Menlo, Courier, monospace',"--ht-base-font-family-sans":'"Routed Gothic", ui-sans-serif, system-ui, sans-serif',"--ht-base-font-family-mono":'"Routed Gothic Narrow", ui-monospace, SFMono-Regular, SF Mono, Consolas, Liberation Mono, Menlo, monospace'},tweakpane:{"--tp-base-background-color":"var(--ht-bg-color-700)","--tp-base-shadow-color":"hsla(0, 0%, 0%, 0.2)","--tp-container-background-color":"var(--ht-bg-color-600)","--tp-container-background-color-active":"var(--ht-bg-color-600-active)","--tp-container-background-color-focus":"var(--ht-bg-color-600-focus)","--tp-container-background-color-hover":"var(--ht-bg-color-600-hover)","--tp-container-foreground-color":"var(--ht-text-color-main-300)","--tp-button-background-color":"var(--ht-bg-color-400)","--tp-button-background-color-active":"color-mix(in srgb, var(--ht-bg-color-400-active) 80%, white)","--tp-button-background-color-focus":"color-mix(in srgb, var(--ht-bg-color-400-focus) 85%, white)","--tp-button-background-color-hover":"color-mix(in srgb, var(--ht-bg-color-400-hover) 90%, white)","--tp-button-foreground-color":"var(--ht-text-color-main-300)","--tp-groove-foreground-color":"var(--ht-bg-color-300)","--tp-input-background-color":"var(--ht-bg-color-500)","--tp-input-background-color-active":"var(--ht-bg-color-500-active)","--tp-input-background-color-focus":"var(--ht-bg-color-500-focus)","--tp-input-background-color-hover":"var(--ht-bg-color-500-hover)","--tp-input-foreground-color":"var(--ht-text-color-main-300)","--tp-label-foreground-color":"var(--ht-text-color-main-300)","--tp-monitor-background-color":"var(--ht-bg-color-500)","--tp-monitor-foreground-color":"var(--ht-text-color-main-300)"}};function h(){let D=document.createElement("style");D.id="hypertool-theme";let z=Object.entries({...b.cssVariables,...b.tweakpane}).map(([T,J])=>` ${T}: ${J};`).join(`
2
12
  `);D.textContent=`
3
13
  body {
@@ -25,4 +35,6 @@ ${z}
25
35
  }
26
36
  `,document.head.appendChild(D)}class E{constructor(D,z={}){this.pane=null,this.definitions=D,this.options={title:z.title||"Controls",position:z.position||"top-right",expanded:z.expanded!==void 0?z.expanded:!0,container:z.container!==void 0?z.container:null,onChange:z.onChange||(()=>{}),onReady:z.onReady||(()=>{})},this.params=this.extractInitialValues(D),this.init()}isFolder(D){return D&&typeof D==="object"&&(D.type==="folder"||D.type==="group")}isButton(D){return D&&typeof D==="object"&&D.type==="button"}isTab(D){return D&&typeof D==="object"&&D.type==="tab"}isFile(D){return D&&typeof D==="object"&&D.type==="file"}extractInitialValues(D){let z={};for(let[T,J]of Object.entries(D)){let F=J;if(this.isFolder(F))z[T]=this.extractInitialValues(F.controls);else if(this.isTab(F))z[T]=F.pages.map((L)=>this.extractInitialValues(L.controls));else if(this.isButton(F))continue;else z[T]=F.value}return z}async init(){try{h(),await new Promise((D)=>setTimeout(D,50)),this.createPane(),this.addControls(),this.options.onReady()}catch(D){console.error("[HypertoolControls] Initialization error:",D)}}createPane(){let D=this.resolveContainer(),z={title:this.options.title,expanded:this.options.expanded};if(D)z.container=D;this.pane=new k(z),this.pane.element.parentElement?.classList.add("controls-container")}resolveContainer(){if(typeof document>"u")return null;let D=this.options.container;if(!D)return null;if(D instanceof HTMLElement)return D;let z=document.querySelector(D);if(!z)return console.warn(`[HypertoolControls] Container selector "${D}" did not match any elements`),null;return z}addControls(){if(!this.pane)return;this.addControlsToTarget(this.pane,this.definitions,this.params)}addControlsToTarget(D,z,T){for(let[J,F]of Object.entries(z))try{if(this.isFolder(F)){let L={title:F.label||J};if(F.expanded!==void 0)L.expanded=F.expanded;let W=D.addFolder(L);this.addControlsToTarget(W,F.controls,T[J])}else if(this.isButton(F)){let L={title:F.title};if(F.label)L.label=F.label;let W=D.addButton(L);if(F.onClick)W.on("click",F.onClick)}else if(this.isTab(F)){let L={pages:F.pages.map((G)=>({title:G.title}))},W=D.addTab(L);F.pages.forEach((G,X)=>{this.addControlsToTarget(W.pages[X],G.controls,T[J][X])})}else if(this.isFile(F))this.addFileControl(D,J,F,T);else this.addControlToTarget(D,J,F,T)}catch(L){console.error(`[HypertoolControls] Error adding control/folder/button/tab "${J}":`,L)}}addControlToTarget(D,z,T,J){if(this.isFolder(T))return;let F={label:T.label||z};if(T.readonly!==void 0)F.readonly=T.readonly;if(T.interval!==void 0)F.interval=T.interval;if(T.bufferSize!==void 0)F.bufferSize=T.bufferSize;if(T.multiline!==void 0)F.multiline=T.multiline;if(T.rows!==void 0)F.rows=T.rows;if(T.view!==void 0)F.view=T.view;switch(T.type){case"number":if(T.min!==void 0)F.min=T.min;if(T.max!==void 0)F.max=T.max;if(T.step!==void 0)F.step=T.step;break;case"point":case"point2d":case"point3d":case"point4d":if(T.min!==void 0)F.min=T.min;if(T.max!==void 0)F.max=T.max;if(T.step!==void 0)F.step=T.step;let W=["x","y","z","w"];for(let G of W)if(T[G]&&typeof T[G]==="object")F[G]=T[G];break;case"select":case"selector":if(Array.isArray(T.options))F.options=T.options.map((G)=>{if(typeof G==="object"&&G!==null)return{text:G.label||G.text||String(G.value),value:G.value};return{text:String(G),value:G}});else F.options=Object.entries(T.options).map(([G,X])=>({text:G,value:X}));break;case"color":case"boolean":case"string":case"text":break;case"folder":case"group":console.warn("[HypertoolControls] Folder/Group encountered in addControlToTarget (should be handled earlier)");return;case"button":console.warn("[HypertoolControls] Button encountered in addControlToTarget (should be handled earlier)");return;case"tab":console.warn("[HypertoolControls] Tab encountered in addControlToTarget (should be handled earlier)");return;default:console.warn(`[HypertoolControls] Unknown control type: ${T.type}`);return}D.addBinding(J,z,F).on("change",(W)=>{J[z]=W.value;let G={key:z,value:W.value,event:W};this.options.onChange(this.values,G)})}addFileControl(D,z,T,J){let F=T.label||z,L=T.accept||"*/*",W=T.placeholder||"Choose file...",G=T.preview!==!1,X=document.createElement("div");X.className="tp-lblv ht-file-control-row";let x=document.createElement("div");x.className="tp-lblv_l ht-file-control-label",x.textContent=F;let V=document.createElement("div");V.className="tp-lblv_v ht-file-control-value";let Y=document.createElement("input");Y.type="file",Y.accept=L,Y.style.display="none";let A=document.createElement("div");A.className="ht-file-control-buttons";let M=document.createElement("button");M.className="tp-btnv_b ht-file-control-button",M.textContent=J[z]?"Change":"Upload",M.style.display=J[z]?"none":"inline-flex";let $=document.createElement("button");$.className="tp-btnv_b ht-file-control-button ht-file-control-button--muted",$.textContent="✕",$.style.display="none";let j=document.createElement("div");j.className="ht-file-control-preview",j.style.display=J[z]&&G?"block":"none";let U=document.createElement("div");U.className="ht-file-control-preview-bar";let S=document.createElement("span");S.className="ht-file-control-preview-name",S.textContent=J[z]?"File":"No file selected";let C=document.createElement("div");C.className="ht-file-control-preview-actions";let q=document.createElement("button");q.type="button",q.className="ht-file-control-preview-action",q.title="Replace file",q.textContent="↻",q.onclick=(K)=>{K.preventDefault(),Y.click()};let H=document.createElement("button");H.type="button",H.className="ht-file-control-preview-action",H.title="Remove file",H.textContent="✕",H.onclick=(K)=>{K.preventDefault(),$.click()},C.appendChild(q),C.appendChild(H),U.appendChild(S),U.appendChild(C);let O=document.createElement("img");O.className="ht-file-control-preview-img";let N=document.createElement("div");N.className="ht-file-control-placeholder",N.style.display="none",Y.onchange=async()=>{let K=Y.files?.[0];if(!K)return;if(T.maxSize&&K.size>T.maxSize){console.warn(`[HypertoolControls] File size exceeds limit: ${K.size} > ${T.maxSize}`);return}M.textContent="Uploading...",M.disabled=!0;let R=`file-upload-${Date.now()}-${Math.random().toString(36).slice(2)}`,w=new Promise((Z)=>{let _=(Q)=>{if(Q.data?.type!=="UPLOAD_CONTROL_FILE_RESULT")return;if(Q.data?.requestId!==R)return;if(window.removeEventListener("message",_),Q.data.error)console.error("[HypertoolControls] File upload failed:",Q.data.error),Z(null);else Z({url:Q.data.url,originalUrl:Q.data.originalUrl||Q.data.url})};window.addEventListener("message",_),setTimeout(()=>{window.removeEventListener("message",_),console.warn("[HypertoolControls] File upload timed out"),Z(null)},30000)}),P=null;if(G&&K.type.startsWith("image/")){let Z=new FileReader;Z.onload=(_)=>{P=_.target?.result},Z.readAsDataURL(K)}let B=new FileReader;B.onload=async(Z)=>{let _=Z.target?.result;window.parent.postMessage({type:"UPLOAD_CONTROL_FILE",source:"hypertool-iframe",requestId:R,data:{fileName:K.name,fileType:K.type,fileSize:K.size,fileData:_,controlKey:z}},"*",[_]);let Q=await w;if(M.disabled=!1,Q){if(J[z]=Q.url,M.textContent="Change",M.style.display="none",S.textContent=K.name||"File",G&&K.type.startsWith("image/")&&P)N.style.display="none",O.src=P,j.style.display="flex";let g={key:z,value:Q.originalUrl,event:{value:Q.originalUrl,proxyUrl:Q.url,file:K}};this.options.onChange(this.values,g)}else M.textContent=J[z]?"Change":"Upload",console.error("[HypertoolControls] Failed to upload file to storage")},B.readAsArrayBuffer(K)},M.onclick=()=>{Y.click()},$.onclick=()=>{J[z]=null,Y.value="",M.textContent="Upload",M.style.display="inline-flex",$.style.display="none",j.style.display="none",N.style.display="none",S.textContent="No file selected";let K={key:z,value:null,event:{value:null}};this.options.onChange(this.values,K)},A.appendChild(M),A.appendChild($),j.appendChild(O),j.appendChild(U),V.appendChild(Y),V.appendChild(A),V.appendChild(N),V.appendChild(j),X.appendChild(x),X.appendChild(V);let I=D.element;(I.querySelector(".tp-rotv_c")||I).appendChild(X)}addFolder(D){if(!this.pane)return null;return this.pane.addFolder({title:D})}set(D,z){if(D in this.params){if(this.params[D]=z,this.pane)this.pane.refresh()}}get values(){return{...this.params}}destroy(){if(this.pane)this.pane.dispose(),this.pane=null;let D=document.getElementById("hypertool-theme");if(D)D.remove()}setVisible(D){if(!this.pane)return;this.pane.element.style.display=D?"block":"none"}refresh(){if(this.pane)this.pane.refresh()}}function m(D,z){return new E(D,z).params}function u(D,z){return new E(D,z)}export{b as studioTheme,h as injectThemeVariables,m as createControls,u as createControlPanel,E as HypertoolControls};
27
37
 
28
- //# debugId=9B4AE28FA320332164756E2164756E21
38
+ /* @hypertools/sdk - MIT License - https://hypertools.dev */
39
+
40
+ //# debugId=38F6DE9532D2840764756E2164756E21
@@ -6,7 +6,7 @@
6
6
  "/**\n * Design tokens inherited from the parent Studio application\n * These CSS variables are defined in src/app/globals.css\n */\nexport const studioTheme = {\n // CSS variables that should be available in the iframe\n cssVariables: {\n '--bg': '#0a0e14',\n '--bg-elevated': '#0f1419',\n '--muted': '#1a2332',\n '--text': '#e6edf3',\n '--text-secondary': '#8b949e',\n '--accent': '#58d5ff',\n '--accent-2': '#42a5cc',\n '--border': '#21262d',\n '--border-hover': '#30363d',\n '--success': '#3fb950',\n '--error': '#f85149',\n\n // Hypertool-specific variables\n '--ht-text-color-main-200': '#00ffd4',\n '--ht-text-color-main-300': '#6ff3dd',\n '--ht-text-color-main-500': '#4b8e85',\n '--ht-text-color-grey-200': '#8c8d8f',\n\n '--ht-bg-color-200': '#8c8d8f',\n '--ht-bg-color-200-active': '#7a7b7d',\n '--ht-bg-color-200-focus': '#7e7f81',\n '--ht-bg-color-200-hover': '#828384',\n\n '--ht-bg-color-300': '#5e6068',\n '--ht-bg-color-300-active': '#4c4e56',\n '--ht-bg-color-300-focus': '#55575f',\n '--ht-bg-color-300-hover': '#595b63',\n\n '--ht-bg-color-400': '#cccccc',\n '--ht-bg-color-400-active': '#b3b3b3',\n '--ht-bg-color-400-focus': '#c0c0c0',\n '--ht-bg-color-400-hover': '#c6c6c6',\n\n '--ht-bg-color-500': '#1C1D20',\n '--ht-bg-color-500-active': '#0a0b0e',\n '--ht-bg-color-500-focus': '#131417',\n '--ht-bg-color-500-hover': '#16171a',\n\n '--ht-bg-color-600': '#37383D',\n '--ht-bg-color-600-active': '#25262b',\n '--ht-bg-color-600-focus': '#2e2f34',\n '--ht-bg-color-600-hover': '#323338',\n\n '--ht-bg-color-700': '#0f1419',\n '--ht-bg-color-700-active': '#16171c',\n '--ht-bg-color-700-focus': '#1f2025',\n '--ht-bg-color-700-hover': '#232429',\n\n '--ht-border-radius': '8px',\n\n '--ht-base-font-family-base': '\"HydrogenType400\", ui-sans-serif, system-ui, sans-serif',\n '--ht-base-font-family-display': '\"Departure Mono\", Roboto Mono, Source Code Pro, Menlo, Courier, monospace',\n '--ht-base-font-family-sans': '\"Routed Gothic\", ui-sans-serif, system-ui, sans-serif',\n '--ht-base-font-family-mono': '\"Routed Gothic Narrow\", ui-monospace, SFMono-Regular, SF Mono, Consolas, Liberation Mono, Menlo, monospace',\n },\n\n // Tweakpane-specific theme variables\n tweakpane: {\n '--tp-base-background-color': 'var(--ht-bg-color-700)',\n '--tp-base-shadow-color': 'hsla(0, 0%, 0%, 0.2)',\n\n '--tp-container-background-color': 'var(--ht-bg-color-600)',\n '--tp-container-background-color-active': 'var(--ht-bg-color-600-active)',\n '--tp-container-background-color-focus': 'var(--ht-bg-color-600-focus)',\n '--tp-container-background-color-hover': 'var(--ht-bg-color-600-hover)',\n '--tp-container-foreground-color': 'var(--ht-text-color-main-300)',\n\n '--tp-button-background-color': 'var(--ht-bg-color-400)',\n '--tp-button-background-color-active': 'color-mix(in srgb, var(--ht-bg-color-400-active) 80%, white)',\n '--tp-button-background-color-focus': 'color-mix(in srgb, var(--ht-bg-color-400-focus) 85%, white)',\n '--tp-button-background-color-hover': 'color-mix(in srgb, var(--ht-bg-color-400-hover) 90%, white)',\n '--tp-button-foreground-color': 'var(--ht-text-color-main-300)',\n\n '--tp-groove-foreground-color': 'var(--ht-bg-color-300)',\n\n '--tp-input-background-color': 'var(--ht-bg-color-500)',\n '--tp-input-background-color-active': 'var(--ht-bg-color-500-active)',\n '--tp-input-background-color-focus': 'var(--ht-bg-color-500-focus)',\n '--tp-input-background-color-hover': 'var(--ht-bg-color-500-hover)',\n '--tp-input-foreground-color': 'var(--ht-text-color-main-300)',\n\n '--tp-label-foreground-color': 'var(--ht-text-color-main-300)',\n\n '--tp-monitor-background-color': 'var(--ht-bg-color-500)',\n '--tp-monitor-foreground-color': 'var(--ht-text-color-main-300)',\n }\n};\n\n/**\n * Inject CSS variables into the document\n */\nexport function injectThemeVariables() {\n const style = document.createElement('style');\n style.id = 'hypertool-theme';\n\n const cssVars = Object.entries({\n ...studioTheme.cssVariables,\n ...studioTheme.tweakpane\n })\n .map(([key, value]) => ` ${key}: ${value};`)\n .join('\\n');\n\n style.textContent = `\n body {\n margin: 0;\n padding: 0;\n }\n\n:root {\n${cssVars}\n}\n\n/* Controls panel positioning and styling */\n.controls-container {\n position: fixed;\n top: 8px;\n right: 8px;\n z-index: 1000;\n max-height: calc(100vh - 16px);\n overflow-y: auto;\n}\n\n/* Ensure Tweakpane pane has background */\n.tp-dfwv {\n background-color: var(--tp-base-background-color, #0f1419) !important;\n}\n`;\n\n document.head.appendChild(style);\n}",
7
7
  "import { HypertoolControls } from './HypertoolControls';\nimport type { ControlDefinitions, HypertoolControlsOptions, ParameterValues } from './types';\n\n/**\n * Simple API for quick setup - returns params object directly\n *\n * @example\n * ```typescript\n * const params = createControls({\n * speed: { type: 'number', value: 1, min: 0, max: 10, step: 0.1 },\n * color: { type: 'color', value: '#ff0000' },\n * enabled: { type: 'boolean', value: true }\n * });\n *\n * // Use params directly in your code\n * circle.speed = params.speed;\n * circle.color = params.color;\n * ```\n */\nexport function createControls<T extends ControlDefinitions>(\n definitions: T,\n options?: HypertoolControlsOptions<T>\n): ParameterValues<T> {\n const controls = new HypertoolControls(definitions, options);\n return controls.params;\n}\n\n/**\n * Advanced API for full control - returns HypertoolControls instance\n *\n * @example\n * ```typescript\n * const controls = createControlPanel({\n * speed: { type: 'number', value: 1, min: 0, max: 10 }\n * }, {\n * title: 'Simulation',\n * onChange: (params) => console.log('Changed:', params)\n * });\n *\n * // Access params\n * const params = controls.params;\n *\n * // Programmatically update\n * controls.set('speed', 5);\n *\n * // Hide/show\n * controls.setVisible(false);\n * ```\n */\nexport function createControlPanel<T extends ControlDefinitions>(\n definitions: T,\n options?: HypertoolControlsOptions<T>\n): HypertoolControls<T> {\n return new HypertoolControls(definitions, options);\n}\n"
8
8
  ],
9
- "mappings": "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",
10
- "debugId": "9B4AE28FA320332164756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "38F6DE9532D2840764756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -1,3 +1,15 @@
1
+ /**
2
+ * @hypertools/sdk
3
+ * Copyright (c) 2025 HyperTools Team
4
+ *
5
+ * Vanilla-first SDK for embedding interactive creative coding experiences.
6
+ * Supports p5.js, Three.js, WebGL, and more.
7
+ *
8
+ * @license MIT
9
+ * @see https://github.com/hypertools/sdk
10
+ */
1
11
  class H{_handlers=new Map;on(E,x){if(!this._handlers.has(E))this._handlers.set(E,new Set);return this._handlers.get(E).add(x),()=>this.off(E,x)}once(E,x){let C=(P)=>{this.off(E,C),x(P)};return this.on(E,C)}off(E,x){let C=this._handlers.get(E);if(C)C.delete(x)}emit(E){let x=this._handlers.get(E.type);if(!x)return;for(let C of x)try{C(E)}catch(P){console.error(`[EventEmitter] Handler error for ${E.type}:`,P)}}removeAllListeners(E){if(E)this._handlers.delete(E);else this._handlers.clear()}listenerCount(E){return this._handlers.get(E)?.size??0}}class O{_definitions;_values;_listeners;_proxy;constructor(E,x){this._definitions=E,this._listeners=new Set,this._values={};for(let[C,P]of Object.entries(E))this._values[C]=P.value;if(x){for(let[C,P]of Object.entries(x))if(C in this._definitions)this._values[C]=this._validate(C,P)}this._proxy=this._createProxy()}_createProxy(){let E=this;return new Proxy(this._values,{get(x,C){return x[C]},set(x,C,P){if(!(C in E._definitions))return console.warn(`[ParamStore] Unknown parameter: ${C}`),!1;let R=E._validate(C,P),D=x[C];if(R!==D)x[C]=R,E._notify(C,R,D);return!0},has(x,C){return C in x},ownKeys(x){return Object.keys(x)},getOwnPropertyDescriptor(x,C){if(C in x)return{enumerable:!0,configurable:!0,value:x[C]};return}})}_validate(E,x){let C=this._definitions[E];if(!C)return x;switch(C.type){case"number":{let P=typeof x==="number"?x:parseFloat(String(x));if(isNaN(P))P=C.value;if(C.min!==void 0)P=Math.max(C.min,P);if(C.max!==void 0)P=Math.min(C.max,P);if(C.step!==void 0)P=Math.round(P/C.step)*C.step;return P}case"color":{let P=String(x);if(/^#[0-9A-Fa-f]{6}$/.test(P))return P;if(/^#[0-9A-Fa-f]{3}$/.test(P))return P;if(/^#[0-9A-Fa-f]{8}$/.test(P))return P;if(/^rgb\(/.test(P))return P;if(/^rgba\(/.test(P))return P;if(/^hsl\(/.test(P))return P;if(/^hsla\(/.test(P))return P;return C.value}case"boolean":if(typeof x==="boolean")return x;if(x==="true"||x==="1")return!0;if(x==="false"||x==="0")return!1;return Boolean(x);case"string":return String(x);case"select":{let P=String(x);return(C.options||[]).some((F)=>typeof F==="object"?F.value===P:F===P)?P:C.value}case"point2d":{if(typeof x==="object"&&x!==null&&"x"in x&&"y"in x)return{x:Number(x.x),y:Number(x.y)};return C.value}case"point3d":{if(typeof x==="object"&&x!==null&&"x"in x&&"y"in x&&"z"in x)return{x:Number(x.x),y:Number(x.y),z:Number(x.z)};return C.value}default:return x}}_notify(E,x,C){for(let P of this._listeners)try{P(E,x,C)}catch(R){console.error("[ParamStore] Listener error:",R)}}getProxy(){return this._proxy}getSnapshot(){return{...this._values}}getDefinitions(){return{...this._definitions}}set(E,x){this._proxy[E]=x}setMultiple(E){for(let[x,C]of Object.entries(E))this._proxy[x]=C}reset(){for(let[E,x]of Object.entries(this._definitions))this._proxy[E]=x.value}subscribe(E){return this._listeners.add(E),()=>this._listeners.delete(E)}addDefinition(E,x){this._definitions[E]=x,this._values[E]=x.value}}class S{_byName=new Map;_byId=new Map;_onRegister=new Set;_onUnregister=new Set;register(E,x,C){if(this._byName.has(E))this.unregister(E);let P=this._generateId(),R={name:E,id:P,object:x,metadata:C};this._byName.set(E,R),this._byId.set(P,R);for(let D of this._onRegister)try{D(E,P,x)}catch(F){console.error("[ObjectRegistry] onRegister callback error:",F)}return P}unregister(E){let x=this._byName.get(E);if(!x)return!1;this._byName.delete(E),this._byId.delete(x.id);for(let C of this._onUnregister)try{C(E)}catch(P){console.error("[ObjectRegistry] onUnregister callback error:",P)}return!0}findByName(E){return this._byName.get(E)?.object}findById(E){return this._byId.get(E)?.object}getInfo(E){return this._byName.get(E)}has(E){return this._byName.has(E)}getNames(){return Array.from(this._byName.keys())}getAll(){let E=new Map;for(let[x,C]of this._byName)E.set(x,C.object);return E}query(E){let x=[];for(let C of this._byName.values())if(E(C))x.push(C);return x}findByType(E){return this.query((x)=>x.metadata?.type===E).map((x)=>x.object)}clear(){let E=Array.from(this._byName.keys());for(let x of E)this.unregister(x)}onRegister(E){return this._onRegister.add(E),()=>this._onRegister.delete(E)}onUnregister(E){return this._onUnregister.add(E),()=>this._onUnregister.delete(E)}get size(){return this._byName.size}_generateId(){return`obj_${Date.now()}_${Math.random().toString(36).slice(2,9)}`}}class U{_isReady=!1;_isPlaying=!1;_isDestroyed=!1;_currentFrame=0;_paramStore;_events;_objects;_mount;_frameRate;_filename="capture";_cleanups=[];_userCleanup;_animationFrameId;_lastFrameTime=0;_resizeObserver;_captureHandler;constructor(E){if(this._mount=E.mount,this._frameRate=E.frameRate??60,E.background)this._mount.style.background=E.background;this._paramStore=new O(E.paramDefs??{},E.initialParams),this._events=new H,this._objects=new S,this._paramStore.subscribe((x,C,P)=>{this._events.emit({type:"paramChange",timestamp:Date.now(),key:x,value:C,previousValue:P})}),this._setupResizeObserver(),this._runSetup(E.setup,E.autoplay??!0)}get isReady(){return this._isReady}get isPlaying(){return this._isPlaying}get isDestroyed(){return this._isDestroyed}get currentFrame(){return this._currentFrame}get mount(){return this._mount}get params(){return this._paramStore.getProxy()}get events(){return this._events}get objects(){return this._objects}setParam(E,x){this._paramStore.set(E,x)}setParams(E){this._paramStore.setMultiple(E)}getParams(){return this._paramStore.getSnapshot()}getParamDefs(){return this._paramStore.getDefinitions()}resetParams(){this._paramStore.reset()}registerObject(E,x,C){return this._objects.register(E,x,C)}findObjectByName(E){return this._objects.findByName(E)}findObjectById(E){return this._objects.findById(E)}getAllObjects(){return this._objects.getAll()}play(){if(this._isPlaying||this._isDestroyed)return;this._isPlaying=!0,this._lastFrameTime=performance.now(),this._tick(),this._events.emit({type:"play",timestamp:Date.now()})}pause(){if(!this._isPlaying)return;if(this._isPlaying=!1,this._animationFrameId)cancelAnimationFrame(this._animationFrameId),this._animationFrameId=void 0;this._events.emit({type:"pause",timestamp:Date.now()})}toggle(){if(this._isPlaying)this.pause();else this.play()}on(E,x){return this._events.on(E,x)}once(E,x){return this._events.once(E,x)}off(E,x){this._events.off(E,x)}async captureImage(E="png"){if(this._captureHandler)return this._captureHandler(E);let x=this._mount.querySelector("canvas");if(!x)return console.warn("[Experience] No canvas found for capture"),null;return new Promise((C)=>{let P=`image/${E}`,R=E==="jpeg"?0.92:void 0;x.toBlob((D)=>C(D),P,R)})}getFilename(){return this._filename}addCleanup(E){if(typeof E==="function")this._cleanups.push(E)}destroy(){if(this._isDestroyed)return;if(this._isDestroyed=!0,this.pause(),this._userCleanup)try{this._userCleanup()}catch(E){console.error("[Experience] User cleanup error:",E)}while(this._cleanups.length>0){let E=this._cleanups.pop();if(E)try{E()}catch(x){console.error("[Experience] Cleanup error:",x)}}this._resizeObserver?.disconnect(),this._objects.clear(),this._events.removeAllListeners(),this._events.emit({type:"destroyed",timestamp:Date.now()})}async _runSetup(E,x){try{let C=this._createContext(),P=await E(C);if(typeof P==="function")this._userCleanup=P;if(this._isReady=!0,this._events.emit({type:"ready",timestamp:Date.now()}),x)this.play()}catch(C){console.error("[Experience] Setup error:",C),this._events.emit({type:"error",timestamp:Date.now(),error:C instanceof Error?C:Error(String(C))})}}_createContext(){return{mount:this._mount,params:this._paramStore.getProxy(),exports:this._createExportsApi(),environment:this._createEnvironmentApi(),registerObject:(E,x,C)=>this._objects.register(E,x,C),findObjectByName:(E)=>this._objects.findByName(E),experience:this}}_createExportsApi(){return{captureImage:(E)=>this.captureImage(E),setFilename:(E)=>{this._filename=E},registerCaptureHandler:(E)=>{this._captureHandler=E}}}_createEnvironmentApi(){return{window,document,onResize:(E)=>{let x=()=>{E(this._mount.clientWidth,this._mount.clientHeight)};x();let C=new ResizeObserver(x);C.observe(this._mount);let P=()=>C.disconnect();return this._cleanups.push(P),P},addCleanup:(E)=>this.addCleanup(E)}}_setupResizeObserver(){this._resizeObserver=new ResizeObserver((E)=>{for(let x of E){let{width:C,height:P}=x.contentRect;this._events.emit({type:"resize",timestamp:Date.now(),width:C,height:P})}}),this._resizeObserver.observe(this._mount)}_tick(){if(!this._isPlaying)return;let E=performance.now(),x=E-this._lastFrameTime,C=1000/this._frameRate;if(x>=C)this._currentFrame++,this._lastFrameTime=E-x%C,this._events.emit({type:"frame",timestamp:Date.now(),frame:this._currentFrame,deltaTime:x});this._animationFrameId=requestAnimationFrame(()=>this._tick())}}export{O as ParamStore,S as ObjectRegistry,U as Experience,H as EventEmitter};
2
12
 
3
- //# debugId=730310C6746E3D6664756E2164756E21
13
+ /* @hypertools/sdk - MIT License - https://hypertools.dev */
14
+
15
+ //# debugId=BE20C8AEA123CFE964756E2164756E21
@@ -7,7 +7,7 @@
7
7
  "/**\n * Spline-like object registry for querying objects by name/id\n */\n\nexport interface RegisteredObject<T = unknown> {\n name: string;\n id: string;\n object: T;\n metadata?: Record<string, unknown>;\n}\n\nexport type ObjectRegisteredCallback = (name: string, id: string, object: unknown) => void;\nexport type ObjectUnregisteredCallback = (name: string) => void;\n\nexport class ObjectRegistry {\n private _byName = new Map<string, RegisteredObject>();\n private _byId = new Map<string, RegisteredObject>();\n private _onRegister: Set<ObjectRegisteredCallback> = new Set();\n private _onUnregister: Set<ObjectUnregisteredCallback> = new Set();\n\n /**\n * Register an object for external access\n * @returns Generated ID for the object\n */\n register<T>(\n name: string,\n object: T,\n metadata?: Record<string, unknown>\n ): string {\n // If name already exists, unregister first\n if (this._byName.has(name)) {\n this.unregister(name);\n }\n\n const id = this._generateId();\n\n const registered: RegisteredObject<T> = {\n name,\n id,\n object,\n metadata,\n };\n\n this._byName.set(name, registered);\n this._byId.set(id, registered);\n\n // Notify listeners\n for (const callback of this._onRegister) {\n try {\n callback(name, id, object);\n } catch (e) {\n console.error('[ObjectRegistry] onRegister callback error:', e);\n }\n }\n\n return id;\n }\n\n /**\n * Unregister an object by name\n */\n unregister(name: string): boolean {\n const obj = this._byName.get(name);\n if (!obj) return false;\n\n this._byName.delete(name);\n this._byId.delete(obj.id);\n\n // Notify listeners\n for (const callback of this._onUnregister) {\n try {\n callback(name);\n } catch (e) {\n console.error('[ObjectRegistry] onUnregister callback error:', e);\n }\n }\n\n return true;\n }\n\n /**\n * Find object by name (Spline-like API)\n */\n findByName<T = unknown>(name: string): T | undefined {\n return this._byName.get(name)?.object as T | undefined;\n }\n\n /**\n * Find object by ID\n */\n findById<T = unknown>(id: string): T | undefined {\n return this._byId.get(id)?.object as T | undefined;\n }\n\n /**\n * Get registered object info by name\n */\n getInfo(name: string): RegisteredObject | undefined {\n return this._byName.get(name);\n }\n\n /**\n * Check if an object exists\n */\n has(name: string): boolean {\n return this._byName.has(name);\n }\n\n /**\n * Get all registered object names\n */\n getNames(): string[] {\n return Array.from(this._byName.keys());\n }\n\n /**\n * Get all registered objects as a Map\n */\n getAll(): Map<string, unknown> {\n const result = new Map<string, unknown>();\n for (const [name, registered] of this._byName) {\n result.set(name, registered.object);\n }\n return result;\n }\n\n /**\n * Query objects by metadata\n */\n query(predicate: (obj: RegisteredObject) => boolean): RegisteredObject[] {\n const results: RegisteredObject[] = [];\n for (const obj of this._byName.values()) {\n if (predicate(obj)) {\n results.push(obj);\n }\n }\n return results;\n }\n\n /**\n * Query objects by type (requires metadata.type to be set)\n */\n findByType<T = unknown>(type: string): T[] {\n return this.query((obj) => obj.metadata?.type === type).map(\n (obj) => obj.object as T\n );\n }\n\n /**\n * Clear all registered objects\n */\n clear(): void {\n const names = Array.from(this._byName.keys());\n for (const name of names) {\n this.unregister(name);\n }\n }\n\n /**\n * Subscribe to object registration events\n */\n onRegister(callback: ObjectRegisteredCallback): () => void {\n this._onRegister.add(callback);\n return () => this._onRegister.delete(callback);\n }\n\n /**\n * Subscribe to object unregistration events\n */\n onUnregister(callback: ObjectUnregisteredCallback): () => void {\n this._onUnregister.add(callback);\n return () => this._onUnregister.delete(callback);\n }\n\n /**\n * Get the number of registered objects\n */\n get size(): number {\n return this._byName.size;\n }\n\n private _generateId(): string {\n return `obj_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;\n }\n}\n",
8
8
  "/**\n * Core Experience class - THE shared logic for all runtimes\n *\n * This is the brain. All adapters (Frame, Export, HostedPreview) use this.\n * Adapters are thin wiring layers - Experience contains ALL the logic.\n */\n\nimport {\n EventEmitter,\n type ExperienceEvent,\n type EventHandler,\n type ParamChangeEvent,\n type FrameEvent,\n type ResizeEvent,\n type ErrorEvent,\n} from './EventEmitter';\nimport { ParamStore, type ParamDefinitions, type ParamValues } from './ParamStore';\nimport { ObjectRegistry } from './ObjectRegistry';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ExperienceConfig {\n /** Mount element where content is rendered */\n mount: HTMLElement;\n\n /** Parameter definitions schema */\n paramDefs?: ParamDefinitions;\n\n /** Initial parameter values (overrides defaults from paramDefs) */\n initialParams?: Record<string, unknown>;\n\n /** User's setup function */\n setup: SetupFunction;\n\n /** Auto-start on init (default: true) */\n autoplay?: boolean;\n\n /** Target frame rate for frame events (default: 60) */\n frameRate?: number;\n\n /** Background color/style */\n background?: string;\n}\n\n/**\n * Context passed to user's setup function\n * This is the API users interact with in their code\n */\nexport interface ExperienceContext {\n /** DOM element to render into */\n mount: HTMLElement;\n\n /** Reactive params object (Proxy) - changes trigger events */\n params: ParamValues;\n\n /** Export/capture utilities */\n exports: ExportsApi;\n\n /** Environment utilities (window, document, resize) */\n environment: EnvironmentApi;\n\n /** Register an object for Spline-like queries */\n registerObject: <T = unknown>(\n name: string,\n object: T,\n metadata?: Record<string, unknown>\n ) => string;\n\n /** Find registered object by name */\n findObjectByName: <T = unknown>(name: string) => T | undefined;\n\n /** Experience instance (for advanced use) */\n experience: Experience;\n}\n\nexport interface ExportsApi {\n /** Capture canvas as image */\n captureImage: (format?: 'png' | 'jpeg' | 'webp') => Promise<Blob | null>;\n\n /** Set filename for exports */\n setFilename: (filename: string) => void;\n\n /** Register custom capture handler */\n registerCaptureHandler: (handler: CaptureHandler) => void;\n}\n\nexport type CaptureHandler = (format: string) => Promise<Blob | null>;\n\nexport interface EnvironmentApi {\n /** Window reference */\n window: Window;\n\n /** Document reference */\n document: Document;\n\n /** Subscribe to resize events, returns cleanup */\n onResize: (callback: (width: number, height: number) => void) => () => void;\n\n /** Add cleanup function to be called on destroy */\n addCleanup: (cleanup: () => void) => void;\n}\n\nexport type SetupFunction = (\n context: ExperienceContext\n) => CleanupFunction | void | Promise<CleanupFunction | void>;\n\nexport type CleanupFunction = () => void;\n\n// ============================================================================\n// Experience Class\n// ============================================================================\n\nexport class Experience {\n // State\n private _isReady = false;\n private _isPlaying = false;\n private _isDestroyed = false;\n private _currentFrame = 0;\n\n // Core systems\n private _paramStore: ParamStore;\n private _events: EventEmitter;\n private _objects: ObjectRegistry;\n\n // Config\n private _mount: HTMLElement;\n private _frameRate: number;\n private _filename = 'capture';\n\n // Lifecycle\n private _cleanups: CleanupFunction[] = [];\n private _userCleanup?: CleanupFunction;\n private _animationFrameId?: number;\n private _lastFrameTime = 0;\n private _resizeObserver?: ResizeObserver;\n private _captureHandler?: CaptureHandler;\n\n constructor(config: ExperienceConfig) {\n this._mount = config.mount;\n this._frameRate = config.frameRate ?? 60;\n\n // Apply background if provided\n if (config.background) {\n this._mount.style.background = config.background;\n }\n\n // Initialize core systems\n this._paramStore = new ParamStore(\n config.paramDefs ?? {},\n config.initialParams\n );\n this._events = new EventEmitter();\n this._objects = new ObjectRegistry();\n\n // Subscribe to param changes -> emit events\n this._paramStore.subscribe((key, value, previousValue) => {\n this._events.emit<ParamChangeEvent>({\n type: 'paramChange',\n timestamp: Date.now(),\n key,\n value,\n previousValue,\n });\n });\n\n // Setup resize observer\n this._setupResizeObserver();\n\n // Run user setup\n this._runSetup(config.setup, config.autoplay ?? true);\n }\n\n // ===== Public Getters =====\n\n get isReady(): boolean {\n return this._isReady;\n }\n\n get isPlaying(): boolean {\n return this._isPlaying;\n }\n\n get isDestroyed(): boolean {\n return this._isDestroyed;\n }\n\n get currentFrame(): number {\n return this._currentFrame;\n }\n\n get mount(): HTMLElement {\n return this._mount;\n }\n\n /** Reactive params proxy */\n get params(): ParamValues {\n return this._paramStore.getProxy();\n }\n\n /** EventEmitter for external subscriptions */\n get events(): EventEmitter {\n return this._events;\n }\n\n /** ObjectRegistry for external access */\n get objects(): ObjectRegistry {\n return this._objects;\n }\n\n // ===== Parameter Methods =====\n\n setParam(key: string, value: unknown): void {\n this._paramStore.set(key, value);\n }\n\n setParams(params: Record<string, unknown>): void {\n this._paramStore.setMultiple(params);\n }\n\n getParams(): Record<string, unknown> {\n return this._paramStore.getSnapshot();\n }\n\n getParamDefs(): ParamDefinitions {\n return this._paramStore.getDefinitions();\n }\n\n resetParams(): void {\n this._paramStore.reset();\n }\n\n // ===== Object Registry (Spline-like) =====\n\n registerObject<T = unknown>(\n name: string,\n object: T,\n metadata?: Record<string, unknown>\n ): string {\n return this._objects.register(name, object, metadata);\n }\n\n findObjectByName<T = unknown>(name: string): T | undefined {\n return this._objects.findByName<T>(name);\n }\n\n findObjectById<T = unknown>(id: string): T | undefined {\n return this._objects.findById<T>(id);\n }\n\n getAllObjects(): Map<string, unknown> {\n return this._objects.getAll();\n }\n\n // ===== Playback =====\n\n play(): void {\n if (this._isPlaying || this._isDestroyed) return;\n this._isPlaying = true;\n this._lastFrameTime = performance.now();\n this._tick();\n this._events.emit({ type: 'play', timestamp: Date.now() });\n }\n\n pause(): void {\n if (!this._isPlaying) return;\n this._isPlaying = false;\n if (this._animationFrameId) {\n cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = undefined;\n }\n this._events.emit({ type: 'pause', timestamp: Date.now() });\n }\n\n toggle(): void {\n if (this._isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n // ===== Events =====\n\n on<T extends ExperienceEvent>(\n type: T['type'],\n handler: EventHandler<T>\n ): () => void {\n return this._events.on(type, handler);\n }\n\n once<T extends ExperienceEvent>(\n type: T['type'],\n handler: EventHandler<T>\n ): () => void {\n return this._events.once(type, handler);\n }\n\n off<T extends ExperienceEvent>(\n type: T['type'],\n handler: EventHandler<T>\n ): void {\n this._events.off(type, handler);\n }\n\n // ===== Capture =====\n\n async captureImage(format: 'png' | 'jpeg' | 'webp' = 'png'): Promise<Blob | null> {\n // Use custom handler if registered\n if (this._captureHandler) {\n return this._captureHandler(format);\n }\n\n // Default: find canvas and capture\n const canvas = this._mount.querySelector('canvas');\n if (!canvas) {\n console.warn('[Experience] No canvas found for capture');\n return null;\n }\n\n return new Promise((resolve) => {\n const mimeType = `image/${format}`;\n const quality = format === 'jpeg' ? 0.92 : undefined;\n canvas.toBlob((blob) => resolve(blob), mimeType, quality);\n });\n }\n\n getFilename(): string {\n return this._filename;\n }\n\n // ===== Lifecycle =====\n\n /**\n * Add a cleanup function to be called on destroy\n */\n addCleanup(cleanup: CleanupFunction): void {\n if (typeof cleanup === 'function') {\n this._cleanups.push(cleanup);\n }\n }\n\n /**\n * Destroy the experience and run all cleanups\n */\n destroy(): void {\n if (this._isDestroyed) return;\n this._isDestroyed = true;\n\n // Stop animation\n this.pause();\n\n // Run user cleanup first\n if (this._userCleanup) {\n try {\n this._userCleanup();\n } catch (e) {\n console.error('[Experience] User cleanup error:', e);\n }\n }\n\n // Run registered cleanups (reverse order)\n while (this._cleanups.length > 0) {\n const cleanup = this._cleanups.pop();\n if (cleanup) {\n try {\n cleanup();\n } catch (e) {\n console.error('[Experience] Cleanup error:', e);\n }\n }\n }\n\n // Disconnect observers\n this._resizeObserver?.disconnect();\n\n // Clear registry\n this._objects.clear();\n\n // Remove all event listeners\n this._events.removeAllListeners();\n\n // Emit destroyed event before clearing\n this._events.emit({ type: 'destroyed', timestamp: Date.now() });\n }\n\n // ===== Private Methods =====\n\n private async _runSetup(setup: SetupFunction, autoplay: boolean): Promise<void> {\n try {\n // Create context for user's setup\n const context = this._createContext();\n\n // Run user's setup\n const cleanup = await setup(context);\n if (typeof cleanup === 'function') {\n this._userCleanup = cleanup;\n }\n\n this._isReady = true;\n this._events.emit({ type: 'ready', timestamp: Date.now() });\n\n // Autoplay if enabled\n if (autoplay) {\n this.play();\n }\n } catch (error) {\n console.error('[Experience] Setup error:', error);\n this._events.emit<ErrorEvent>({\n type: 'error',\n timestamp: Date.now(),\n error: error instanceof Error ? error : new Error(String(error)),\n });\n }\n }\n\n private _createContext(): ExperienceContext {\n return {\n mount: this._mount,\n params: this._paramStore.getProxy(),\n exports: this._createExportsApi(),\n environment: this._createEnvironmentApi(),\n registerObject: (name, object, metadata) =>\n this._objects.register(name, object, metadata),\n findObjectByName: (name) => this._objects.findByName(name),\n experience: this,\n };\n }\n\n private _createExportsApi(): ExportsApi {\n return {\n captureImage: (format) => this.captureImage(format),\n setFilename: (filename) => {\n this._filename = filename;\n },\n registerCaptureHandler: (handler) => {\n this._captureHandler = handler;\n },\n };\n }\n\n private _createEnvironmentApi(): EnvironmentApi {\n return {\n window,\n document,\n onResize: (callback) => {\n const handler = () => {\n callback(this._mount.clientWidth, this._mount.clientHeight);\n };\n\n // Call immediately with current size\n handler();\n\n // Setup observer\n const ro = new ResizeObserver(handler);\n ro.observe(this._mount);\n\n const cleanup = () => ro.disconnect();\n this._cleanups.push(cleanup);\n return cleanup;\n },\n addCleanup: (cleanup) => this.addCleanup(cleanup),\n };\n }\n\n private _setupResizeObserver(): void {\n this._resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n this._events.emit<ResizeEvent>({\n type: 'resize',\n timestamp: Date.now(),\n width,\n height,\n });\n }\n });\n this._resizeObserver.observe(this._mount);\n }\n\n private _tick(): void {\n if (!this._isPlaying) return;\n\n const now = performance.now();\n const deltaTime = now - this._lastFrameTime;\n const targetInterval = 1000 / this._frameRate;\n\n if (deltaTime >= targetInterval) {\n this._currentFrame++;\n this._lastFrameTime = now - (deltaTime % targetInterval);\n\n this._events.emit<FrameEvent>({\n type: 'frame',\n timestamp: Date.now(),\n frame: this._currentFrame,\n deltaTime,\n });\n }\n\n this._animationFrameId = requestAnimationFrame(() => this._tick());\n }\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "730310C6746E3D6664756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "BE20C8AEA123CFE964756E2164756E21",
12
12
  "names": []
13
13
  }
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  /**
2
- * @hypertool/sdk
2
+ * @hypertools/sdk
3
3
  *
4
4
  * HyperTool SDK - Vanilla-first SDK for embedding interactive experiences
5
5
  *
6
6
  * Main entry exports the Experience class (external API)
7
7
  * Internal frame/controls are available via subpath imports:
8
- * - @hypertool/sdk/frame
9
- * - @hypertool/sdk/controls
10
- * - @hypertool/sdk/recording
11
- * - @hypertool/sdk/react
12
- * - @hypertool/sdk/codegen
8
+ * - @hypertools/sdk/frame
9
+ * - @hypertools/sdk/controls
10
+ * - @hypertools/sdk/recording
11
+ * - @hypertools/sdk/react
12
+ * - @hypertools/sdk/codegen
13
13
  */
14
14
  export { Experience } from "./core/Experience";
15
15
  export type { ExperienceConfig, ExperienceContext, ExportsApi, EnvironmentApi, } from "./core/Experience";