@hypit/hypit 0.0.1 → 0.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.
- package/LICENSE +26 -0
- package/README.md +203 -0
- package/README.zh-CN.md +195 -0
- package/bin/hypit.mjs +46 -0
- package/dist/public/artifact.d.ts +75 -0
- package/dist/public/author-kit.d.ts +559 -0
- package/dist/public/browser-capture.d.ts +56 -0
- package/dist/public/caption.d.ts +751 -0
- package/dist/public/composition.d.ts +672 -0
- package/dist/public/endpoint-kit.d.ts +366 -0
- package/dist/public/generation.d.ts +591 -0
- package/dist/public/hyperframes.d.ts +774 -0
- package/dist/public/media.d.ts +708 -0
- package/dist/public/model-kit.d.ts +523 -0
- package/dist/public/narrative.d.ts +315 -0
- package/dist/public/program-space.d.ts +193 -0
- package/dist/public/runtime-kit.d.ts +427 -0
- package/dist/public/semantic-track.d.ts +418 -0
- package/dist/public/spatial.d.ts +1193 -0
- package/dist/public/speech.d.ts +391 -0
- package/dist/public/studio-adapter.d.ts +686 -0
- package/dist/public/svs.d.ts +311 -0
- package/dist/public/temporal-markup.d.ts +343 -0
- package/dist/public/temporal.d.ts +497 -0
- package/dist/public/text.d.ts +817 -0
- package/dist/public/visual-ir.d.ts +98 -0
- package/docs/public/hypit-logo-dark.svg +36 -0
- package/docs/public/hypit-logo-light.svg +38 -0
- package/examples/README.md +24 -0
- package/examples/minimal-author-package/README.md +18 -0
- package/examples/minimal-author-package/packages/example-component/README.md +44 -0
- package/examples/minimal-author-package/packages/example-component/package.json +27 -0
- package/examples/minimal-author-package/packages/example-component/preview/Box.png +0 -0
- package/examples/minimal-author-package/packages/example-component/preview/build.svrun +6 -0
- package/examples/minimal-author-package/packages/example-component/preview/preview.svml +47 -0
- package/examples/minimal-author-package/packages/example-component/preview/recipes.svs +8 -0
- package/examples/minimal-author-package/packages/example-component/src/activation.ts +10 -0
- package/examples/minimal-author-package/packages/example-component/src/component.ts +44 -0
- package/examples/minimal-author-package/packages/example-component/src/fragment.ts +32 -0
- package/examples/minimal-author-package/packages/example-component/src/index.ts +6 -0
- package/examples/minimal-author-package/packages/example-component/src/manifest.ts +82 -0
- package/examples/minimal-author-package/packages/example-component/src/style.ts +13 -0
- package/examples/minimal-author-package/packages/example-component/src/surface.ts +41 -0
- package/examples/minimal-author-package/packages/example-component/src/temporal.ts +6 -0
- package/examples/minimal-author-package/packages/example-component/tsconfig.json +18 -0
- package/examples/semantic-composition/README.md +35 -0
- package/examples/semantic-composition/chat.svml +25 -0
- package/examples/semantic-composition/chat.svrun +6 -0
- package/examples/semantic-composition/chat.svs +4 -0
- package/examples/semantic-composition/hypit.runtime.json +8 -0
- package/examples/semantic-composition/packages/chat-scene/README.md +29 -0
- package/examples/semantic-composition/packages/chat-scene/package.json +11 -0
- package/examples/semantic-composition/packages/chat-scene/src/activation.ts +112 -0
- package/examples/semantic-composition/packages/chat-scene/src/render.ts +64 -0
- package/examples/semantic-composition/packages/chat-scene/tsconfig.json +18 -0
- package/examples/semantic-composition/packages/responsive-explainer/README.md +45 -0
- package/examples/semantic-composition/packages/responsive-explainer/package.json +11 -0
- package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +90 -0
- package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +68 -0
- package/examples/semantic-composition/packages/responsive-explainer/tsconfig.json +18 -0
- package/package.json +259 -7
- package/packages/artifact/README.md +10 -0
- package/packages/artifact/package.json +16 -0
- package/packages/artifact/src/activation.ts +8 -0
- package/packages/artifact/src/index.ts +24 -0
- package/packages/audio-track/README.md +43 -0
- package/packages/audio-track/package.json +36 -0
- package/packages/audio-track/src/activation.ts +20 -0
- package/packages/audio-track/src/component.ts +40 -0
- package/packages/audio-track/src/fragment.ts +63 -0
- package/packages/audio-track/src/index.ts +7 -0
- package/packages/audio-track/src/manifest.ts +151 -0
- package/packages/audio-track/src/program.ts +254 -0
- package/packages/audio-track/src/surface.ts +187 -0
- package/packages/audio-track/src/types.ts +62 -0
- package/packages/audio-track-studio/README.md +3 -0
- package/packages/audio-track-studio/package.json +14 -0
- package/packages/audio-track-studio/src/activation.ts +7 -0
- package/packages/audio-track-studio/src/index.ts +72 -0
- package/packages/author-kit/README.md +31 -0
- package/packages/author-kit/package.json +16 -0
- package/packages/author-kit/src/index.ts +59 -0
- package/packages/background-removal/README.md +29 -0
- package/packages/background-removal/package.json +16 -0
- package/packages/background-removal/src/activation.ts +18 -0
- package/packages/background-removal/src/component.ts +32 -0
- package/packages/background-removal/src/fragment.ts +18 -0
- package/packages/background-removal/src/index.ts +6 -0
- package/packages/background-removal/src/manifest.ts +45 -0
- package/packages/background-removal/src/program.ts +19 -0
- package/packages/background-removal/src/surface.ts +27 -0
- package/packages/background-removal/src/types.ts +5 -0
- package/packages/browser-capture/README.md +82 -0
- package/packages/browser-capture/package.json +15 -0
- package/packages/browser-capture/src/browser.ts +19 -0
- package/packages/browser-capture/src/index.ts +198 -0
- package/packages/build-result/package.json +13 -0
- package/packages/build-result/src/decode.ts +286 -0
- package/packages/build-result/src/index.ts +25 -0
- package/packages/build-result/src/store.ts +505 -0
- package/packages/build-result/src/types.ts +354 -0
- package/packages/build-result/src/writer.ts +184 -0
- package/packages/build-result-fs/README.md +29 -0
- package/packages/build-result-fs/package.json +17 -0
- package/packages/build-result-fs/src/activation.ts +62 -0
- package/packages/build-result-fs/src/index.ts +1 -0
- package/packages/build-result-kit/README.md +10 -0
- package/packages/build-result-kit/package.json +15 -0
- package/packages/build-result-kit/src/index.ts +144 -0
- package/packages/build-result-s3/README.md +49 -0
- package/packages/build-result-s3/package.json +19 -0
- package/packages/build-result-s3/src/activation.ts +71 -0
- package/packages/build-result-s3/src/client.ts +254 -0
- package/packages/build-result-s3/src/index.ts +4 -0
- package/packages/build-result-s3/src/repository.ts +361 -0
- package/packages/caption/README.md +77 -0
- package/packages/caption/package.json +28 -0
- package/packages/caption/src/activation.ts +17 -0
- package/packages/caption/src/component.ts +38 -0
- package/packages/caption/src/display.ts +111 -0
- package/packages/caption/src/error.ts +9 -0
- package/packages/caption/src/fragment.ts +26 -0
- package/packages/caption/src/index.ts +33 -0
- package/packages/caption/src/manifest.ts +97 -0
- package/packages/caption/src/style.ts +170 -0
- package/packages/caption/src/surface.ts +96 -0
- package/packages/caption/src/temporalize.ts +124 -0
- package/packages/caption/src/types.ts +71 -0
- package/packages/caption-fine/README.md +108 -0
- package/packages/caption-fine/package.json +30 -0
- package/packages/caption-fine/preview/Track.png +0 -0
- package/packages/caption-fine/src/activation.ts +32 -0
- package/packages/caption-fine/src/component.ts +58 -0
- package/packages/caption-fine/src/fragment.ts +112 -0
- package/packages/caption-fine/src/index.ts +19 -0
- package/packages/caption-fine/src/manifest.ts +383 -0
- package/packages/caption-fine/src/recipe.ts +120 -0
- package/packages/caption-fine/src/render.ts +1133 -0
- package/packages/caption-fine/src/schedule.ts +126 -0
- package/packages/caption-fine/src/spacing.ts +69 -0
- package/packages/caption-fine/src/style.ts +370 -0
- package/packages/caption-fine/src/surface.ts +152 -0
- package/packages/caption-fine/src/types.ts +191 -0
- package/packages/caption-fine-studio/README.md +3 -0
- package/packages/caption-fine-studio/package.json +15 -0
- package/packages/caption-fine-studio/src/activation.ts +7 -0
- package/packages/caption-fine-studio/src/index.ts +163 -0
- package/packages/cli/README.md +51 -0
- package/packages/cli/package.json +33 -0
- package/packages/cli/src/arguments.ts +605 -0
- package/packages/cli/src/build-planning.ts +460 -0
- package/packages/cli/src/command.ts +202 -0
- package/packages/cli/src/commands/environment.ts +391 -0
- package/packages/cli/src/commands/execution.ts +321 -0
- package/packages/cli/src/commands/results.ts +187 -0
- package/packages/cli/src/commands/types.ts +9 -0
- package/packages/cli/src/distribution.ts +74 -0
- package/packages/cli/src/index.ts +30 -0
- package/packages/cli/src/machine-view.ts +28 -0
- package/packages/cli/src/main.ts +654 -0
- package/packages/cli/src/oauth.ts +228 -0
- package/packages/cli/src/observation.ts +203 -0
- package/packages/cli/src/output.ts +1007 -0
- package/packages/cli/src/paths.ts +7 -0
- package/packages/cli/src/project-context.ts +38 -0
- package/packages/cli/src/reachability.ts +91 -0
- package/packages/cli/src/result-export.ts +148 -0
- package/packages/cli/src/result-query.ts +46 -0
- package/packages/cli/src/run-file.ts +186 -0
- package/packages/cli/src/runtime-port.ts +13 -0
- package/packages/cli/src/runtime-selection.ts +94 -0
- package/packages/cli/src/runtime-view.ts +15 -0
- package/packages/cli/src/source-discovery.ts +150 -0
- package/packages/cli/src/source-packages.ts +91 -0
- package/packages/cli/src/view.ts +228 -0
- package/packages/comment-sticker/README.md +41 -0
- package/packages/comment-sticker/package.json +29 -0
- package/packages/comment-sticker/preview/Track.png +0 -0
- package/packages/comment-sticker/src/activation.ts +32 -0
- package/packages/comment-sticker/src/author.ts +148 -0
- package/packages/comment-sticker/src/component.ts +97 -0
- package/packages/comment-sticker/src/fragment.ts +124 -0
- package/packages/comment-sticker/src/index.ts +8 -0
- package/packages/comment-sticker/src/manifest.ts +373 -0
- package/packages/comment-sticker/src/program.ts +610 -0
- package/packages/comment-sticker/src/surface.ts +172 -0
- package/packages/comment-sticker/src/types.ts +109 -0
- package/packages/comment-sticker-studio/README.md +3 -0
- package/packages/comment-sticker-studio/package.json +14 -0
- package/packages/comment-sticker-studio/src/activation.ts +7 -0
- package/packages/comment-sticker-studio/src/index.ts +132 -0
- package/packages/compiler-markup-node/README.md +12 -0
- package/packages/compiler-markup-node/package.json +22 -0
- package/packages/compiler-markup-node/src/index.ts +59 -0
- package/packages/compiler-node/README.md +60 -0
- package/packages/compiler-node/package.json +25 -0
- package/packages/compiler-node/src/compiler.ts +207 -0
- package/packages/compiler-node/src/error.ts +11 -0
- package/packages/compiler-node/src/graph-query.ts +51 -0
- package/packages/compiler-node/src/index.ts +27 -0
- package/packages/compiler-node/src/modules.ts +107 -0
- package/packages/compiler-node/src/run.ts +355 -0
- package/packages/component-kit/README.md +97 -0
- package/packages/component-kit/package.json +13 -0
- package/packages/component-kit/src/index.ts +155 -0
- package/packages/composition/README.md +53 -0
- package/packages/composition/package.json +29 -0
- package/packages/composition/src/activation.ts +3 -0
- package/packages/composition/src/component.ts +10 -0
- package/packages/composition/src/index.ts +18 -0
- package/packages/composition/src/manifest.ts +13 -0
- package/packages/composition/src/schema.ts +194 -0
- package/packages/composition/src/track.ts +1403 -0
- package/packages/core/README.md +22 -0
- package/packages/core/package.json +13 -0
- package/packages/core/src/error.ts +12 -0
- package/packages/core/src/graph.ts +341 -0
- package/packages/core/src/index.ts +32 -0
- package/packages/core/src/link.ts +240 -0
- package/packages/core/src/machine.ts +60 -0
- package/packages/core/src/plan.ts +504 -0
- package/packages/core/src/reducer.ts +428 -0
- package/packages/core/src/reference.ts +25 -0
- package/packages/core/src/slice.ts +108 -0
- package/packages/credential-store-env/README.md +11 -0
- package/packages/credential-store-env/package.json +17 -0
- package/packages/credential-store-env/src/activation.ts +25 -0
- package/packages/credential-store-env/src/index.ts +23 -0
- package/packages/credential-store-os/README.md +13 -0
- package/packages/credential-store-os/package.json +22 -0
- package/packages/credential-store-os/runtime/windows-credential.ps1 +59 -0
- package/packages/credential-store-os/src/activation.ts +32 -0
- package/packages/credential-store-os/src/index.ts +2 -0
- package/packages/credential-store-os/src/store.ts +196 -0
- package/packages/deck-track/README.md +52 -0
- package/packages/deck-track/package.json +35 -0
- package/packages/deck-track/preview/DepthStack.png +0 -0
- package/packages/deck-track/src/activation.ts +32 -0
- package/packages/deck-track/src/author.ts +217 -0
- package/packages/deck-track/src/component.ts +86 -0
- package/packages/deck-track/src/fragment.ts +148 -0
- package/packages/deck-track/src/index.ts +16 -0
- package/packages/deck-track/src/lower.ts +370 -0
- package/packages/deck-track/src/manifest.ts +438 -0
- package/packages/deck-track/src/program.ts +367 -0
- package/packages/deck-track/src/surface.ts +286 -0
- package/packages/deck-track/src/types.ts +119 -0
- package/packages/deck-track-studio/README.md +3 -0
- package/packages/deck-track-studio/package.json +14 -0
- package/packages/deck-track-studio/src/activation.ts +7 -0
- package/packages/deck-track-studio/src/index.ts +134 -0
- package/packages/driver-node/README.md +23 -0
- package/packages/driver-node/package.json +18 -0
- package/packages/driver-node/src/driver.ts +616 -0
- package/packages/driver-node/src/index.ts +10 -0
- package/packages/driver-node/src/planning.ts +67 -0
- package/packages/driver-node/src/registry.ts +234 -0
- package/packages/driver-node/src/resources.ts +36 -0
- package/packages/driver-node/src/types.ts +69 -0
- package/packages/elaborator/README.md +74 -0
- package/packages/elaborator/package.json +16 -0
- package/packages/elaborator/src/author.ts +308 -0
- package/packages/elaborator/src/fragment.ts +505 -0
- package/packages/elaborator/src/frontend-facet.ts +30 -0
- package/packages/elaborator/src/index.ts +78 -0
- package/packages/elaborator/src/source.ts +608 -0
- package/packages/endpoint-kit/README.md +111 -0
- package/packages/endpoint-kit/package.json +14 -0
- package/packages/endpoint-kit/src/index.ts +488 -0
- package/packages/estimate/README.md +32 -0
- package/packages/estimate/package.json +20 -0
- package/packages/estimate/src/activation.ts +11 -0
- package/packages/estimate/src/index.ts +16 -0
- package/packages/estimate/src/manifest.ts +34 -0
- package/packages/estimate/src/policy.ts +70 -0
- package/packages/estimate/src/program.ts +196 -0
- package/packages/estimate/src/types.ts +15 -0
- package/packages/film/README.md +49 -0
- package/packages/film/package.json +34 -0
- package/packages/film/src/activation.ts +16 -0
- package/packages/film/src/component.ts +61 -0
- package/packages/film/src/fragment.ts +83 -0
- package/packages/film/src/index.ts +11 -0
- package/packages/film/src/manifest.ts +152 -0
- package/packages/film/src/program.ts +110 -0
- package/packages/film/src/recipe.ts +24 -0
- package/packages/film/src/surface.ts +146 -0
- package/packages/film/src/types.ts +26 -0
- package/packages/film-studio/package.json +16 -0
- package/packages/film-studio/src/activation.ts +8 -0
- package/packages/film-studio/src/index.ts +17 -0
- package/packages/fonts-open/README.md +77 -0
- package/packages/fonts-open/package.json +130 -0
- package/packages/fonts-open/src/activation.ts +30 -0
- package/packages/fonts-open/src/catalog.ts +317 -0
- package/packages/fonts-open/src/index.ts +13 -0
- package/packages/fonts-open/src/manifest.ts +83 -0
- package/packages/fonts-open/src/surface.ts +239 -0
- package/packages/generation/README.md +19 -0
- package/packages/generation/package.json +23 -0
- package/packages/generation/src/activation.ts +9 -0
- package/packages/generation/src/component.ts +77 -0
- package/packages/generation/src/identity.ts +80 -0
- package/packages/generation/src/index.ts +79 -0
- package/packages/generation/src/manifest.ts +65 -0
- package/packages/generation/src/mapping.ts +231 -0
- package/packages/generation/src/ports.ts +222 -0
- package/packages/generation/src/request.ts +427 -0
- package/packages/generation/src/schema.ts +62 -0
- package/packages/generation/src/types.ts +17 -0
- package/packages/gpt-image/README.md +54 -0
- package/packages/gpt-image/package.json +34 -0
- package/packages/gpt-image/src/activation.ts +39 -0
- package/packages/gpt-image/src/fragment.ts +101 -0
- package/packages/gpt-image/src/index.ts +203 -0
- package/packages/gpt-image/src/surface.ts +194 -0
- package/packages/gpt-image-kits/README.md +44 -0
- package/packages/gpt-image-kits/kits/phone-ugc-v1.svs +34 -0
- package/packages/gpt-image-kits/package.json +15 -0
- package/packages/grok-imagine/README.md +21 -0
- package/packages/grok-imagine/package.json +21 -0
- package/packages/grok-imagine/src/activation.ts +29 -0
- package/packages/grok-imagine/src/index.ts +174 -0
- package/packages/grok-imagine/src/surface.ts +149 -0
- package/packages/host/README.md +5 -0
- package/packages/host/package.json +10 -0
- package/packages/host/src/facet.ts +6 -0
- package/packages/host/src/frontend.ts +56 -0
- package/packages/host/src/index.ts +9 -0
- package/packages/hyperframes/README.md +69 -0
- package/packages/hyperframes/package.json +36 -0
- package/packages/hyperframes/src/activation.ts +8 -0
- package/packages/hyperframes/src/browser-program.ts +79 -0
- package/packages/hyperframes/src/component.ts +32 -0
- package/packages/hyperframes/src/document.ts +827 -0
- package/packages/hyperframes/src/fragment.ts +32 -0
- package/packages/hyperframes/src/index.ts +13 -0
- package/packages/hyperframes/src/manifest.ts +67 -0
- package/packages/hyperframes/src/project.ts +118 -0
- package/packages/hyperframes/src/text.ts +1179 -0
- package/packages/hyperframes/src/types.ts +38 -0
- package/packages/image-compose/README.md +25 -0
- package/packages/image-compose/package.json +18 -0
- package/packages/image-compose/src/activation.ts +21 -0
- package/packages/image-compose/src/component.ts +100 -0
- package/packages/image-compose/src/fragment.ts +54 -0
- package/packages/image-compose/src/index.ts +10 -0
- package/packages/image-compose/src/manifest.ts +119 -0
- package/packages/image-compose/src/program.ts +75 -0
- package/packages/image-compose/src/surface.ts +83 -0
- package/packages/image-compose/src/types.ts +22 -0
- package/packages/image-transform/README.md +29 -0
- package/packages/image-transform/package.json +21 -0
- package/packages/image-transform/src/activation.ts +33 -0
- package/packages/image-transform/src/component.ts +67 -0
- package/packages/image-transform/src/fragment.ts +25 -0
- package/packages/image-transform/src/index.ts +13 -0
- package/packages/image-transform/src/manifest.ts +209 -0
- package/packages/image-transform/src/program.ts +23 -0
- package/packages/image-transform/src/surface.ts +216 -0
- package/packages/image-transform/src/types.ts +20 -0
- package/packages/interview-emoji-reveal/README.md +39 -0
- package/packages/interview-emoji-reveal/package.json +23 -0
- package/packages/interview-emoji-reveal/preview/Track.png +0 -0
- package/packages/interview-emoji-reveal/src/activation.ts +14 -0
- package/packages/interview-emoji-reveal/src/component.ts +45 -0
- package/packages/interview-emoji-reveal/src/fragment.ts +62 -0
- package/packages/interview-emoji-reveal/src/index.ts +16 -0
- package/packages/interview-emoji-reveal/src/manifest.ts +174 -0
- package/packages/interview-emoji-reveal/src/program.ts +242 -0
- package/packages/interview-emoji-reveal/src/style.ts +47 -0
- package/packages/interview-emoji-reveal/src/surface.ts +110 -0
- package/packages/interview-emoji-reveal/src/types.ts +52 -0
- package/packages/markup/README.md +81 -0
- package/packages/markup/package.json +16 -0
- package/packages/markup/src/element.ts +39 -0
- package/packages/markup/src/error.ts +20 -0
- package/packages/markup/src/frontend.ts +518 -0
- package/packages/markup/src/host-facet.ts +115 -0
- package/packages/markup/src/index.ts +25 -0
- package/packages/markup/src/registry.ts +83 -0
- package/packages/markup/src/syntax.ts +271 -0
- package/packages/markup/src/types.ts +246 -0
- package/packages/media/README.md +37 -0
- package/packages/media/package.json +19 -0
- package/packages/media/src/activation.ts +38 -0
- package/packages/media/src/component.ts +16 -0
- package/packages/media/src/frame-range.ts +33 -0
- package/packages/media/src/identity.ts +227 -0
- package/packages/media/src/index.ts +15 -0
- package/packages/media/src/manifest.ts +122 -0
- package/packages/media/src/render.ts +140 -0
- package/packages/media/src/schema.ts +69 -0
- package/packages/media/src/surface.ts +150 -0
- package/packages/media/src/types.ts +121 -0
- package/packages/media-execution/README.md +28 -0
- package/packages/media-execution/package.json +17 -0
- package/packages/media-execution/src/execute.ts +1322 -0
- package/packages/media-execution/src/index.ts +16 -0
- package/packages/media-execution/src/probe.ts +315 -0
- package/packages/media-execution/src/surface.ts +286 -0
- package/packages/media-execution/src/toolchain.ts +81 -0
- package/packages/media-execution/src/webp.ts +200 -0
- package/packages/media-pipeline/README.md +113 -0
- package/packages/media-pipeline/package.json +27 -0
- package/packages/media-pipeline/src/activation.ts +47 -0
- package/packages/media-pipeline/src/audio-plan.ts +113 -0
- package/packages/media-pipeline/src/component.ts +373 -0
- package/packages/media-pipeline/src/fragment.ts +167 -0
- package/packages/media-pipeline/src/index.ts +46 -0
- package/packages/media-pipeline/src/manifest.ts +653 -0
- package/packages/media-pipeline/src/operations.ts +248 -0
- package/packages/media-pipeline/src/selection.ts +110 -0
- package/packages/media-pipeline/src/surface.ts +389 -0
- package/packages/media-pipeline/src/types.ts +175 -0
- package/packages/media-track/README.md +197 -0
- package/packages/media-track/package.json +29 -0
- package/packages/media-track/preview/Track.png +0 -0
- package/packages/media-track/preview/build.svrun +5 -0
- package/packages/media-track/preview/flush.png +0 -0
- package/packages/media-track/preview/preview.svml +47 -0
- package/packages/media-track/preview/recipes.svs +23 -0
- package/packages/media-track/preview/rounded.png +0 -0
- package/packages/media-track/src/activation.ts +20 -0
- package/packages/media-track/src/author.ts +317 -0
- package/packages/media-track/src/component.ts +162 -0
- package/packages/media-track/src/fragment.ts +57 -0
- package/packages/media-track/src/index.ts +65 -0
- package/packages/media-track/src/layers.ts +308 -0
- package/packages/media-track/src/lower.ts +335 -0
- package/packages/media-track/src/manifest.ts +624 -0
- package/packages/media-track/src/motion.ts +387 -0
- package/packages/media-track/src/performance.ts +37 -0
- package/packages/media-track/src/presentation.ts +35 -0
- package/packages/media-track/src/program.ts +565 -0
- package/packages/media-track/src/sampling.ts +118 -0
- package/packages/media-track/src/sequence.ts +403 -0
- package/packages/media-track/src/sounds.ts +71 -0
- package/packages/media-track/src/surface.ts +668 -0
- package/packages/media-track/src/types.ts +311 -0
- package/packages/media-track-studio/README.md +3 -0
- package/packages/media-track-studio/package.json +15 -0
- package/packages/media-track-studio/src/activation.ts +7 -0
- package/packages/media-track-studio/src/index.ts +235 -0
- package/packages/mimo-speech/README.md +33 -0
- package/packages/mimo-speech/package.json +21 -0
- package/packages/mimo-speech/src/activation.ts +32 -0
- package/packages/mimo-speech/src/fragment.ts +11 -0
- package/packages/mimo-speech/src/index.ts +160 -0
- package/packages/mimo-speech/src/surface.ts +193 -0
- package/packages/minimax-h3/README.md +21 -0
- package/packages/minimax-h3/package.json +21 -0
- package/packages/minimax-h3/src/activation.ts +14 -0
- package/packages/minimax-h3/src/index.ts +188 -0
- package/packages/minimax-h3/src/surface.ts +87 -0
- package/packages/model-kit/README.md +52 -0
- package/packages/model-kit/package.json +19 -0
- package/packages/model-kit/src/index.ts +728 -0
- package/packages/nano-banana/README.md +23 -0
- package/packages/nano-banana/package.json +21 -0
- package/packages/nano-banana/src/activation.ts +14 -0
- package/packages/nano-banana/src/index.ts +172 -0
- package/packages/nano-banana/src/surface.ts +120 -0
- package/packages/narrative/README.md +7 -0
- package/packages/narrative/package.json +17 -0
- package/packages/narrative/src/activation.ts +7 -0
- package/packages/narrative/src/component.ts +33 -0
- package/packages/narrative/src/identity.ts +131 -0
- package/packages/narrative/src/index.ts +11 -0
- package/packages/narrative/src/manifest.ts +30 -0
- package/packages/narrative/src/schema.ts +89 -0
- package/packages/narrative/src/types.ts +141 -0
- package/packages/package-loader-node/README.md +23 -0
- package/packages/package-loader-node/package.json +15 -0
- package/packages/package-loader-node/src/contribution.ts +97 -0
- package/packages/package-loader-node/src/distribution-resolution.ts +146 -0
- package/packages/package-loader-node/src/index.ts +27 -0
- package/packages/package-loader-node/src/loader.ts +301 -0
- package/packages/package-loader-node/src/location.ts +279 -0
- package/packages/package-loader-node/src/types.ts +60 -0
- package/packages/program-space/README.md +20 -0
- package/packages/program-space/package.json +17 -0
- package/packages/program-space/src/activation.ts +19 -0
- package/packages/program-space/src/index.ts +107 -0
- package/packages/program-space/src/surface.ts +55 -0
- package/packages/protocol/README.md +11 -0
- package/packages/protocol/package.json +10 -0
- package/packages/protocol/src/build-id.ts +52 -0
- package/packages/protocol/src/build.ts +265 -0
- package/packages/protocol/src/canonical.ts +37 -0
- package/packages/protocol/src/error.ts +11 -0
- package/packages/protocol/src/identity.ts +59 -0
- package/packages/protocol/src/index.ts +9 -0
- package/packages/protocol/src/module.ts +67 -0
- package/packages/protocol/src/value.ts +88 -0
- package/packages/provider-hyperframes-aws-lambda/README.md +30 -0
- package/packages/provider-hyperframes-aws-lambda/package.json +30 -0
- package/packages/provider-hyperframes-aws-lambda/src/activation.ts +97 -0
- package/packages/provider-hyperframes-aws-lambda/src/client.ts +114 -0
- package/packages/provider-hyperframes-aws-lambda/src/index.ts +21 -0
- package/packages/provider-hyperframes-aws-lambda/src/provider.ts +522 -0
- package/packages/provider-hyperframes-local/README.md +129 -0
- package/packages/provider-hyperframes-local/package.json +34 -0
- package/packages/provider-hyperframes-local/src/activation.ts +107 -0
- package/packages/provider-hyperframes-local/src/capture-process.ts +110 -0
- package/packages/provider-hyperframes-local/src/capture-worker.ts +17 -0
- package/packages/provider-hyperframes-local/src/capture.ts +184 -0
- package/packages/provider-hyperframes-local/src/index.ts +10 -0
- package/packages/provider-hyperframes-local/src/options.ts +19 -0
- package/packages/provider-hyperframes-local/src/output.ts +73 -0
- package/packages/provider-hyperframes-local/src/process.ts +83 -0
- package/packages/provider-hyperframes-local/src/program.ts +58 -0
- package/packages/provider-hyperframes-local/src/provider.ts +62 -0
- package/packages/provider-hyperframes-local/src/render.ts +114 -0
- package/packages/provider-hyperframes-local/src/sampling.ts +89 -0
- package/packages/provider-hypihub/README.md +143 -0
- package/packages/provider-hypihub/package.json +26 -0
- package/packages/provider-hypihub/src/activation.ts +91 -0
- package/packages/provider-hypihub/src/index.ts +2 -0
- package/packages/provider-hypihub/src/mapping.ts +145 -0
- package/packages/provider-hypihub/src/oauth.ts +113 -0
- package/packages/provider-hypihub/src/provider.ts +566 -0
- package/packages/provider-hypihub/src/routes.ts +134 -0
- package/packages/provider-hypihub/src/upload.ts +402 -0
- package/packages/provider-image-opencv-local/README.md +16 -0
- package/packages/provider-image-opencv-local/package.json +27 -0
- package/packages/provider-image-opencv-local/runtime/raster_execute.py +299 -0
- package/packages/provider-image-opencv-local/src/activation.ts +61 -0
- package/packages/provider-image-opencv-local/src/deployment.ts +68 -0
- package/packages/provider-image-opencv-local/src/index.ts +2 -0
- package/packages/provider-image-opencv-local/src/program.ts +60 -0
- package/packages/provider-image-opencv-local/src/provider.ts +155 -0
- package/packages/provider-kie/README.md +134 -0
- package/packages/provider-kie/package.json +43 -0
- package/packages/provider-kie/src/activation.ts +71 -0
- package/packages/provider-kie/src/index.ts +10 -0
- package/packages/provider-kie/src/mapping.ts +182 -0
- package/packages/provider-kie/src/provider.ts +657 -0
- package/packages/provider-kie/src/routes.ts +150 -0
- package/packages/provider-media-local/README.md +58 -0
- package/packages/provider-media-local/package.json +28 -0
- package/packages/provider-media-local/src/activation.ts +65 -0
- package/packages/provider-media-local/src/index.ts +2 -0
- package/packages/provider-media-local/src/program.ts +19 -0
- package/packages/provider-media-local/src/provider.ts +150 -0
- package/packages/provider-whisperx-local/README.md +44 -0
- package/packages/provider-whisperx-local/package.json +27 -0
- package/packages/provider-whisperx-local/src/activation.ts +93 -0
- package/packages/provider-whisperx-local/src/index.ts +5 -0
- package/packages/provider-whisperx-local/src/program.ts +157 -0
- package/packages/provider-whisperx-local/src/provider.ts +191 -0
- package/packages/provider-xiaomi-mimo/README.md +32 -0
- package/packages/provider-xiaomi-mimo/package.json +24 -0
- package/packages/provider-xiaomi-mimo/src/activation.ts +57 -0
- package/packages/provider-xiaomi-mimo/src/index.ts +5 -0
- package/packages/provider-xiaomi-mimo/src/provider.ts +214 -0
- package/packages/ranking/README.md +67 -0
- package/packages/ranking/package.json +33 -0
- package/packages/ranking/preview/Column.svg +29 -0
- package/packages/ranking/preview/TierBoard.png +0 -0
- package/packages/ranking/preview/TierBoard.svg +36 -0
- package/packages/ranking/preview/TopThree.png +0 -0
- package/packages/ranking/src/activation.ts +38 -0
- package/packages/ranking/src/component.ts +271 -0
- package/packages/ranking/src/fragment.ts +206 -0
- package/packages/ranking/src/index.ts +26 -0
- package/packages/ranking/src/manifest.ts +807 -0
- package/packages/ranking/src/render.ts +698 -0
- package/packages/ranking/src/schedule.ts +895 -0
- package/packages/ranking/src/style.ts +272 -0
- package/packages/ranking/src/surface.ts +322 -0
- package/packages/ranking/src/tier.ts +176 -0
- package/packages/ranking/src/types.ts +277 -0
- package/packages/ranking-studio/README.md +3 -0
- package/packages/ranking-studio/package.json +14 -0
- package/packages/ranking-studio/src/activation.ts +7 -0
- package/packages/ranking-studio/src/index.ts +255 -0
- package/packages/raster/README.md +7 -0
- package/packages/raster/package.json +14 -0
- package/packages/raster/src/activation.ts +7 -0
- package/packages/raster/src/index.ts +7 -0
- package/packages/raster/src/manifest.ts +14 -0
- package/packages/raster/src/program.ts +128 -0
- package/packages/raster/src/schema.ts +53 -0
- package/packages/raster/src/types.ts +61 -0
- package/packages/render-hyperframes/README.md +58 -0
- package/packages/render-hyperframes/package.json +33 -0
- package/packages/render-hyperframes/src/activation.ts +18 -0
- package/packages/render-hyperframes/src/component.ts +37 -0
- package/packages/render-hyperframes/src/fragment.ts +73 -0
- package/packages/render-hyperframes/src/index.ts +6 -0
- package/packages/render-hyperframes/src/manifest.ts +100 -0
- package/packages/render-hyperframes/src/product.ts +29 -0
- package/packages/render-hyperframes/src/surface.ts +65 -0
- package/packages/resource-store-fs/README.md +13 -0
- package/packages/resource-store-fs/package.json +14 -0
- package/packages/resource-store-fs/src/index.ts +2 -0
- package/packages/resource-store-fs/src/store.ts +154 -0
- package/packages/resource-store-s3/README.md +15 -0
- package/packages/resource-store-s3/package.json +15 -0
- package/packages/resource-store-s3/src/client.ts +138 -0
- package/packages/resource-store-s3/src/index.ts +10 -0
- package/packages/resource-store-s3/src/store.ts +258 -0
- package/packages/run/README.md +23 -0
- package/packages/run/package.json +16 -0
- package/packages/run/src/candidate.ts +33 -0
- package/packages/run/src/facet.ts +59 -0
- package/packages/run/src/frontend-facet.ts +23 -0
- package/packages/run/src/frontend.ts +62 -0
- package/packages/run/src/graph.ts +65 -0
- package/packages/run/src/index.ts +33 -0
- package/packages/run/src/registry.ts +24 -0
- package/packages/run/src/resolve.ts +213 -0
- package/packages/run/src/types.ts +147 -0
- package/packages/run-markup/README.md +60 -0
- package/packages/run-markup/package.json +22 -0
- package/packages/run-markup/src/activation.ts +10 -0
- package/packages/run-markup/src/frontend.ts +16 -0
- package/packages/run-markup/src/index.ts +5 -0
- package/packages/run-markup/src/syntax.ts +304 -0
- package/packages/runtime/README.md +39 -0
- package/packages/runtime/package.json +15 -0
- package/packages/runtime/src/capacity.ts +51 -0
- package/packages/runtime/src/catalog.ts +30 -0
- package/packages/runtime/src/credentials.ts +124 -0
- package/packages/runtime/src/environment.ts +6 -0
- package/packages/runtime/src/execution.ts +125 -0
- package/packages/runtime/src/index.ts +24 -0
- package/packages/runtime/src/operations.ts +99 -0
- package/packages/runtime/src/scheduler.ts +281 -0
- package/packages/runtime/src/submission.ts +24 -0
- package/packages/runtime/src/types.ts +157 -0
- package/packages/runtime-host-node/README.md +25 -0
- package/packages/runtime-host-node/package.json +19 -0
- package/packages/runtime-host-node/src/index.ts +421 -0
- package/packages/runtime-host-node/src/packages.ts +158 -0
- package/packages/runtime-kit/README.md +42 -0
- package/packages/runtime-kit/package.json +16 -0
- package/packages/runtime-kit/src/index.ts +307 -0
- package/packages/runtime-kit/src/request-deadline.ts +17 -0
- package/packages/runtime-local/README.md +119 -0
- package/packages/runtime-local/package.json +33 -0
- package/packages/runtime-local/src/actions.ts +20 -0
- package/packages/runtime-local/src/config.ts +1229 -0
- package/packages/runtime-local/src/control.ts +120 -0
- package/packages/runtime-local/src/credentials.ts +61 -0
- package/packages/runtime-local/src/host.ts +174 -0
- package/packages/runtime-local/src/index.ts +36 -0
- package/packages/runtime-local/src/process-control.ts +59 -0
- package/packages/runtime-local/src/process-logs.ts +33 -0
- package/packages/runtime-local/src/programs.ts +441 -0
- package/packages/runtime-local/src/result-writer.ts +246 -0
- package/packages/runtime-local/src/runtime.ts +342 -0
- package/packages/runtime-local/src/types.ts +100 -0
- package/packages/runtime-local/src/worker-process.ts +343 -0
- package/packages/runtime-local/src/worker.ts +449 -0
- package/packages/screen-overlay/README.md +17 -0
- package/packages/screen-overlay/package.json +31 -0
- package/packages/screen-overlay/preview/Track.png +0 -0
- package/packages/screen-overlay/src/activation.ts +15 -0
- package/packages/screen-overlay/src/component.ts +20 -0
- package/packages/screen-overlay/src/fragment.ts +40 -0
- package/packages/screen-overlay/src/index.ts +7 -0
- package/packages/screen-overlay/src/manifest.ts +305 -0
- package/packages/screen-overlay/src/program.ts +321 -0
- package/packages/screen-overlay/src/surface.ts +90 -0
- package/packages/screen-overlay/src/types.ts +69 -0
- package/packages/screen-overlay-studio/README.md +3 -0
- package/packages/screen-overlay-studio/package.json +14 -0
- package/packages/screen-overlay-studio/src/activation.ts +7 -0
- package/packages/screen-overlay-studio/src/index.ts +80 -0
- package/packages/script/README.md +137 -0
- package/packages/script/package.json +22 -0
- package/packages/script/src/activation.ts +20 -0
- package/packages/script/src/edit.ts +174 -0
- package/packages/script/src/error.ts +13 -0
- package/packages/script/src/format.ts +83 -0
- package/packages/script/src/index.ts +20 -0
- package/packages/script/src/lexical.ts +133 -0
- package/packages/script/src/manifest.ts +95 -0
- package/packages/script/src/narrative.ts +232 -0
- package/packages/script/src/parser.ts +850 -0
- package/packages/script/src/surface.ts +132 -0
- package/packages/script/src/types.ts +125 -0
- package/packages/script-studio/package.json +13 -0
- package/packages/script-studio/src/activation.ts +8 -0
- package/packages/script-studio/src/index.ts +61 -0
- package/packages/seedance/README.md +19 -0
- package/packages/seedance/package.json +22 -0
- package/packages/seedance/src/activation.ts +38 -0
- package/packages/seedance/src/fragment.ts +46 -0
- package/packages/seedance/src/index.ts +329 -0
- package/packages/seedance/src/surface.ts +355 -0
- package/packages/seedance-kits/README.md +153 -0
- package/packages/seedance-kits/kits/broll-v1.svs +52 -0
- package/packages/seedance-kits/kits/call-v1.svs +55 -0
- package/packages/seedance-kits/kits/camera-reference-v1.svs +9 -0
- package/packages/seedance-kits/kits/motion-reference-v1.svs +9 -0
- package/packages/seedance-kits/kits/podcast-v1.svs +55 -0
- package/packages/seedance-kits/kits/speaker-v1.svs +136 -0
- package/packages/seedance-kits/kits/street-interview-v1.svs +49 -0
- package/packages/seedance-kits/package.json +24 -0
- package/packages/seedream/README.md +21 -0
- package/packages/seedream/package.json +21 -0
- package/packages/seedream/src/activation.ts +12 -0
- package/packages/seedream/src/index.ts +162 -0
- package/packages/seedream/src/surface.ts +84 -0
- package/packages/semantic-take-adjust/package.json +21 -0
- package/packages/semantic-take-adjust/src/activation.ts +22 -0
- package/packages/semantic-take-adjust/src/component.ts +31 -0
- package/packages/semantic-take-adjust/src/fragment.ts +24 -0
- package/packages/semantic-take-adjust/src/index.ts +12 -0
- package/packages/semantic-take-adjust/src/manifest.ts +57 -0
- package/packages/semantic-take-adjust/src/program.ts +49 -0
- package/packages/semantic-take-adjust/src/surface.ts +96 -0
- package/packages/semantic-take-adjust/src/types.ts +9 -0
- package/packages/semantic-track/README.md +21 -0
- package/packages/semantic-track/package.json +22 -0
- package/packages/semantic-track/src/activation.ts +8 -0
- package/packages/semantic-track/src/component.ts +24 -0
- package/packages/semantic-track/src/identity.ts +58 -0
- package/packages/semantic-track/src/index.ts +6 -0
- package/packages/semantic-track/src/location.ts +81 -0
- package/packages/semantic-track/src/manifest.ts +38 -0
- package/packages/semantic-track/src/projection.ts +71 -0
- package/packages/semantic-track/src/types.ts +26 -0
- package/packages/source/README.md +13 -0
- package/packages/source/package.json +13 -0
- package/packages/source/src/header.ts +80 -0
- package/packages/source/src/index.ts +17 -0
- package/packages/source/src/unit.ts +38 -0
- package/packages/spatial/README.md +77 -0
- package/packages/spatial/package.json +24 -0
- package/packages/spatial/src/activation.ts +43 -0
- package/packages/spatial/src/author.ts +59 -0
- package/packages/spatial/src/component.ts +45 -0
- package/packages/spatial/src/fragment.ts +36 -0
- package/packages/spatial/src/geometry.ts +238 -0
- package/packages/spatial/src/index.ts +37 -0
- package/packages/spatial/src/manifest.ts +341 -0
- package/packages/spatial/src/region-timeline.ts +69 -0
- package/packages/spatial/src/schema.ts +47 -0
- package/packages/spatial/src/surface.ts +319 -0
- package/packages/spatial/src/types.ts +101 -0
- package/packages/speech/README.md +16 -0
- package/packages/speech/package.json +19 -0
- package/packages/speech/src/activation.ts +7 -0
- package/packages/speech/src/component.ts +43 -0
- package/packages/speech/src/identity.ts +73 -0
- package/packages/speech/src/index.ts +6 -0
- package/packages/speech/src/manifest.ts +30 -0
- package/packages/speech/src/materialize.ts +103 -0
- package/packages/speech/src/schema.ts +42 -0
- package/packages/speech/src/types.ts +54 -0
- package/packages/speech-alignment/README.md +29 -0
- package/packages/speech-alignment/package.json +25 -0
- package/packages/speech-alignment/src/activation.ts +8 -0
- package/packages/speech-alignment/src/align.ts +235 -0
- package/packages/speech-alignment/src/component.ts +37 -0
- package/packages/speech-alignment/src/error.ts +9 -0
- package/packages/speech-alignment/src/index.ts +7 -0
- package/packages/speech-alignment/src/local.ts +64 -0
- package/packages/speech-alignment/src/locate.ts +473 -0
- package/packages/speech-alignment/src/manifest.ts +37 -0
- package/packages/speech-alignment/src/normalize.ts +79 -0
- package/packages/speech-alignment/src/types.ts +30 -0
- package/packages/speech-evidence/README.md +3 -0
- package/packages/speech-evidence/package.json +16 -0
- package/packages/speech-evidence/src/activation.ts +3 -0
- package/packages/speech-evidence/src/index.ts +102 -0
- package/packages/speech-track/README.md +51 -0
- package/packages/speech-track/package.json +28 -0
- package/packages/speech-track/preview/Track.png +0 -0
- package/packages/speech-track/src/activation.ts +19 -0
- package/packages/speech-track/src/component.ts +45 -0
- package/packages/speech-track/src/fragment.ts +74 -0
- package/packages/speech-track/src/index.ts +7 -0
- package/packages/speech-track/src/manifest.ts +73 -0
- package/packages/speech-track/src/program.ts +64 -0
- package/packages/speech-track/src/surface.ts +35 -0
- package/packages/speech-track/src/types.ts +6 -0
- package/packages/speech-track-studio/README.md +3 -0
- package/packages/speech-track-studio/package.json +14 -0
- package/packages/speech-track-studio/src/activation.ts +7 -0
- package/packages/speech-track-studio/src/index.ts +40 -0
- package/packages/store-sqlite/README.md +14 -0
- package/packages/store-sqlite/package.json +18 -0
- package/packages/store-sqlite/src/index.ts +2 -0
- package/packages/store-sqlite/src/store.ts +1101 -0
- package/packages/studio/README.md +125 -0
- package/packages/studio/index.html +10 -0
- package/packages/studio/package.json +50 -0
- package/packages/studio/src/build-library.ts +281 -0
- package/packages/studio/src/companion-assembly.ts +39 -0
- package/packages/studio/src/compile.ts +166 -0
- package/packages/studio/src/domain.ts +139 -0
- package/packages/studio/src/execute.ts +57 -0
- package/packages/studio/src/fallback-companions.ts +98 -0
- package/packages/studio/src/observe.ts +202 -0
- package/packages/studio/src/parameter-values.ts +81 -0
- package/packages/studio/src/parameters.ts +550 -0
- package/packages/studio/src/preview/render.ts +51 -0
- package/packages/studio/src/preview/runtime-shim.ts +184 -0
- package/packages/studio/src/programme.ts +276 -0
- package/packages/studio/src/run.ts +85 -0
- package/packages/studio/src/server.ts +725 -0
- package/packages/studio/src/session.ts +111 -0
- package/packages/studio/src/shared.ts +315 -0
- package/packages/studio/src/snapshot.ts +454 -0
- package/packages/studio/src/source-transaction.ts +57 -0
- package/packages/studio/src/storyboard.ts +133 -0
- package/packages/studio/src/studio-preflight.ts +198 -0
- package/packages/studio/src/studio-registry.ts +406 -0
- package/packages/studio/src/studio-trace.ts +136 -0
- package/packages/studio/src/style.css +1525 -0
- package/packages/studio/src/surface-preview.ts +35 -0
- package/packages/studio/src/temporal-graph.ts +227 -0
- package/packages/studio/src/ui/code.ts +450 -0
- package/packages/studio/src/ui/icons.ts +51 -0
- package/packages/studio/src/ui/library.ts +378 -0
- package/packages/studio/src/ui/main.ts +1001 -0
- package/packages/studio/src/ui/markers.ts +152 -0
- package/packages/studio/src/ui/material-preview.ts +176 -0
- package/packages/studio/src/ui/overlay.ts +144 -0
- package/packages/studio/src/ui/resize.ts +74 -0
- package/packages/studio/src/ui/selection.ts +178 -0
- package/packages/studio/src/ui/stage.ts +231 -0
- package/packages/studio/src/ui/syntax.ts +195 -0
- package/packages/studio/src/ui/timeline.ts +1041 -0
- package/packages/studio/src/ui/writeback.ts +10 -0
- package/packages/studio/src/ui/zoom.ts +129 -0
- package/packages/studio/start.ts +143 -0
- package/packages/studio-adapter/README.md +186 -0
- package/packages/studio-adapter/package.json +14 -0
- package/packages/studio-adapter/src/index.ts +850 -0
- package/packages/svs/README.md +37 -0
- package/packages/svs/package.json +21 -0
- package/packages/svs/src/activation.ts +11 -0
- package/packages/svs/src/format.ts +16 -0
- package/packages/svs/src/frontend.ts +33 -0
- package/packages/svs/src/index.ts +5 -0
- package/packages/svs/src/manifest.ts +17 -0
- package/packages/svs/src/parser.ts +279 -0
- package/packages/svs/src/types.ts +26 -0
- package/packages/temporal/README.md +31 -0
- package/packages/temporal/package.json +20 -0
- package/packages/temporal/src/activation.ts +9 -0
- package/packages/temporal/src/component.ts +68 -0
- package/packages/temporal/src/index.ts +110 -0
- package/packages/temporal/src/location.ts +67 -0
- package/packages/temporal/src/projection.ts +280 -0
- package/packages/temporal/src/rational.ts +80 -0
- package/packages/temporal/src/sample.ts +43 -0
- package/packages/temporal/src/schedule.ts +52 -0
- package/packages/temporal/src/types.ts +124 -0
- package/packages/temporal-markup/README.md +75 -0
- package/packages/temporal-markup/package.json +18 -0
- package/packages/temporal-markup/src/index.ts +537 -0
- package/packages/temporal-markup/src/space.ts +59 -0
- package/packages/text/README.md +59 -0
- package/packages/text/package.json +21 -0
- package/packages/text/src/activation.ts +33 -0
- package/packages/text/src/component.ts +72 -0
- package/packages/text/src/fragment.ts +57 -0
- package/packages/text/src/frontend.ts +39 -0
- package/packages/text/src/index.ts +27 -0
- package/packages/text/src/manifest.ts +170 -0
- package/packages/text/src/program.ts +418 -0
- package/packages/text/src/surface.ts +212 -0
- package/packages/text/src/svs.ts +189 -0
- package/packages/text/src/types.ts +82 -0
- package/packages/transport-aws-lambda/README.md +20 -0
- package/packages/transport-aws-lambda/package.json +14 -0
- package/packages/transport-aws-lambda/src/index.ts +131 -0
- package/packages/typography-track/README.md +50 -0
- package/packages/typography-track/package.json +34 -0
- package/packages/typography-track/preview/Mask.png +0 -0
- package/packages/typography-track/preview/Track.png +0 -0
- package/packages/typography-track/src/activation.ts +36 -0
- package/packages/typography-track/src/component.ts +93 -0
- package/packages/typography-track/src/fragment.ts +30 -0
- package/packages/typography-track/src/index.ts +11 -0
- package/packages/typography-track/src/manifest.ts +556 -0
- package/packages/typography-track/src/program.ts +622 -0
- package/packages/typography-track/src/surface.ts +842 -0
- package/packages/typography-track/src/types.ts +109 -0
- package/packages/typography-track-studio/README.md +3 -0
- package/packages/typography-track-studio/package.json +14 -0
- package/packages/typography-track-studio/src/activation.ts +7 -0
- package/packages/typography-track-studio/src/index.ts +116 -0
- package/packages/validation/README.md +11 -0
- package/packages/validation/package.json +15 -0
- package/packages/validation/src/index.ts +100 -0
- package/packages/video-cli/README.md +181 -0
- package/packages/video-cli/package.json +37 -0
- package/packages/video-cli/src/capture.ts +174 -0
- package/packages/video-cli/src/cli.ts +109 -0
- package/packages/video-cli/src/compiler.ts +32 -0
- package/packages/video-cli/src/creation.ts +449 -0
- package/packages/video-cli/src/distribution.ts +88 -0
- package/packages/video-cli/src/index.ts +50 -0
- package/packages/video-cli/src/media.ts +701 -0
- package/packages/video-cli/src/package-selection.ts +34 -0
- package/packages/video-cli/src/process.ts +71 -0
- package/packages/video-cli/src/studio-distribution.ts +19 -0
- package/packages/video-cli/src/transcript.ts +71 -0
- package/packages/video-cli/src/vocabulary.ts +386 -0
- package/packages/visual-ir/README.md +36 -0
- package/packages/visual-ir/package.json +16 -0
- package/packages/visual-ir/src/activation.ts +3 -0
- package/packages/visual-ir/src/index.ts +7 -0
- package/packages/visual-ir/src/style.ts +222 -0
- package/packages/volcengine-matting/README.md +89 -0
- package/packages/volcengine-matting/package.json +16 -0
- package/packages/volcengine-matting/src/activation.ts +13 -0
- package/packages/volcengine-matting/src/index.ts +45 -0
- package/packages/volcengine-matting/src/surface.ts +48 -0
- package/packages/whisperx/README.md +34 -0
- package/packages/whisperx/package.json +28 -0
- package/packages/whisperx/src/activation.ts +18 -0
- package/packages/whisperx/src/component.ts +64 -0
- package/packages/whisperx/src/evidence.ts +69 -0
- package/packages/whisperx/src/fragment.ts +76 -0
- package/packages/whisperx/src/index.ts +14 -0
- package/packages/whisperx/src/manifest.ts +92 -0
- package/packages/whisperx/src/surface.ts +90 -0
- package/packages/whisperx/src/transcript.ts +97 -0
- package/packages/whisperx/src/types.ts +9 -0
- package/packages/workspace/README.md +4 -0
- package/packages/workspace/package.json +14 -0
- package/packages/workspace/src/index.ts +38 -0
- package/packages/workspace-fs-node/README.md +13 -0
- package/packages/workspace-fs-node/package.json +15 -0
- package/packages/workspace-fs-node/src/index.ts +6 -0
- package/packages/workspace-fs-node/src/workspace.ts +226 -0
- package/packages/yt-dlp/README.md +31 -0
- package/packages/yt-dlp/package.json +10 -0
- package/packages/yt-dlp/src/download.ts +104 -0
- package/packages/yt-dlp/src/index.ts +1 -0
- package/services/image-opencv/README.md +33 -0
- package/services/image-opencv/package.json +14 -0
- package/services/image-opencv/pyproject.toml +13 -0
- package/services/image-opencv/uv.lock +56 -0
- package/services/whisperx/README.md +82 -0
- package/services/whisperx/package.json +15 -0
- package/services/whisperx/pyproject.toml +26 -0
- package/services/whisperx/src/hypit_whisperx_service/__init__.py +6 -0
- package/services/whisperx/src/hypit_whisperx_service/__main__.py +29 -0
- package/services/whisperx/src/hypit_whisperx_service/application.py +88 -0
- package/services/whisperx/src/hypit_whisperx_service/audio.py +66 -0
- package/services/whisperx/src/hypit_whisperx_service/check.py +35 -0
- package/services/whisperx/src/hypit_whisperx_service/config.py +81 -0
- package/services/whisperx/src/hypit_whisperx_service/engine.py +173 -0
- package/services/whisperx/src/hypit_whisperx_service/prepare.py +19 -0
- package/services/whisperx/src/hypit_whisperx_service/resources.py +41 -0
- package/services/whisperx/src/hypit_whisperx_service/server.py +101 -0
- package/services/whisperx/uv.lock +3381 -0
- package/services/yt-dlp/README.md +19 -0
- package/services/yt-dlp/package.json +14 -0
- package/services/yt-dlp/pyproject.toml +13 -0
- package/services/yt-dlp/uv.lock +23 -0
- package/index.js +0 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# `@hypit/media-track`
|
|
2
|
+
|
|
3
|
+
The Track Surface accepts `semantic={speech.semantic}` or `space={animation}`. Semantic context
|
|
4
|
+
resolves Script Selections and Moments; authored space supports clock-based animation. Shared `at`
|
|
5
|
+
inputs accept a Moment or a time such as `2s`; `at` with `for` produces a Window where required.
|
|
6
|
+
`Performance` still needs `semantic`, which supplies its ordered prepared footage.
|
|
7
|
+
|
|
8
|
+
Place images, prepared video or compositable surfaces over the semantic timeline. B-roll is a common
|
|
9
|
+
use: the picture can illustrate a phrase while the A-roll's speech continues. Performance presents the semantic material as a full picture, inset or cutout.
|
|
10
|
+
Media Items own independently timed pictures;
|
|
11
|
+
a Sequence owns one visual slot whose Members replace each other through Handoffs.
|
|
12
|
+
|
|
13
|
+
The Markup Track takes `canvas` and a time source (`semantic` or `space`). Its Surface projects
|
|
14
|
+
authored Selections, Moments, Segments or clock expressions into Windows and Instants. The component
|
|
15
|
+
consumes those projected times with Frames, media and appearance; its Fragment receives ProgramSpace.
|
|
16
|
+
|
|
17
|
+
Moving media enters after [normalization](../media-pipeline/README.md), with the intended streams and
|
|
18
|
+
frame clock already selected. Still images use their actual intrinsic Extent. Placement, fitting,
|
|
19
|
+
sampling and motion remain separate authored choices.
|
|
20
|
+
|
|
21
|
+
## Display a semantic performance
|
|
22
|
+
|
|
23
|
+
```svml
|
|
24
|
+
<media:Track id="performance" semantic={speech.semantic} canvas={canvas}>
|
|
25
|
+
<media:Performance during="program" frame={layout.full}
|
|
26
|
+
appearance={look.performance}/>
|
|
27
|
+
</media:Track>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`Performance` displays the prepared material in its enclosing Track's `semantic` input. `during`
|
|
31
|
+
selects the whole program, a Segment or a Selection; the other Window forms work as usual. One
|
|
32
|
+
Performance can span any number of Takes. Each plays at its original program position: if a Take
|
|
33
|
+
begins at program second 5, a Window from seconds 7 to 10 shows source seconds 2 to 5. An audio-only
|
|
34
|
+
interval contributes no picture. The presentation shares one frame, appearance and lifecycle across
|
|
35
|
+
Take boundaries.
|
|
36
|
+
|
|
37
|
+
Its appearance Recipe needs `stack-order` and can set fit, crop anchors, opacity, filters, clipping,
|
|
38
|
+
padding, border, shadow and frame paint. `motion` moves the framed presentation, and `Sampling`
|
|
39
|
+
children transform the fitted picture over the complete selected Window, without restarting at
|
|
40
|
+
Take boundaries. `Sound` children attach prepared effects to its entrance or exit. Its original
|
|
41
|
+
sound is independently available as `speech.audio` for Film. Use an Item with direct `media` for
|
|
42
|
+
independent playback or source trim; Performance preserves the semantic assembly's source timing.
|
|
43
|
+
|
|
44
|
+
```svml
|
|
45
|
+
<media:Performance during={story.segment.explanation} frame={layout.full}
|
|
46
|
+
appearance={look.performance}>
|
|
47
|
+
<media:Sampling at="start" zoom="1"/>
|
|
48
|
+
<media:Sampling at="end" zoom="1.08"/>
|
|
49
|
+
</media:Performance>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This excerpt belongs inside the same Media Track. Its selected passage determines the appearance
|
|
53
|
+
interval, while the two Sampling keys direct a gradual push-in inside the unchanged Frame.
|
|
54
|
+
|
|
55
|
+
For a fixed card, full picture, circle or cutout this is ordinary Media presentation. If video and
|
|
56
|
+
graphics must resize, mask or move together, write a project component that owns that relationship.
|
|
57
|
+
`projectSemanticMedia` supplies the same material spans to its drawing function. The component can
|
|
58
|
+
use a browser program from `@hypit/hypit/hyperframes` while Caption and independent overlays remain peers.
|
|
59
|
+
|
|
60
|
+
## Place the frame, then fit its contents
|
|
61
|
+
|
|
62
|
+
An Item or Sequence owns an outer destination `frame`. Each sampled source has a fitted content
|
|
63
|
+
rectangle calculated from its intrinsic extent and its fit Recipe. Border and padding reduce the
|
|
64
|
+
fitting area inside the outer Frame. Source dimensions stay factual; the calculated rectangle can
|
|
65
|
+
be smaller or larger than the fitting area.
|
|
66
|
+
|
|
67
|
+
[Spatial](../spatial/README.md#destination-and-fitted-content) owns the seven fit modes, the two
|
|
68
|
+
alignment points, pixel offsets and bounded/free placement. `frame-x` / `frame-y` are alignment
|
|
69
|
+
fractions in that fitting area. Move the whole visual by changing the `frame` reference; choose
|
|
70
|
+
which part of the picture is visible through the fit and content alignment.
|
|
71
|
+
|
|
72
|
+
The appearance Recipe separates the outer presentation from the sampled picture:
|
|
73
|
+
|
|
74
|
+
| Properties | What they affect |
|
|
75
|
+
| --- | --- |
|
|
76
|
+
| `stack-order` | Absolute visual stacking of the Item or Sequence; required |
|
|
77
|
+
| `clip` | Outer clipping: `frame` (default), `rounded`, or `none` |
|
|
78
|
+
| `radius` | Pixel radius when `clip: rounded`; half a square Frame's side gives a circle |
|
|
79
|
+
| `padding` | Fitting inset, as quoted pixel values: `"12"`, `"8 12"`, or `"8 12 16 12"` |
|
|
80
|
+
| `border-width`, `border-style`, `border-color` | Border inside the outer Frame; a positive width requires a color |
|
|
81
|
+
| `shadows` | Frame shadows, as quoted `x y blur spread color` entries separated by semicolons |
|
|
82
|
+
| `frame-paint` | Solid or gradient backing behind the content |
|
|
83
|
+
| `fit`, alignment and fit offsets | The scaled source's rectangle |
|
|
84
|
+
| `opacity`, `blur`, `brightness`, `contrast`, `saturation` | The sampled picture, independently of frame decoration |
|
|
85
|
+
|
|
86
|
+
For example, this is a rounded card with an inset picture and a painted backing:
|
|
87
|
+
|
|
88
|
+
```svs
|
|
89
|
+
media.card {
|
|
90
|
+
stack-order: 40;
|
|
91
|
+
fit: contain;
|
|
92
|
+
clip: rounded;
|
|
93
|
+
radius: 24;
|
|
94
|
+
padding: "12";
|
|
95
|
+
border-width: 2;
|
|
96
|
+
border-color: #B9A88B;
|
|
97
|
+
frame-paint: #25332D;
|
|
98
|
+
shadows: "0 8 20 0 #00000055";
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The outer size includes the border; border and padding both reduce the fitting area. The clip
|
|
103
|
+
follows the outer Frame, so a smaller contained picture may retain square corners inside a rounded
|
|
104
|
+
card. A rounded picture with a flush edge uses a Frame matching its displayed aspect. `clip: none`
|
|
105
|
+
allows source overflow; fitting alone supplies no mask. An authored spatial Path can be bound to
|
|
106
|
+
an Item or Sequence with `clip={path}` in place of the Recipe's clip choice. Path coordinates are in
|
|
107
|
+
Canvas pixels.
|
|
108
|
+
|
|
109
|
+
A `motion` Recipe transforms the framed unit, including its backing and decoration. `Sampling`
|
|
110
|
+
transforms the fitted source inside it, around the source rectangle's center. It accepts `zoom`,
|
|
111
|
+
pixel `x` / `y`, degree `rotate`, and `easing`, at `start`, `end`, or intermediate percentages. Supply
|
|
112
|
+
keys spanning start to end. Sampling runs after fitting and is not constrained by `fit-constraint`;
|
|
113
|
+
a deliberate pan or rotation may reveal the backing or lower layers.
|
|
114
|
+
|
|
115
|
+
## Author Items and replacement Sequences
|
|
116
|
+
|
|
117
|
+
These excerpts assume the imports, named assets, normalized media, Frames, Extents, Script,
|
|
118
|
+
SemanticTrack and Recipes are already declared:
|
|
119
|
+
|
|
120
|
+
```svml
|
|
121
|
+
<media-track:Track id="coverage" semantic={speech.semantic} canvas={vertical}>
|
|
122
|
+
<media-track:Item image={photo} extent={photo-extent} frame={full-frame}
|
|
123
|
+
during={story.selection.example} appearance={recipes.media.still}/>
|
|
124
|
+
<media-track:Item media={clip-media.media} frame={full-frame}
|
|
125
|
+
during={story.selection.proof} appearance={recipes.media.clip}/>
|
|
126
|
+
</media-track:Track>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
One Item selects exactly one direct source form (`image` + `extent`, prepared `media`, or `surface`)
|
|
130
|
+
or declares ordered `Paint`/`Layer` children. The current Surface has no raw `video` attribute.
|
|
131
|
+
Appearance owns stack order, fit, clipping and source sampling; a `motion` Recipe owns lifecycle
|
|
132
|
+
movement. `Sampling` children can move the sampled content inside the Frame independently.
|
|
133
|
+
|
|
134
|
+
```svml
|
|
135
|
+
<media-track:Track id="cards" semantic={speech.semantic} canvas={vertical}>
|
|
136
|
+
<media-track:Sequence id="steps" frame={card-frame} appearance={recipes.media.card}
|
|
137
|
+
until={story.selection.demo} until-boundary="end">
|
|
138
|
+
<media-track:Member id="one" image={first} extent={card-extent}
|
|
139
|
+
at={story.moment.first}/>
|
|
140
|
+
<media-track:Member id="two" image={second} extent={card-extent}
|
|
141
|
+
at={story.moment.second}/>
|
|
142
|
+
<media-track:Handoff id="one-two" from="one" transition={recipes.transition.cards}/>
|
|
143
|
+
</media-track:Sequence>
|
|
144
|
+
</media-track:Track>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Members have ordered activation Instants; the next activation ends the preceding logical phase,
|
|
148
|
+
and the Sequence has an explicit terminal Instant. Each adjacent pair needs a Handoff, including
|
|
149
|
+
an explicit `cut` when no blended transition is intended. `from` names the outgoing Member; its
|
|
150
|
+
successor is the incoming Member. A Handoff's duration and boundary ratio place the visual transition
|
|
151
|
+
around that logical boundary without moving the semantic event.
|
|
152
|
+
|
|
153
|
+
For layered content, `Paint` and `Layer` children draw in Source order inside the shared Frame. Give
|
|
154
|
+
each Layer its own fit/sample Recipe. A Member appearance override selects its source fit, sampling
|
|
155
|
+
and frame paint; the Sequence still owns the outer Frame, clip, padding, border, shadow, motion and
|
|
156
|
+
stack order. Separate Items supply independently placed Frames.
|
|
157
|
+
|
|
158
|
+
An Item or Member can select audio using `source-audio`: `content` for its direct source, or a child
|
|
159
|
+
Layer id for layered content. This is opt-in. `Sound` can instead attach normalized audio to Item
|
|
160
|
+
`at="enter"` / `at="exit"`, or to a Sequence `handoff="one-two"`. The Track publishes `.visual` and
|
|
161
|
+
`.program`, plus `.audio` when sound is present; Film must include the desired peer outputs.
|
|
162
|
+
|
|
163
|
+
## Item windows and source playback
|
|
164
|
+
|
|
165
|
+
The Item's projected Window determines when it is active in the program. A timed sample's Recipe
|
|
166
|
+
separately controls which source frames it occupies there. `playback` defaults to `once-start`:
|
|
167
|
+
|
|
168
|
+
| Value | Source occupancy inside the Window |
|
|
169
|
+
| --- | --- |
|
|
170
|
+
| `once-start` | Play at native rate from the source start. Truncate if the Window is shorter; draw no source after it ends if the Window is longer. |
|
|
171
|
+
| `once-end` | Align native playback to the Window end. Use the source tail if the Window is shorter; leave the initial excess unoccupied if longer. |
|
|
172
|
+
| `hold-start` | Play from the start, then hold the last source frame over any remaining Window. |
|
|
173
|
+
| `hold-end` | Align playback to the end, holding the first source frame over any initial excess. |
|
|
174
|
+
| `loop-start` / `loop-end` | Repeat at native rate, aligning the loop phase to the start or end. |
|
|
175
|
+
| `stretch` | Retime the selected source range across the full Window. |
|
|
176
|
+
|
|
177
|
+
`trim-start` and `trim-end` are a pair of integer source-frame boundaries, with an exclusive end.
|
|
178
|
+
Omit both to use the full source. The playback rules apply to the trimmed range when present.
|
|
179
|
+
For `stretch`, the source-frame advance is `sourceLength / targetLength`. For native playback, moving
|
|
180
|
+
media has already been normalized to ProgramSpace's frame rate, so one program frame advances one
|
|
181
|
+
source frame. These are source sampling choices; they do not move a Selection's semantic boundaries.
|
|
182
|
+
|
|
183
|
+
A two-second Item can use the beginning of a four-second generated clip without requesting a
|
|
184
|
+
model-invalid two-second generation. Conversely, an Item active longer than its source must choose
|
|
185
|
+
whether a return to the layer below, a hold, a loop or retiming is intended. No mode is universally
|
|
186
|
+
correct for B-roll. Extending a Window with `once-start` does not extend the underlying video.
|
|
187
|
+
|
|
188
|
+
Durationless still images refuse `playback`, `trim-start` and `trim-end`. Their spatial placement and
|
|
189
|
+
Item Window are sufficient. A static B-roll picture does not need conversion to a generated clip.
|
|
190
|
+
|
|
191
|
+
Visual and source-audio projections remain separate. Selecting source audio applies the corresponding
|
|
192
|
+
sampling policy to that audio; a held visual frame does not synthesize held sound. A silent B-roll
|
|
193
|
+
layer can cover a speaking Track while the latter's audio continues unchanged.
|
|
194
|
+
|
|
195
|
+
For adjacent semantic Items that should have no uncovered pause, author touching Selection boundaries
|
|
196
|
+
using Script affinity. Also inspect opacity transitions and source exhaustion: touching Windows alone
|
|
197
|
+
do not guarantee opaque visual coverage.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hypit/media-track",
|
|
3
|
+
"version": "0.0.0-dev",
|
|
4
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
5
|
+
"private": true,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./src/index.ts"
|
|
9
|
+
},
|
|
10
|
+
"hypit": {
|
|
11
|
+
"activation": "./src/activation.ts"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@hypit/artifact": "workspace:*",
|
|
15
|
+
"@hypit/component-kit": "workspace:*",
|
|
16
|
+
"@hypit/composition": "workspace:*",
|
|
17
|
+
"@hypit/elaborator": "workspace:*",
|
|
18
|
+
"@hypit/media": "workspace:*",
|
|
19
|
+
"@hypit/narrative": "workspace:*",
|
|
20
|
+
"@hypit/program-space": "workspace:*",
|
|
21
|
+
"@hypit/protocol": "workspace:*",
|
|
22
|
+
"@hypit/semantic-track": "workspace:*",
|
|
23
|
+
"@hypit/spatial": "workspace:*",
|
|
24
|
+
"@hypit/svs": "workspace:*",
|
|
25
|
+
"@hypit/markup": "workspace:*",
|
|
26
|
+
"@hypit/temporal": "workspace:*",
|
|
27
|
+
"@hypit/temporal-markup": "workspace:*"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?svml using="@hypit/markup@1"?>
|
|
2
|
+
<!-- A wordless catalogue composition using this package's two sample graphics.
|
|
3
|
+
The samples are the displayed content. Their frame treatments demonstrate fit,
|
|
4
|
+
padding, clipping and motion; build.svrun renders the same composition. -->
|
|
5
|
+
<svml>
|
|
6
|
+
<import from="@hypit/script@1"/>
|
|
7
|
+
<import as="media" from="@hypit/media@1"/>
|
|
8
|
+
<import as="pipeline" from="@hypit/media-pipeline@1"/>
|
|
9
|
+
<import as="speech" from="@hypit/speech-track@1"/>
|
|
10
|
+
<import as="whisperx" from="@hypit/whisperx@1"/>
|
|
11
|
+
<import as="media-track" from="@hypit/media-track@1"/>
|
|
12
|
+
<import as="space" from="@hypit/spatial@1"/>
|
|
13
|
+
<import as="program" from="@hypit/program-space@1"/>
|
|
14
|
+
<import as="film" from="@hypit/film@1"/>
|
|
15
|
+
<import as="render" from="@hypit/render-hyperframes@1"/>
|
|
16
|
+
<import as="recipes" source="./recipes.svs"/>
|
|
17
|
+
|
|
18
|
+
<script id="story"><empty></empty></script>
|
|
19
|
+
<space:Canvas id="vertical" width="720" height="1280"/>
|
|
20
|
+
<program:Clock id="clock" frame-rate="30"/>
|
|
21
|
+
<space:Frame id="full" within={vertical} left="0%" top="0%" right="100%" bottom="100%"/>
|
|
22
|
+
<space:Frame id="card-a" within={vertical}
|
|
23
|
+
left="8%" top="16%" right="92%" bottom="46%"/>
|
|
24
|
+
<space:Frame id="card-b" within={vertical}
|
|
25
|
+
left="12%" top="52%" right="88%" bottom="78%"/>
|
|
26
|
+
<space:Extent id="picture-size" width="640" height="360"/>
|
|
27
|
+
<media:Image id="picture-a" src="./rounded.png"/>
|
|
28
|
+
<media:Image id="picture-b" src="./flush.png"/>
|
|
29
|
+
|
|
30
|
+
<pipeline:StillVideo id="duration" source={picture-a} duration="5" clock={clock}/>
|
|
31
|
+
<pipeline:Normalize id="duration-media" source={duration.video} clock={clock}
|
|
32
|
+
video="primary-moving" audio="none" span-authority="video"/>
|
|
33
|
+
<whisperx:SemanticTake id="showcase-time" narrative={story}
|
|
34
|
+
segment={story.segment.empty} media={duration-media.media}/>
|
|
35
|
+
<speech:Track id="speech"><speech:Take source={showcase-time.take}/></speech:Track>
|
|
36
|
+
|
|
37
|
+
<media-track:Track id="showcase" semantic={speech.semantic} canvas={vertical}>
|
|
38
|
+
<media-track:Item id="rounded-card" image={picture-a} extent={picture-size} during="program"
|
|
39
|
+
frame={card-a} appearance={recipes.media.card} motion={recipes.motion.card}/>
|
|
40
|
+
<media-track:Item id="flush-card" image={picture-b} extent={picture-size} during="program"
|
|
41
|
+
frame={card-b} appearance={recipes.media.wide} motion={recipes.motion.card}/>
|
|
42
|
+
</media-track:Track>
|
|
43
|
+
<film:Film id="main" canvas={vertical} semantic={speech.semantic} appearance={recipes.film.vertical}>
|
|
44
|
+
<film:Track source={showcase.visual}/>
|
|
45
|
+
</film:Film>
|
|
46
|
+
<render:Video id="final" composition={main.composition} semantic={speech.semantic}/>
|
|
47
|
+
</svml>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?svml using="@hypit/svs@1"?>
|
|
2
|
+
|
|
3
|
+
<sheet version="1">
|
|
4
|
+
media.performance { stack-order: 0; fit: cover; }
|
|
5
|
+
film.vertical { background: #09090B; }
|
|
6
|
+
|
|
7
|
+
/* Rounded and padded, so the painted content box is visibly inset from the
|
|
8
|
+
Placement Frame Studio draws as a guide. */
|
|
9
|
+
media.card {
|
|
10
|
+
stack-order: 40; fit: cover;
|
|
11
|
+
frame-paint: #16161d; clip: rounded; radius: 24; padding: 12 12;
|
|
12
|
+
}
|
|
13
|
+
/* Square and flush, for contrast with media.card. */
|
|
14
|
+
media.wide {
|
|
15
|
+
stack-order: 41; fit: cover;
|
|
16
|
+
frame-paint: #1d1620; clip: frame;
|
|
17
|
+
border-width: 2; border-color: #ee7b6255;
|
|
18
|
+
}
|
|
19
|
+
motion.card {
|
|
20
|
+
enter: slide; enter-frames: 5; enter-direction: up; enter-easing: ease-out;
|
|
21
|
+
exit: fade; exit-frames: 5; exit-easing: ease-in;
|
|
22
|
+
}
|
|
23
|
+
</sheet>
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createMarkupSurfaceHostFacet } from "@hypit/markup";
|
|
2
|
+
import {
|
|
3
|
+
decodeMediaTrackSurface,
|
|
4
|
+
mediaTrackComponent,
|
|
5
|
+
mediaTrackManifest,
|
|
6
|
+
mediaTrackModuleRef,
|
|
7
|
+
mediaTrackMarkupSurfaces,
|
|
8
|
+
} from "./index.js";
|
|
9
|
+
|
|
10
|
+
export const hypitPackage = {
|
|
11
|
+
format: "hypit.node-package@1" as const,
|
|
12
|
+
modules: [{ manifest: mediaTrackManifest }],
|
|
13
|
+
components: [mediaTrackComponent],
|
|
14
|
+
hostFacets: [createMarkupSurfaceHostFacet({
|
|
15
|
+
module: mediaTrackModuleRef,
|
|
16
|
+
declaration: mediaTrackMarkupSurfaces.find((item) => item.name === "track")!,
|
|
17
|
+
handler: decodeMediaTrackSurface,
|
|
18
|
+
})],
|
|
19
|
+
};
|
|
20
|
+
export default hypitPackage;
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import type { SvsRecipe } from "@hypit/svs";
|
|
2
|
+
import { decodeContentFitProperties } from "@hypit/spatial";
|
|
3
|
+
import type { ContentFit } from "@hypit/spatial";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
sealMediaPaintLayerSpec,
|
|
7
|
+
sealMediaSampleLayerSpec,
|
|
8
|
+
} from "./layers.js";
|
|
9
|
+
import { sealMediaItemSpec } from "./program.js";
|
|
10
|
+
import { sealMediaHandoffSpec, sealMediaSequenceSpec } from "./sequence.js";
|
|
11
|
+
import type {
|
|
12
|
+
MediaFramePresentation,
|
|
13
|
+
MediaHandoffSpec,
|
|
14
|
+
MediaItemSpec,
|
|
15
|
+
MediaLifecycleMotion,
|
|
16
|
+
MediaPaint,
|
|
17
|
+
MediaPaintLayerSpec,
|
|
18
|
+
MediaSampleLayerSpec,
|
|
19
|
+
MediaSampleAppearance,
|
|
20
|
+
MediaSequenceSpec,
|
|
21
|
+
MediaVisualOccupancy,
|
|
22
|
+
MediaVisualTrim,
|
|
23
|
+
} from "./types.js";
|
|
24
|
+
|
|
25
|
+
function fail(recipe: SvsRecipe, message: string): never {
|
|
26
|
+
throw new Error(`Media Recipe ${recipe.path} ${message}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function optionalNumber(recipe: SvsRecipe, name: string): number | undefined {
|
|
30
|
+
const value = recipe.properties[name];
|
|
31
|
+
if (value === undefined) return undefined;
|
|
32
|
+
if (typeof value !== "number" || !Number.isFinite(value)) fail(recipe, `${name} must be a finite number.`);
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function number(recipe: SvsRecipe, name: string, fallback?: number): number {
|
|
37
|
+
const value = optionalNumber(recipe, name);
|
|
38
|
+
if (value === undefined && fallback !== undefined) return fallback;
|
|
39
|
+
if (value === undefined) fail(recipe, `requires ${name}.`);
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function optionalString(recipe: SvsRecipe, name: string): string | undefined {
|
|
44
|
+
const value = recipe.properties[name];
|
|
45
|
+
if (value === undefined) return undefined;
|
|
46
|
+
if (typeof value !== "string" || value.trim().length === 0) fail(recipe, `${name} must be text.`);
|
|
47
|
+
return value.trim();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function string(recipe: SvsRecipe, name: string, fallback?: string): string {
|
|
51
|
+
const value = optionalString(recipe, name);
|
|
52
|
+
if (value === undefined && fallback !== undefined) return fallback;
|
|
53
|
+
if (value === undefined) fail(recipe, `requires ${name}.`);
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function oneOf<T extends string>(recipe: SvsRecipe, name: string, values: readonly T[], fallback?: T): T {
|
|
58
|
+
const value = optionalString(recipe, name);
|
|
59
|
+
if (value === undefined && fallback !== undefined) return fallback;
|
|
60
|
+
if (value === undefined || !values.includes(value as T)) fail(recipe, `${name} must be ${values.join(" | ")}.`);
|
|
61
|
+
return value as T;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function assertKeys(recipe: SvsRecipe, allowed: readonly string[]): void {
|
|
65
|
+
const unknown = Object.keys(recipe.properties).filter((name) => !allowed.includes(name));
|
|
66
|
+
if (unknown.length > 0) fail(recipe, `does not accept ${unknown.join(", ")}.`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function scalarList(recipe: SvsRecipe, name: string, allowed: readonly number[]): number[] {
|
|
70
|
+
const source = optionalString(recipe, name);
|
|
71
|
+
if (source === undefined) return [];
|
|
72
|
+
const values = source.split(/\s+/u).map(Number);
|
|
73
|
+
if (!allowed.includes(values.length) || values.some((value) => !Number.isFinite(value))) {
|
|
74
|
+
fail(recipe, `${name} requires ${allowed.join(" or ")} finite numbers.`);
|
|
75
|
+
}
|
|
76
|
+
return values;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function padding(recipe: SvsRecipe): MediaFramePresentation["padding"] {
|
|
80
|
+
const values = scalarList(recipe, "padding", [1, 2, 4]);
|
|
81
|
+
if (values.length === 0) return { topPx: 0, rightPx: 0, bottomPx: 0, leftPx: 0 };
|
|
82
|
+
if (values.length === 1) return { topPx: values[0]!, rightPx: values[0]!, bottomPx: values[0]!, leftPx: values[0]! };
|
|
83
|
+
if (values.length === 2) return { topPx: values[0]!, rightPx: values[1]!, bottomPx: values[0]!, leftPx: values[1]! };
|
|
84
|
+
return { topPx: values[0]!, rightPx: values[1]!, bottomPx: values[2]!, leftPx: values[3]! };
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function gradientStops(recipe: SvsRecipe, source: string): readonly { readonly offset: number; readonly color: string }[] {
|
|
88
|
+
const stops = source.split(",").map((entry) => {
|
|
89
|
+
const match = /^(.+?)@((?:0(?:\.\d+)?)|(?:1(?:\.0+)?))$/u.exec(entry.trim());
|
|
90
|
+
if (match === null) fail(recipe, "gradient stops must be color@offset inside [0,1].");
|
|
91
|
+
return { color: match[1]!.trim(), offset: Number(match[2]) };
|
|
92
|
+
});
|
|
93
|
+
if (stops.length < 2) fail(recipe, "gradient requires at least two stops.");
|
|
94
|
+
return stops;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function paint(recipe: SvsRecipe, property = "paint"): MediaPaint {
|
|
98
|
+
const source = string(recipe, property);
|
|
99
|
+
const linear = /^linear\(([-+]?\d+(?:\.\d+)?);(.+)\)$/u.exec(source);
|
|
100
|
+
if (linear !== null) {
|
|
101
|
+
return { kind: "linear-gradient", angleDeg: Number(linear[1]), stops: gradientStops(recipe, linear[2]!) };
|
|
102
|
+
}
|
|
103
|
+
const radial = /^radial\(((?:0(?:\.\d+)?)|(?:1(?:\.0+)?)),((?:0(?:\.\d+)?)|(?:1(?:\.0+)?));(.+)\)$/u.exec(source);
|
|
104
|
+
if (radial !== null) {
|
|
105
|
+
return { kind: "radial-gradient", center: { x: Number(radial[1]), y: Number(radial[2]) }, stops: gradientStops(recipe, radial[3]!) };
|
|
106
|
+
}
|
|
107
|
+
return { kind: "solid", color: source };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function shadows(recipe: SvsRecipe): MediaFramePresentation["shadows"] {
|
|
111
|
+
const source = optionalString(recipe, "shadows");
|
|
112
|
+
if (source === undefined || source === "none") return [];
|
|
113
|
+
return source.split(";").map((entry) => {
|
|
114
|
+
const match = /^([-+]?\d+(?:\.\d+)?)\s+([-+]?\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)\s+([-+]?\d+(?:\.\d+)?)\s+(.+)$/u.exec(entry.trim());
|
|
115
|
+
if (match === null) fail(recipe, "shadows entries require x y blur spread color.");
|
|
116
|
+
return {
|
|
117
|
+
offsetX: Number(match[1]), offsetY: Number(match[2]), blurPx: Number(match[3]),
|
|
118
|
+
spreadPx: Number(match[4]), color: match[5]!.trim(),
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const FIT_KEYS = ["fit", "frame-x", "frame-y", "content-x", "content-y", "fit-offset-x", "fit-offset-y", "fit-constraint"] as const;
|
|
124
|
+
const SAMPLE_KEYS = ["opacity", "blur", "brightness", "contrast", "saturation", "playback", "trim-start", "trim-end"] as const;
|
|
125
|
+
const FRAME_KEYS = ["stack-order", "clip", "radius", "padding", "border-width", "border-style", "border-color", "shadows", "frame-paint"] as const;
|
|
126
|
+
const MOTION_KEYS = ["enter", "enter-frames", "enter-easing", "enter-direction", "enter-amount", "enter-origin", "sustain", "exit", "exit-frames", "exit-easing", "exit-direction", "exit-amount", "exit-origin"] as const;
|
|
127
|
+
|
|
128
|
+
export function decodeMediaFit(recipe: SvsRecipe): ContentFit {
|
|
129
|
+
return decodeContentFitProperties(recipe.properties, `Media Recipe ${recipe.path}`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function occupancy(recipe: SvsRecipe): MediaVisualOccupancy {
|
|
133
|
+
switch (oneOf(recipe, "playback", ["once-start", "once-end", "hold-start", "hold-end", "loop-start", "loop-end", "stretch"] as const, "once-start")) {
|
|
134
|
+
case "once-start": return { mode: "once", align: "start" };
|
|
135
|
+
case "once-end": return { mode: "once", align: "end" };
|
|
136
|
+
case "hold-start": return { mode: "hold", align: "start" };
|
|
137
|
+
case "hold-end": return { mode: "hold", align: "end" };
|
|
138
|
+
case "loop-start": return { mode: "loop", align: "start" };
|
|
139
|
+
case "loop-end": return { mode: "loop", align: "end" };
|
|
140
|
+
case "stretch": return { mode: "stretch" };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function trim(recipe: SvsRecipe): MediaVisualTrim | undefined {
|
|
145
|
+
const startFrame = optionalNumber(recipe, "trim-start");
|
|
146
|
+
const endFrameExclusive = optionalNumber(recipe, "trim-end");
|
|
147
|
+
if (startFrame === undefined && endFrameExclusive === undefined) return undefined;
|
|
148
|
+
if (
|
|
149
|
+
startFrame === undefined
|
|
150
|
+
|| endFrameExclusive === undefined
|
|
151
|
+
|| !Number.isSafeInteger(startFrame)
|
|
152
|
+
|| !Number.isSafeInteger(endFrameExclusive)
|
|
153
|
+
) {
|
|
154
|
+
fail(recipe, "trim-start and trim-end must both be integer frames.");
|
|
155
|
+
}
|
|
156
|
+
return { startFrame, endFrameExclusive };
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function decodeMediaSampleSpec(
|
|
160
|
+
recipe: SvsRecipe,
|
|
161
|
+
id: string,
|
|
162
|
+
sourceKind: "still" | "timed" | "surface",
|
|
163
|
+
samplingMotion?: MediaSampleLayerSpec["samplingMotion"],
|
|
164
|
+
combinedItemAppearance = false,
|
|
165
|
+
): MediaSampleLayerSpec {
|
|
166
|
+
assertKeys(recipe, [...FIT_KEYS, ...SAMPLE_KEYS, ...(combinedItemAppearance ? FRAME_KEYS : [])]);
|
|
167
|
+
const hasTimedProperties = recipe.properties.playback !== undefined
|
|
168
|
+
|| recipe.properties["trim-start"] !== undefined
|
|
169
|
+
|| recipe.properties["trim-end"] !== undefined;
|
|
170
|
+
if (sourceKind === "still" && hasTimedProperties) {
|
|
171
|
+
fail(recipe, "cannot apply playback or trim to durationless still material.");
|
|
172
|
+
}
|
|
173
|
+
const timed = sourceKind === "timed" || (sourceKind === "surface" && hasTimedProperties);
|
|
174
|
+
const sourceTrim = timed ? trim(recipe) : undefined;
|
|
175
|
+
return sealMediaSampleLayerSpec({
|
|
176
|
+
|
|
177
|
+
id,
|
|
178
|
+
...(timed ? { occupancy: occupancy(recipe), ...(sourceTrim === undefined ? {} : { trim: sourceTrim }) } : {}),
|
|
179
|
+
appearance: decodeMediaSampleAppearance(recipe),
|
|
180
|
+
...(samplingMotion === undefined ? {} : { samplingMotion }),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** Decode visual-only sample styling without choosing playback or source trim. */
|
|
185
|
+
export function decodeMediaSampleAppearance(recipe: SvsRecipe): MediaSampleAppearance {
|
|
186
|
+
return {
|
|
187
|
+
opacity: number(recipe, "opacity", 1),
|
|
188
|
+
filter: {
|
|
189
|
+
blurPx: number(recipe, "blur", 0), brightness: number(recipe, "brightness", 1),
|
|
190
|
+
contrast: number(recipe, "contrast", 1), saturation: number(recipe, "saturation", 1),
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function edge(recipe: SvsRecipe, prefix: "enter" | "exit"): MediaLifecycleMotion["enter"] {
|
|
196
|
+
const operator = optionalString(recipe, prefix);
|
|
197
|
+
if (operator === undefined || operator === "none") return undefined;
|
|
198
|
+
const allowed = ["fade", "slide", "scale", "pop", "bounce", "blur-reveal", "wipe", "flip", "spin"] as const;
|
|
199
|
+
if (!allowed.includes(operator as typeof allowed[number])) fail(recipe, `${prefix} operator is invalid.`);
|
|
200
|
+
const direction = optionalString(recipe, `${prefix}-direction`);
|
|
201
|
+
const origin = optionalString(recipe, `${prefix}-origin`);
|
|
202
|
+
return {
|
|
203
|
+
operator: operator as typeof allowed[number],
|
|
204
|
+
durationFrames: number(recipe, `${prefix}-frames`),
|
|
205
|
+
easing: oneOf(recipe, `${prefix}-easing`, ["linear", "ease-in", "ease-out", "ease-in-out"] as const, "ease-in-out"),
|
|
206
|
+
...(direction === undefined ? {} : { direction: oneOf(recipe, `${prefix}-direction`, ["left", "right", "up", "down"] as const) }),
|
|
207
|
+
...(origin === undefined ? {} : { origin: oneOf(recipe, `${prefix}-origin`, ["outside-canvas"] as const) }),
|
|
208
|
+
...(optionalNumber(recipe, `${prefix}-amount`) === undefined ? {} : { amount: number(recipe, `${prefix}-amount`) }),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function sustain(recipe: SvsRecipe): MediaLifecycleMotion["sustain"] {
|
|
213
|
+
const source = optionalString(recipe, "sustain");
|
|
214
|
+
if (source === undefined || source === "none") return [];
|
|
215
|
+
return source.split(",").map((entry) => {
|
|
216
|
+
const match = /^(float|breathe|pulse|wobble|shake|drift)\s+([-+]?\d+(?:\.\d+)?)\s+([1-9]\d*)(?:\s+(left|right|up|down))?$/u.exec(entry.trim());
|
|
217
|
+
if (match === null) fail(recipe, "sustain entries require operator amount cycles [direction].");
|
|
218
|
+
return {
|
|
219
|
+
operator: match[1] as MediaLifecycleMotion["sustain"][number]["operator"],
|
|
220
|
+
amount: Number(match[2]), cycles: Number(match[3]),
|
|
221
|
+
...(match[4] === undefined ? {} : { direction: match[4] as "left" | "right" | "up" | "down" }),
|
|
222
|
+
};
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export function decodeMediaMotion(recipe: SvsRecipe | undefined): MediaLifecycleMotion {
|
|
227
|
+
if (recipe === undefined) return { sustain: [] };
|
|
228
|
+
assertKeys(recipe, MOTION_KEYS);
|
|
229
|
+
const enter = edge(recipe, "enter");
|
|
230
|
+
const exit = edge(recipe, "exit");
|
|
231
|
+
return {
|
|
232
|
+
...(enter === undefined ? {} : { enter }),
|
|
233
|
+
sustain: sustain(recipe),
|
|
234
|
+
...(exit === undefined ? {} : { exit }),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export function decodeMediaPresentation(recipe: SvsRecipe): MediaFramePresentation {
|
|
239
|
+
const clip = oneOf(recipe, "clip", ["none", "frame", "rounded"] as const, "frame");
|
|
240
|
+
const borderWidth = number(recipe, "border-width", 0);
|
|
241
|
+
return {
|
|
242
|
+
clip: clip === "rounded" ? { kind: "rounded", radiusPx: number(recipe, "radius", 0) } : { kind: clip },
|
|
243
|
+
padding: padding(recipe),
|
|
244
|
+
...(borderWidth === 0 ? {} : { border: {
|
|
245
|
+
widthPx: borderWidth,
|
|
246
|
+
style: oneOf(recipe, "border-style", ["solid", "dashed", "dotted"] as const, "solid"),
|
|
247
|
+
color: string(recipe, "border-color"),
|
|
248
|
+
} }),
|
|
249
|
+
shadows: shadows(recipe),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export function decodeMediaItemSpec(
|
|
254
|
+
recipe: SvsRecipe,
|
|
255
|
+
input: Pick<MediaItemSpec, "id"> & {
|
|
256
|
+
readonly motion: MediaLifecycleMotion;
|
|
257
|
+
readonly sourceAudio?: MediaItemSpec["sourceAudio"];
|
|
258
|
+
},
|
|
259
|
+
): MediaItemSpec {
|
|
260
|
+
assertKeys(recipe, [...FIT_KEYS, ...SAMPLE_KEYS, ...FRAME_KEYS]);
|
|
261
|
+
return sealMediaItemSpec({
|
|
262
|
+
|
|
263
|
+
id: input.id,
|
|
264
|
+
presentation: decodeMediaPresentation(recipe),
|
|
265
|
+
motion: input.motion,
|
|
266
|
+
stackingOrder: number(recipe, "stack-order"),
|
|
267
|
+
...(input.sourceAudio === undefined ? {} : { sourceAudio: input.sourceAudio }),
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export function decodeMediaFramePaint(recipe: SvsRecipe, id: string): MediaPaintLayerSpec | undefined {
|
|
272
|
+
const source = optionalString(recipe, "frame-paint");
|
|
273
|
+
if (source === undefined || source === "transparent") return undefined;
|
|
274
|
+
const adapted: SvsRecipe = { ...recipe, properties: { paint: source } };
|
|
275
|
+
return sealMediaPaintLayerSpec({ id, paint: paint(adapted), opacity: 1 });
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
export function decodeMediaPaintSpec(recipe: SvsRecipe, id: string): MediaPaintLayerSpec {
|
|
279
|
+
assertKeys(recipe, ["paint", "opacity"]);
|
|
280
|
+
return sealMediaPaintLayerSpec({
|
|
281
|
+
id, paint: paint(recipe), opacity: number(recipe, "opacity", 1),
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export function decodeMediaHandoffSpec(
|
|
286
|
+
recipe: SvsRecipe,
|
|
287
|
+
id: string,
|
|
288
|
+
fromMemberId: string,
|
|
289
|
+
toMemberId: string,
|
|
290
|
+
): MediaHandoffSpec {
|
|
291
|
+
assertKeys(recipe, ["operator", "duration-frames", "boundary-ratio", "direction", "audio"]);
|
|
292
|
+
const operator = oneOf(recipe, "operator", ["cut", "crossfade", "push", "wipe", "cover", "page-turn"] as const);
|
|
293
|
+
const direction = optionalString(recipe, "direction");
|
|
294
|
+
return sealMediaHandoffSpec({
|
|
295
|
+
id, fromMemberId, toMemberId, operator,
|
|
296
|
+
durationFrames: number(recipe, "duration-frames"),
|
|
297
|
+
boundaryRatio: number(recipe, "boundary-ratio", 0.5),
|
|
298
|
+
...(direction === undefined ? {} : { direction: oneOf(recipe, "direction", ["left", "right", "up", "down"] as const) }),
|
|
299
|
+
audio: oneOf(recipe, "audio", ["cut", "crossfade"] as const, "cut"),
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export function decodeMediaSequenceSpec(
|
|
304
|
+
recipe: SvsRecipe,
|
|
305
|
+
id: string,
|
|
306
|
+
motion: MediaLifecycleMotion,
|
|
307
|
+
handoffs: readonly MediaHandoffSpec[],
|
|
308
|
+
): MediaSequenceSpec {
|
|
309
|
+
assertKeys(recipe, [...FIT_KEYS, ...SAMPLE_KEYS, ...FRAME_KEYS]);
|
|
310
|
+
return sealMediaSequenceSpec({
|
|
311
|
+
id,
|
|
312
|
+
presentation: decodeMediaPresentation(recipe), motion,
|
|
313
|
+
stackingOrder: number(recipe, "stack-order"), handoffs,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
export const mediaAppearanceKeys = { fit: FIT_KEYS, sample: SAMPLE_KEYS, frame: FRAME_KEYS, motion: MOTION_KEYS } as const;
|