@aura3d/engine 1.0.10 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -23
- package/dist/animation/AnimationClipEvents.d.ts +55 -0
- package/dist/animation/AnimationClipEvents.d.ts.map +1 -1
- package/dist/animation/AnimationClipEvents.js +136 -0
- package/dist/animation/AnimationClipEvents.js.map +1 -1
- package/dist/animation/AnimationClipRegistry.d.ts +22 -0
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -1
- package/dist/animation/AnimationClipRegistry.js +89 -0
- package/dist/animation/AnimationClipRegistry.js.map +1 -1
- package/dist/animation/AnimationController.d.ts +14 -0
- package/dist/animation/AnimationController.d.ts.map +1 -1
- package/dist/animation/AnimationController.js +21 -0
- package/dist/animation/AnimationController.js.map +1 -1
- package/dist/animation/AnimationMixer.d.ts +10 -0
- package/dist/animation/AnimationMixer.d.ts.map +1 -1
- package/dist/animation/AnimationMixer.js +35 -0
- package/dist/animation/AnimationMixer.js.map +1 -1
- package/dist/animation/AnimationStateGraph.d.ts +20 -1
- package/dist/animation/AnimationStateGraph.d.ts.map +1 -1
- package/dist/animation/AnimationStateGraph.js +73 -1
- package/dist/animation/AnimationStateGraph.js.map +1 -1
- package/dist/animation/AnimationStateMachine.d.ts +26 -0
- package/dist/animation/AnimationStateMachine.d.ts.map +1 -1
- package/dist/animation/AnimationStateMachine.js +32 -0
- package/dist/animation/AnimationStateMachine.js.map +1 -1
- package/dist/animation/Bone.d.ts +4 -0
- package/dist/animation/Bone.d.ts.map +1 -1
- package/dist/animation/Bone.js +3 -0
- package/dist/animation/Bone.js.map +1 -1
- package/dist/animation/FighterAnimationAdapter.d.ts +49 -0
- package/dist/animation/FighterAnimationAdapter.d.ts.map +1 -0
- package/dist/animation/FighterAnimationAdapter.js +71 -0
- package/dist/animation/FighterAnimationAdapter.js.map +1 -0
- package/dist/animation/FootIk.d.ts +77 -0
- package/dist/animation/FootIk.d.ts.map +1 -0
- package/dist/animation/FootIk.js +153 -0
- package/dist/animation/FootIk.js.map +1 -0
- package/dist/animation/HumanoidBoneInference.d.ts +61 -0
- package/dist/animation/HumanoidBoneInference.d.ts.map +1 -0
- package/dist/animation/HumanoidBoneInference.js +239 -0
- package/dist/animation/HumanoidBoneInference.js.map +1 -0
- package/dist/animation/HumanoidRetargeting.d.ts +57 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
- package/dist/animation/HumanoidRetargeting.js +184 -6
- package/dist/animation/HumanoidRetargeting.js.map +1 -1
- package/dist/animation/IK.d.ts +5 -0
- package/dist/animation/IK.d.ts.map +1 -1
- package/dist/animation/IK.js +9 -0
- package/dist/animation/IK.js.map +1 -1
- package/dist/animation/Inertialization.d.ts +65 -0
- package/dist/animation/Inertialization.d.ts.map +1 -0
- package/dist/animation/Inertialization.js +211 -0
- package/dist/animation/Inertialization.js.map +1 -0
- package/dist/animation/LocomotionController.d.ts +5 -0
- package/dist/animation/LocomotionController.d.ts.map +1 -1
- package/dist/animation/LocomotionController.js +3 -0
- package/dist/animation/LocomotionController.js.map +1 -1
- package/dist/animation/LocomotionKit.d.ts +52 -0
- package/dist/animation/LocomotionKit.d.ts.map +1 -0
- package/dist/animation/LocomotionKit.js +38 -0
- package/dist/animation/LocomotionKit.js.map +1 -0
- package/dist/animation/MotionQuality.d.ts +6 -0
- package/dist/animation/MotionQuality.d.ts.map +1 -1
- package/dist/animation/MotionQuality.js +16 -0
- package/dist/animation/MotionQuality.js.map +1 -1
- package/dist/animation/RigQuality.d.ts +31 -0
- package/dist/animation/RigQuality.d.ts.map +1 -0
- package/dist/animation/RigQuality.js +70 -0
- package/dist/animation/RigQuality.js.map +1 -0
- package/dist/animation/SecondaryAnimationFixtures.d.ts.map +1 -1
- package/dist/animation/SecondaryAnimationFixtures.js +1 -3
- package/dist/animation/SecondaryAnimationFixtures.js.map +1 -1
- package/dist/animation/Skeleton.d.ts +16 -1
- package/dist/animation/Skeleton.d.ts.map +1 -1
- package/dist/animation/Skeleton.js +42 -0
- package/dist/animation/Skeleton.js.map +1 -1
- package/dist/animation/SpringBones.d.ts +60 -0
- package/dist/animation/SpringBones.d.ts.map +1 -0
- package/dist/animation/SpringBones.js +173 -0
- package/dist/animation/SpringBones.js.map +1 -0
- package/dist/animation/browser-index.d.ts +12 -3
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +11 -2
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +11 -3
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +10 -2
- package/dist/animation/index.js.map +1 -1
- package/dist/animation/library/performanceStateGraph.d.ts +42 -0
- package/dist/animation/library/performanceStateGraph.d.ts.map +1 -0
- package/dist/animation/library/performanceStateGraph.js +101 -0
- package/dist/animation/library/performanceStateGraph.js.map +1 -0
- package/dist/animation/library/standardHumanoidClips.d.ts +27 -0
- package/dist/animation/library/standardHumanoidClips.d.ts.map +1 -0
- package/dist/animation/library/standardHumanoidClips.js +357 -0
- package/dist/animation/library/standardHumanoidClips.js.map +1 -0
- package/dist/assets/GLTFAnimationRuntime.d.ts +85 -0
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +143 -0
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFAutoFit.d.ts +61 -0
- package/dist/assets/GLTFAutoFit.d.ts.map +1 -0
- package/dist/assets/GLTFAutoFit.js +77 -0
- package/dist/assets/GLTFAutoFit.js.map +1 -0
- package/dist/assets/GLTFLoader.d.ts +21 -0
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +60 -15
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/GLTFRenderResources.d.ts +9 -1
- package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
- package/dist/assets/GLTFRenderResources.js +93 -4
- package/dist/assets/GLTFRenderResources.js.map +1 -1
- package/dist/assets/browser-index.d.ts +6 -4
- package/dist/assets/browser-index.d.ts.map +1 -1
- package/dist/assets/browser-index.js +3 -2
- package/dist/assets/browser-index.js.map +1 -1
- package/dist/assets/index.d.ts +7 -5
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +4 -3
- package/dist/assets/index.js.map +1 -1
- package/dist/audio/AudioBus.d.ts +2 -0
- package/dist/audio/AudioBus.d.ts.map +1 -1
- package/dist/audio/AudioBus.js +6 -0
- package/dist/audio/AudioBus.js.map +1 -1
- package/dist/audio/AudioFileManager.d.ts +23 -0
- package/dist/audio/AudioFileManager.d.ts.map +1 -1
- package/dist/audio/AudioFileManager.js +60 -0
- package/dist/audio/AudioFileManager.js.map +1 -1
- package/dist/audio/AudioMixer.d.ts +43 -0
- package/dist/audio/AudioMixer.d.ts.map +1 -1
- package/dist/audio/AudioMixer.js +43 -0
- package/dist/audio/AudioMixer.js.map +1 -1
- package/dist/audio/AudioTimelineTrack.d.ts +25 -0
- package/dist/audio/AudioTimelineTrack.d.ts.map +1 -1
- package/dist/audio/AudioTimelineTrack.js +59 -0
- package/dist/audio/AudioTimelineTrack.js.map +1 -1
- package/dist/audio/AudioWaveform.d.ts +22 -0
- package/dist/audio/AudioWaveform.d.ts.map +1 -1
- package/dist/audio/AudioWaveform.js +18 -0
- package/dist/audio/AudioWaveform.js.map +1 -1
- package/dist/audio/index.d.ts +8 -7
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +4 -4
- package/dist/audio/index.js.map +1 -1
- package/dist/aura3d-cli/animation-asset-profiles.d.ts +15 -0
- package/dist/aura3d-cli/animation-asset-profiles.d.ts.map +1 -0
- package/dist/aura3d-cli/animation-asset-profiles.js +46 -0
- package/dist/aura3d-cli/animation-asset-profiles.js.map +1 -0
- package/dist/aura3d-cli/animation-asset-validator.d.ts +22 -0
- package/dist/aura3d-cli/animation-asset-validator.d.ts.map +1 -0
- package/dist/aura3d-cli/animation-asset-validator.js +49 -0
- package/dist/aura3d-cli/animation-asset-validator.js.map +1 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts +1 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts.map +1 -1
- package/dist/aura3d-cli/cartoon-asset-profiles.js +8 -4
- package/dist/aura3d-cli/cartoon-asset-profiles.js.map +1 -1
- package/dist/aura3d-cli/cli.js +78 -9
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/game-asset-validator.d.ts +4 -4
- package/dist/aura3d-cli/game-asset-validator.d.ts.map +1 -1
- package/dist/aura3d-cli/game-asset-validator.js +2 -2
- package/dist/aura3d-cli/game-asset-validator.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +69 -8
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +261 -17
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +30 -4
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +320 -51
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/create-aura3d/index.d.ts +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +6 -4
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/editor-runtime/AnimationSceneEditor.d.ts +111 -0
- package/dist/editor-runtime/AnimationSceneEditor.d.ts.map +1 -0
- package/dist/editor-runtime/AnimationSceneEditor.js +285 -0
- package/dist/editor-runtime/AnimationSceneEditor.js.map +1 -0
- package/dist/editor-runtime/AssetDropZone.d.ts +10 -8
- package/dist/editor-runtime/AssetDropZone.d.ts.map +1 -1
- package/dist/editor-runtime/AssetDropZone.js +14 -0
- package/dist/editor-runtime/AssetDropZone.js.map +1 -1
- package/dist/editor-runtime/CameraPathEditor.d.ts +48 -0
- package/dist/editor-runtime/CameraPathEditor.d.ts.map +1 -0
- package/dist/editor-runtime/CameraPathEditor.js +181 -0
- package/dist/editor-runtime/CameraPathEditor.js.map +1 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts +24 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts.map +1 -1
- package/dist/editor-runtime/CartoonSceneEditor.js +35 -2
- package/dist/editor-runtime/CartoonSceneEditor.js.map +1 -1
- package/dist/editor-runtime/EpisodeReviewPanel.d.ts +67 -0
- package/dist/editor-runtime/EpisodeReviewPanel.d.ts.map +1 -0
- package/dist/editor-runtime/EpisodeReviewPanel.js +162 -0
- package/dist/editor-runtime/EpisodeReviewPanel.js.map +1 -0
- package/dist/editor-runtime/EventTrackEditor.d.ts +54 -0
- package/dist/editor-runtime/EventTrackEditor.d.ts.map +1 -0
- package/dist/editor-runtime/EventTrackEditor.js +124 -0
- package/dist/editor-runtime/EventTrackEditor.js.map +1 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.d.ts +77 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.d.ts.map +1 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.js +162 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.js.map +1 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.d.ts +81 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.d.ts.map +1 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.js +180 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.js.map +1 -0
- package/dist/editor-runtime/RenderQueuePanel.d.ts +38 -0
- package/dist/editor-runtime/RenderQueuePanel.d.ts.map +1 -0
- package/dist/editor-runtime/RenderQueuePanel.js +72 -0
- package/dist/editor-runtime/RenderQueuePanel.js.map +1 -0
- package/dist/editor-runtime/SceneOutliner.d.ts +3 -3
- package/dist/editor-runtime/SceneOutliner.d.ts.map +1 -1
- package/dist/editor-runtime/SceneOutliner.js.map +1 -1
- package/dist/editor-runtime/TimelineEditorController.d.ts +10 -0
- package/dist/editor-runtime/TimelineEditorController.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineEditorController.js +28 -3
- package/dist/editor-runtime/TimelineEditorController.js.map +1 -1
- package/dist/editor-runtime/TimelineUI.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineUI.js +5 -0
- package/dist/editor-runtime/TimelineUI.js.map +1 -1
- package/dist/editor-runtime/VisualReviewDashboard.d.ts +43 -0
- package/dist/editor-runtime/VisualReviewDashboard.d.ts.map +1 -0
- package/dist/editor-runtime/VisualReviewDashboard.js +47 -0
- package/dist/editor-runtime/VisualReviewDashboard.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +18 -4
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +8 -1
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AnimationAssetManifest.d.ts +50 -0
- package/dist/engine/agent-api/AnimationAssetManifest.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationAssetManifest.js +65 -0
- package/dist/engine/agent-api/AnimationAssetManifest.js.map +1 -0
- package/dist/engine/agent-api/AnimationDirector.d.ts +120 -0
- package/dist/engine/agent-api/AnimationDirector.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationDirector.js +432 -0
- package/dist/engine/agent-api/AnimationDirector.js.map +1 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.d.ts +51 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.js +79 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.js.map +1 -0
- package/dist/engine/agent-api/AnimationMotionQuality.d.ts +83 -0
- package/dist/engine/agent-api/AnimationMotionQuality.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationMotionQuality.js +128 -0
- package/dist/engine/agent-api/AnimationMotionQuality.js.map +1 -0
- package/dist/engine/agent-api/AnimationPerformance.d.ts +150 -0
- package/dist/engine/agent-api/AnimationPerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationPerformance.js +345 -0
- package/dist/engine/agent-api/AnimationPerformance.js.map +1 -0
- package/dist/engine/agent-api/AnimationRenderQueue.d.ts +143 -0
- package/dist/engine/agent-api/AnimationRenderQueue.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationRenderQueue.js +410 -0
- package/dist/engine/agent-api/AnimationRenderQueue.js.map +1 -0
- package/dist/engine/agent-api/AnimationRouteProof.d.ts +112 -0
- package/dist/engine/agent-api/AnimationRouteProof.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationRouteProof.js +127 -0
- package/dist/engine/agent-api/AnimationRouteProof.js.map +1 -0
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts +43 -5
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts.map +1 -1
- package/dist/engine/agent-api/AssetLibraryBrowser.js +56 -4
- package/dist/engine/agent-api/AssetLibraryBrowser.js.map +1 -1
- package/dist/engine/agent-api/AudioMuxer.d.ts +4 -0
- package/dist/engine/agent-api/AudioMuxer.d.ts.map +1 -1
- package/dist/engine/agent-api/AudioMuxer.js +6 -0
- package/dist/engine/agent-api/AudioMuxer.js.map +1 -1
- package/dist/engine/agent-api/AudioVisemeAnalyzer.d.ts +4 -0
- package/dist/engine/agent-api/AudioVisemeAnalyzer.d.ts.map +1 -1
- package/dist/engine/agent-api/AudioVisemeAnalyzer.js +3 -0
- package/dist/engine/agent-api/AudioVisemeAnalyzer.js.map +1 -1
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts +7 -7
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -1
- package/dist/engine/agent-api/AuraVoiceBridge.js +5 -5
- package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -1
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts +31 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts.map +1 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.js +20 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.js.map +1 -0
- package/dist/engine/agent-api/BodyLanguageLibrary.d.ts +3 -3
- package/dist/engine/agent-api/BodyLanguageLibrary.d.ts.map +1 -1
- package/dist/engine/agent-api/BodyLanguageLibrary.js.map +1 -1
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts +65 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js +42 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js.map +1 -0
- package/dist/engine/agent-api/CameraPresetLibrary.d.ts +1 -1
- package/dist/engine/agent-api/CameraPresetLibrary.d.ts.map +1 -1
- package/dist/engine/agent-api/CameraPresetLibrary.js +18 -0
- package/dist/engine/agent-api/CameraPresetLibrary.js.map +1 -1
- package/dist/engine/agent-api/CaptionExporter.d.ts +5 -1
- package/dist/engine/agent-api/CaptionExporter.d.ts.map +1 -1
- package/dist/engine/agent-api/CaptionExporter.js +18 -3
- package/dist/engine/agent-api/CaptionExporter.js.map +1 -1
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts +19 -1
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonAssetManifest.js +62 -1
- package/dist/engine/agent-api/CartoonAssetManifest.js.map +1 -1
- package/dist/engine/agent-api/CartoonDirector.d.ts +26 -1
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonDirector.js +92 -2
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -1
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts +51 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js +79 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts +83 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js +128 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonPerformance.js +28 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -1
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +11 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonRenderQueue.js +25 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -1
- package/dist/engine/agent-api/CartoonRouteProof.d.ts +112 -0
- package/dist/engine/agent-api/CartoonRouteProof.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRouteProof.js +127 -0
- package/dist/engine/agent-api/CartoonRouteProof.js.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts +2 -2
- package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -1
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts +55 -0
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/CloudRenderAdapter.js +75 -0
- package/dist/engine/agent-api/CloudRenderAdapter.js.map +1 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.d.ts +54 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.d.ts.map +1 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.js +107 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.js.map +1 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.d.ts +129 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.js +306 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/FrameEncoder.d.ts +23 -6
- package/dist/engine/agent-api/FrameEncoder.d.ts.map +1 -1
- package/dist/engine/agent-api/FrameEncoder.js +14 -0
- package/dist/engine/agent-api/FrameEncoder.js.map +1 -1
- package/dist/engine/agent-api/GameAssetValidation.d.ts +1 -1
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -1
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts +19 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js +79 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/PerformanceBlender.d.ts +23 -4
- package/dist/engine/agent-api/PerformanceBlender.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformanceBlender.js +33 -0
- package/dist/engine/agent-api/PerformanceBlender.js.map +1 -1
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts +65 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts.map +1 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.js +131 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.js.map +1 -0
- package/dist/engine/agent-api/PerformancePoseEditor.d.ts +8 -8
- package/dist/engine/agent-api/PerformancePoseEditor.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformancePoseEditor.js.map +1 -1
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts +34 -0
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/PngSequenceEncoder.js +75 -0
- package/dist/engine/agent-api/PngSequenceEncoder.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +27 -2
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -1
- package/dist/engine/agent-api/PromptAnimationContract.js +60 -1
- package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -1
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +2 -2
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -1
- package/dist/engine/agent-api/PublishingPipeline.d.ts +8 -3
- package/dist/engine/agent-api/PublishingPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/PublishingPipeline.js +17 -3
- package/dist/engine/agent-api/PublishingPipeline.js.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +2 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts +73 -0
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js +74 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -0
- package/dist/engine/agent-api/SceneSequencer.d.ts +13 -0
- package/dist/engine/agent-api/SceneSequencer.d.ts.map +1 -1
- package/dist/engine/agent-api/SceneSequencer.js +40 -0
- package/dist/engine/agent-api/SceneSequencer.js.map +1 -1
- package/dist/engine/agent-api/ShotTimeline.d.ts +3 -3
- package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -1
- package/dist/engine/agent-api/ShotTimeline.js.map +1 -1
- package/dist/engine/agent-api/ThumbnailGenerator.d.ts +4 -4
- package/dist/engine/agent-api/ThumbnailGenerator.d.ts.map +1 -1
- package/dist/engine/agent-api/ThumbnailGenerator.js.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.d.ts +23 -9
- package/dist/engine/agent-api/VideoExportPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.js +32 -1
- package/dist/engine/agent-api/VideoExportPipeline.js.map +1 -1
- package/dist/engine/agent-api/VisemeController.d.ts +12 -0
- package/dist/engine/agent-api/VisemeController.d.ts.map +1 -1
- package/dist/engine/agent-api/VisemeController.js +23 -0
- package/dist/engine/agent-api/VisemeController.js.map +1 -1
- package/dist/engine/agent-api/WebCodecsFrameEncoder.d.ts +21 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.js +94 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/YouTubeMetadataGenerator.d.ts +2 -2
- package/dist/engine/agent-api/YouTubeMetadataGenerator.d.ts.map +1 -1
- package/dist/engine/agent-api/YouTubeMetadataGenerator.js +1 -1
- package/dist/engine/agent-api/YouTubeMetadataGenerator.js.map +1 -1
- package/dist/engine/agent-api/YouTubeUploadAdapter.d.ts +48 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.js +114 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.js.map +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
- package/dist/engine/agent-api/index.d.ts +52 -18
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +51 -15
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/animation-studio/animation-episode-validator.d.ts +24 -0
- package/dist/engine/animation-studio/animation-episode-validator.d.ts.map +1 -0
- package/dist/engine/animation-studio/animation-episode-validator.js +74 -0
- package/dist/engine/animation-studio/animation-episode-validator.js.map +1 -0
- package/dist/engine/animation-studio/director-heuristics.d.ts +73 -0
- package/dist/engine/animation-studio/director-heuristics.d.ts.map +1 -0
- package/dist/engine/animation-studio/director-heuristics.js +149 -0
- package/dist/engine/animation-studio/director-heuristics.js.map +1 -0
- package/dist/engine/animation-studio/episode-document.d.ts +214 -0
- package/dist/engine/animation-studio/episode-document.d.ts.map +1 -0
- package/dist/engine/animation-studio/episode-document.js +143 -0
- package/dist/engine/animation-studio/episode-document.js.map +1 -0
- package/dist/engine/animation-studio/index.d.ts +20 -0
- package/dist/engine/animation-studio/index.d.ts.map +1 -0
- package/dist/engine/animation-studio/index.js +20 -0
- package/dist/engine/animation-studio/index.js.map +1 -0
- package/dist/engine/animation-studio/scene-tools.d.ts +34 -0
- package/dist/engine/animation-studio/scene-tools.d.ts.map +1 -0
- package/dist/engine/animation-studio/scene-tools.js +95 -0
- package/dist/engine/animation-studio/scene-tools.js.map +1 -0
- package/dist/engine/index.d.ts +2 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +13 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +8 -0
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/physics/Raycast.d.ts +17 -0
- package/dist/physics/Raycast.d.ts.map +1 -1
- package/dist/physics/Raycast.js +16 -0
- package/dist/physics/Raycast.js.map +1 -1
- package/dist/rendering/ForwardPass.js +18 -13
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/FrameVisualMetrics.d.ts +19 -0
- package/dist/rendering/FrameVisualMetrics.d.ts.map +1 -1
- package/dist/rendering/FrameVisualMetrics.js +57 -0
- package/dist/rendering/FrameVisualMetrics.js.map +1 -1
- package/dist/rendering/MorphTargetPlan.d.ts +42 -0
- package/dist/rendering/MorphTargetPlan.d.ts.map +1 -0
- package/dist/rendering/MorphTargetPlan.js +129 -0
- package/dist/rendering/MorphTargetPlan.js.map +1 -0
- package/dist/rendering/MorphUnlitMaterial.d.ts.map +1 -1
- package/dist/rendering/MorphUnlitMaterial.js +7 -1
- package/dist/rendering/MorphUnlitMaterial.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +34 -6
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/WebGPUDevice.d.ts +2 -0
- package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
- package/dist/rendering/WebGPUDevice.js +69 -12
- package/dist/rendering/WebGPUDevice.js.map +1 -1
- package/dist/rendering/animation/AnimationMaterialStyle.d.ts +19 -0
- package/dist/rendering/animation/AnimationMaterialStyle.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationMaterialStyle.js +13 -0
- package/dist/rendering/animation/AnimationMaterialStyle.js.map +1 -0
- package/dist/rendering/animation/AnimationRenderPreset.d.ts +36 -0
- package/dist/rendering/animation/AnimationRenderPreset.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationRenderPreset.js +23 -0
- package/dist/rendering/animation/AnimationRenderPreset.js.map +1 -0
- package/dist/rendering/animation/AnimationToonMaterial.d.ts +130 -0
- package/dist/rendering/animation/AnimationToonMaterial.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationToonMaterial.js +303 -0
- package/dist/rendering/animation/AnimationToonMaterial.js.map +1 -0
- package/dist/rendering/animation/AnimationVisualQuality.d.ts +28 -0
- package/dist/rendering/animation/AnimationVisualQuality.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationVisualQuality.js +39 -0
- package/dist/rendering/animation/AnimationVisualQuality.js.map +1 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.d.ts +79 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.d.ts.map +1 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.js +88 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.js.map +1 -0
- package/dist/rendering/animation/index.d.ts +6 -0
- package/dist/rendering/animation/index.d.ts.map +1 -0
- package/dist/rendering/animation/index.js +6 -0
- package/dist/rendering/animation/index.js.map +1 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts +19 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js +13 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts +36 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js +23 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js.map +1 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.d.ts +130 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.js +303 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.js.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts +28 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js +39 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js.map +1 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts +79 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.js +88 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.js.map +1 -0
- package/dist/rendering/cartoon/index.d.ts +6 -0
- package/dist/rendering/cartoon/index.d.ts.map +1 -0
- package/dist/rendering/cartoon/index.js +6 -0
- package/dist/rendering/cartoon/index.js.map +1 -0
- package/dist/rendering/index.d.ts +6 -3
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +4 -2
- package/dist/rendering/index.js.map +1 -1
- package/dist/scripting/AnimationNodeCategories.d.ts +3 -0
- package/dist/scripting/AnimationNodeCategories.d.ts.map +1 -0
- package/dist/scripting/AnimationNodeCategories.js +9 -0
- package/dist/scripting/AnimationNodeCategories.js.map +1 -0
- package/dist/scripting/AnimationVisualNodes.d.ts +3 -0
- package/dist/scripting/AnimationVisualNodes.d.ts.map +1 -0
- package/dist/scripting/AnimationVisualNodes.js +41 -0
- package/dist/scripting/AnimationVisualNodes.js.map +1 -0
- package/dist/scripting/VisualGraphExecutor.js +24 -24
- package/dist/scripting/VisualGraphExecutor.js.map +1 -1
- package/dist/scripting/VisualNodeCatalog.js +2 -2
- package/dist/scripting/VisualNodeCatalog.js.map +1 -1
- package/dist/scripting/index.d.ts +3 -3
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js +2 -2
- package/dist/scripting/index.js.map +1 -1
- package/package.json +162 -120
- package/templates/product-viewer/tests/screenshot.spec.ts +8 -16
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { AnimationClipEventType, SerializedAnimationEventTracks } from "@aura3d/animation";
|
|
2
|
+
export interface EventMarkerView {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly time: number;
|
|
5
|
+
readonly duration?: number;
|
|
6
|
+
readonly type: AnimationClipEventType;
|
|
7
|
+
readonly selected: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface EventTrackLane {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly type: AnimationClipEventType;
|
|
12
|
+
readonly markers: readonly EventMarkerView[];
|
|
13
|
+
}
|
|
14
|
+
export interface EventTrackEditorOptions {
|
|
15
|
+
readonly clipId: string;
|
|
16
|
+
readonly duration: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AddEventMarkerOptions {
|
|
19
|
+
readonly id?: string;
|
|
20
|
+
readonly type?: AnimationClipEventType;
|
|
21
|
+
/** Window length (seconds). >0 makes the marker an active-frame window (e.g. hitbox on/off). */
|
|
22
|
+
readonly duration?: number;
|
|
23
|
+
readonly payload?: unknown;
|
|
24
|
+
readonly tags?: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Timeline event-track authoring controller. Deterministic: marker ids come from a monotonic
|
|
28
|
+
* counter (no `Date.now`/`Math.random`), so undo/redo and serialization are reproducible.
|
|
29
|
+
*/
|
|
30
|
+
export declare class EventTrackEditor {
|
|
31
|
+
readonly clipId: string;
|
|
32
|
+
duration: number;
|
|
33
|
+
private readonly order;
|
|
34
|
+
private readonly lanesMap;
|
|
35
|
+
private selectedId;
|
|
36
|
+
private idCounter;
|
|
37
|
+
constructor(options: EventTrackEditorOptions);
|
|
38
|
+
addTrack(name: string, type?: AnimationClipEventType): this;
|
|
39
|
+
removeTrack(name: string): this;
|
|
40
|
+
/** Add a marker to a lane (auto-creates the lane). Returns the new marker id. */
|
|
41
|
+
addMarker(trackName: string, time: number, options?: AddEventMarkerOptions): string;
|
|
42
|
+
/** Move an existing marker to a new time. */
|
|
43
|
+
moveMarker(trackName: string, markerId: string, time: number): this;
|
|
44
|
+
/** Delete a marker. */
|
|
45
|
+
removeMarker(trackName: string, markerId: string): this;
|
|
46
|
+
select(markerId: string | undefined): this;
|
|
47
|
+
markerCount(): number;
|
|
48
|
+
/** View-model for the timeline UI: lanes with marker positions + selection state. */
|
|
49
|
+
lanes(): readonly EventTrackLane[];
|
|
50
|
+
/** Serialize to the canonical `animation-event-tracks/v1` shape. */
|
|
51
|
+
serialize(): SerializedAnimationEventTracks;
|
|
52
|
+
}
|
|
53
|
+
export declare function createEventTrackEditor(options: EventTrackEditorOptions): EventTrackEditor;
|
|
54
|
+
//# sourceMappingURL=EventTrackEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTrackEditor.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EventTrackEditor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,8BAA8B,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IACvC,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAOD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAK;gBAEV,OAAO,EAAE,uBAAuB;IAQ5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAAiC,GAAG,IAAI;IAQrE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,iFAAiF;IACjF,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM;IAoBvF,6CAA6C;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAYnE,uBAAuB;IACvB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IASvD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK1C,WAAW,IAAI,MAAM;IAMrB,qFAAqF;IACrF,KAAK,IAAI,SAAS,cAAc,EAAE;IAiBlC,oEAAoE;IACpE,SAAS,IAAI,8BAA8B;CAO5C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAEzF"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Editor authoring controller for animation event tracks (T2.2). Lets a timeline UI add / move /
|
|
2
|
+
// delete typed markers on named lanes (hitbox active-frames, footsteps, VFX, generic markers) and
|
|
3
|
+
// serialize to the canonical `animation-event-tracks/v1` shape that `@aura3d/animation`'s
|
|
4
|
+
// `deserializeAnimationEventTracks` / `sampleClipEvents` consume — so authored tracks drive gameplay
|
|
5
|
+
// (hitbox windows) and playback (footstep/VFX triggers) deterministically.
|
|
6
|
+
//
|
|
7
|
+
// Type-only imports from `@aura3d/animation` keep this controller free of any runtime coupling to
|
|
8
|
+
// that package (the types are erased at build time); the serialized output is verified to round-trip
|
|
9
|
+
// through the animation package's deserializer in tests.
|
|
10
|
+
/**
|
|
11
|
+
* Timeline event-track authoring controller. Deterministic: marker ids come from a monotonic
|
|
12
|
+
* counter (no `Date.now`/`Math.random`), so undo/redo and serialization are reproducible.
|
|
13
|
+
*/
|
|
14
|
+
export class EventTrackEditor {
|
|
15
|
+
clipId;
|
|
16
|
+
duration;
|
|
17
|
+
order = [];
|
|
18
|
+
lanesMap = new Map();
|
|
19
|
+
selectedId;
|
|
20
|
+
idCounter = 0;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
if (!Number.isFinite(options.duration) || options.duration < 0) {
|
|
23
|
+
throw new Error("EventTrackEditor duration must be a finite, non-negative number.");
|
|
24
|
+
}
|
|
25
|
+
this.clipId = options.clipId;
|
|
26
|
+
this.duration = options.duration;
|
|
27
|
+
}
|
|
28
|
+
addTrack(name, type = "marker") {
|
|
29
|
+
if (!this.lanesMap.has(name)) {
|
|
30
|
+
this.lanesMap.set(name, { type, markers: [] });
|
|
31
|
+
this.order.push(name);
|
|
32
|
+
}
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
removeTrack(name) {
|
|
36
|
+
if (this.lanesMap.delete(name))
|
|
37
|
+
this.order.splice(this.order.indexOf(name), 1);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/** Add a marker to a lane (auto-creates the lane). Returns the new marker id. */
|
|
41
|
+
addMarker(trackName, time, options = {}) {
|
|
42
|
+
if (!Number.isFinite(time) || time < 0) {
|
|
43
|
+
throw new Error("Event marker time must be a finite, non-negative number.");
|
|
44
|
+
}
|
|
45
|
+
this.addTrack(trackName, options.type);
|
|
46
|
+
const lane = this.lanesMap.get(trackName);
|
|
47
|
+
const id = options.id ?? `${trackName}#${this.idCounter++}`;
|
|
48
|
+
lane.markers.push({
|
|
49
|
+
id,
|
|
50
|
+
name: trackName,
|
|
51
|
+
type: options.type ?? lane.type,
|
|
52
|
+
time,
|
|
53
|
+
...(options.duration !== undefined ? { duration: options.duration } : {}),
|
|
54
|
+
...(options.payload !== undefined ? { payload: options.payload } : {}),
|
|
55
|
+
...(options.tags !== undefined ? { tags: options.tags } : {})
|
|
56
|
+
});
|
|
57
|
+
lane.markers.sort((a, b) => a.time - b.time);
|
|
58
|
+
return id;
|
|
59
|
+
}
|
|
60
|
+
/** Move an existing marker to a new time. */
|
|
61
|
+
moveMarker(trackName, markerId, time) {
|
|
62
|
+
if (!Number.isFinite(time) || time < 0) {
|
|
63
|
+
throw new Error("Event marker time must be a finite, non-negative number.");
|
|
64
|
+
}
|
|
65
|
+
const lane = this.lanesMap.get(trackName);
|
|
66
|
+
const index = lane?.markers.findIndex((m) => m.id === markerId) ?? -1;
|
|
67
|
+
if (!lane || index < 0)
|
|
68
|
+
throw new Error(`Marker ${markerId} not found on track ${trackName}.`);
|
|
69
|
+
lane.markers[index] = { ...lane.markers[index], time };
|
|
70
|
+
lane.markers.sort((a, b) => a.time - b.time);
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
/** Delete a marker. */
|
|
74
|
+
removeMarker(trackName, markerId) {
|
|
75
|
+
const lane = this.lanesMap.get(trackName);
|
|
76
|
+
if (!lane)
|
|
77
|
+
return this;
|
|
78
|
+
const index = lane.markers.findIndex((m) => m.id === markerId);
|
|
79
|
+
if (index >= 0)
|
|
80
|
+
lane.markers.splice(index, 1);
|
|
81
|
+
if (this.selectedId === markerId)
|
|
82
|
+
this.selectedId = undefined;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
select(markerId) {
|
|
86
|
+
this.selectedId = markerId;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
markerCount() {
|
|
90
|
+
let count = 0;
|
|
91
|
+
for (const lane of this.lanesMap.values())
|
|
92
|
+
count += lane.markers.length;
|
|
93
|
+
return count;
|
|
94
|
+
}
|
|
95
|
+
/** View-model for the timeline UI: lanes with marker positions + selection state. */
|
|
96
|
+
lanes() {
|
|
97
|
+
return this.order.map((name) => {
|
|
98
|
+
const lane = this.lanesMap.get(name);
|
|
99
|
+
return {
|
|
100
|
+
name,
|
|
101
|
+
type: lane.type,
|
|
102
|
+
markers: lane.markers.map((m) => ({
|
|
103
|
+
id: m.id,
|
|
104
|
+
time: m.time,
|
|
105
|
+
...(m.duration !== undefined ? { duration: m.duration } : {}),
|
|
106
|
+
type: m.type ?? lane.type,
|
|
107
|
+
selected: m.id === this.selectedId
|
|
108
|
+
}))
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/** Serialize to the canonical `animation-event-tracks/v1` shape. */
|
|
113
|
+
serialize() {
|
|
114
|
+
const tracks = this.order.map((name) => {
|
|
115
|
+
const lane = this.lanesMap.get(name);
|
|
116
|
+
return { name, type: lane.type, markers: lane.markers.map((m) => ({ ...m })) };
|
|
117
|
+
});
|
|
118
|
+
return { schema: "animation-event-tracks/v1", clipId: this.clipId, duration: this.duration, tracks };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export function createEventTrackEditor(options) {
|
|
122
|
+
return new EventTrackEditor(options);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=EventTrackEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventTrackEditor.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/EventTrackEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export type ReviewParticipantRole = "owner" | "reviewer" | "animator" | "audio" | "viewer";
|
|
2
|
+
export type ReviewDecisionStatus = "pending" | "approved" | "changes-requested";
|
|
3
|
+
export type ReviewWorkflowStatus = "draft" | "needs-review" | "changes-requested" | "approved";
|
|
4
|
+
export interface ReviewParticipant {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly role: ReviewParticipantRole;
|
|
8
|
+
readonly active?: boolean | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface ReviewThread {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly authorId: string;
|
|
13
|
+
readonly text: string;
|
|
14
|
+
readonly time?: number | undefined;
|
|
15
|
+
readonly frame?: number | undefined;
|
|
16
|
+
readonly assignedTo?: string | undefined;
|
|
17
|
+
readonly resolved: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ReviewDecision {
|
|
20
|
+
readonly reviewerId: string;
|
|
21
|
+
readonly status: ReviewDecisionStatus;
|
|
22
|
+
readonly at: string;
|
|
23
|
+
readonly note?: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
export interface MultiUserReviewWorkflowState {
|
|
26
|
+
readonly packageId: string;
|
|
27
|
+
readonly status?: ReviewWorkflowStatus | undefined;
|
|
28
|
+
readonly requiredReviewerCount?: number | undefined;
|
|
29
|
+
readonly participants: readonly ReviewParticipant[];
|
|
30
|
+
readonly threads: readonly ReviewThread[];
|
|
31
|
+
readonly decisions: readonly ReviewDecision[];
|
|
32
|
+
}
|
|
33
|
+
export interface MultiUserReviewWorkflowSnapshot {
|
|
34
|
+
readonly kind: "multi-user-review-workflow";
|
|
35
|
+
readonly packageId: string;
|
|
36
|
+
readonly status: ReviewWorkflowStatus;
|
|
37
|
+
readonly participantCount: number;
|
|
38
|
+
readonly activeParticipantCount: number;
|
|
39
|
+
readonly reviewerCount: number;
|
|
40
|
+
readonly requiredReviewerCount: number;
|
|
41
|
+
readonly approvedReviewerCount: number;
|
|
42
|
+
readonly changeRequestCount: number;
|
|
43
|
+
readonly threadCount: number;
|
|
44
|
+
readonly unresolvedThreadCount: number;
|
|
45
|
+
readonly assignedThreadCount: number;
|
|
46
|
+
readonly canPublish: boolean;
|
|
47
|
+
readonly participants: readonly ReviewParticipant[];
|
|
48
|
+
readonly threads: readonly ReviewThread[];
|
|
49
|
+
readonly decisions: readonly ReviewDecision[];
|
|
50
|
+
readonly evidence: {
|
|
51
|
+
readonly multiUserReview: boolean;
|
|
52
|
+
readonly assignmentWorkflow: boolean;
|
|
53
|
+
readonly reviewerQuorum: boolean;
|
|
54
|
+
readonly publishBlockedByOpenThreads: boolean;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export declare class MultiUserReviewWorkflow {
|
|
58
|
+
private packageId;
|
|
59
|
+
private status;
|
|
60
|
+
private requiredReviewerCount;
|
|
61
|
+
private participants;
|
|
62
|
+
private threads;
|
|
63
|
+
private decisions;
|
|
64
|
+
constructor(state: MultiUserReviewWorkflowState);
|
|
65
|
+
addParticipant(participant: ReviewParticipant): MultiUserReviewWorkflowSnapshot;
|
|
66
|
+
addThread(thread: ReviewThread): MultiUserReviewWorkflowSnapshot;
|
|
67
|
+
assignThread(threadId: string, participantId: string): MultiUserReviewWorkflowSnapshot;
|
|
68
|
+
resolveThread(threadId: string): MultiUserReviewWorkflowSnapshot;
|
|
69
|
+
recordDecision(decision: ReviewDecision): MultiUserReviewWorkflowSnapshot;
|
|
70
|
+
markNeedsReview(): MultiUserReviewWorkflowSnapshot;
|
|
71
|
+
serialize(): MultiUserReviewWorkflowState;
|
|
72
|
+
snapshot(): MultiUserReviewWorkflowSnapshot;
|
|
73
|
+
private requireParticipant;
|
|
74
|
+
private requireThread;
|
|
75
|
+
}
|
|
76
|
+
export declare function createMultiUserReviewWorkflow(state: MultiUserReviewWorkflowState): MultiUserReviewWorkflow;
|
|
77
|
+
//# sourceMappingURL=MultiUserReviewWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiUserReviewWorkflow.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/MultiUserReviewWorkflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
export class MultiUserReviewWorkflow {
|
|
2
|
+
packageId;
|
|
3
|
+
status;
|
|
4
|
+
requiredReviewerCount;
|
|
5
|
+
participants = new Map();
|
|
6
|
+
threads = new Map();
|
|
7
|
+
decisions = new Map();
|
|
8
|
+
constructor(state) {
|
|
9
|
+
this.packageId = nonEmpty(state.packageId, "Review package id");
|
|
10
|
+
this.status = state.status ?? "needs-review";
|
|
11
|
+
this.requiredReviewerCount = Math.max(1, Math.floor(state.requiredReviewerCount ?? 1));
|
|
12
|
+
for (const participant of state.participants)
|
|
13
|
+
this.addParticipant(participant);
|
|
14
|
+
for (const thread of state.threads)
|
|
15
|
+
this.addThread(thread);
|
|
16
|
+
for (const decision of state.decisions)
|
|
17
|
+
this.recordDecision(decision);
|
|
18
|
+
}
|
|
19
|
+
addParticipant(participant) {
|
|
20
|
+
const clean = sanitizeParticipant(participant);
|
|
21
|
+
this.participants.set(clean.id, clean);
|
|
22
|
+
return this.snapshot();
|
|
23
|
+
}
|
|
24
|
+
addThread(thread) {
|
|
25
|
+
const clean = sanitizeThread(thread);
|
|
26
|
+
this.requireParticipant(clean.authorId);
|
|
27
|
+
if (clean.assignedTo)
|
|
28
|
+
this.requireParticipant(clean.assignedTo);
|
|
29
|
+
this.threads.set(clean.id, clean);
|
|
30
|
+
if (!clean.resolved && this.status === "approved")
|
|
31
|
+
this.status = "changes-requested";
|
|
32
|
+
return this.snapshot();
|
|
33
|
+
}
|
|
34
|
+
assignThread(threadId, participantId) {
|
|
35
|
+
this.requireParticipant(participantId);
|
|
36
|
+
const thread = this.requireThread(threadId);
|
|
37
|
+
this.threads.set(threadId, { ...thread, assignedTo: participantId });
|
|
38
|
+
return this.snapshot();
|
|
39
|
+
}
|
|
40
|
+
resolveThread(threadId) {
|
|
41
|
+
const thread = this.requireThread(threadId);
|
|
42
|
+
this.threads.set(threadId, { ...thread, resolved: true });
|
|
43
|
+
return this.snapshot();
|
|
44
|
+
}
|
|
45
|
+
recordDecision(decision) {
|
|
46
|
+
const clean = sanitizeDecision(decision);
|
|
47
|
+
const participant = this.requireParticipant(clean.reviewerId);
|
|
48
|
+
if (participant.role !== "reviewer" && participant.role !== "owner") {
|
|
49
|
+
throw new Error(`Review participant "${clean.reviewerId}" is not allowed to approve or request changes.`);
|
|
50
|
+
}
|
|
51
|
+
this.decisions.set(clean.reviewerId, clean);
|
|
52
|
+
if (clean.status === "changes-requested")
|
|
53
|
+
this.status = "changes-requested";
|
|
54
|
+
else if (this.snapshot().canPublish)
|
|
55
|
+
this.status = "approved";
|
|
56
|
+
return this.snapshot();
|
|
57
|
+
}
|
|
58
|
+
markNeedsReview() {
|
|
59
|
+
this.status = "needs-review";
|
|
60
|
+
return this.snapshot();
|
|
61
|
+
}
|
|
62
|
+
serialize() {
|
|
63
|
+
return {
|
|
64
|
+
packageId: this.packageId,
|
|
65
|
+
status: this.status,
|
|
66
|
+
requiredReviewerCount: this.requiredReviewerCount,
|
|
67
|
+
participants: [...this.participants.values()],
|
|
68
|
+
threads: [...this.threads.values()],
|
|
69
|
+
decisions: [...this.decisions.values()]
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
snapshot() {
|
|
73
|
+
const participants = [...this.participants.values()];
|
|
74
|
+
const threads = [...this.threads.values()];
|
|
75
|
+
const decisions = [...this.decisions.values()];
|
|
76
|
+
const reviewerCount = participants.filter((participant) => participant.role === "owner" || participant.role === "reviewer").length;
|
|
77
|
+
const approvedReviewerCount = decisions.filter((decision) => decision.status === "approved").length;
|
|
78
|
+
const changeRequestCount = decisions.filter((decision) => decision.status === "changes-requested").length;
|
|
79
|
+
const unresolvedThreadCount = threads.filter((thread) => !thread.resolved).length;
|
|
80
|
+
const canPublish = approvedReviewerCount >= this.requiredReviewerCount && changeRequestCount === 0 && unresolvedThreadCount === 0;
|
|
81
|
+
const status = canPublish ? "approved" : changeRequestCount > 0 ? "changes-requested" : this.status === "draft" ? "draft" : "needs-review";
|
|
82
|
+
return {
|
|
83
|
+
kind: "multi-user-review-workflow",
|
|
84
|
+
packageId: this.packageId,
|
|
85
|
+
status,
|
|
86
|
+
participantCount: participants.length,
|
|
87
|
+
activeParticipantCount: participants.filter((participant) => participant.active !== false).length,
|
|
88
|
+
reviewerCount,
|
|
89
|
+
requiredReviewerCount: this.requiredReviewerCount,
|
|
90
|
+
approvedReviewerCount,
|
|
91
|
+
changeRequestCount,
|
|
92
|
+
threadCount: threads.length,
|
|
93
|
+
unresolvedThreadCount,
|
|
94
|
+
assignedThreadCount: threads.filter((thread) => Boolean(thread.assignedTo)).length,
|
|
95
|
+
canPublish,
|
|
96
|
+
participants,
|
|
97
|
+
threads,
|
|
98
|
+
decisions,
|
|
99
|
+
evidence: {
|
|
100
|
+
multiUserReview: participants.length > 1,
|
|
101
|
+
assignmentWorkflow: threads.some((thread) => Boolean(thread.assignedTo)),
|
|
102
|
+
reviewerQuorum: approvedReviewerCount >= this.requiredReviewerCount,
|
|
103
|
+
publishBlockedByOpenThreads: unresolvedThreadCount > 0
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
requireParticipant(id) {
|
|
108
|
+
const participant = this.participants.get(id);
|
|
109
|
+
if (!participant)
|
|
110
|
+
throw new Error(`Unknown review participant: ${id}`);
|
|
111
|
+
return participant;
|
|
112
|
+
}
|
|
113
|
+
requireThread(id) {
|
|
114
|
+
const thread = this.threads.get(id);
|
|
115
|
+
if (!thread)
|
|
116
|
+
throw new Error(`Unknown review thread: ${id}`);
|
|
117
|
+
return thread;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function createMultiUserReviewWorkflow(state) {
|
|
121
|
+
return new MultiUserReviewWorkflow(state);
|
|
122
|
+
}
|
|
123
|
+
function sanitizeParticipant(participant) {
|
|
124
|
+
return {
|
|
125
|
+
id: nonEmpty(participant.id, "Review participant id"),
|
|
126
|
+
name: nonEmpty(participant.name, "Review participant name"),
|
|
127
|
+
role: participant.role,
|
|
128
|
+
active: participant.active
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function sanitizeThread(thread) {
|
|
132
|
+
if (thread.time !== undefined && (!Number.isFinite(thread.time) || thread.time < 0)) {
|
|
133
|
+
throw new Error("Review thread time must be a non-negative finite number.");
|
|
134
|
+
}
|
|
135
|
+
if (thread.frame !== undefined && (!Number.isInteger(thread.frame) || thread.frame < 0)) {
|
|
136
|
+
throw new Error("Review thread frame must be a non-negative integer.");
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
id: nonEmpty(thread.id, "Review thread id"),
|
|
140
|
+
authorId: nonEmpty(thread.authorId, "Review thread author"),
|
|
141
|
+
text: nonEmpty(thread.text, "Review thread text"),
|
|
142
|
+
time: thread.time,
|
|
143
|
+
frame: thread.frame,
|
|
144
|
+
assignedTo: thread.assignedTo,
|
|
145
|
+
resolved: thread.resolved
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function sanitizeDecision(decision) {
|
|
149
|
+
return {
|
|
150
|
+
reviewerId: nonEmpty(decision.reviewerId, "Review decision reviewer"),
|
|
151
|
+
status: decision.status,
|
|
152
|
+
at: nonEmpty(decision.at, "Review decision timestamp"),
|
|
153
|
+
note: decision.note
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function nonEmpty(value, label) {
|
|
157
|
+
const trimmed = value.trim();
|
|
158
|
+
if (!trimmed)
|
|
159
|
+
throw new Error(`${label} must be a non-empty string.`);
|
|
160
|
+
return trimmed;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=MultiUserReviewWorkflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiUserReviewWorkflow.js","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/MultiUserReviewWorkflow.ts"],"names":[],"mappings":"AA8DA,MAAM,OAAO,uBAAuB;IAC1B,SAAS,CAAS;IAClB,MAAM,CAAuB;IAC7B,qBAAqB,CAAS;IAC9B,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpD,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC1C,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEtD,YAAY,KAAmC;QAC7C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC;QAC7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC;QACvF,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY;YAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/E,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS;YAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,WAA8B;QAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,UAAU;YAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;YAAE,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC;QACrF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,aAAqB;QAClD,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,QAAwB;QACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,UAAU,iDAAiD,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,mBAAmB;YAAE,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC;aACvE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAC9D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QACnI,MAAM,qBAAqB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;QACpG,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,MAAM,CAAC;QAC1G,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QAClF,MAAM,UAAU,GAAG,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,IAAI,kBAAkB,KAAK,CAAC,IAAI,qBAAqB,KAAK,CAAC,CAAC;QAClI,MAAM,MAAM,GAAyB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;QACjK,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM;YACN,gBAAgB,EAAE,YAAY,CAAC,MAAM;YACrC,sBAAsB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,MAAM;YACjG,aAAa;YACb,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,qBAAqB;YACrB,kBAAkB;YAClB,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,qBAAqB;YACrB,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;YAClF,UAAU;YACV,YAAY;YACZ,OAAO;YACP,SAAS;YACT,QAAQ,EAAE;gBACR,eAAe,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;gBACxC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACxE,cAAc,EAAE,qBAAqB,IAAI,IAAI,CAAC,qBAAqB;gBACnE,2BAA2B,EAAE,qBAAqB,GAAG,CAAC;aACvD;SACF,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,EAAU;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,EAAU;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAmC;IAC/E,OAAO,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,mBAAmB,CAAC,WAA8B;IACzD,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,uBAAuB,CAAC;QACrD,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,yBAAyB,CAAC;QAC3D,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,MAAM,EAAE,WAAW,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAoB;IAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAC;QAC3C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;QAC3D,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAwB;IAChD,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;QACrE,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,2BAA2B,CAAC;QACtD,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,KAAa;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type TimelineEditorSnapshot } from "./TimelineEditorController";
|
|
2
|
+
import { type TimelineClipConfig, type TimelineModelConfig, type TimelineTrackConfig } from "./TimelineModel";
|
|
3
|
+
import { type TimelineEditorTrackKind } from "./TimelineTrackTypes";
|
|
4
|
+
export type NonlinearBinAssetKind = "animation" | "audio" | "camera" | "shot" | "sequence" | "caption" | "viseme";
|
|
5
|
+
export interface NonlinearBinAsset {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly kind: NonlinearBinAssetKind;
|
|
9
|
+
readonly assetId?: string | undefined;
|
|
10
|
+
readonly clipName?: string | undefined;
|
|
11
|
+
readonly duration?: number | undefined;
|
|
12
|
+
readonly metadata?: Readonly<Record<string, string | number | boolean>> | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface NonlinearSequenceConfig {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly timeline?: TimelineModelConfig | undefined;
|
|
18
|
+
}
|
|
19
|
+
export interface NonlinearSequenceSnapshot {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly trackCount: number;
|
|
23
|
+
readonly clipCount: number;
|
|
24
|
+
readonly duration: number;
|
|
25
|
+
}
|
|
26
|
+
export interface NonlinearAnimationEditorSnapshot {
|
|
27
|
+
readonly kind: "nonlinear-animation-editor";
|
|
28
|
+
readonly activeSequenceId: string;
|
|
29
|
+
readonly sequenceCount: number;
|
|
30
|
+
readonly binAssetCount: number;
|
|
31
|
+
readonly nestedSequenceClipCount: number;
|
|
32
|
+
readonly totalTrackCount: number;
|
|
33
|
+
readonly totalClipCount: number;
|
|
34
|
+
readonly sequences: readonly NonlinearSequenceSnapshot[];
|
|
35
|
+
readonly activeTimeline: TimelineEditorSnapshot;
|
|
36
|
+
readonly evidence: {
|
|
37
|
+
readonly nonlinearSequences: boolean;
|
|
38
|
+
readonly trimSplitMoveDuplicate: boolean;
|
|
39
|
+
readonly nestedSequences: boolean;
|
|
40
|
+
readonly multiTrackTimeline: boolean;
|
|
41
|
+
readonly serialization: true;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface NonlinearAnimationEditorState {
|
|
45
|
+
readonly activeSequenceId: string;
|
|
46
|
+
readonly binAssets: readonly NonlinearBinAsset[];
|
|
47
|
+
readonly sequences: readonly NonlinearSequenceConfig[];
|
|
48
|
+
}
|
|
49
|
+
export declare class NonlinearAnimationEditor {
|
|
50
|
+
private readonly binAssets;
|
|
51
|
+
private readonly sequences;
|
|
52
|
+
private activeSequenceId;
|
|
53
|
+
constructor(state: NonlinearAnimationEditorState);
|
|
54
|
+
addBinAsset(asset: NonlinearBinAsset): NonlinearBinAsset;
|
|
55
|
+
createSequence(config: NonlinearSequenceConfig): NonlinearSequenceSnapshot;
|
|
56
|
+
selectSequence(sequenceId: string): NonlinearAnimationEditorSnapshot;
|
|
57
|
+
addTrack(kind: TimelineEditorTrackKind, name?: string, options?: Omit<TimelineTrackConfig, "name" | "type">): Promise<string>;
|
|
58
|
+
insertAssetClip(trackId: string, assetId: string, options: Omit<TimelineClipConfig, "name" | "startTime" | "duration" | "assetId" | "clipName"> & {
|
|
59
|
+
readonly id?: string | undefined;
|
|
60
|
+
readonly name?: string | undefined;
|
|
61
|
+
readonly startTime: number;
|
|
62
|
+
readonly duration?: number | undefined;
|
|
63
|
+
}): Promise<string>;
|
|
64
|
+
insertNestedSequence(trackId: string, sequenceId: string, options: Omit<TimelineClipConfig, "name" | "startTime" | "duration"> & {
|
|
65
|
+
readonly id?: string | undefined;
|
|
66
|
+
readonly startTime: number;
|
|
67
|
+
readonly duration?: number | undefined;
|
|
68
|
+
}): Promise<string>;
|
|
69
|
+
moveClip(clipId: string, startTime: number): Promise<void>;
|
|
70
|
+
trimClip(clipId: string, duration: number, startTime?: number): Promise<void>;
|
|
71
|
+
splitClip(clipId: string, splitTime: number): Promise<readonly string[]>;
|
|
72
|
+
duplicateClip(clipId: string, timeOffset?: number): Promise<string>;
|
|
73
|
+
serialize(): NonlinearAnimationEditorState;
|
|
74
|
+
snapshot(): NonlinearAnimationEditorSnapshot;
|
|
75
|
+
private activeSequence;
|
|
76
|
+
private requireSequence;
|
|
77
|
+
private requireBinAsset;
|
|
78
|
+
private sequenceSnapshot;
|
|
79
|
+
}
|
|
80
|
+
export declare function createNonlinearAnimationEditor(state: NonlinearAnimationEditorState): NonlinearAnimationEditor;
|
|
81
|
+
//# sourceMappingURL=NonlinearAnimationEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NonlinearAnimationEditor.d.ts","sourceRoot":"","sources":["../../../../packages/editor-runtime/src/NonlinearAnimationEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CACrF;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACrD;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACzD,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACrC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;QACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;QAClC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACrC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACxD;AAQD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+C;IACzE,OAAO,CAAC,gBAAgB,CAAS;gBAErB,KAAK,EAAE,6BAA6B;IAQhD,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB;IAMxD,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,yBAAyB;IAkB1E,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gCAAgC;IAK9D,QAAQ,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC,GAAG;QACtJ,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBb,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC,GAAG;QACrI,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBb,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAKxE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzE,SAAS,IAAI,6BAA6B;IAY1C,QAAQ,IAAI,gCAAgC;IA4B5C,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;CAUzB;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,6BAA6B,GAAG,wBAAwB,CAE7G"}
|