@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,7 +1,7 @@
|
|
|
1
1
|
# `@hypit/ranking`
|
|
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
|
Ranking boards that follow the argument of a video: introduce an item, give its verdict, and retain
|
|
@@ -20,12 +20,12 @@ where the selected schedule requires succession. Ending a reveal does not remove
|
|
|
20
20
|
|
|
21
21
|
## Bind the ranking to the target Script
|
|
22
22
|
|
|
23
|
-
This excerpt assumes the Script,
|
|
23
|
+
This excerpt assumes the Script, Timeline, Canvas, Frame and Style have been declared:
|
|
24
24
|
|
|
25
25
|
```svml
|
|
26
26
|
<import as="ranking" from="@hypit/ranking@1"/>
|
|
27
27
|
|
|
28
|
-
<ranking:Column id="priorities"
|
|
28
|
+
<ranking:Column id="priorities" timeline={speech.timeline} canvas={vertical}
|
|
29
29
|
frame={layout.ranking} during={story.segment.ranking} style={ranking-style}>
|
|
30
30
|
<ranking:ColumnItem rank="1" label="Winner" during={story.selection.winner}/>
|
|
31
31
|
<ranking:ColumnItem rank="2" preset="true" label="Already placed"/>
|
|
@@ -38,7 +38,9 @@ Window. TopThree instead accepts item `at` projections and a board `terminal` pr
|
|
|
38
38
|
can supply the intended trigger.
|
|
39
39
|
|
|
40
40
|
Each board publishes `.schedule`, `.program` and `.visual`. Optional normalized `appear-sound` or
|
|
41
|
-
`move-sound` inputs add `.audio` where that form supports them.
|
|
41
|
+
`move-sound` inputs add `.events` and `.audio` where that form supports them.
|
|
42
|
+
The event plan drives the audio from the same appearance and movement timing
|
|
43
|
+
as the visual animation. Include the wanted visual and audio
|
|
42
44
|
outputs as peers in Film. Labels can be literal or graph Text; Styles are typed SVS Recipes with
|
|
43
45
|
exact fonts. Use `hypit vocabulary @hypit/ranking --tag Column` (or another declared tag) for its
|
|
44
46
|
attributes, children, outputs and configured example.
|
|
@@ -50,7 +52,7 @@ The following files are included in the Distribution and show how the responsibi
|
|
|
50
52
|
| File | What to learn from it |
|
|
51
53
|
| --- | --- |
|
|
52
54
|
| [surface.ts](src/surface.ts) | `rankingSurface` resolves author inputs, projects the outer and item times through `createTemporalWindowProjection` / `createTemporalInstantProjection`, and retains the returned drafts and references. |
|
|
53
|
-
| [fragment.ts](src/fragment.ts) | `createRankingFragment` receives
|
|
55
|
+
| [fragment.ts](src/fragment.ts) | `createRankingFragment` receives Timeline and wires typed content, time, layout and Style inputs into finite operations. |
|
|
54
56
|
| [schedule.ts](src/schedule.ts) | Compute reveal, activation and settled spans from the projected times. |
|
|
55
57
|
| [component.ts](src/component.ts) and [render.ts](src/render.ts) | Build the ranking program and produce picture and optional sound from that schedule. |
|
|
56
58
|
| [manifest.ts](src/manifest.ts) and [activation.ts](src/activation.ts) | Publish Types, Producers, Surface vocabulary and package contributions. |
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"@hypit/narrative": "workspace:*",
|
|
20
20
|
"@hypit/program-space": "workspace:*",
|
|
21
21
|
"@hypit/protocol": "workspace:*",
|
|
22
|
-
"@hypit/
|
|
22
|
+
"@hypit/timeline": "workspace:*",
|
|
23
23
|
"@hypit/spatial": "workspace:*",
|
|
24
24
|
"@hypit/svs": "workspace:*",
|
|
25
25
|
"@hypit/temporal": "workspace:*",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import type { ComponentPackage, ProducerHandlerContext } from "@hypit/component-kit";
|
|
2
3
|
import type { SynchronizedMedia } from "@hypit/media";
|
|
3
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
4
4
|
import { canonicalize } from "@hypit/protocol";
|
|
5
5
|
import type { BlobRef, StoredValue } from "@hypit/protocol";
|
|
6
6
|
import type { TemporalInstant, TemporalWindow } from "@hypit/temporal";
|
|
@@ -96,7 +96,7 @@ export const rankingComponent = {
|
|
|
96
96
|
producer: rankingProducers.schedule,
|
|
97
97
|
handler: ({ inputs }) => ({ outputs: { schedule: output(buildTriggeredRankingSchedule({
|
|
98
98
|
header: inline(inputs.header?.value, "RankingHeader"), items: inline(inputs.items?.value, "RankingItemSpecSet"),
|
|
99
|
-
|
|
99
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
100
100
|
outer: inline<TemporalWindow>(inputs.outer?.value, "TemporalWindow"),
|
|
101
101
|
candidates: inline(inputs.candidates?.value, "TriggeredRankingCandidateSet"),
|
|
102
102
|
terminal: inline<TemporalInstant>(inputs.terminal?.value, "TemporalInstant"),
|
|
@@ -119,7 +119,7 @@ export const rankingComponent = {
|
|
|
119
119
|
handler: ({ inputs }) => ({ outputs: { schedule: output(buildTierBoardSchedule({
|
|
120
120
|
header: inline<RankingHeader>(inputs.header?.value, "RankingHeader"),
|
|
121
121
|
items: inline<RankingItemSpecSet>(inputs.items?.value, "RankingItemSpecSet"),
|
|
122
|
-
|
|
122
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
123
123
|
outer: inline<TemporalWindow>(inputs.outer?.value, "TemporalWindow"),
|
|
124
124
|
windows: inline<TierBoardWindowSet>(inputs.windows?.value, "TierBoardWindowSet"),
|
|
125
125
|
})) }, needs: {} }),
|
|
@@ -141,7 +141,7 @@ export const rankingComponent = {
|
|
|
141
141
|
handler: ({ inputs }) => ({ outputs: { schedule: output(buildColumnSchedule({
|
|
142
142
|
header: inline<RankingHeader>(inputs.header?.value, "RankingHeader"),
|
|
143
143
|
items: inline<RankingItemSpecSet>(inputs.items?.value, "RankingItemSpecSet"),
|
|
144
|
-
|
|
144
|
+
timeline: inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
145
145
|
outer: inline<TemporalWindow>(inputs.outer?.value, "TemporalWindow"),
|
|
146
146
|
windows: inline<ColumnWindowSet>(inputs.windows?.value, "ColumnWindowSet"),
|
|
147
147
|
})) }, needs: {} }),
|
|
@@ -239,7 +239,7 @@ export const rankingComponent = {
|
|
|
239
239
|
{
|
|
240
240
|
producer: rankingProducers.renderAudio,
|
|
241
241
|
handler: ({ inputs }) => ({ outputs: { track: output(renderRankingAudio(
|
|
242
|
-
inline<
|
|
242
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"),
|
|
243
243
|
inline<RankingSoundEventPlan>(inputs.events?.value, "RankingSoundEventPlan"),
|
|
244
244
|
inline<RankingSoundStyle>(inputs.style?.value, "RankingSoundStyle"),
|
|
245
245
|
inline<RankingSoundSet>(inputs.sounds?.value, "RankingSoundSet"),
|
|
@@ -252,7 +252,7 @@ export const rankingComponent = {
|
|
|
252
252
|
] as const).map(([producer, render, label]) => ({
|
|
253
253
|
producer,
|
|
254
254
|
handler: ({ inputs }: ProducerHandlerContext) => ({ outputs: { track: output(render(
|
|
255
|
-
inline<
|
|
255
|
+
inline<Timeline>(inputs.timeline?.value, "Timeline"), inline(inputs.program?.value, label) as never,
|
|
256
256
|
)) }, needs: {} }),
|
|
257
257
|
})),
|
|
258
258
|
],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { timelineTypes } from "@hypit/timeline";
|
|
2
|
+
|
|
2
3
|
import { compositionTypes } from "@hypit/composition";
|
|
3
4
|
import { sealGraphFragment } from "@hypit/elaborator";
|
|
4
5
|
import type { FragmentOperation, GraphFragment } from "@hypit/elaborator";
|
|
@@ -56,7 +57,7 @@ export function createRankingFragment(
|
|
|
56
57
|
const selected = definition(variant);
|
|
57
58
|
const inputs: Array<GraphFragment["inputs"][number]> = [
|
|
58
59
|
{ name: "header", type: rankingTypes.header },
|
|
59
|
-
{ name: "
|
|
60
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
60
61
|
{ name: "outer", type: temporalTypes.window },
|
|
61
62
|
...(variant === "top-three" ? [
|
|
62
63
|
{ name: "terminal", type: temporalTypes.instant },
|
|
@@ -133,7 +134,7 @@ export function createRankingFragment(
|
|
|
133
134
|
operations.push({
|
|
134
135
|
id: "schedule",
|
|
135
136
|
producer: variant === "column" ? rankingProducers.columnSchedule : rankingProducers.tierSchedule,
|
|
136
|
-
inputs: { header: input("header"), items: specs,
|
|
137
|
+
inputs: { header: input("header"), items: specs, timeline: input("timeline"), outer: input("outer"), windows: candidates },
|
|
137
138
|
result: { kind: "output", name: "schedule" },
|
|
138
139
|
});
|
|
139
140
|
} else {
|
|
@@ -141,7 +142,7 @@ export function createRankingFragment(
|
|
|
141
142
|
id: "schedule",
|
|
142
143
|
producer: rankingProducers.schedule,
|
|
143
144
|
inputs: {
|
|
144
|
-
header: input("header"), items: specs,
|
|
145
|
+
header: input("header"), items: specs, timeline: input("timeline"),
|
|
145
146
|
outer: input("outer"), candidates, terminal: input("terminal"),
|
|
146
147
|
},
|
|
147
148
|
result: { kind: "output", name: "schedule" },
|
|
@@ -160,7 +161,7 @@ export function createRankingFragment(
|
|
|
160
161
|
operations.push({
|
|
161
162
|
id: "visual",
|
|
162
163
|
producer: selected.render,
|
|
163
|
-
inputs: {
|
|
164
|
+
inputs: { timeline: input("timeline"), program: operation("program") },
|
|
164
165
|
result: { kind: "output", name: "track" },
|
|
165
166
|
});
|
|
166
167
|
const hasAudio = sound.appearName !== undefined || sound.moveName !== undefined;
|
|
@@ -189,7 +190,7 @@ export function createRankingFragment(
|
|
|
189
190
|
}
|
|
190
191
|
operations.push({
|
|
191
192
|
id: "audio", producer: rankingProducers.renderAudio,
|
|
192
|
-
inputs: {
|
|
193
|
+
inputs: { timeline: input("timeline"), events: operation("events"), style: input("sound-style"), sounds },
|
|
193
194
|
result: { kind: "output", name: "track" },
|
|
194
195
|
});
|
|
195
196
|
}
|
|
@@ -200,7 +201,10 @@ export function createRankingFragment(
|
|
|
200
201
|
{ name: "schedule", type: rankingTypes.schedule, root: operation("schedule") },
|
|
201
202
|
{ name: "program", type: selected.program, root: operation("program") },
|
|
202
203
|
{ name: "visual", type: compositionTypes.visualTrack, root: operation("visual") },
|
|
203
|
-
...(hasAudio ? [
|
|
204
|
+
...(hasAudio ? [
|
|
205
|
+
{ name: "events", type: rankingTypes.soundEvents, root: operation("events") },
|
|
206
|
+
{ name: "audio", type: compositionTypes.audioTrack, root: operation("audio") },
|
|
207
|
+
] : []),
|
|
204
208
|
],
|
|
205
209
|
});
|
|
206
210
|
}
|
|
@@ -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
|
|
|
@@ -5,9 +6,9 @@ import { artifactDependency } from "@hypit/artifact";
|
|
|
5
6
|
import { compositionDependency, compositionTypes } from "@hypit/composition";
|
|
6
7
|
import { mediaDependency, mediaTypes } from "@hypit/media";
|
|
7
8
|
import { narrativeDependency, narrativeTypes } from "@hypit/narrative";
|
|
8
|
-
|
|
9
|
+
|
|
9
10
|
import type { ModuleManifest, ProducerRef, TypeRef, ValueSchema } from "@hypit/protocol";
|
|
10
|
-
import {
|
|
11
|
+
import { timelineDependency } from "@hypit/timeline";
|
|
11
12
|
import { spatialDependency, spatialFrameSchema, spatialTypes } from "@hypit/spatial";
|
|
12
13
|
import { svsRecipeType } from "@hypit/svs";
|
|
13
14
|
import { temporalDependency, temporalInstantSchema, temporalTypes, temporalWindowSchema } from "@hypit/temporal";
|
|
@@ -487,7 +488,7 @@ const allRankingMarkupSurfaces = [
|
|
|
487
488
|
"Every other property is refused by name.",
|
|
488
489
|
],
|
|
489
490
|
} },
|
|
490
|
-
{ name: "tier", tag: "TierBoard", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.tierProgram, compositionTypes.visualTrack, compositionTypes.audioTrack],
|
|
491
|
+
{ name: "tier", tag: "TierBoard", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.tierProgram, compositionTypes.visualTrack, rankingTypes.soundEvents, compositionTypes.audioTrack],
|
|
491
492
|
vocabulary: {
|
|
492
493
|
summary: "Places Items into tier rows from preset state or explicit reveal Selections, and publishes the board and the Tracks it renders to.",
|
|
493
494
|
appearance:
|
|
@@ -537,11 +538,13 @@ const allRankingMarkupSurfaces = [
|
|
|
537
538
|
summary: "The resolved board: its Frame, Style, Schedule and ordered Items." },
|
|
538
539
|
{ name: "visual", type: compositionTypes.visualTrack,
|
|
539
540
|
summary: "The rendered board, an ordinary peer VisualTrack." },
|
|
541
|
+
{ name: "events", type: rankingTypes.soundEvents,
|
|
542
|
+
summary: "Animation-linked sound events, published when a sound is authored." },
|
|
540
543
|
{ name: "audio", type: compositionTypes.audioTrack,
|
|
541
544
|
summary: "The rendered board sound, published only when a sound is authored." },
|
|
542
545
|
],
|
|
543
546
|
example: `<ranking:TierBoardStyle id="tier-style" recipe={recipes.ranking.tier} font={ui-font}/>
|
|
544
|
-
<ranking:TierBoard id="tiers"
|
|
547
|
+
<ranking:TierBoard id="tiers" timeline={speech.timeline} canvas={vertical} frame={board-frame}
|
|
545
548
|
during="program"
|
|
546
549
|
style={tier-style}>
|
|
547
550
|
<ranking:TierItem id="row-regen" tier="s" preset="true" icon={icon-regen}/>
|
|
@@ -555,7 +558,7 @@ const allRankingMarkupSurfaces = [
|
|
|
555
558
|
"Authoring either sound also connects the Style's `.sound` output, so `style` must name a TierBoardStyle written in this Source.",
|
|
556
559
|
],
|
|
557
560
|
} },
|
|
558
|
-
{ name: "column", tag: "Column", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, rankingTypes.textItemShell, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.columnProgram, compositionTypes.visualTrack, compositionTypes.audioTrack],
|
|
561
|
+
{ name: "column", tag: "Column", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, rankingTypes.textItemShell, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.columnProgram, compositionTypes.visualTrack, rankingTypes.soundEvents, compositionTypes.audioTrack],
|
|
559
562
|
vocabulary: {
|
|
560
563
|
summary: "Places rows by explicit rank, reveals each non-preset row in its own Segment or Selection, and publishes the board and the Tracks it renders to.",
|
|
561
564
|
appearance:
|
|
@@ -605,11 +608,13 @@ const allRankingMarkupSurfaces = [
|
|
|
605
608
|
summary: "The resolved board: its Frame, Style, Schedule and ordered Items." },
|
|
606
609
|
{ name: "visual", type: compositionTypes.visualTrack,
|
|
607
610
|
summary: "The rendered board, an ordinary peer VisualTrack." },
|
|
611
|
+
{ name: "events", type: rankingTypes.soundEvents,
|
|
612
|
+
summary: "Animation-linked sound events, published when a sound is authored." },
|
|
608
613
|
{ name: "audio", type: compositionTypes.audioTrack,
|
|
609
614
|
summary: "The rendered board sound, published only when a sound is authored." },
|
|
610
615
|
],
|
|
611
616
|
example: `<ranking:ColumnStyle id="board-style" recipe={recipes.ranking.board} font={ui-font}/>
|
|
612
|
-
<ranking:Column id="board"
|
|
617
|
+
<ranking:Column id="board" timeline={speech.timeline} canvas={vertical} frame={board-frame}
|
|
613
618
|
during={story.segment.ranking}
|
|
614
619
|
style={board-style}>
|
|
615
620
|
<ranking:ColumnItem id="row-regen" rank="1" label="ReGen" icon={icon-regen} during={story.selection.regen}/>
|
|
@@ -624,7 +629,7 @@ const allRankingMarkupSurfaces = [
|
|
|
624
629
|
"Authoring either sound also connects the Style's `.sound` output, so `style` must name a ColumnStyle written in this Source.",
|
|
625
630
|
],
|
|
626
631
|
} },
|
|
627
|
-
{ name: "top-three", tag: "TopThree", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, rankingTypes.textItemShell, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.topThreeProgram, compositionTypes.visualTrack, compositionTypes.audioTrack],
|
|
632
|
+
{ name: "top-three", tag: "TopThree", mode: "structured", outputs: [rankingTypes.header, rankingTypes.itemSpec, rankingTypes.textItemShell, temporalTypes.instantSpec, temporalTypes.windowSpec, temporalTypes.instant, temporalTypes.window, rankingTypes.schedule, rankingTypes.topThreeProgram, compositionTypes.visualTrack, rankingTypes.soundEvents, compositionTypes.audioTrack],
|
|
628
633
|
vocabulary: {
|
|
629
634
|
summary: "Fills a podium one slot at a time at the Moment owned by each Item, and publishes the board and the Tracks it renders to.",
|
|
630
635
|
appearance:
|
|
@@ -667,11 +672,13 @@ const allRankingMarkupSurfaces = [
|
|
|
667
672
|
summary: "The resolved board: its Frame, Style, Schedule and ordered Items." },
|
|
668
673
|
{ name: "visual", type: compositionTypes.visualTrack,
|
|
669
674
|
summary: "The rendered board, an ordinary peer VisualTrack." },
|
|
675
|
+
{ name: "events", type: rankingTypes.soundEvents,
|
|
676
|
+
summary: "Animation-linked sound events, published when a sound is authored." },
|
|
670
677
|
{ name: "audio", type: compositionTypes.audioTrack,
|
|
671
678
|
summary: "The rendered board sound, published only when a sound is authored." },
|
|
672
679
|
],
|
|
673
680
|
example: `<ranking:TopThreeStyle id="podium-style" recipe={recipes.ranking.podium} font={ui-font}/>
|
|
674
|
-
<ranking:TopThree id="podium"
|
|
681
|
+
<ranking:TopThree id="podium" timeline={speech.timeline} frame={board-frame}
|
|
675
682
|
during={story.selection.board} terminal={story.moment.done}
|
|
676
683
|
style={podium-style}>
|
|
677
684
|
<ranking:TopThreeItem id="slot-gold" label="ReGen" icon={icon-regen} at={story.moment.regen}/>
|
|
@@ -692,7 +699,7 @@ export const rankingMarkupSurfaces = allRankingMarkupSurfaces;
|
|
|
692
699
|
|
|
693
700
|
export const rankingManifest: ModuleManifest = {
|
|
694
701
|
format: "hypit.module@1", name: rankingModuleRef.name, version: rankingModuleRef.version,
|
|
695
|
-
dependencies: [artifactDependency, mediaDependency, narrativeDependency,
|
|
702
|
+
dependencies: [artifactDependency, mediaDependency, narrativeDependency, timelineDependency, spatialDependency, temporalDependency, compositionDependency, textDependency],
|
|
696
703
|
types: [
|
|
697
704
|
{ name: rankingTypes.header.name },
|
|
698
705
|
{ name: rankingTypes.itemSpec.name },
|
|
@@ -729,7 +736,7 @@ export const rankingManifest: ModuleManifest = {
|
|
|
729
736
|
], outputs: [{ name: "set", type: rankingTypes.triggeredCandidates }], needs: [] },
|
|
730
737
|
{ name: rankingProducers.schedule.name, inputs: [
|
|
731
738
|
{ name: "header", type: rankingTypes.header }, { name: "items", type: rankingTypes.itemSpecs },
|
|
732
|
-
{ name: "
|
|
739
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
733
740
|
{ name: "outer", type: temporalTypes.window }, { name: "candidates", type: rankingTypes.triggeredCandidates },
|
|
734
741
|
{ name: "terminal", type: temporalTypes.instant },
|
|
735
742
|
], outputs: [{ name: "schedule", type: rankingTypes.schedule }], needs: [] },
|
|
@@ -742,7 +749,7 @@ export const rankingManifest: ModuleManifest = {
|
|
|
742
749
|
], outputs: [{ name: "set", type: rankingTypes.tierWindows }], needs: [] },
|
|
743
750
|
{ name: rankingProducers.tierSchedule.name, inputs: [
|
|
744
751
|
{ name: "header", type: rankingTypes.header }, { name: "items", type: rankingTypes.itemSpecs },
|
|
745
|
-
{ name: "
|
|
752
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
746
753
|
{ name: "outer", type: temporalTypes.window }, { name: "windows", type: rankingTypes.tierWindows },
|
|
747
754
|
], outputs: [{ name: "schedule", type: rankingTypes.schedule }], needs: [] },
|
|
748
755
|
{ name: rankingProducers.createColumnWindows.name, inputs: [], outputs: [
|
|
@@ -754,7 +761,7 @@ export const rankingManifest: ModuleManifest = {
|
|
|
754
761
|
], outputs: [{ name: "set", type: rankingTypes.columnWindows }], needs: [] },
|
|
755
762
|
{ name: rankingProducers.columnSchedule.name, inputs: [
|
|
756
763
|
{ name: "header", type: rankingTypes.header }, { name: "items", type: rankingTypes.itemSpecs },
|
|
757
|
-
{ name: "
|
|
764
|
+
{ name: "timeline", type: timelineTypes.track },
|
|
758
765
|
{ name: "outer", type: temporalTypes.window }, { name: "windows", type: rankingTypes.columnWindows },
|
|
759
766
|
], outputs: [{ name: "schedule", type: rankingTypes.schedule }], needs: [] },
|
|
760
767
|
...([
|
|
@@ -788,7 +795,7 @@ export const rankingManifest: ModuleManifest = {
|
|
|
788
795
|
{ name: eventProducer.name, inputs: [
|
|
789
796
|
{ name: "schedule", type: rankingTypes.schedule }, { name: "style", type: styleType }, { name: "specs", type: rankingTypes.itemSpecs },
|
|
790
797
|
], outputs: [{ name: "events", type: rankingTypes.soundEvents }], needs: [] },
|
|
791
|
-
{ name: renderProducer.name, inputs: [{ name: "
|
|
798
|
+
{ name: renderProducer.name, inputs: [{ name: "timeline", type: timelineTypes.track }, { name: "program", type: programType }], outputs: [{ name: "track", type: compositionTypes.visualTrack }], needs: [] },
|
|
792
799
|
]),
|
|
793
800
|
{ name: rankingProducers.createSounds.name, inputs: [], outputs: [{ name: "sounds", type: rankingTypes.sounds }], needs: [] },
|
|
794
801
|
...([
|
|
@@ -798,7 +805,7 @@ export const rankingManifest: ModuleManifest = {
|
|
|
798
805
|
name: producer.name, inputs: [{ name: "sounds", type: rankingTypes.sounds }, { name: "media", type: mediaTypes.synchronized }], outputs: [{ name: "sounds", type: rankingTypes.sounds }], needs: [],
|
|
799
806
|
})),
|
|
800
807
|
{ name: rankingProducers.renderAudio.name, inputs: [
|
|
801
|
-
{ name: "
|
|
808
|
+
{ name: "timeline", type: timelineTypes.track }, { name: "events", type: rankingTypes.soundEvents },
|
|
802
809
|
{ name: "style", type: rankingTypes.soundStyle }, { name: "sounds", type: rankingTypes.sounds },
|
|
803
810
|
], outputs: [{ name: "track", type: compositionTypes.audioTrack }], needs: [] },
|
|
804
811
|
],
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import {
|
|
2
3
|
assertAudioTrackIdentity,
|
|
3
4
|
assertVisualTrackIdentity,
|
|
@@ -14,12 +15,7 @@ import type {
|
|
|
14
15
|
VisualTrack,
|
|
15
16
|
} from "@hypit/composition";
|
|
16
17
|
import { synchronizedMediaSampleFrames, verifySynchronizedMedia } from "@hypit/media";
|
|
17
|
-
import {
|
|
18
|
-
assertProgramSpaceIdentity,
|
|
19
|
-
programFrameSampleBoundary,
|
|
20
|
-
programSpaceSampleFrames,
|
|
21
|
-
} from "@hypit/program-space";
|
|
22
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
18
|
+
import { assertProgramSpaceIdentity, programFrameSampleBoundary, programSpaceSampleFrames } from "@hypit/program-space";
|
|
23
19
|
|
|
24
20
|
import {
|
|
25
21
|
assertColumnProgram,
|
|
@@ -253,14 +249,14 @@ function tierItemAnimation(
|
|
|
253
249
|
})));
|
|
254
250
|
}
|
|
255
251
|
|
|
256
|
-
function sealTrack(
|
|
257
|
-
const value = sealVisualTrack({ programSpaceId:
|
|
258
|
-
assertVisualTrackIdentity(value,
|
|
252
|
+
function sealTrack(timeline: Timeline, id: string, presents: readonly VisualPresent[]): VisualTrack {
|
|
253
|
+
const value = sealVisualTrack({ programSpaceId: timeline.id, visualIr: "hypit.visual-ir@1", id, presents });
|
|
254
|
+
assertVisualTrackIdentity(value, timeline);
|
|
259
255
|
return value;
|
|
260
256
|
}
|
|
261
257
|
|
|
262
|
-
export function renderTierBoard(
|
|
263
|
-
assertProgramSpaceIdentity(
|
|
258
|
+
export function renderTierBoard(timeline: Timeline, program: TierBoardProgram): VisualTrack {
|
|
259
|
+
assertProgramSpaceIdentity(timeline);
|
|
264
260
|
assertTierBoardProgram(program);
|
|
265
261
|
const { canvas, frame, style, schedule } = program;
|
|
266
262
|
const geometry = tierBoardGeometry(frame.widthPx, frame.heightPx, style);
|
|
@@ -370,7 +366,7 @@ export function renderTierBoard(space: ProgramSpace, program: TierBoardProgram):
|
|
|
370
366
|
elements: itemElements(),
|
|
371
367
|
}));
|
|
372
368
|
}
|
|
373
|
-
return sealTrack(
|
|
369
|
+
return sealTrack(timeline, program.id, presents);
|
|
374
370
|
}
|
|
375
371
|
|
|
376
372
|
function rowY(frameY: number, frameHeight: number, padding: number, count: number, index: number, height: number, gap: number): number {
|
|
@@ -463,8 +459,8 @@ function columnRevealAnimation(input: {
|
|
|
463
459
|
]);
|
|
464
460
|
}
|
|
465
461
|
|
|
466
|
-
export function renderColumn(
|
|
467
|
-
assertProgramSpaceIdentity(
|
|
462
|
+
export function renderColumn(timeline: Timeline, program: ColumnProgram): VisualTrack {
|
|
463
|
+
assertProgramSpaceIdentity(timeline);
|
|
468
464
|
assertColumnProgram(program);
|
|
469
465
|
const { canvas, frame, style, schedule } = program;
|
|
470
466
|
const presents: VisualPresent[] = [];
|
|
@@ -562,7 +558,7 @@ export function renderColumn(space: ProgramSpace, program: ColumnProgram): Visua
|
|
|
562
558
|
tieBreak: `${program.id}:item:${String(item.rank).padStart(4, "0")}:${item.id}:settled`, elements: itemElements(),
|
|
563
559
|
}));
|
|
564
560
|
}
|
|
565
|
-
return sealTrack(
|
|
561
|
+
return sealTrack(timeline, program.id, presents);
|
|
566
562
|
}
|
|
567
563
|
|
|
568
564
|
function topSlotX(program: TopThreeProgram, index: number): number {
|
|
@@ -580,8 +576,8 @@ function activeAccentAnimation(duration: number, activeFrames: number): VisualAn
|
|
|
580
576
|
]);
|
|
581
577
|
}
|
|
582
578
|
|
|
583
|
-
export function renderTopThree(
|
|
584
|
-
assertProgramSpaceIdentity(
|
|
579
|
+
export function renderTopThree(timeline: Timeline, program: TopThreeProgram): VisualTrack {
|
|
580
|
+
assertProgramSpaceIdentity(timeline);
|
|
585
581
|
assertTopThreeProgram(program);
|
|
586
582
|
const { frame, style, schedule } = program;
|
|
587
583
|
const boardElements: VisualElement[] = [absoluteBox({
|
|
@@ -652,33 +648,33 @@ export function renderTopThree(space: ProgramSpace, program: TopThreeProgram): V
|
|
|
652
648
|
tieBreak: `${program.id}:item:${String(index).padStart(4, "0")}:${item.id}:settled`, elements: itemElements(false),
|
|
653
649
|
}));
|
|
654
650
|
}
|
|
655
|
-
return sealTrack(
|
|
651
|
+
return sealTrack(timeline, program.id, presents);
|
|
656
652
|
}
|
|
657
653
|
|
|
658
654
|
export function renderRankingAudio(
|
|
659
|
-
|
|
655
|
+
timeline: Timeline,
|
|
660
656
|
plan: RankingSoundEventPlan,
|
|
661
657
|
style: RankingSoundStyle,
|
|
662
658
|
sounds: RankingSoundSet,
|
|
663
659
|
): AudioTrack {
|
|
664
|
-
assertProgramSpaceIdentity(
|
|
660
|
+
assertProgramSpaceIdentity(timeline);
|
|
665
661
|
assertRankingSoundEventPlan(plan);
|
|
666
662
|
assertRankingSoundStyle(style);
|
|
667
663
|
assert(sounds.appear !== undefined || sounds.move !== undefined, "Ranking audio requires at least one authored sound.");
|
|
668
664
|
if (sounds.appear !== undefined) verifySynchronizedMedia(sounds.appear);
|
|
669
665
|
if (sounds.move !== undefined) verifySynchronizedMedia(sounds.move);
|
|
670
|
-
const totalSamples = programSpaceSampleFrames(
|
|
671
|
-
const fadeSamples = programFrameSampleBoundary(
|
|
666
|
+
const totalSamples = programSpaceSampleFrames(timeline, 48_000);
|
|
667
|
+
const fadeSamples = programFrameSampleBoundary(timeline, style.fadeFrames, 48_000);
|
|
672
668
|
const clips: AudioClip[] = [];
|
|
673
669
|
for (const event of plan.events) {
|
|
674
670
|
const media = sounds[event.kind];
|
|
675
671
|
if (media === undefined) continue;
|
|
676
672
|
const audio = media.audio;
|
|
677
673
|
assert(audio !== undefined, `Ranking ${event.kind} sound has no normalized audio.`);
|
|
678
|
-
const startSample = programFrameSampleBoundary(
|
|
674
|
+
const startSample = programFrameSampleBoundary(timeline, event.frame, 48_000);
|
|
679
675
|
const sourceSampleFrames = synchronizedMediaSampleFrames(media);
|
|
680
676
|
const length = Math.min(sourceSampleFrames, totalSamples - startSample);
|
|
681
|
-
assert(length > 0, `Ranking sound ${event.id} starts after
|
|
677
|
+
assert(length > 0, `Ranking sound ${event.id} starts after Timeline.`);
|
|
682
678
|
assert(fadeSamples <= length, `Ranking sound ${event.id} fade exceeds its audible interval.`);
|
|
683
679
|
clips.push({
|
|
684
680
|
id: event.id,
|
|
@@ -694,7 +690,7 @@ export function renderRankingAudio(
|
|
|
694
690
|
if (sounds[kind] !== undefined) assert(clips.some((clip) => clip.id.endsWith(`:${kind}`)),
|
|
695
691
|
`Ranking ${kind} sound has no matching visual event.`);
|
|
696
692
|
}
|
|
697
|
-
const track = sealAudioTrack({ programSpaceId:
|
|
698
|
-
assertAudioTrackIdentity(track,
|
|
693
|
+
const track = sealAudioTrack({ programSpaceId: timeline.id, id: `${plan.id}.audio`, clips });
|
|
694
|
+
assertAudioTrackIdentity(track, timeline);
|
|
699
695
|
return track;
|
|
700
696
|
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
+
import type { Timeline } from "@hypit/timeline";
|
|
1
2
|
import {
|
|
2
3
|
assertFontArtifactRef,
|
|
3
4
|
verifySynchronizedMedia,
|
|
4
5
|
} from "@hypit/media";
|
|
5
6
|
import type { SynchronizedMedia } from "@hypit/media";
|
|
6
|
-
import {
|
|
7
|
-
assertProgramSpaceIdentity,
|
|
8
|
-
programSpaceFrameCount,
|
|
9
|
-
} from "@hypit/program-space";
|
|
10
|
-
import type { ProgramSpace } from "@hypit/program-space";
|
|
7
|
+
import { assertProgramSpaceIdentity, programSpaceFrameCount } from "@hypit/program-space";
|
|
11
8
|
import { canonicalize, isResourceId } from "@hypit/protocol";
|
|
12
9
|
import { verifyText } from "@hypit/text";
|
|
13
10
|
import type { Text } from "@hypit/text";
|
|
@@ -334,7 +331,7 @@ export function appendTriggeredRankingCandidate(
|
|
|
334
331
|
export function buildTriggeredRankingSchedule(input: {
|
|
335
332
|
readonly header: RankingHeader;
|
|
336
333
|
readonly items: RankingItemSpecSet;
|
|
337
|
-
readonly
|
|
334
|
+
readonly timeline: Timeline;
|
|
338
335
|
readonly outer: TemporalWindow;
|
|
339
336
|
readonly candidates: TriggeredRankingCandidateSet;
|
|
340
337
|
readonly terminal: TemporalInstant;
|
|
@@ -345,10 +342,10 @@ export function buildTriggeredRankingSchedule(input: {
|
|
|
345
342
|
assert(input.header.variant === "top-three", "Only TopThree uses the triggered Ranking schedule.");
|
|
346
343
|
assert(input.items.items.length > 0, "Ranking requires at least one Item.");
|
|
347
344
|
assertTriggeredRankingCandidateSet(input.candidates);
|
|
348
|
-
assertTemporalWindowFor(input.outer, { subjectId: input.header.id, space: input.
|
|
349
|
-
assertTemporalInstantFor(input.terminal, { subjectId: input.header.id, space: input.
|
|
345
|
+
assertTemporalWindowFor(input.outer, { subjectId: input.header.id, space: input.timeline });
|
|
346
|
+
assertTemporalInstantFor(input.terminal, { subjectId: input.header.id, space: input.timeline });
|
|
350
347
|
for (const candidate of input.candidates.entries) {
|
|
351
|
-
assertTemporalInstantFor(candidate.activation, { subjectId: candidate.itemId, space: input.
|
|
348
|
+
assertTemporalInstantFor(candidate.activation, { subjectId: candidate.itemId, space: input.timeline });
|
|
352
349
|
}
|
|
353
350
|
const expected = new Set(input.items.items.map((item) => item.id));
|
|
354
351
|
const received = new Set(input.candidates.entries.map((entry) => entry.itemId));
|
|
@@ -379,7 +376,7 @@ export function buildTriggeredRankingSchedule(input: {
|
|
|
379
376
|
terminalFrame: resolved.terminalFrame,
|
|
380
377
|
entries,
|
|
381
378
|
};
|
|
382
|
-
assertRankingSchedule(result, input.
|
|
379
|
+
assertRankingSchedule(result, input.timeline);
|
|
383
380
|
return canonicalize(result) as unknown as TriggeredRankingSchedule;
|
|
384
381
|
}
|
|
385
382
|
|
|
@@ -448,7 +445,7 @@ export function appendColumnWindow(
|
|
|
448
445
|
function buildWindowedRankingSchedule(input: {
|
|
449
446
|
readonly header: RankingHeader;
|
|
450
447
|
readonly items: RankingItemSpecSet;
|
|
451
|
-
readonly
|
|
448
|
+
readonly timeline: Timeline;
|
|
452
449
|
readonly outer: TemporalWindow;
|
|
453
450
|
readonly windows: RankingWindowSet;
|
|
454
451
|
readonly variant: "tier-board" | "column";
|
|
@@ -460,7 +457,7 @@ function buildWindowedRankingSchedule(input: {
|
|
|
460
457
|
assert(input.items.variant === input.variant, `${label} Schedule requires ${label} Items.`);
|
|
461
458
|
assert(input.items.items.length > 0, `${label} requires at least one Item.`);
|
|
462
459
|
assertRankingWindowSet(input.windows, `${label}WindowSet`);
|
|
463
|
-
assertTemporalWindowFor(input.outer, { subjectId: input.header.id, space: input.
|
|
460
|
+
assertTemporalWindowFor(input.outer, { subjectId: input.header.id, space: input.timeline });
|
|
464
461
|
frame(input.outer.span.startFrame, `${label} outer window start`);
|
|
465
462
|
frame(input.outer.span.endFrameExclusive, `${label} outer window end`);
|
|
466
463
|
assert(input.outer.span.endFrameExclusive > input.outer.span.startFrame, `${label} outer window is empty.`);
|
|
@@ -474,7 +471,7 @@ function buildWindowedRankingSchedule(input: {
|
|
|
474
471
|
|| left.window.span.endFrameExclusive - right.window.span.endFrameExclusive
|
|
475
472
|
|| left.itemId.localeCompare(right.itemId));
|
|
476
473
|
for (const entry of orderedWindows) {
|
|
477
|
-
assertTemporalWindowFor(entry.window, { subjectId: entry.itemId, space: input.
|
|
474
|
+
assertTemporalWindowFor(entry.window, { subjectId: entry.itemId, space: input.timeline });
|
|
478
475
|
assert(entry.window.span.startFrame >= input.outer.span.startFrame
|
|
479
476
|
&& entry.window.span.endFrameExclusive <= input.outer.span.endFrameExclusive,
|
|
480
477
|
`${label} Item ${entry.itemId} window is outside the outer window.`);
|
|
@@ -524,7 +521,7 @@ function buildWindowedRankingSchedule(input: {
|
|
|
524
521
|
export function buildTierBoardSchedule(input: {
|
|
525
522
|
readonly header: RankingHeader;
|
|
526
523
|
readonly items: RankingItemSpecSet;
|
|
527
|
-
readonly
|
|
524
|
+
readonly timeline: Timeline;
|
|
528
525
|
readonly outer: TemporalWindow;
|
|
529
526
|
readonly windows: TierBoardWindowSet;
|
|
530
527
|
}): TierBoardSchedule {
|
|
@@ -534,7 +531,7 @@ export function buildTierBoardSchedule(input: {
|
|
|
534
531
|
export function buildColumnSchedule(input: {
|
|
535
532
|
readonly header: RankingHeader;
|
|
536
533
|
readonly items: RankingItemSpecSet;
|
|
537
|
-
readonly
|
|
534
|
+
readonly timeline: Timeline;
|
|
538
535
|
readonly outer: TemporalWindow;
|
|
539
536
|
readonly windows: ColumnWindowSet;
|
|
540
537
|
}): ColumnSchedule {
|
|
@@ -626,12 +623,12 @@ function assertWindowedRankingSchedule(value: TierBoardSchedule | ColumnSchedule
|
|
|
626
623
|
}
|
|
627
624
|
}
|
|
628
625
|
|
|
629
|
-
export function assertRankingSchedule(value: RankingSchedule,
|
|
626
|
+
export function assertRankingSchedule(value: RankingSchedule, timeline?: Timeline): void {
|
|
630
627
|
if (value.variant === "top-three") assertTriggeredRankingSchedule(value);
|
|
631
628
|
else assertWindowedRankingSchedule(value);
|
|
632
|
-
if (
|
|
633
|
-
assertProgramSpaceIdentity(
|
|
634
|
-
assert(value.outer.endFrameExclusive <= programSpaceFrameCount(
|
|
629
|
+
if (timeline !== undefined) {
|
|
630
|
+
assertProgramSpaceIdentity(timeline);
|
|
631
|
+
assert(value.outer.endFrameExclusive <= programSpaceFrameCount(timeline), "RankingSchedule exceeds Timeline.");
|
|
635
632
|
}
|
|
636
633
|
}
|
|
637
634
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveTemporalContext } from "@hypit/temporal-markup";
|
|
2
2
|
import {
|
|
3
3
|
assertEmptyElement as empty,
|
|
4
4
|
assertAttributes as allowed,
|
|
@@ -199,7 +199,7 @@ const variantDefinition = {
|
|
|
199
199
|
|
|
200
200
|
function rankingSurface(variant: RankingVariant): StructuredSurfaceHandler {
|
|
201
201
|
return ({ element, resolveReference }) => {
|
|
202
|
-
const common = ["id", "
|
|
202
|
+
const common = ["id", "timeline", "frame", "during", "terminal", "style", "appear-sound", "move-sound"];
|
|
203
203
|
const attributes = variant === "column" || variant === "tier-board"
|
|
204
204
|
? [...common.filter((name) => name !== "terminal"), "canvas"]
|
|
205
205
|
: common;
|
|
@@ -207,31 +207,30 @@ function rankingSurface(variant: RankingVariant): StructuredSurfaceHandler {
|
|
|
207
207
|
const id = text(element, "id");
|
|
208
208
|
const selected = variantDefinition[variant];
|
|
209
209
|
const context = resolveTemporalContext({ element, resolveReference });
|
|
210
|
-
const time = createTemporalSpace({ id, element, ...context });
|
|
211
210
|
const canvas = variant === "column" || variant === "tier-board"
|
|
212
211
|
? reference(element.attributes.canvas, `${element.name}.canvas`, spatialTypes.canvas, resolveReference)
|
|
213
212
|
: undefined;
|
|
214
213
|
const frame = reference(element.attributes.frame, `${element.name}.frame`, spatialTypes.frame, resolveReference);
|
|
215
|
-
const outerTemporal = createTemporalWindowProjection({ id: `${id}.outer`, subjectId: id, element, ...context,
|
|
214
|
+
const outerTemporal = createTemporalWindowProjection({ id: `${id}.outer`, subjectId: id, element, ...context, resolveReference });
|
|
216
215
|
const terminalTemporal = variant === "top-three"
|
|
217
216
|
? createTemporalInstantProjection({
|
|
218
|
-
id: `${id}.terminal`, subjectId: id, element, ...context,
|
|
217
|
+
id: `${id}.terminal`, subjectId: id, element, ...context, resolveReference,
|
|
219
218
|
semanticAttribute: "terminal", projectedAttribute: false,
|
|
220
219
|
})
|
|
221
220
|
: undefined;
|
|
222
221
|
const styleRaw = element.attributes.style;
|
|
223
222
|
const style = reference(styleRaw, `${element.name}.style`, selected.style, resolveReference);
|
|
224
223
|
const records: SurfaceRecordDraft[] = [...outerTemporal.records, ...(terminalTemporal?.records ?? [])];
|
|
225
|
-
const temporalComponents: SurfaceComponentDraft[] = [...
|
|
226
|
-
const temporalFragments = [...
|
|
224
|
+
const temporalComponents: SurfaceComponentDraft[] = [...outerTemporal.components, ...(terminalTemporal?.components ?? [])];
|
|
225
|
+
const temporalFragments = [...outerTemporal.fragments, ...(terminalTemporal?.fragments ?? [])];
|
|
227
226
|
const headerId = `${id}.header`;
|
|
228
227
|
records.push({
|
|
229
228
|
id: headerId, type: rankingTypes.header,
|
|
230
229
|
value: { kind: "inline", value: sealRankingHeader({ id, variant }) as unknown as CanonicalValue },
|
|
231
230
|
range: element.range,
|
|
232
231
|
});
|
|
233
|
-
const inputs: Record<string, typeof
|
|
234
|
-
header: { kind: "record", id: headerId },
|
|
232
|
+
const inputs: Record<string, typeof context.timeline.ref> = {
|
|
233
|
+
header: { kind: "record", id: headerId }, timeline: context.timeline.ref, frame: frame.ref,
|
|
235
234
|
outer: outerTemporal.ref, style: style.ref,
|
|
236
235
|
...(canvas === undefined ? {} : { canvas: canvas.ref }),
|
|
237
236
|
...(terminalTemporal === undefined ? {} : { terminal: terminalTemporal.ref }),
|
|
@@ -260,8 +259,8 @@ function rankingSurface(variant: RankingVariant): StructuredSurfaceHandler {
|
|
|
260
259
|
const contentName = authored.content === undefined ? undefined : `item-${suffix}-content`;
|
|
261
260
|
if (authored.content !== undefined) inputs[contentName!] = authored.content.ref;
|
|
262
261
|
const itemTemporal = !authored.timed ? undefined : variant === "top-three"
|
|
263
|
-
? createTemporalInstantProjection({ id: `${id}.item.${suffix}`, subjectId: spec.id, element: child, ...context,
|
|
264
|
-
: createTemporalWindowProjection({ id: `${id}.item.${suffix}`, subjectId: spec.id, element: child, ...context,
|
|
262
|
+
? createTemporalInstantProjection({ id: `${id}.item.${suffix}`, subjectId: spec.id, element: child, ...context, resolveReference })
|
|
263
|
+
: createTemporalWindowProjection({ id: `${id}.item.${suffix}`, subjectId: spec.id, element: child, ...context, resolveReference });
|
|
265
264
|
if (itemTemporal !== undefined) {
|
|
266
265
|
records.push(...itemTemporal.records);
|
|
267
266
|
temporalComponents.push(...itemTemporal.components);
|
|
@@ -307,12 +306,12 @@ function rankingSurface(variant: RankingVariant): StructuredSurfaceHandler {
|
|
|
307
306
|
id, fragment: fragment.id, inputs,
|
|
308
307
|
outputs: {
|
|
309
308
|
schedule: `${id}.schedule`, program: `${id}.program`, visual: `${id}.visual`,
|
|
310
|
-
...(sound.appearName === undefined && sound.moveName === undefined ? {} : { audio: `${id}.audio` }),
|
|
309
|
+
...(sound.appearName === undefined && sound.moveName === undefined ? {} : { events: `${id}.events`, audio: `${id}.audio` }),
|
|
311
310
|
},
|
|
312
311
|
range: element.range,
|
|
313
312
|
}],
|
|
314
313
|
fragments: [...temporalFragments, fragment],
|
|
315
|
-
exports: [`${id}.schedule`, `${id}.program`, `${id}.visual`, ...(sound.appearName === undefined && sound.moveName === undefined ? [] : [`${id}.audio`])],
|
|
314
|
+
exports: [`${id}.schedule`, `${id}.program`, `${id}.visual`, ...(sound.appearName === undefined && sound.moveName === undefined ? [] : [`${id}.events`, `${id}.audio`])],
|
|
316
315
|
};
|
|
317
316
|
};
|
|
318
317
|
}
|