@hypit/hypit 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/public/caption.d.ts +206 -183
- package/dist/public/composition.d.ts +25 -3
- package/dist/public/endpoint-kit.d.ts +24 -2
- package/dist/public/generation.d.ts +5 -1
- package/dist/public/hyperframes.d.ts +19 -1
- package/dist/public/narrative.d.ts +17 -3
- package/dist/public/performance.d.ts +1590 -0
- package/dist/public/program-space.d.ts +179 -32
- package/dist/public/runtime-kit.d.ts +21 -8
- package/dist/public/sound.d.ts +822 -0
- package/dist/public/speech.d.ts +41 -0
- package/dist/public/studio-adapter.d.ts +77 -15
- package/dist/public/temporal-markup.d.ts +9 -44
- package/dist/public/temporal.d.ts +37 -28
- package/dist/public/{semantic-track.d.ts → timeline.d.ts} +62 -49
- package/examples/README.md +18 -10
- package/examples/minimal-author-package/packages/example-component/preview/preview.svml +19 -12
- package/examples/minimal-author-package/packages/example-component/src/component.ts +5 -5
- package/examples/minimal-author-package/packages/example-component/src/fragment.ts +3 -5
- package/examples/minimal-author-package/packages/example-component/src/manifest.ts +8 -10
- package/examples/minimal-author-package/packages/example-component/src/surface.ts +2 -2
- package/examples/provider-package/README.md +78 -0
- package/examples/provider-package/hypit.runtime.json +12 -0
- package/examples/provider-package/packages/provider-images/package.json +11 -0
- package/examples/provider-package/packages/provider-images/src/activation.ts +24 -0
- package/examples/provider-package/packages/provider-images/src/provider.ts +122 -0
- package/examples/provider-package/packages/provider-images/tsconfig.json +9 -0
- package/examples/semantic-composition/README.md +8 -1
- package/examples/semantic-composition/chat.svml +6 -5
- package/examples/semantic-composition/hypit.runtime.json +1 -1
- package/examples/semantic-composition/packages/chat-scene/README.md +3 -3
- package/examples/semantic-composition/packages/chat-scene/src/activation.ts +18 -21
- package/examples/semantic-composition/packages/chat-scene/src/render.ts +4 -4
- package/examples/semantic-composition/packages/performance-styles/README.md +42 -0
- package/examples/semantic-composition/packages/performance-styles/package.json +25 -0
- package/examples/semantic-composition/packages/performance-styles/src/activation.ts +57 -0
- package/examples/semantic-composition/packages/performance-styles/src/render.ts +54 -0
- package/examples/semantic-composition/packages/performance-styles/src/studio.ts +28 -0
- package/examples/semantic-composition/packages/performance-styles/tsconfig.json +18 -0
- package/examples/semantic-composition/packages/responsive-explainer/README.md +16 -9
- package/examples/semantic-composition/packages/responsive-explainer/src/activation.ts +12 -12
- package/examples/semantic-composition/packages/responsive-explainer/src/render.ts +5 -5
- package/examples/semantic-composition/packages/sound-styles/README.md +36 -0
- package/examples/semantic-composition/packages/sound-styles/package.json +25 -0
- package/examples/semantic-composition/packages/sound-styles/src/activation.ts +53 -0
- package/examples/semantic-composition/packages/sound-styles/src/render.ts +14 -0
- package/examples/semantic-composition/packages/sound-styles/tsconfig.json +18 -0
- package/package.json +35 -15
- package/packages/audio-track/README.md +20 -13
- package/packages/audio-track/package.json +1 -1
- package/packages/audio-track/src/component.ts +4 -4
- package/packages/audio-track/src/fragment.ts +6 -5
- package/packages/audio-track/src/index.ts +1 -1
- package/packages/audio-track/src/manifest.ts +17 -16
- package/packages/audio-track/src/program.ts +21 -25
- package/packages/audio-track/src/surface.ts +19 -18
- package/packages/audio-track-studio/README.md +23 -0
- package/packages/audio-track-studio/src/index.ts +28 -17
- package/packages/author-kit/README.md +1 -1
- package/packages/background-removal/README.md +4 -7
- package/packages/browser-capture/package.json +1 -1
- package/packages/build-result/README.md +11 -0
- package/packages/build-result/src/decode.ts +2 -0
- package/packages/build-result/src/execution-log.ts +17 -0
- package/packages/build-result/src/index.ts +1 -0
- package/packages/build-result/src/store.ts +14 -1
- package/packages/build-result/src/types.ts +3 -0
- package/packages/build-result-s3/src/repository.ts +4 -0
- package/packages/caption/README.md +61 -73
- package/packages/caption/package.json +3 -2
- package/packages/caption/src/activation.ts +2 -2
- package/packages/caption/src/component.ts +20 -5
- package/packages/caption/src/display.ts +3 -18
- package/packages/caption/src/fragment.ts +3 -7
- package/packages/caption/src/index.ts +6 -5
- package/packages/caption/src/manifest.ts +29 -46
- package/packages/caption/src/style.ts +24 -135
- package/packages/caption/src/surface.ts +12 -92
- package/packages/caption/src/temporalize.ts +18 -53
- package/packages/caption/src/types.ts +8 -35
- package/packages/caption/src/visibility.ts +23 -0
- package/packages/caption-fine/README.md +21 -9
- package/packages/caption-fine/package.json +4 -2
- package/packages/caption-fine/src/component.ts +3 -3
- package/packages/caption-fine/src/fragment.ts +7 -19
- package/packages/caption-fine/src/index.ts +2 -0
- package/packages/caption-fine/src/manifest.ts +26 -17
- package/packages/caption-fine/src/recipe.ts +7 -0
- package/packages/caption-fine/src/render.ts +14 -13
- package/packages/caption-fine/src/schedule.ts +39 -35
- package/packages/caption-fine/src/style.ts +10 -9
- package/packages/caption-fine/src/surface.ts +62 -35
- package/packages/caption-fine/src/types.ts +2 -0
- package/packages/caption-fine-studio/README.md +24 -2
- package/packages/caption-fine-studio/package.json +3 -1
- package/packages/caption-fine-studio/src/activation.ts +3 -3
- package/packages/caption-fine-studio/src/index.ts +54 -42
- package/packages/cli/README.md +57 -4
- package/packages/cli/package.json +1 -0
- package/packages/cli/src/arguments.ts +25 -6
- package/packages/cli/src/build-planning.ts +3 -2
- package/packages/cli/src/command.ts +6 -0
- package/packages/cli/src/commands/environment.ts +28 -18
- package/packages/cli/src/commands/execution.ts +81 -26
- package/packages/cli/src/commands/results.ts +7 -11
- package/packages/cli/src/index.ts +2 -2
- package/packages/cli/src/machine-view.ts +3 -2
- package/packages/cli/src/main.ts +34 -42
- package/packages/cli/src/observation.ts +7 -1
- package/packages/cli/src/output.ts +65 -23
- package/packages/cli/src/view.ts +66 -19
- package/packages/comment-sticker/README.md +3 -3
- package/packages/comment-sticker/package.json +1 -1
- package/packages/comment-sticker/src/component.ts +4 -4
- package/packages/comment-sticker/src/fragment.ts +5 -4
- package/packages/comment-sticker/src/manifest.ts +7 -6
- package/packages/comment-sticker/src/program.ts +9 -9
- package/packages/comment-sticker/src/surface.ts +6 -7
- package/packages/composition/README.md +21 -0
- package/packages/composition/src/audio-presentation.ts +44 -0
- package/packages/composition/src/index.ts +3 -0
- package/packages/composition/src/schema.ts +8 -3
- package/packages/composition/src/track.ts +15 -1
- package/packages/credential-store-env/README.md +1 -1
- package/packages/deck-track/README.md +3 -3
- package/packages/deck-track/package.json +1 -1
- package/packages/deck-track/src/component.ts +5 -5
- package/packages/deck-track/src/fragment.ts +6 -5
- package/packages/deck-track/src/lower.ts +12 -12
- package/packages/deck-track/src/manifest.ts +8 -7
- package/packages/deck-track/src/program.ts +13 -16
- package/packages/deck-track/src/surface.ts +9 -10
- package/packages/driver-node/src/driver.ts +41 -3
- package/packages/elevenlabs-speech/README.md +27 -0
- package/packages/{provider-xiaomi-mimo → elevenlabs-speech}/package.json +5 -8
- package/packages/elevenlabs-speech/src/activation.ts +26 -0
- package/packages/elevenlabs-speech/src/fragment.ts +11 -0
- package/packages/elevenlabs-speech/src/index.ts +111 -0
- package/packages/elevenlabs-speech/src/surface.ts +167 -0
- package/packages/endpoint-kit/README.md +24 -0
- package/packages/endpoint-kit/src/index.ts +7 -1
- package/packages/film/README.md +12 -7
- package/packages/film/package.json +1 -1
- package/packages/film/src/component.ts +4 -4
- package/packages/film/src/fragment.ts +6 -5
- package/packages/film/src/manifest.ts +11 -10
- package/packages/film/src/program.ts +5 -5
- package/packages/film/src/recipe.ts +2 -1
- package/packages/film/src/surface.ts +10 -7
- package/packages/film-studio/package.json +1 -1
- package/packages/film-studio/src/index.ts +2 -2
- package/packages/fishaudio-speech/README.md +33 -0
- package/packages/fishaudio-speech/package.json +21 -0
- package/packages/fishaudio-speech/src/activation.ts +32 -0
- package/packages/fishaudio-speech/src/fragment.ts +11 -0
- package/packages/fishaudio-speech/src/index.ts +156 -0
- package/packages/fishaudio-speech/src/surface.ts +192 -0
- package/packages/generation/README.md +11 -1
- package/packages/generation/src/mapping.ts +28 -30
- package/packages/gpt-image/README.md +1 -2
- package/packages/grok-imagine/README.md +1 -2
- package/packages/hyperframes/README.md +7 -3
- package/packages/hyperframes/src/browser-program.ts +11 -2
- package/packages/hyperframes/src/document.ts +15 -2
- package/packages/interview-emoji-reveal/README.md +4 -4
- package/packages/interview-emoji-reveal/package.json +1 -1
- package/packages/interview-emoji-reveal/src/component.ts +4 -4
- package/packages/interview-emoji-reveal/src/fragment.ts +6 -5
- package/packages/interview-emoji-reveal/src/manifest.ts +9 -8
- package/packages/interview-emoji-reveal/src/program.ts +14 -14
- package/packages/interview-emoji-reveal/src/surface.ts +8 -9
- package/packages/media-execution/README.md +7 -3
- package/packages/media-execution/src/audio-presentation.ts +23 -0
- package/packages/media-execution/src/execute.ts +2 -0
- package/packages/media-pipeline/README.md +7 -3
- package/packages/media-pipeline/src/audio-plan.ts +4 -1
- package/packages/media-pipeline/src/component.ts +16 -2
- package/packages/media-pipeline/src/manifest.ts +3 -1
- package/packages/media-pipeline/src/types.ts +2 -1
- package/packages/media-track/README.md +14 -47
- package/packages/media-track/package.json +1 -1
- package/packages/media-track/preview/preview.svml +5 -5
- package/packages/media-track/src/author.ts +12 -6
- package/packages/media-track/src/component.ts +10 -16
- package/packages/media-track/src/fragment.ts +8 -7
- package/packages/media-track/src/index.ts +3 -1
- package/packages/media-track/src/lower.ts +7 -7
- package/packages/media-track/src/manifest.ts +16 -38
- package/packages/media-track/src/program.ts +62 -67
- package/packages/media-track/src/sampling.ts +6 -6
- package/packages/media-track/src/sequence.ts +8 -8
- package/packages/media-track/src/surface.ts +25 -43
- package/packages/media-track-studio/README.md +9 -0
- package/packages/media-track-studio/src/index.ts +16 -11
- package/packages/mimo-speech/README.md +1 -1
- package/packages/minimax-h3/README.md +1 -1
- package/packages/nano-banana/README.md +1 -1
- package/packages/narrative/README.md +23 -1
- package/packages/narrative/src/identity.ts +11 -0
- package/packages/narrative/src/index.ts +3 -0
- package/packages/narrative/src/schema.ts +28 -27
- package/packages/narrative/src/selection.ts +52 -0
- package/packages/narrative/src/types.ts +2 -0
- package/packages/package-loader-node/README.md +30 -0
- package/packages/package-loader-node/package.json +5 -2
- package/packages/package-loader-node/src/distribution-resolution.ts +10 -3
- package/packages/package-loader-node/src/index.ts +1 -0
- package/packages/package-loader-node/src/loader.ts +12 -15
- package/packages/package-loader-node/src/location.ts +27 -1
- package/packages/package-loader-node/src/module-scope.ts +183 -0
- package/packages/package-loader-node/src/types.ts +4 -0
- package/packages/performance/README.md +83 -0
- package/packages/performance/package.json +30 -0
- package/packages/performance/src/activation.ts +11 -0
- package/packages/performance/src/component.ts +46 -0
- package/packages/performance/src/index.ts +6 -0
- package/packages/performance/src/manifest.ts +53 -0
- package/packages/{media-track/src/performance.ts → performance/src/media.ts} +9 -10
- package/packages/performance/src/program.ts +51 -0
- package/packages/performance/src/style.ts +35 -0
- package/packages/performance/src/surface.ts +99 -0
- package/packages/performance-studio/README.md +25 -0
- package/packages/performance-studio/package.json +21 -0
- package/packages/performance-studio/src/activation.ts +6 -0
- package/packages/performance-studio/src/index.ts +84 -0
- package/packages/program-space/README.md +9 -18
- package/packages/program-space/src/activation.ts +1 -5
- package/packages/program-space/src/index.ts +2 -11
- package/packages/program-space/src/surface.ts +1 -20
- package/packages/project-context-node/README.md +20 -0
- package/packages/project-context-node/package.json +10 -0
- package/packages/project-context-node/src/index.ts +3 -0
- package/packages/{cli → project-context-node}/src/runtime-selection.ts +7 -2
- package/packages/provider-hyperframes-local/README.md +43 -15
- package/packages/provider-hyperframes-local/src/activation.ts +4 -3
- package/packages/provider-hyperframes-local/src/capture-process.ts +26 -4
- package/packages/provider-hyperframes-local/src/capture.ts +96 -26
- package/packages/provider-hyperframes-local/src/concurrency.ts +86 -0
- package/packages/provider-hyperframes-local/src/opaque-capture.ts +92 -0
- package/packages/provider-hyperframes-local/src/options.ts +2 -0
- package/packages/provider-hyperframes-local/src/program.ts +6 -3
- package/packages/provider-hyperframes-local/src/progress.ts +53 -0
- package/packages/provider-hyperframes-local/src/provider.ts +18 -5
- package/packages/provider-hyperframes-local/src/render.ts +48 -7
- package/packages/provider-hypihub/README.md +48 -17
- package/packages/provider-hypihub/package.json +2 -0
- package/packages/provider-hypihub/src/mapping.ts +31 -7
- package/packages/provider-hypihub/src/oauth.ts +6 -0
- package/packages/provider-hypihub/src/provider.ts +25 -13
- package/packages/provider-hypihub/src/routes.ts +1 -2
- package/packages/provider-hypihub/src/upload.ts +2 -0
- package/packages/provider-media-local/README.md +3 -4
- package/packages/provider-whisperx-local/src/program.ts +1 -0
- package/packages/provider-whisperx-local/src/provider.ts +3 -0
- package/packages/ranking/README.md +8 -6
- package/packages/ranking/package.json +1 -1
- package/packages/ranking/src/component.ts +6 -6
- package/packages/ranking/src/fragment.ts +11 -7
- package/packages/ranking/src/manifest.ts +21 -14
- package/packages/ranking/src/render.ts +22 -26
- package/packages/ranking/src/schedule.ts +16 -19
- package/packages/ranking/src/surface.ts +12 -13
- package/packages/ranking-studio/README.md +18 -0
- package/packages/ranking-studio/src/index.ts +61 -9
- package/packages/render-hyperframes/README.md +7 -7
- package/packages/render-hyperframes/package.json +1 -1
- package/packages/render-hyperframes/src/component.ts +11 -1
- package/packages/render-hyperframes/src/fragment.ts +7 -4
- package/packages/render-hyperframes/src/manifest.ts +4 -4
- package/packages/render-hyperframes/src/surface.ts +6 -6
- package/packages/runtime/README.md +8 -1
- package/packages/runtime/src/execution.ts +15 -4
- package/packages/runtime/src/index.ts +2 -1
- package/packages/runtime/src/log.ts +51 -0
- package/packages/runtime/src/types.ts +5 -8
- package/packages/runtime-host-node/README.md +30 -0
- package/packages/runtime-host-node/package.json +1 -0
- package/packages/runtime-host-node/src/index.ts +24 -9
- package/packages/runtime-host-node/src/packages.ts +47 -50
- package/packages/runtime-kit/README.md +5 -0
- package/packages/runtime-kit/src/index.ts +3 -1
- package/packages/runtime-local/README.md +109 -4
- package/packages/runtime-local/src/config.ts +202 -56
- package/packages/runtime-local/src/control.ts +9 -1
- package/packages/runtime-local/src/executor.ts +66 -0
- package/packages/runtime-local/src/host.ts +37 -17
- package/packages/runtime-local/src/log.ts +48 -0
- package/packages/runtime-local/src/programs.ts +2 -1
- package/packages/runtime-local/src/result-writer.ts +2 -0
- package/packages/runtime-local/src/runtime.ts +8 -6
- package/packages/runtime-local/src/supervisor.ts +142 -0
- package/packages/runtime-local/src/types.ts +9 -2
- package/packages/runtime-local/src/worker-process.ts +7 -24
- package/packages/runtime-local/src/worker.ts +55 -83
- package/packages/screen-overlay/README.md +3 -3
- package/packages/screen-overlay/package.json +1 -1
- package/packages/screen-overlay/src/component.ts +3 -3
- package/packages/screen-overlay/src/fragment.ts +5 -4
- package/packages/screen-overlay/src/manifest.ts +7 -6
- package/packages/screen-overlay/src/program.ts +9 -9
- package/packages/screen-overlay/src/surface.ts +6 -7
- package/packages/script/README.md +30 -5
- package/packages/script/src/manifest.ts +4 -3
- package/packages/script/src/narrative.ts +1 -0
- package/packages/script/src/parser.ts +45 -6
- package/packages/script/src/surface.ts +4 -3
- package/packages/script/src/types.ts +1 -1
- package/packages/script-studio/package.json +9 -3
- package/packages/script-studio/src/index.ts +2 -0
- package/packages/script-studio/src/projection.ts +105 -0
- package/packages/seedance/README.md +30 -1
- package/packages/seedance/src/index.ts +18 -7
- package/packages/seedance/src/surface.ts +17 -4
- package/packages/seedance-kits/README.md +7 -1
- package/packages/seedream/README.md +1 -1
- package/packages/sound/README.md +81 -0
- package/packages/sound/package.json +25 -0
- package/packages/sound/src/activation.ts +11 -0
- package/packages/sound/src/component.ts +28 -0
- package/packages/sound/src/index.ts +5 -0
- package/packages/sound/src/manifest.ts +47 -0
- package/packages/sound/src/program.ts +84 -0
- package/packages/sound/src/style.ts +34 -0
- package/packages/sound/src/surface.ts +90 -0
- package/packages/sound-studio/README.md +22 -0
- package/packages/sound-studio/package.json +20 -0
- package/packages/sound-studio/src/activation.ts +6 -0
- package/packages/sound-studio/src/index.ts +74 -0
- package/packages/speech/README.md +2 -2
- package/packages/speech-alignment/src/local.ts +8 -0
- package/packages/speech-alignment/src/locate.ts +1 -1
- package/packages/store-sqlite/README.md +7 -0
- package/packages/store-sqlite/src/store.ts +84 -83
- package/packages/studio/INSPECTOR.md +15 -2
- package/packages/studio/LOCALIZATION.md +98 -0
- package/packages/studio/README.md +101 -14
- package/packages/studio/locales/en.json +197 -0
- package/packages/studio/locales/zh-CN.json +191 -0
- package/packages/studio/package.json +8 -7
- package/packages/studio/src/companion-assembly.ts +1 -0
- package/packages/studio/src/domain.ts +1 -1
- package/packages/studio/src/fallback-companions.ts +3 -3
- package/packages/studio/src/feedback-server.ts +51 -0
- package/packages/studio/src/feedback-store.ts +66 -0
- package/packages/studio/src/feedback.ts +60 -0
- package/packages/studio/src/localization-node.ts +46 -0
- package/packages/studio/src/localization.ts +85 -0
- package/packages/studio/src/parameter-values.ts +43 -1
- package/packages/studio/src/parameters.ts +114 -24
- package/packages/studio/src/preview/render.ts +5 -1
- package/packages/studio/src/preview/runtime-shim.ts +49 -3
- package/packages/studio/src/programme.ts +14 -30
- package/packages/studio/src/server.ts +10 -6
- package/packages/studio/src/shared.ts +4 -2
- package/packages/studio/src/snapshot.ts +21 -132
- package/packages/studio/src/studio-preflight.ts +3 -3
- package/packages/studio/src/studio-registry.ts +50 -6
- package/packages/studio/src/style.css +223 -50
- package/packages/studio/src/ui/artifact-name.ts +8 -6
- package/packages/studio/src/ui/artifact-preview.ts +5 -4
- package/packages/studio/src/ui/code.ts +17 -16
- package/packages/studio/src/ui/comments.ts +234 -0
- package/packages/studio/src/ui/dropdown.ts +68 -0
- package/packages/studio/src/ui/i18n.ts +109 -0
- package/packages/studio/src/ui/icons.ts +6 -0
- package/packages/studio/src/ui/library.ts +76 -65
- package/packages/studio/src/ui/main.ts +223 -211
- package/packages/studio/src/ui/overlay.ts +12 -8
- package/packages/studio/src/ui/scrub-preview.ts +110 -0
- package/packages/studio/src/ui/stage.ts +93 -29
- package/packages/studio/src/ui/timeline.ts +190 -118
- package/packages/studio/start.ts +41 -22
- package/packages/studio-adapter/README.md +130 -11
- package/packages/studio-adapter/src/index.ts +100 -13
- package/packages/temporal/README.md +6 -6
- package/packages/temporal/package.json +1 -1
- package/packages/temporal/src/component.ts +5 -6
- package/packages/temporal/src/index.ts +8 -6
- package/packages/temporal/src/location.ts +11 -11
- package/packages/temporal/src/projection.ts +19 -19
- package/packages/temporal/src/rational.ts +4 -4
- package/packages/temporal-markup/EDITING.md +2 -2
- package/packages/temporal-markup/README.md +27 -11
- package/packages/temporal-markup/package.json +1 -1
- package/packages/temporal-markup/src/index.ts +20 -25
- package/packages/temporal-markup/src/space.ts +10 -41
- package/packages/timeline/README.md +31 -0
- package/packages/{semantic-track → timeline}/package.json +1 -1
- package/packages/timeline/src/activation.ts +8 -0
- package/packages/timeline/src/component.ts +24 -0
- package/packages/timeline/src/identity.ts +60 -0
- package/packages/timeline/src/index.ts +6 -0
- package/packages/{semantic-track → timeline}/src/location.ts +20 -20
- package/packages/timeline/src/manifest.ts +39 -0
- package/packages/{semantic-track → timeline}/src/projection.ts +14 -14
- package/packages/timeline/src/types.ts +24 -0
- package/packages/timeline-author/README.md +68 -0
- package/packages/{speech-track → timeline-author}/package.json +6 -4
- package/packages/timeline-author/src/activation.ts +22 -0
- package/packages/{speech-track → timeline-author}/src/component.ts +15 -13
- package/packages/{speech-track → timeline-author}/src/fragment.ts +14 -23
- package/packages/timeline-author/src/index.ts +7 -0
- package/packages/timeline-author/src/manifest.ts +78 -0
- package/packages/timeline-author/src/program.ts +107 -0
- package/packages/timeline-author/src/surface.ts +46 -0
- package/packages/timeline-author/src/types.ts +6 -0
- package/packages/typography-track/README.md +4 -4
- package/packages/typography-track/package.json +1 -1
- package/packages/typography-track/src/component.ts +4 -4
- package/packages/typography-track/src/fragment.ts +4 -3
- package/packages/typography-track/src/manifest.ts +11 -9
- package/packages/typography-track/src/program.ts +15 -15
- package/packages/typography-track/src/surface.ts +17 -18
- package/packages/video-cli/README.md +4 -1
- package/packages/video-cli/package.json +2 -1
- package/packages/video-cli/src/creation.ts +14 -4
- package/packages/video-cli/src/index.ts +1 -1
- package/packages/video-cli/src/studio-distribution.ts +2 -1
- package/packages/volcengine-matting/README.md +3 -3
- package/packages/whisperx/README.md +1 -1
- package/services/whisperx/README.md +14 -0
- package/services/whisperx/pyproject.toml +2 -0
- package/services/whisperx/uv.lock +20 -20
- package/packages/provider-hyperframes-aws-lambda/README.md +0 -30
- package/packages/provider-hyperframes-aws-lambda/package.json +0 -30
- package/packages/provider-hyperframes-aws-lambda/src/activation.ts +0 -97
- package/packages/provider-hyperframes-aws-lambda/src/client.ts +0 -114
- package/packages/provider-hyperframes-aws-lambda/src/index.ts +0 -21
- package/packages/provider-hyperframes-aws-lambda/src/provider.ts +0 -522
- package/packages/provider-kie/README.md +0 -134
- package/packages/provider-kie/package.json +0 -43
- package/packages/provider-kie/src/activation.ts +0 -71
- package/packages/provider-kie/src/index.ts +0 -10
- package/packages/provider-kie/src/mapping.ts +0 -182
- package/packages/provider-kie/src/provider.ts +0 -657
- package/packages/provider-kie/src/routes.ts +0 -150
- package/packages/provider-xiaomi-mimo/README.md +0 -32
- package/packages/provider-xiaomi-mimo/src/activation.ts +0 -57
- package/packages/provider-xiaomi-mimo/src/index.ts +0 -5
- package/packages/provider-xiaomi-mimo/src/provider.ts +0 -214
- package/packages/runtime/src/environment.ts +0 -6
- package/packages/semantic-track/README.md +0 -21
- package/packages/semantic-track/src/activation.ts +0 -8
- package/packages/semantic-track/src/component.ts +0 -24
- package/packages/semantic-track/src/identity.ts +0 -58
- package/packages/semantic-track/src/index.ts +0 -6
- package/packages/semantic-track/src/manifest.ts +0 -38
- package/packages/semantic-track/src/types.ts +0 -26
- package/packages/speech-track/README.md +0 -51
- package/packages/speech-track/src/activation.ts +0 -19
- package/packages/speech-track/src/index.ts +0 -7
- package/packages/speech-track/src/manifest.ts +0 -73
- package/packages/speech-track/src/program.ts +0 -64
- package/packages/speech-track/src/surface.ts +0 -35
- package/packages/speech-track/src/types.ts +0 -6
- package/packages/speech-track-studio/README.md +0 -3
- package/packages/speech-track-studio/package.json +0 -14
- package/packages/speech-track-studio/src/activation.ts +0 -7
- package/packages/speech-track-studio/src/index.ts +0 -40
- /package/packages/{cli → project-context-node}/src/project-context.ts +0 -0
- /package/packages/{speech-track → timeline-author}/preview/Track.png +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveTemporalContext } from "@hypit/temporal-markup";
|
|
2
2
|
import { artifactTypes } from "@hypit/artifact";
|
|
3
3
|
import { mediaTypes } from "@hypit/media";
|
|
4
4
|
import type { FontStackRef } from "@hypit/media";
|
|
@@ -88,11 +88,10 @@ export const decodeCommentStickerStyleSurface: StructuredSurfaceHandler = ({ ele
|
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
export const decodeCommentStickerTrackSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
|
|
91
|
-
allowed(element, ["id", "canvas", "
|
|
91
|
+
allowed(element, ["id", "canvas", "timeline"], ["id", "canvas", "timeline"]);
|
|
92
92
|
const id = text(element, "id");
|
|
93
93
|
const canvas = reference(element.attributes.canvas, `${element.name}.canvas`, spatialTypes.canvas, resolveReference);
|
|
94
94
|
const context = resolveTemporalContext({ element, resolveReference });
|
|
95
|
-
const time = createTemporalSpace({ id: id, element, ...context });
|
|
96
95
|
const headerId = `${id}.__header`;
|
|
97
96
|
const records: SurfaceRecordDraft[] = [{
|
|
98
97
|
id: headerId,
|
|
@@ -100,9 +99,9 @@ export const decodeCommentStickerTrackSurface: StructuredSurfaceHandler = ({ ele
|
|
|
100
99
|
value: { kind: "inline", value: sealCommentStickerHeader({ id }) },
|
|
101
100
|
range: element.range,
|
|
102
101
|
}];
|
|
103
|
-
const temporalComponents: SurfaceComponentDraft[] = [
|
|
104
|
-
const temporalFragments: ReturnType<typeof createTemporalWindowProjection>["fragments"][number][] = [
|
|
105
|
-
const inputs: Record<string, typeof canvas.ref> = { canvas: canvas.ref, header: { kind: "record", id: headerId },
|
|
102
|
+
const temporalComponents: SurfaceComponentDraft[] = [];
|
|
103
|
+
const temporalFragments: ReturnType<typeof createTemporalWindowProjection>["fragments"][number][] = [];
|
|
104
|
+
const inputs: Record<string, typeof canvas.ref> = { canvas: canvas.ref, header: { kind: "record", id: headerId }, timeline: context.timeline.ref };
|
|
106
105
|
const items: Parameters<typeof createCommentStickerFragment>[0][number][] = [];
|
|
107
106
|
for (const child of element.children) {
|
|
108
107
|
if (child.kind === "text") {
|
|
@@ -113,7 +112,7 @@ export const decodeCommentStickerTrackSurface: StructuredSurfaceHandler = ({ ele
|
|
|
113
112
|
if (child.children.some((node) => node.kind === "element")) throw new Error(`${child.name} accepts plain comment text only.`);
|
|
114
113
|
allowed(child, ["id", "comment", "frame", "style", "avatar", "author", "header", "meta", ...TIMING], ["id", "frame", "style"]);
|
|
115
114
|
const itemId = text(child, "id");
|
|
116
|
-
const temporal = createTemporalWindowProjection({ id: itemId, element: child, ...context,
|
|
115
|
+
const temporal = createTemporalWindowProjection({ id: itemId, element: child, ...context, resolveReference });
|
|
117
116
|
records.push(...temporal.records); temporalComponents.push(...temporal.components); temporalFragments.push(...temporal.fragments);
|
|
118
117
|
const suffix = String(items.length + 1).padStart(4, "0");
|
|
119
118
|
const frame = reference(child.attributes.frame, `${child.name}.frame`, spatialTypes.frame, resolveReference);
|
|
@@ -51,3 +51,24 @@ A Composition carries its id, Canvas with clear color, and peer Tracks. The Trac
|
|
|
51
51
|
ProgramSpace identity; assembly and rendering receive the corresponding time domain separately.
|
|
52
52
|
`@hypit/film` is one author-facing way to assemble it;
|
|
53
53
|
`@hypit/render-hyperframes` consumes it to produce a video.
|
|
54
|
+
|
|
55
|
+
### Visibility without a new playback origin
|
|
56
|
+
|
|
57
|
+
A VisualPresent may supply `visibility`, an ordered list of non-overlapping subranges in program
|
|
58
|
+
frames, all inside its `span`. Omission means the full span; an empty list means never visible.
|
|
59
|
+
`span` continues to define local animation and media-sampling time. This permits rule overrides or
|
|
60
|
+
other partial visibility without cutting a program into restarted copies. HyperFrames applies the
|
|
61
|
+
visibility independently when seeking; custom HTML and typed media keep their original clocks.
|
|
62
|
+
|
|
63
|
+
## Audio presentation on the program clock
|
|
64
|
+
|
|
65
|
+
AudioClip optionally carries `gainEnvelope: { sample, gain }[]` and
|
|
66
|
+
`audibility: { startSample, endSampleExclusive }[]`. Both use absolute 48 kHz program samples.
|
|
67
|
+
Envelope points have strictly increasing sample positions and interpolate linearly, holding the
|
|
68
|
+
outer endpoint gains. They multiply the existing Clip gain and fades. Audible subranges are ordered,
|
|
69
|
+
disjoint and inside the original target; omission means the whole target, an empty list means silence.
|
|
70
|
+
`audioEnvelopeGainAt` evaluates the envelope; `assertAudioPresentation` checks these values.
|
|
71
|
+
|
|
72
|
+
Original target and source sampling remain intact when presentation is partially hidden. Range
|
|
73
|
+
rendering applies envelopes and masks before cropping. These fields express generic sound behavior;
|
|
74
|
+
source selection and Style/Use precedence belong to author components such as Sound.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Gain and audibility are measured on the complete 48 kHz program clock. */
|
|
2
|
+
export type AudioSampleSpan = { readonly startSample: number; readonly endSampleExclusive: number };
|
|
3
|
+
export type AudioGainPoint = { readonly sample: number; readonly gain: number };
|
|
4
|
+
export type AudioPresentation = {
|
|
5
|
+
/** Linear interpolation; hold the first/last gain outside the supplied points. */
|
|
6
|
+
readonly gainEnvelope?: readonly AudioGainPoint[];
|
|
7
|
+
/** Half-open audible regions; omission means the complete target, [] means silence. */
|
|
8
|
+
readonly audibility?: readonly AudioSampleSpan[];
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export function assertAudioPresentation(value: AudioPresentation, target: AudioSampleSpan,
|
|
12
|
+
totalSamples = Number.MAX_SAFE_INTEGER): void {
|
|
13
|
+
if (value.gainEnvelope !== undefined) {
|
|
14
|
+
if (!Array.isArray(value.gainEnvelope) || value.gainEnvelope.length === 0) throw new Error("Audio gain envelope needs points.");
|
|
15
|
+
let previous = -1;
|
|
16
|
+
for (const point of value.gainEnvelope) {
|
|
17
|
+
if (!Number.isSafeInteger(point.sample) || point.sample <= previous || point.sample > totalSamples
|
|
18
|
+
|| !Number.isFinite(point.gain) || point.gain < 0 || point.gain > 64) throw new Error("Audio gain envelope point is invalid.");
|
|
19
|
+
previous = point.sample;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (value.audibility !== undefined) {
|
|
23
|
+
if (!Array.isArray(value.audibility)) throw new Error("Audio audibility must be sample intervals.");
|
|
24
|
+
let previous = target.startSample;
|
|
25
|
+
for (const span of value.audibility) {
|
|
26
|
+
if (!Number.isSafeInteger(span.startSample) || span.startSample < previous
|
|
27
|
+
|| !Number.isSafeInteger(span.endSampleExclusive) || span.endSampleExclusive <= span.startSample
|
|
28
|
+
|| span.endSampleExclusive > target.endSampleExclusive) throw new Error("Audio audibility is outside its target or overlaps.");
|
|
29
|
+
previous = span.endSampleExclusive;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function audioEnvelopeGainAt(points: readonly AudioGainPoint[] | undefined, sample: number): number {
|
|
35
|
+
if (points === undefined) return 1;
|
|
36
|
+
const first = points[0];
|
|
37
|
+
if (first === undefined) throw new Error("Audio gain envelope needs points.");
|
|
38
|
+
if (sample <= first.sample) return first.gain;
|
|
39
|
+
for (let index = 1; index < points.length; index++) {
|
|
40
|
+
const left = points[index - 1]!, right = points[index]!;
|
|
41
|
+
if (sample <= right.sample) return left.gain + (right.gain - left.gain) * (sample - left.sample) / (right.sample - left.sample);
|
|
42
|
+
}
|
|
43
|
+
return points.at(-1)!.gain;
|
|
44
|
+
}
|
|
@@ -16,3 +16,6 @@ export {
|
|
|
16
16
|
export { assertAudioTrackIdentity, assertCompositionIdentity, assertVisualTrackIdentity, sealAudioTrack, sealComposition, sealVisualTrack } from "./track.js";
|
|
17
17
|
export { animatableLocalStyles } from "./track.js";
|
|
18
18
|
export type * from "./track.js";
|
|
19
|
+
|
|
20
|
+
export * from "./audio-presentation.js";
|
|
21
|
+
export { audioSampleSpanSchema, audioGainEnvelopeSchema } from "./schema.js";
|
|
@@ -170,13 +170,16 @@ export const visualSurfaceSchema: ValueSchema = object({ ...base, kind: { schema
|
|
|
170
170
|
export const visualProgramSchema: ValueSchema = object({ ...base, kind: { schema: { kind: "literal", value: "program" } }, program: { schema: object({ format: { schema: string }, payload: { schema: object({}, true) }, artifacts: { schema: { kind: "array", items: mediaBlobRef } } }) } });
|
|
171
171
|
export const visualElementSchema: ValueSchema = { kind: "oneOf", variants: [visualBoxSchema, visualMaskSchema, visualTextSchema, textFlowElement, pathTextElement, visualImageSchema, visualVideoSchema, visualSurfaceSchema, visualProgramSchema] };
|
|
172
172
|
const span = object({ startFrame: { schema: integer }, endFrameExclusive: { schema: integer } });
|
|
173
|
-
const present = object({ id: { schema: string }, span: { schema: span }, stacking: { schema: object({ order: { schema: signedInteger }, tieBreak: { schema: string } }) }, elements: { schema: { kind: "array", minItems: 1, items: visualElementSchema } } });
|
|
173
|
+
const present = object({ id: { schema: string }, subjectId: { schema: string, optional: true }, span: { schema: span }, visibility: { schema: { kind: "array", items: span }, optional: true }, stacking: { schema: object({ order: { schema: signedInteger }, tieBreak: { schema: string } }) }, elements: { schema: { kind: "array", minItems: 1, items: visualElementSchema } } });
|
|
174
174
|
export const visualTrackSchema: ValueSchema = object({ kind: { schema: { kind: "literal", value: "visual" } }, programSpaceId: { schema: string }, visualIr: { schema: { kind: "literal", value: VISUAL_IR_V1 } }, id: { schema: string }, presents: { schema: { kind: "array", items: present } } });
|
|
175
|
-
const
|
|
175
|
+
export const audioSampleSpanSchema = object({ startSample: { schema: integer }, endSampleExclusive: { schema: { kind: "number", integer: true, minimum: 1 } } });
|
|
176
|
+
export const audioGainEnvelopeSchema: ValueSchema = { kind: "array", minItems: 1, items: object({
|
|
177
|
+
sample: { schema: integer }, gain: { schema: { kind: "number", minimum: 0, maximum: 64 } },
|
|
178
|
+
}) };
|
|
176
179
|
const audioClip = object({
|
|
177
180
|
id: { schema: string },
|
|
178
181
|
artifact: { schema: audioBlobRef },
|
|
179
|
-
target: { schema:
|
|
182
|
+
target: { schema: audioSampleSpanSchema },
|
|
180
183
|
source: { schema: object({
|
|
181
184
|
sampleFrames: { schema: { kind: "number", integer: true, minimum: 1 } },
|
|
182
185
|
startSample: { schema: integer },
|
|
@@ -189,6 +192,8 @@ const audioClip = object({
|
|
|
189
192
|
gain: { schema: { kind: "number", minimum: 0, maximum: 64 } },
|
|
190
193
|
fadeInSamples: { schema: integer },
|
|
191
194
|
fadeOutSamples: { schema: integer },
|
|
195
|
+
gainEnvelope: { schema: audioGainEnvelopeSchema, optional: true },
|
|
196
|
+
audibility: { schema: { kind: "array", items: audioSampleSpanSchema }, optional: true },
|
|
192
197
|
});
|
|
193
198
|
export const audioTrackSchema: ValueSchema = object({ kind: { schema: { kind: "literal", value: "audio" } }, programSpaceId: { schema: string }, id: { schema: string }, clips: { schema: { kind: "array", items: audioClip } } });
|
|
194
199
|
export const compositionSchema: ValueSchema = object({ id: { schema: string }, canvas: { schema: object({ width: { schema: integer }, height: { schema: integer }, clearColor: { schema: string } }) }, tracks: { schema: { kind: "array", items: { kind: "oneOf", variants: [visualTrackSchema, audioTrackSchema] } } } });
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { assertAudioPresentation } from "./audio-presentation.js";
|
|
2
|
+
import type { AudioPresentation } from "./audio-presentation.js";
|
|
1
3
|
import { canonicalStringify, isResourceId } from "@hypit/protocol";
|
|
2
4
|
import type { BlobRef, CanonicalValue } from "@hypit/protocol";
|
|
3
5
|
|
|
@@ -361,6 +363,8 @@ export type VisualPresent = {
|
|
|
361
363
|
/** Optional domain entity implemented by this renderer Present. */
|
|
362
364
|
readonly subjectId?: string;
|
|
363
365
|
readonly span: FrameSpan;
|
|
366
|
+
/** Optional visible subranges in program frames; span remains the animation and sampling origin. */
|
|
367
|
+
readonly visibility?: readonly FrameSpan[];
|
|
364
368
|
/** Absolute paint position for this Present, not for its authoring Track. */
|
|
365
369
|
readonly stacking: {
|
|
366
370
|
readonly order: number;
|
|
@@ -380,7 +384,7 @@ export type VisualTrack = {
|
|
|
380
384
|
readonly presents: readonly VisualPresent[];
|
|
381
385
|
};
|
|
382
386
|
|
|
383
|
-
export type AudioClip = {
|
|
387
|
+
export type AudioClip = AudioPresentation & {
|
|
384
388
|
readonly id: string;
|
|
385
389
|
/** Optional domain entity implemented by this renderer Clip. */
|
|
386
390
|
readonly subjectId?: string;
|
|
@@ -935,6 +939,12 @@ function assertPresent(present: VisualPresent, programSpace: ProgramSpace | unde
|
|
|
935
939
|
assertNonEmpty(present.id, `${trackId} Present id`);
|
|
936
940
|
if (present.subjectId !== undefined) assertNonEmpty(present.subjectId, `${trackId}.${present.id} subjectId`);
|
|
937
941
|
assertFrameSpan(present.span, totalFrames, `${trackId}.${present.id}.span`);
|
|
942
|
+
let previousEnd = present.span.startFrame;
|
|
943
|
+
for (const span of present.visibility ?? []) {
|
|
944
|
+
assertFrameSpan(span, present.span.endFrameExclusive, `${trackId}.${present.id}.visibility`);
|
|
945
|
+
if (span.startFrame < previousEnd) throw new Error(`${trackId}.${present.id} visibility must be ordered within its span.`);
|
|
946
|
+
previousEnd = span.endFrameExclusive;
|
|
947
|
+
}
|
|
938
948
|
assertNonEmpty(present.stacking.tieBreak, `${trackId}.${present.id} stacking tieBreak`);
|
|
939
949
|
if (!Number.isSafeInteger(present.stacking.order)) {
|
|
940
950
|
throw new Error(`${trackId}.${present.id} has invalid stacking order.`);
|
|
@@ -1236,6 +1246,7 @@ function visualTrackContent(value: Omit<VisualTrack, "kind">): VisualTrack {
|
|
|
1236
1246
|
id: present.id,
|
|
1237
1247
|
...(present.subjectId === undefined ? {} : { subjectId: present.subjectId }),
|
|
1238
1248
|
span: { ...present.span },
|
|
1249
|
+
...(present.visibility === undefined ? {} : { visibility: present.visibility.map(span => ({ ...span })) }),
|
|
1239
1250
|
stacking: { ...present.stacking },
|
|
1240
1251
|
elements: [...present.elements].map(normalizeElement).sort((a, b) => a.order - b.order || a.id.localeCompare(b.id)),
|
|
1241
1252
|
}))
|
|
@@ -1263,6 +1274,8 @@ function audioTrackContent(value: Omit<AudioTrack, "kind">): AudioTrack {
|
|
|
1263
1274
|
gain: clip.gain,
|
|
1264
1275
|
fadeInSamples: clip.fadeInSamples,
|
|
1265
1276
|
fadeOutSamples: clip.fadeOutSamples,
|
|
1277
|
+
...(clip.gainEnvelope === undefined ? {} : { gainEnvelope: clip.gainEnvelope.map(point => ({ ...point })) }),
|
|
1278
|
+
...(clip.audibility === undefined ? {} : { audibility: clip.audibility.map(span => ({ ...span })) }),
|
|
1266
1279
|
}))
|
|
1267
1280
|
.sort((a, b) => a.target.startSample - b.target.startSample || a.id.localeCompare(b.id)),
|
|
1268
1281
|
};
|
|
@@ -1337,6 +1350,7 @@ export function assertAudioTrackIdentity(track: AudioTrack, programSpace?: Progr
|
|
|
1337
1350
|
if (!Number.isFinite(clip.gain) || clip.gain < 0 || clip.gain > 64) {
|
|
1338
1351
|
throw new Error(`${track.id}.${clip.id} gain is invalid.`);
|
|
1339
1352
|
}
|
|
1353
|
+
assertAudioPresentation(clip, clip.target, totalSamples);
|
|
1340
1354
|
const targetLength = clip.target.endSampleExclusive - clip.target.startSample;
|
|
1341
1355
|
if (!Number.isSafeInteger(clip.fadeInSamples) || clip.fadeInSamples < 0 || clip.fadeInSamples > targetLength
|
|
1342
1356
|
|| !Number.isSafeInteger(clip.fadeOutSamples) || clip.fadeOutSamples < 0
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Read-only `CredentialStore` backed by explicitly named environment variables.
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
|
-
credentialRef("env", "
|
|
6
|
+
credentialRef("env", "IMAGE_API_KEY")
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
It resolves only the requested key when an Endpoint needs it. It never enumerates or serializes the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# `@hypit/deck-track`
|
|
2
2
|
|
|
3
|
-
The Track Surface accepts `
|
|
4
|
-
|
|
3
|
+
The Track Surface accepts `timeline={program.timeline}`. The same Timeline supports authored
|
|
4
|
+
positions and, where prepared Takes supply evidence, Script Selections and Moments. Shared `at`
|
|
5
5
|
inputs accept a Moment or a time such as `2s`; `at` with `for` produces a Window where required.
|
|
6
6
|
|
|
7
7
|
The official, deliberately narrow depth-stack Deck author package.
|
|
@@ -19,7 +19,7 @@ Media layer lowerer, but Deck is not a Media mode and exports only an ordinary p
|
|
|
19
19
|
|
|
20
20
|
<deck:DepthStack
|
|
21
21
|
id="proof-stack"
|
|
22
|
-
|
|
22
|
+
timeline={speech.timeline}
|
|
23
23
|
canvas={vertical}
|
|
24
24
|
frame={layout.proof-stack}
|
|
25
25
|
until={story.selection.proof}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@hypit/narrative": "workspace:*",
|
|
21
21
|
"@hypit/program-space": "workspace:*",
|
|
22
22
|
"@hypit/protocol": "workspace:*",
|
|
23
|
-
"@hypit/
|
|
23
|
+
"@hypit/timeline": "workspace:*",
|
|
24
24
|
"@hypit/spatial": "workspace:*",
|
|
25
25
|
"@hypit/svs": "workspace:*",
|
|
26
26
|
"@hypit/temporal": "workspace:*",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import type { ComponentPackage, ProducerHandlerContext } from "@hypit/component-kit";
|
|
2
3
|
import { canonicalize } from "@hypit/protocol";
|
|
3
4
|
import type { StoredValue } from "@hypit/protocol";
|
|
4
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
5
5
|
import type { CanvasSpace, SpatialFrame } from "@hypit/spatial";
|
|
6
6
|
import type { TemporalInstant } from "@hypit/temporal";
|
|
7
7
|
import type { MediaLayerSet } from "@hypit/media-track";
|
|
@@ -32,7 +32,7 @@ function finalizeInputs(inputs: ProducerHandlerContext["inputs"]) {
|
|
|
32
32
|
header: inline<DepthStackHeader>(inputs.header?.value, "DepthStackHeader"),
|
|
33
33
|
frame: inline<SpatialFrame>(inputs.frame?.value, "SpatialFrame"),
|
|
34
34
|
spec: inline<DepthStackSpec>(inputs.spec?.value, "DepthStackSpec"),
|
|
35
|
-
|
|
35
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -53,7 +53,7 @@ export const depthStackComponent = {
|
|
|
53
53
|
producer: depthStackProducers.appendCard,
|
|
54
54
|
handler: ({ inputs }) => ({ outputs: { set: output(appendDepthStackCard(
|
|
55
55
|
inline<DepthStackCardSet>(inputs.set?.value, "DepthStackCardSet"),
|
|
56
|
-
inline<
|
|
56
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
57
57
|
inline<MediaLayerSet>(inputs.material?.value, "MediaLayerSet"),
|
|
58
58
|
inline<DepthStackCardLabel>(inputs.label?.value, "DepthStackCardLabel"),
|
|
59
59
|
inline<DepthStackCardSpec>(inputs.spec?.value, "DepthStackCardSpec"),
|
|
@@ -66,7 +66,7 @@ export const depthStackComponent = {
|
|
|
66
66
|
const value = finalizeInputs(inputs);
|
|
67
67
|
return { outputs: { program: output(finalizeDepthStack(
|
|
68
68
|
value.set, value.header, value.frame, value.spec,
|
|
69
|
-
inline<TemporalInstant>(inputs.terminal?.value, "TemporalInstant"), value.
|
|
69
|
+
inline<TemporalInstant>(inputs.terminal?.value, "TemporalInstant"), value.timeline,
|
|
70
70
|
)) }, needs: {} };
|
|
71
71
|
},
|
|
72
72
|
},
|
|
@@ -74,7 +74,7 @@ export const depthStackComponent = {
|
|
|
74
74
|
producer: depthStackProducers.render,
|
|
75
75
|
handler: ({ inputs }) => ({ outputs: { track: output(renderDepthStack(
|
|
76
76
|
inline<CanvasSpace>(inputs.canvas?.value, "CanvasSpace"),
|
|
77
|
-
inline<
|
|
77
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
78
78
|
inline<DepthStackProgram>(inputs.program?.value, "DepthStackProgram"),
|
|
79
79
|
)) }, needs: {} }),
|
|
80
80
|
},
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { timelineTypes } from "@hypit/timeline";
|
|
2
|
+
|
|
2
3
|
import { artifactTypes } from "@hypit/artifact";
|
|
3
4
|
import { compositionTypes } from "@hypit/composition";
|
|
4
5
|
import { sealGraphFragment } from "@hypit/elaborator";
|
|
@@ -42,7 +43,7 @@ export function createDepthStackFragment(
|
|
|
42
43
|
{ name: "canvas", type: spatialTypes.canvas },
|
|
43
44
|
{ name: "frame", type: spatialTypes.frame },
|
|
44
45
|
{ name: "header", type: depthStackTypes.header },
|
|
45
|
-
{ name: "
|
|
46
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
46
47
|
{ name: "spec", type: depthStackTypes.spec },
|
|
47
48
|
];
|
|
48
49
|
const operations: FragmentOperation[] = [
|
|
@@ -107,7 +108,7 @@ export function createDepthStackFragment(
|
|
|
107
108
|
producer: depthStackProducers.appendCard,
|
|
108
109
|
inputs: {
|
|
109
110
|
set: cardSet,
|
|
110
|
-
|
|
111
|
+
timeline: input("timeline"),
|
|
111
112
|
material: operation(sampleId),
|
|
112
113
|
label: input(card.labelName),
|
|
113
114
|
spec: input(card.cardSpecName),
|
|
@@ -126,7 +127,7 @@ export function createDepthStackFragment(
|
|
|
126
127
|
header: input("header"),
|
|
127
128
|
frame: input("frame"),
|
|
128
129
|
spec: input("spec"),
|
|
129
|
-
|
|
130
|
+
timeline: input("timeline"),
|
|
130
131
|
terminal: input(terminalName),
|
|
131
132
|
},
|
|
132
133
|
result: { kind: "output", name: "program" },
|
|
@@ -134,7 +135,7 @@ export function createDepthStackFragment(
|
|
|
134
135
|
operations.push({
|
|
135
136
|
id: "track",
|
|
136
137
|
producer: depthStackProducers.render,
|
|
137
|
-
inputs: { canvas: input("canvas"),
|
|
138
|
+
inputs: { canvas: input("canvas"), timeline: input("timeline"), program: operation("program") },
|
|
138
139
|
result: { kind: "output", name: "track" },
|
|
139
140
|
});
|
|
140
141
|
return sealGraphFragment({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import {
|
|
2
3
|
assertVisualTrackIdentity,
|
|
3
4
|
sealVisualTrack,
|
|
@@ -20,7 +21,6 @@ import type {
|
|
|
20
21
|
MediaSampleLayerProgram,
|
|
21
22
|
MediaVisualTrim,
|
|
22
23
|
} from "@hypit/media-track";
|
|
23
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
24
24
|
import { assertCanvasSpace } from "@hypit/spatial";
|
|
25
25
|
import type { CanvasSpace, SpatialFrame } from "@hypit/spatial";
|
|
26
26
|
|
|
@@ -170,17 +170,17 @@ function samplingFor(input: {
|
|
|
170
170
|
readonly relation: number;
|
|
171
171
|
readonly stageStart: number;
|
|
172
172
|
readonly stageDuration: number;
|
|
173
|
-
readonly
|
|
173
|
+
readonly timeline: Timeline;
|
|
174
174
|
}): VisualTimedSampling | undefined {
|
|
175
175
|
const timing = sourceTiming(input.layer);
|
|
176
176
|
if (timing === undefined) return undefined;
|
|
177
|
-
assert(timing.frameRate.numerator === input.
|
|
178
|
-
&& timing.frameRate.denominator === input.
|
|
179
|
-
`DepthStack Card ${input.card.id} timed material must be normalized to
|
|
177
|
+
assert(timing.frameRate.numerator === input.timeline.frameRate.numerator
|
|
178
|
+
&& timing.frameRate.denominator === input.timeline.frameRate.denominator,
|
|
179
|
+
`DepthStack Card ${input.card.id} timed material must be normalized to Timeline.`);
|
|
180
180
|
const trim = trimFor(input.layer, timing.frameCount);
|
|
181
181
|
if (input.relation === 0) {
|
|
182
182
|
return resolveVisualSampling({
|
|
183
|
-
|
|
183
|
+
timeline: input.timeline,
|
|
184
184
|
sourceFrameRate: timing.frameRate,
|
|
185
185
|
sourceFrameCount: timing.frameCount,
|
|
186
186
|
targetFrameCount: input.stageDuration,
|
|
@@ -282,10 +282,10 @@ function labelElement(card: DepthStackCard, parent: string, order: number): Visu
|
|
|
282
282
|
|
|
283
283
|
export function renderDepthStack(
|
|
284
284
|
canvas: CanvasSpace,
|
|
285
|
-
|
|
285
|
+
timeline: Timeline,
|
|
286
286
|
program: DepthStackProgram,
|
|
287
287
|
): VisualTrack {
|
|
288
|
-
assertDepthStackProgramIdentity(program,
|
|
288
|
+
assertDepthStackProgramIdentity(program, timeline);
|
|
289
289
|
assertCanvasSpace(canvas);
|
|
290
290
|
const presents: VisualTrack["presents"][number][] = [];
|
|
291
291
|
for (let stageIndex = 0; stageIndex < program.cards.length; stageIndex += 1) {
|
|
@@ -322,7 +322,7 @@ export function renderDepthStack(
|
|
|
322
322
|
const samplingAnimationOverrides: Record<string, VisualAnimation | null> = {};
|
|
323
323
|
for (const layer of card.material.layers) {
|
|
324
324
|
if (layer.kind !== "sample") continue;
|
|
325
|
-
const sampling = samplingFor({ program, card, layer, relation, stageStart, stageDuration,
|
|
325
|
+
const sampling = samplingFor({ program, card, layer, relation, stageStart, stageDuration, timeline });
|
|
326
326
|
if (sampling !== undefined) samplingOverrides[layer.id] = sampling;
|
|
327
327
|
if (relation !== 0 && layer.samplingMotion !== undefined) samplingAnimationOverrides[layer.id] = null;
|
|
328
328
|
}
|
|
@@ -337,7 +337,7 @@ export function renderDepthStack(
|
|
|
337
337
|
stacking: { order: 0, tieBreak: card.id },
|
|
338
338
|
sounds: [],
|
|
339
339
|
};
|
|
340
|
-
const material = [...lowerMediaItemElements(mediaItem,
|
|
340
|
+
const material = [...lowerMediaItemElements(mediaItem, timeline, {
|
|
341
341
|
placementParent: group.poseParent,
|
|
342
342
|
lifecycleAnimationOverride: null,
|
|
343
343
|
samplingOverrides,
|
|
@@ -360,11 +360,11 @@ export function renderDepthStack(
|
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
362
|
const track = sealVisualTrack({
|
|
363
|
-
programSpaceId:
|
|
363
|
+
programSpaceId: timeline.id,
|
|
364
364
|
visualIr: "hypit.visual-ir@1",
|
|
365
365
|
id: program.id,
|
|
366
366
|
presents,
|
|
367
367
|
});
|
|
368
|
-
assertVisualTrackIdentity(track,
|
|
368
|
+
assertVisualTrackIdentity(track, timeline);
|
|
369
369
|
return track;
|
|
370
370
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { timelineTypes } from "@hypit/timeline";
|
|
1
2
|
import { temporalContextAttributeVocabulary } from "@hypit/temporal-markup";
|
|
2
3
|
import { readFile } from "node:fs/promises";
|
|
3
4
|
|
|
@@ -19,9 +20,9 @@ import {
|
|
|
19
20
|
mediaTrackTypes,
|
|
20
21
|
} from "@hypit/media-track";
|
|
21
22
|
import { narrativeDependency, narrativeTypes } from "@hypit/narrative";
|
|
22
|
-
|
|
23
|
+
|
|
23
24
|
import type { ModuleManifest, ProducerRef, TypeRef, ValueSchema } from "@hypit/protocol";
|
|
24
|
-
import {
|
|
25
|
+
import { timelineDependency } from "@hypit/timeline";
|
|
25
26
|
import { spatialDependency, spatialFrameSchema, spatialTypes } from "@hypit/spatial";
|
|
26
27
|
import { svsRecipeType } from "@hypit/svs";
|
|
27
28
|
import { temporalDependency, temporalTypes } from "@hypit/temporal";
|
|
@@ -118,7 +119,7 @@ export const depthStackProgramSchema: ValueSchema = object({
|
|
|
118
119
|
const finalizeInputs = [
|
|
119
120
|
{ name: "set", type: depthStackTypes.cardSet }, { name: "header", type: depthStackTypes.header },
|
|
120
121
|
{ name: "frame", type: spatialTypes.frame }, { name: "spec", type: depthStackTypes.spec },
|
|
121
|
-
{ name: "
|
|
122
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
122
123
|
] as const;
|
|
123
124
|
|
|
124
125
|
export const depthStackMarkupSurfaces = [
|
|
@@ -386,7 +387,7 @@ export const depthStackMarkupSurfaces = [
|
|
|
386
387
|
],
|
|
387
388
|
example: `<deck:DepthStack
|
|
388
389
|
id="proof-stack"
|
|
389
|
-
|
|
390
|
+
timeline={speech.timeline}
|
|
390
391
|
canvas={vertical}
|
|
391
392
|
frame={layout.proof-stack}
|
|
392
393
|
until={story.selection.proof}
|
|
@@ -408,7 +409,7 @@ export const depthStackMarkupSurfaces = [
|
|
|
408
409
|
|
|
409
410
|
export const depthStackManifest: ModuleManifest = {
|
|
410
411
|
format: "hypit.module@1", name: depthStackModuleRef.name, version: depthStackModuleRef.version,
|
|
411
|
-
dependencies: [narrativeDependency,
|
|
412
|
+
dependencies: [narrativeDependency, timelineDependency, spatialDependency, temporalDependency, mediaDependency, mediaTrackDependency, compositionDependency, textDependency],
|
|
412
413
|
types: [
|
|
413
414
|
{ name: depthStackTypes.header.name },
|
|
414
415
|
{ name: depthStackTypes.spec.name },
|
|
@@ -422,7 +423,7 @@ export const depthStackManifest: ModuleManifest = {
|
|
|
422
423
|
{ name: depthStackProducers.bindLabelText.name, inputs: [{ name: "style", type: depthStackTypes.cardLabelStyle }, { name: "content", type: textTypes.text }], outputs: [{ name: "label", type: depthStackTypes.cardLabel }], needs: [] },
|
|
423
424
|
{ name: depthStackProducers.createCards.name, inputs: [], outputs: [{ name: "set", type: depthStackTypes.cardSet }], needs: [] },
|
|
424
425
|
{ name: depthStackProducers.appendCard.name, inputs: [
|
|
425
|
-
{ name: "set", type: depthStackTypes.cardSet }, { name: "
|
|
426
|
+
{ name: "set", type: depthStackTypes.cardSet }, { name: "timeline", type: timelineTypes.track }, { name: "material", type: mediaTrackTypes.layerSet },
|
|
426
427
|
{ name: "label", type: depthStackTypes.cardLabel }, { name: "spec", type: depthStackTypes.cardSpec },
|
|
427
428
|
{ name: "activation", type: temporalTypes.instant },
|
|
428
429
|
], outputs: [{ name: "set", type: depthStackTypes.cardSet }], needs: [] },
|
|
@@ -430,7 +431,7 @@ export const depthStackManifest: ModuleManifest = {
|
|
|
430
431
|
inputs: [...finalizeInputs, { name: "terminal", type: temporalTypes.instant }],
|
|
431
432
|
outputs: [{ name: "program", type: depthStackTypes.program }], needs: [] },
|
|
432
433
|
{ name: depthStackProducers.render.name, inputs: [
|
|
433
|
-
{ name: "canvas", type: spatialTypes.canvas }, { name: "
|
|
434
|
+
{ name: "canvas", type: spatialTypes.canvas }, { name: "timeline", type: timelineTypes.track },
|
|
434
435
|
{ name: "program", type: depthStackTypes.program },
|
|
435
436
|
], outputs: [{ name: "track", type: compositionTypes.visualTrack }], needs: [] },
|
|
436
437
|
],
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import {
|
|
2
3
|
assertFontArtifactRef,
|
|
3
4
|
} from "@hypit/media";
|
|
@@ -6,11 +7,7 @@ import {
|
|
|
6
7
|
assertMediaLayerSet,
|
|
7
8
|
assertMediaLifecycleMotion,
|
|
8
9
|
} from "@hypit/media-track";
|
|
9
|
-
import {
|
|
10
|
-
assertProgramSpaceIdentity,
|
|
11
|
-
programSpaceFrameCount,
|
|
12
|
-
} from "@hypit/program-space";
|
|
13
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
10
|
+
import { assertProgramSpaceIdentity, programSpaceFrameCount } from "@hypit/program-space";
|
|
14
11
|
import { canonicalize } from "@hypit/protocol";
|
|
15
12
|
import { verifyText } from "@hypit/text";
|
|
16
13
|
import type { Text } from "@hypit/text";
|
|
@@ -229,13 +226,13 @@ function appendDepthStackCardAtFrame(
|
|
|
229
226
|
|
|
230
227
|
export function appendDepthStackCard(
|
|
231
228
|
set: DepthStackCardSet,
|
|
232
|
-
|
|
229
|
+
timeline: Timeline,
|
|
233
230
|
material: DepthStackCardSet["cards"][number]["material"],
|
|
234
231
|
label: DepthStackCardLabel,
|
|
235
232
|
spec: DepthStackCardSpec,
|
|
236
233
|
activation: TemporalInstant,
|
|
237
234
|
): DepthStackCardSet {
|
|
238
|
-
assertTemporalInstantFor(activation, { subjectId: spec.id, space });
|
|
235
|
+
assertTemporalInstantFor(activation, { subjectId: spec.id, space: timeline });
|
|
239
236
|
return appendDepthStackCardAtFrame(set, material, label, spec, activation.frame);
|
|
240
237
|
}
|
|
241
238
|
|
|
@@ -245,13 +242,13 @@ function finalizeDepthStackAtFrame(
|
|
|
245
242
|
frame: SpatialFrame,
|
|
246
243
|
spec: DepthStackSpec,
|
|
247
244
|
terminalFrame: number,
|
|
248
|
-
|
|
245
|
+
timeline: Timeline,
|
|
249
246
|
): DepthStackProgram {
|
|
250
247
|
assertDepthStackCardSet(set);
|
|
251
248
|
assertDepthStackHeader(header);
|
|
252
249
|
assertSpatialFrame(frame);
|
|
253
250
|
assertDepthStackSpec(spec);
|
|
254
|
-
assertProgramSpaceIdentity(
|
|
251
|
+
assertProgramSpaceIdentity(timeline);
|
|
255
252
|
assert(set.cards.length > 0, "DepthStack requires at least one Card.");
|
|
256
253
|
const first = set.cards[0]!;
|
|
257
254
|
const program: DepthStackProgram = {
|
|
@@ -263,7 +260,7 @@ function finalizeDepthStackAtFrame(
|
|
|
263
260
|
spec: structuredClone(spec),
|
|
264
261
|
cards: structuredClone(set.cards),
|
|
265
262
|
};
|
|
266
|
-
assertDepthStackProgramIdentity(program,
|
|
263
|
+
assertDepthStackProgramIdentity(program, timeline);
|
|
267
264
|
return canonicalize(program) as unknown as DepthStackProgram;
|
|
268
265
|
}
|
|
269
266
|
|
|
@@ -273,10 +270,10 @@ export function finalizeDepthStack(
|
|
|
273
270
|
frame: SpatialFrame,
|
|
274
271
|
spec: DepthStackSpec,
|
|
275
272
|
terminal: TemporalInstant,
|
|
276
|
-
|
|
273
|
+
timeline: Timeline,
|
|
277
274
|
): DepthStackProgram {
|
|
278
|
-
assertTemporalInstantFor(terminal, { subjectId: header.id, space });
|
|
279
|
-
return finalizeDepthStackAtFrame(set, header, frame, spec, terminal.frame,
|
|
275
|
+
assertTemporalInstantFor(terminal, { subjectId: header.id, space: timeline });
|
|
276
|
+
return finalizeDepthStackAtFrame(set, header, frame, spec, terminal.frame, timeline);
|
|
280
277
|
}
|
|
281
278
|
|
|
282
279
|
export function assertDepthStackProgram(program: DepthStackProgram): void {
|
|
@@ -307,10 +304,10 @@ export function assertDepthStackProgram(program: DepthStackProgram): void {
|
|
|
307
304
|
}
|
|
308
305
|
}
|
|
309
306
|
|
|
310
|
-
export function assertDepthStackProgramIdentity(program: DepthStackProgram,
|
|
311
|
-
assertProgramSpaceIdentity(
|
|
307
|
+
export function assertDepthStackProgramIdentity(program: DepthStackProgram, timeline: Timeline): void {
|
|
308
|
+
assertProgramSpaceIdentity(timeline);
|
|
312
309
|
assertDepthStackProgram(program);
|
|
313
|
-
assert(program.terminalFrame <= programSpaceFrameCount(
|
|
310
|
+
assert(program.terminalFrame <= programSpaceFrameCount(timeline), "DepthStack terminal is outside Timeline.");
|
|
314
311
|
}
|
|
315
312
|
|
|
316
313
|
function modulo(value: number, size: number): number {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveTemporalContext } from "@hypit/temporal-markup";
|
|
2
2
|
import { artifactTypes } from "@hypit/artifact";
|
|
3
3
|
import { mediaTypes } from "@hypit/media";
|
|
4
4
|
import type { FontStackRef } from "@hypit/media";
|
|
@@ -181,28 +181,27 @@ export const decodeDepthStackLabelSurface: StructuredSurfaceHandler = ({ element
|
|
|
181
181
|
};
|
|
182
182
|
|
|
183
183
|
export const decodeDepthStackSurface: StructuredSurfaceHandler = ({ element, resolveReference }) => {
|
|
184
|
-
allowed(element, ["id", "
|
|
184
|
+
allowed(element, ["id", "timeline", "canvas", "frame", "appearance", "until", "until-boundary"]);
|
|
185
185
|
const id = text(element, "id");
|
|
186
186
|
const context = resolveTemporalContext({ element, resolveReference });
|
|
187
|
-
const time = createTemporalSpace({ id: id, element, ...context });
|
|
188
187
|
const canvas = reference(element.attributes.canvas, `${element.name}.canvas`, spatialTypes.canvas, resolveReference);
|
|
189
188
|
const frame = reference(element.attributes.frame, `${element.name}.frame`, spatialTypes.frame, resolveReference);
|
|
190
189
|
const appearance = recipe(element.attributes.appearance, `${element.name}.appearance`, resolveReference);
|
|
191
190
|
const terminal = createTemporalInstantProjection({
|
|
192
|
-
id: `${id}.terminal`, subjectId: id, element, ...context,
|
|
191
|
+
id: `${id}.terminal`, subjectId: id, element, ...context, resolveReference,
|
|
193
192
|
semanticAttribute: "until", boundaryAttribute: "until-boundary", boundaryFallback: "end", projectedAttribute: false,
|
|
194
193
|
});
|
|
195
194
|
const records: SurfaceRecordDraft[] = [...terminal.records];
|
|
196
|
-
const temporalComponents: SurfaceComponentDraft[] = [...
|
|
197
|
-
const temporalFragments = [...
|
|
195
|
+
const temporalComponents: SurfaceComponentDraft[] = [...terminal.components];
|
|
196
|
+
const temporalFragments = [...terminal.fragments];
|
|
198
197
|
const headerId = `${id}.header`;
|
|
199
198
|
const specId = `${id}.spec`;
|
|
200
199
|
records.push(
|
|
201
200
|
{ id: headerId, type: depthStackTypes.header, value: { kind: "inline", value: sealDepthStackHeader({ id }) }, range: element.range },
|
|
202
201
|
{ id: specId, type: depthStackTypes.spec, value: { kind: "inline", value: decodeDepthStackSpec(appearance) }, range: element.range },
|
|
203
202
|
);
|
|
204
|
-
const inputs: Record<string, typeof
|
|
205
|
-
canvas: canvas.ref, frame: frame.ref, header: { kind: "record", id: headerId },
|
|
203
|
+
const inputs: Record<string, typeof context.timeline.ref> = {
|
|
204
|
+
canvas: canvas.ref, frame: frame.ref, header: { kind: "record", id: headerId }, timeline: context.timeline.ref,
|
|
206
205
|
spec: { kind: "record", id: specId }, terminal: terminal.ref,
|
|
207
206
|
};
|
|
208
207
|
const cards: DepthStackFragmentCard[] = [];
|
|
@@ -225,7 +224,7 @@ export const decodeDepthStackSurface: StructuredSurfaceHandler = ({ element, res
|
|
|
225
224
|
: reference(child.attributes.extent, `${child.name}.extent`, spatialTypes.extent, resolveReference);
|
|
226
225
|
if (sourceKind === "still" && extent === undefined) throw new Error(`${child.name}.extent is required for a still image.`);
|
|
227
226
|
if (sourceKind !== "still" && extent !== undefined) throw new Error(`${child.name}.extent belongs only to a still image.`);
|
|
228
|
-
const activation = createTemporalInstantProjection({ id: `${id}.${cardId}`, subjectId: cardId, element: child, ...context,
|
|
227
|
+
const activation = createTemporalInstantProjection({ id: `${id}.${cardId}`, subjectId: cardId, element: child, ...context, resolveReference });
|
|
229
228
|
records.push(...activation.records); temporalComponents.push(...activation.components); temporalFragments.push(...activation.fragments);
|
|
230
229
|
const cardAppearance = child.attributes.appearance === undefined
|
|
231
230
|
? appearance : recipe(child.attributes.appearance, `${child.name}.appearance`, resolveReference);
|
|
@@ -249,7 +248,7 @@ export const decodeDepthStackSurface: StructuredSurfaceHandler = ({ element, res
|
|
|
249
248
|
inputs[sampleSpecName] = { kind: "record", id: sampleId };
|
|
250
249
|
inputs[cardSpecName] = { kind: "record", id: cardSpecId };
|
|
251
250
|
inputs[activationName] = activation.ref;
|
|
252
|
-
let labelRef: typeof
|
|
251
|
+
let labelRef: typeof context.timeline.ref;
|
|
253
252
|
if (child.attributes.label === undefined) {
|
|
254
253
|
const labelId = `${id}.card.${suffix}.label-none`;
|
|
255
254
|
records.push({ id: labelId, type: depthStackTypes.cardLabel, value: { kind: "inline", value: noDepthStackCardLabel() }, range: child.range });
|