@twick/core 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/lib/app/Logger.d.ts +105 -0
- package/lib/app/Logger.d.ts.map +1 -0
- package/lib/app/Logger.js +77 -0
- package/lib/app/PlaybackManager.d.ts +55 -0
- package/lib/app/PlaybackManager.d.ts.map +1 -0
- package/lib/app/PlaybackManager.js +179 -0
- package/lib/app/PlaybackStatus.d.ts +30 -0
- package/lib/app/PlaybackStatus.d.ts.map +1 -0
- package/lib/app/PlaybackStatus.js +46 -0
- package/lib/app/Player.d.ts +130 -0
- package/lib/app/Player.d.ts.map +1 -0
- package/lib/app/Player.js +375 -0
- package/lib/app/Project.d.ts +145 -0
- package/lib/app/Project.d.ts.map +1 -0
- package/lib/app/Project.js +10 -0
- package/lib/app/Renderer.d.ts +90 -0
- package/lib/app/Renderer.d.ts.map +1 -0
- package/lib/app/Renderer.js +318 -0
- package/lib/app/SharedWebGLContext.d.ts +24 -0
- package/lib/app/SharedWebGLContext.d.ts.map +1 -0
- package/lib/app/SharedWebGLContext.js +200 -0
- package/lib/app/Stage.d.ts +30 -0
- package/lib/app/Stage.d.ts.map +1 -0
- package/lib/app/Stage.js +75 -0
- package/lib/app/TimeEstimator.d.ts +53 -0
- package/lib/app/TimeEstimator.d.ts.map +1 -0
- package/lib/app/TimeEstimator.js +70 -0
- package/lib/app/index.d.ts +16 -0
- package/lib/app/index.d.ts.map +1 -0
- package/lib/app/index.js +16 -0
- package/lib/app/makeProject.d.ts +15 -0
- package/lib/app/makeProject.d.ts.map +1 -0
- package/lib/app/makeProject.js +72 -0
- package/lib/app/project-settings.d.ts +8 -0
- package/lib/app/project-settings.d.ts.map +1 -0
- package/lib/app/project-settings.js +13 -0
- package/lib/decorators/decorate.d.ts +2 -0
- package/lib/decorators/decorate.d.ts.map +1 -0
- package/lib/decorators/decorate.js +10 -0
- package/lib/decorators/deprecated.d.ts +5 -0
- package/lib/decorators/deprecated.d.ts.map +1 -0
- package/lib/decorators/deprecated.js +23 -0
- package/lib/decorators/index.d.ts +9 -0
- package/lib/decorators/index.d.ts.map +1 -0
- package/lib/decorators/index.js +9 -0
- package/lib/decorators/lazy.d.ts +14 -0
- package/lib/decorators/lazy.d.ts.map +1 -0
- package/lib/decorators/lazy.js +27 -0
- package/lib/decorators/threadable.d.ts +2 -0
- package/lib/decorators/threadable.d.ts.map +1 -0
- package/lib/decorators/threadable.js +7 -0
- package/lib/events/AsyncEventDispatcher.d.ts +45 -0
- package/lib/events/AsyncEventDispatcher.d.ts.map +1 -0
- package/lib/events/AsyncEventDispatcher.js +33 -0
- package/lib/events/EventDispatcher.d.ts +38 -0
- package/lib/events/EventDispatcher.d.ts.map +1 -0
- package/lib/events/EventDispatcher.js +29 -0
- package/lib/events/EventDispatcherBase.d.ts +55 -0
- package/lib/events/EventDispatcherBase.d.ts.map +1 -0
- package/lib/events/EventDispatcherBase.js +68 -0
- package/lib/events/FlagDispatcher.d.ts +54 -0
- package/lib/events/FlagDispatcher.d.ts.map +1 -0
- package/lib/events/FlagDispatcher.js +63 -0
- package/lib/events/ValueDispatcher.d.ts +81 -0
- package/lib/events/ValueDispatcher.d.ts.map +1 -0
- package/lib/events/ValueDispatcher.js +97 -0
- package/lib/events/index.d.ts +11 -0
- package/lib/events/index.d.ts.map +1 -0
- package/lib/events/index.js +11 -0
- package/lib/exporter/Exporter.d.ts +101 -0
- package/lib/exporter/Exporter.d.ts.map +1 -0
- package/lib/exporter/Exporter.js +2 -0
- package/lib/exporter/FFmpegExporter.d.ts +50 -0
- package/lib/exporter/FFmpegExporter.d.ts.map +1 -0
- package/lib/exporter/FFmpegExporter.js +140 -0
- package/lib/exporter/ImageExporter.d.ts +34 -0
- package/lib/exporter/ImageExporter.d.ts.map +1 -0
- package/lib/exporter/ImageExporter.js +80 -0
- package/lib/exporter/WasmExporter.d.ts +19 -0
- package/lib/exporter/WasmExporter.d.ts.map +1 -0
- package/lib/exporter/WasmExporter.js +78 -0
- package/lib/exporter/download-videos.d.ts +3 -0
- package/lib/exporter/download-videos.d.ts.map +1 -0
- package/lib/exporter/download-videos.js +45 -0
- package/lib/exporter/index.d.ts +5 -0
- package/lib/exporter/index.d.ts.map +1 -0
- package/lib/exporter/index.js +5 -0
- package/lib/flow/all.d.ts +18 -0
- package/lib/flow/all.d.ts.map +1 -0
- package/lib/flow/all.js +25 -0
- package/lib/flow/any.d.ts +18 -0
- package/lib/flow/any.d.ts.map +1 -0
- package/lib/flow/any.js +25 -0
- package/lib/flow/chain.d.ts +36 -0
- package/lib/flow/chain.d.ts.map +1 -0
- package/lib/flow/chain.js +46 -0
- package/lib/flow/delay.d.ts +29 -0
- package/lib/flow/delay.d.ts.map +1 -0
- package/lib/flow/delay.js +39 -0
- package/lib/flow/every.d.ts +41 -0
- package/lib/flow/every.d.ts.map +1 -0
- package/lib/flow/every.js +61 -0
- package/lib/flow/index.d.ts +17 -0
- package/lib/flow/index.d.ts.map +1 -0
- package/lib/flow/index.js +17 -0
- package/lib/flow/join.d.ts +35 -0
- package/lib/flow/join.d.ts.map +1 -0
- package/lib/flow/join.js +33 -0
- package/lib/flow/loop.d.ts +58 -0
- package/lib/flow/loop.d.ts.map +1 -0
- package/lib/flow/loop.js +51 -0
- package/lib/flow/loopFor.d.ts +25 -0
- package/lib/flow/loopFor.d.ts.map +1 -0
- package/lib/flow/loopFor.js +42 -0
- package/lib/flow/names.d.ts +3 -0
- package/lib/flow/names.d.ts.map +1 -0
- package/lib/flow/names.js +11 -0
- package/lib/flow/run.d.ts +45 -0
- package/lib/flow/run.d.ts.map +1 -0
- package/lib/flow/run.js +14 -0
- package/lib/flow/scheduling.d.ts +18 -0
- package/lib/flow/scheduling.d.ts.map +1 -0
- package/lib/flow/scheduling.js +33 -0
- package/lib/flow/sequence.d.ts +22 -0
- package/lib/flow/sequence.d.ts.map +1 -0
- package/lib/flow/sequence.js +31 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/media/index.d.ts +7 -0
- package/lib/media/index.d.ts.map +1 -0
- package/lib/media/index.js +7 -0
- package/lib/media/loadImage.d.ts +8 -0
- package/lib/media/loadImage.d.ts.map +1 -0
- package/lib/media/loadImage.js +29 -0
- package/lib/plugin/DefaultPlugin.d.ts +10 -0
- package/lib/plugin/DefaultPlugin.d.ts.map +1 -0
- package/lib/plugin/DefaultPlugin.js +17 -0
- package/lib/plugin/Plugin.d.ts +53 -0
- package/lib/plugin/Plugin.d.ts.map +1 -0
- package/lib/plugin/Plugin.js +2 -0
- package/lib/plugin/index.d.ts +3 -0
- package/lib/plugin/index.d.ts.map +1 -0
- package/lib/plugin/index.js +3 -0
- package/lib/plugin/makePlugin.d.ts +15 -0
- package/lib/plugin/makePlugin.d.ts.map +1 -0
- package/lib/plugin/makePlugin.js +16 -0
- package/lib/scenes/GeneratorScene.d.ts +95 -0
- package/lib/scenes/GeneratorScene.d.ts.map +1 -0
- package/lib/scenes/GeneratorScene.js +273 -0
- package/lib/scenes/Inspectable.d.ts +71 -0
- package/lib/scenes/Inspectable.d.ts.map +1 -0
- package/lib/scenes/Inspectable.js +4 -0
- package/lib/scenes/LifecycleEvents.d.ts +18 -0
- package/lib/scenes/LifecycleEvents.d.ts.map +1 -0
- package/lib/scenes/LifecycleEvents.js +45 -0
- package/lib/scenes/Random.d.ts +66 -0
- package/lib/scenes/Random.d.ts.map +1 -0
- package/lib/scenes/Random.js +101 -0
- package/lib/scenes/Scene.d.ts +298 -0
- package/lib/scenes/Scene.d.ts.map +1 -0
- package/lib/scenes/Scene.js +25 -0
- package/lib/scenes/SceneState.d.ts +34 -0
- package/lib/scenes/SceneState.d.ts.map +1 -0
- package/lib/scenes/SceneState.js +35 -0
- package/lib/scenes/Shaders.d.ts +63 -0
- package/lib/scenes/Shaders.d.ts.map +1 -0
- package/lib/scenes/Shaders.js +158 -0
- package/lib/scenes/Slides.d.ts +33 -0
- package/lib/scenes/Slides.d.ts.map +1 -0
- package/lib/scenes/Slides.js +115 -0
- package/lib/scenes/Threadable.d.ts +19 -0
- package/lib/scenes/Threadable.d.ts.map +1 -0
- package/lib/scenes/Threadable.js +4 -0
- package/lib/scenes/Variables.d.ts +24 -0
- package/lib/scenes/Variables.d.ts.map +1 -0
- package/lib/scenes/Variables.js +39 -0
- package/lib/scenes/index.d.ts +16 -0
- package/lib/scenes/index.d.ts.map +1 -0
- package/lib/scenes/index.js +16 -0
- package/lib/signals/CompoundSignalContext.d.ts +21 -0
- package/lib/signals/CompoundSignalContext.d.ts.map +1 -0
- package/lib/signals/CompoundSignalContext.js +73 -0
- package/lib/signals/ComputedContext.d.ts +14 -0
- package/lib/signals/ComputedContext.d.ts.map +1 -0
- package/lib/signals/ComputedContext.js +36 -0
- package/lib/signals/DependencyContext.d.ts +32 -0
- package/lib/signals/DependencyContext.d.ts.map +1 -0
- package/lib/signals/DependencyContext.js +87 -0
- package/lib/signals/SignalContext.d.ts +120 -0
- package/lib/signals/SignalContext.d.ts.map +1 -0
- package/lib/signals/SignalContext.js +245 -0
- package/lib/signals/createComputed.d.ts +3 -0
- package/lib/signals/createComputed.d.ts.map +1 -0
- package/lib/signals/createComputed.js +5 -0
- package/lib/signals/createComputedAsync.d.ts +4 -0
- package/lib/signals/createComputedAsync.d.ts.map +1 -0
- package/lib/signals/createComputedAsync.js +15 -0
- package/lib/signals/createSignal.d.ts +5 -0
- package/lib/signals/createSignal.d.ts.map +1 -0
- package/lib/signals/createSignal.js +6 -0
- package/lib/signals/index.d.ts +16 -0
- package/lib/signals/index.d.ts.map +1 -0
- package/lib/signals/index.js +16 -0
- package/lib/signals/symbols.d.ts +2 -0
- package/lib/signals/symbols.d.ts.map +1 -0
- package/lib/signals/symbols.js +2 -0
- package/lib/signals/types.d.ts +51 -0
- package/lib/signals/types.d.ts.map +1 -0
- package/lib/signals/types.js +2 -0
- package/lib/signals/utils.d.ts +5 -0
- package/lib/signals/utils.d.ts.map +1 -0
- package/lib/signals/utils.js +10 -0
- package/lib/threading/Thread.d.ts +77 -0
- package/lib/threading/Thread.d.ts.map +1 -0
- package/lib/threading/Thread.js +169 -0
- package/lib/threading/ThreadGenerator.d.ts +39 -0
- package/lib/threading/ThreadGenerator.d.ts.map +1 -0
- package/lib/threading/ThreadGenerator.js +17 -0
- package/lib/threading/cancel.d.ts +17 -0
- package/lib/threading/cancel.d.ts.map +1 -0
- package/lib/threading/cancel.js +26 -0
- package/lib/threading/index.d.ts +11 -0
- package/lib/threading/index.d.ts.map +1 -0
- package/lib/threading/index.js +11 -0
- package/lib/threading/spawn.d.ts +28 -0
- package/lib/threading/spawn.d.ts.map +1 -0
- package/lib/threading/spawn.js +30 -0
- package/lib/threading/threads.d.ts +46 -0
- package/lib/threading/threads.d.ts.map +1 -0
- package/lib/threading/threads.js +89 -0
- package/lib/transitions/fadeTransition.d.ts +8 -0
- package/lib/transitions/fadeTransition.d.ts.map +1 -0
- package/lib/transitions/fadeTransition.js +16 -0
- package/lib/transitions/index.d.ts +11 -0
- package/lib/transitions/index.d.ts.map +1 -0
- package/lib/transitions/index.js +11 -0
- package/lib/transitions/slideTransition.d.ts +18 -0
- package/lib/transitions/slideTransition.d.ts.map +1 -0
- package/lib/transitions/slideTransition.js +14 -0
- package/lib/transitions/useTransition.d.ts +10 -0
- package/lib/transitions/useTransition.d.ts.map +1 -0
- package/lib/transitions/useTransition.js +27 -0
- package/lib/transitions/zoomInTransition.d.ts +10 -0
- package/lib/transitions/zoomInTransition.d.ts.map +1 -0
- package/lib/transitions/zoomInTransition.js +33 -0
- package/lib/transitions/zoomOutTransition.d.ts +10 -0
- package/lib/transitions/zoomOutTransition.d.ts.map +1 -0
- package/lib/transitions/zoomOutTransition.js +33 -0
- package/lib/tsconfig.build.tsbuildinfo +1 -0
- package/lib/tweening/helpers.d.ts +5 -0
- package/lib/tweening/helpers.d.ts.map +1 -0
- package/lib/tweening/helpers.js +16 -0
- package/lib/tweening/index.d.ts +11 -0
- package/lib/tweening/index.d.ts.map +1 -0
- package/lib/tweening/index.js +11 -0
- package/lib/tweening/interpolationFunctions.d.ts +38 -0
- package/lib/tweening/interpolationFunctions.d.ts.map +1 -0
- package/lib/tweening/interpolationFunctions.js +107 -0
- package/lib/tweening/spring.d.ts +20 -0
- package/lib/tweening/spring.d.ts.map +1 -0
- package/lib/tweening/spring.js +103 -0
- package/lib/tweening/timingFunctions.d.ts +46 -0
- package/lib/tweening/timingFunctions.d.ts.map +1 -0
- package/lib/tweening/timingFunctions.js +233 -0
- package/lib/tweening/tween.d.ts +3 -0
- package/lib/tweening/tween.d.ts.map +1 -0
- package/lib/tweening/tween.js +21 -0
- package/lib/types/BBox.d.ts +73 -0
- package/lib/types/BBox.d.ts.map +1 -0
- package/lib/types/BBox.js +249 -0
- package/lib/types/Canvas.d.ts +3 -0
- package/lib/types/Canvas.d.ts.map +1 -0
- package/lib/types/Canvas.js +2 -0
- package/lib/types/Color.d.ts +65 -0
- package/lib/types/Color.d.ts.map +1 -0
- package/lib/types/Color.js +185 -0
- package/lib/types/Matrix.d.ts +3 -0
- package/lib/types/Matrix.d.ts.map +1 -0
- package/lib/types/Matrix.js +10 -0
- package/lib/types/Matrix2D.d.ts +363 -0
- package/lib/types/Matrix2D.d.ts.map +1 -0
- package/lib/types/Matrix2D.js +554 -0
- package/lib/types/Origin.d.ts +17 -0
- package/lib/types/Origin.d.ts.map +1 -0
- package/lib/types/Origin.js +53 -0
- package/lib/types/Spacing.d.ts +36 -0
- package/lib/types/Spacing.d.ts.map +1 -0
- package/lib/types/Spacing.js +70 -0
- package/lib/types/Type.d.ts +9 -0
- package/lib/types/Type.d.ts.map +1 -0
- package/lib/types/Type.js +5 -0
- package/lib/types/Vector.d.ts +203 -0
- package/lib/types/Vector.d.ts.map +1 -0
- package/lib/types/Vector.js +355 -0
- package/lib/types/alignment-enums.d.ts +22 -0
- package/lib/types/alignment-enums.d.ts.map +1 -0
- package/lib/types/alignment-enums.js +25 -0
- package/lib/types/index.d.ts +17 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +17 -0
- package/lib/types/vector-transformations.d.ts +20 -0
- package/lib/types/vector-transformations.d.ts.map +1 -0
- package/lib/types/vector-transformations.js +31 -0
- package/lib/utils/DetailedError.d.ts +24 -0
- package/lib/utils/DetailedError.d.ts.map +1 -0
- package/lib/utils/DetailedError.js +16 -0
- package/lib/utils/ExperimentalError.d.ts +10 -0
- package/lib/utils/ExperimentalError.d.ts.map +1 -0
- package/lib/utils/ExperimentalError.js +32 -0
- package/lib/utils/Semaphore.d.ts +12 -0
- package/lib/utils/Semaphore.d.ts.map +1 -0
- package/lib/utils/Semaphore.js +25 -0
- package/lib/utils/beginSlide.d.ts +3 -0
- package/lib/utils/beginSlide.d.ts.map +1 -0
- package/lib/utils/beginSlide.js +12 -0
- package/lib/utils/capitalize.d.ts +2 -0
- package/lib/utils/capitalize.d.ts.map +1 -0
- package/lib/utils/capitalize.js +4 -0
- package/lib/utils/createRef.d.ts +15 -0
- package/lib/utils/createRef.d.ts.map +1 -0
- package/lib/utils/createRef.js +21 -0
- package/lib/utils/createRefArray.d.ts +27 -0
- package/lib/utils/createRefArray.d.ts.map +1 -0
- package/lib/utils/createRefArray.js +49 -0
- package/lib/utils/createRefMap.d.ts +50 -0
- package/lib/utils/createRefMap.d.ts.map +1 -0
- package/lib/utils/createRefMap.js +77 -0
- package/lib/utils/debug.d.ts +24 -0
- package/lib/utils/debug.d.ts.map +1 -0
- package/lib/utils/debug.js +47 -0
- package/lib/utils/deprecate.d.ts +9 -0
- package/lib/utils/deprecate.d.ts.map +1 -0
- package/lib/utils/deprecate.js +15 -0
- package/lib/utils/errorToLog.d.ts +3 -0
- package/lib/utils/errorToLog.d.ts.map +1 -0
- package/lib/utils/errorToLog.js +8 -0
- package/lib/utils/experimentalLog.d.ts +3 -0
- package/lib/utils/experimentalLog.d.ts.map +1 -0
- package/lib/utils/experimentalLog.js +10 -0
- package/lib/utils/getContext.d.ts +2 -0
- package/lib/utils/getContext.d.ts.map +1 -0
- package/lib/utils/getContext.js +8 -0
- package/lib/utils/index.d.ts +26 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +26 -0
- package/lib/utils/math.d.ts +15 -0
- package/lib/utils/math.d.ts.map +1 -0
- package/lib/utils/math.js +15 -0
- package/lib/utils/range.d.ts +40 -0
- package/lib/utils/range.d.ts.map +1 -0
- package/lib/utils/range.js +18 -0
- package/lib/utils/useContext.d.ts +13 -0
- package/lib/utils/useContext.d.ts.map +1 -0
- package/lib/utils/useContext.js +18 -0
- package/lib/utils/usePlayback.d.ts +8 -0
- package/lib/utils/usePlayback.d.ts.map +1 -0
- package/lib/utils/usePlayback.js +20 -0
- package/lib/utils/useScene.d.ts +17 -0
- package/lib/utils/useScene.d.ts.map +1 -0
- package/lib/utils/useScene.js +33 -0
- package/lib/utils/useThread.d.ts +8 -0
- package/lib/utils/useThread.d.ts.map +1 -0
- package/lib/utils/useThread.js +24 -0
- package/lib/utils/useTime.d.ts +19 -0
- package/lib/utils/useTime.d.ts.map +1 -0
- package/lib/utils/useTime.js +22 -0
- package/package.json +36 -0
- package/project.d.ts +24 -0
- package/shaders/common.glsl +15 -0
- package/shaders/fragment.glsl +8 -0
- package/tsconfig.project.json +14 -0
package/lib/app/Stage.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { unwrap } from '../signals';
|
|
2
|
+
import { Vector2 } from '../types';
|
|
3
|
+
import { getContext } from '../utils';
|
|
4
|
+
/**
|
|
5
|
+
* Manages canvases on which an animation can be displayed.
|
|
6
|
+
*/
|
|
7
|
+
export class Stage {
|
|
8
|
+
get canvasSize() {
|
|
9
|
+
return this.size.scale(this.resolutionScale);
|
|
10
|
+
}
|
|
11
|
+
constructor() {
|
|
12
|
+
// TODO Consider adding pooling for canvases.
|
|
13
|
+
this.background = null;
|
|
14
|
+
this.resolutionScale = 1;
|
|
15
|
+
this.colorSpace = 'srgb';
|
|
16
|
+
this.size = Vector2.zero;
|
|
17
|
+
this.finalBuffer = document.createElement('canvas');
|
|
18
|
+
this.currentBuffer = document.createElement('canvas');
|
|
19
|
+
this.previousBuffer = document.createElement('canvas');
|
|
20
|
+
const colorSpace = this.colorSpace;
|
|
21
|
+
this.context = getContext({ colorSpace }, this.finalBuffer);
|
|
22
|
+
this.currentContext = getContext({ colorSpace }, this.currentBuffer);
|
|
23
|
+
this.previousContext = getContext({ colorSpace }, this.previousBuffer);
|
|
24
|
+
}
|
|
25
|
+
configure({ colorSpace = this.colorSpace, size = this.size, resolutionScale = this.resolutionScale, background = this.background, }) {
|
|
26
|
+
if (colorSpace !== this.colorSpace) {
|
|
27
|
+
this.colorSpace = colorSpace;
|
|
28
|
+
this.context = getContext({ colorSpace }, this.finalBuffer);
|
|
29
|
+
this.currentContext = getContext({ colorSpace }, this.currentBuffer);
|
|
30
|
+
this.previousContext = getContext({ colorSpace }, this.previousBuffer);
|
|
31
|
+
}
|
|
32
|
+
if (!size.exactlyEquals(this.size) ||
|
|
33
|
+
resolutionScale !== this.resolutionScale) {
|
|
34
|
+
this.resolutionScale = resolutionScale;
|
|
35
|
+
this.size = size;
|
|
36
|
+
this.resizeCanvas(this.context);
|
|
37
|
+
this.resizeCanvas(this.currentContext);
|
|
38
|
+
this.resizeCanvas(this.previousContext);
|
|
39
|
+
}
|
|
40
|
+
this.background =
|
|
41
|
+
typeof background === 'string'
|
|
42
|
+
? background
|
|
43
|
+
: (background?.serialize() ?? null);
|
|
44
|
+
}
|
|
45
|
+
async render(currentScene, previousScene) {
|
|
46
|
+
const previousOnTop = previousScene
|
|
47
|
+
? unwrap(currentScene.previousOnTop)
|
|
48
|
+
: false;
|
|
49
|
+
if (previousScene) {
|
|
50
|
+
await previousScene.render(this.previousContext);
|
|
51
|
+
}
|
|
52
|
+
await currentScene.render(this.currentContext);
|
|
53
|
+
const size = this.canvasSize;
|
|
54
|
+
this.context.clearRect(0, 0, size.width, size.height);
|
|
55
|
+
if (this.background) {
|
|
56
|
+
this.context.save();
|
|
57
|
+
this.context.fillStyle = this.background;
|
|
58
|
+
this.context.fillRect(0, 0, size.width, size.height);
|
|
59
|
+
this.context.restore();
|
|
60
|
+
}
|
|
61
|
+
if (previousScene && !previousOnTop) {
|
|
62
|
+
this.context.drawImage(this.previousBuffer, 0, 0);
|
|
63
|
+
}
|
|
64
|
+
this.context.drawImage(this.currentBuffer, 0, 0);
|
|
65
|
+
if (previousOnTop) {
|
|
66
|
+
this.context.drawImage(this.previousBuffer, 0, 0);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
resizeCanvas(context) {
|
|
70
|
+
const size = this.canvasSize;
|
|
71
|
+
context.canvas.width = size.width;
|
|
72
|
+
context.canvas.height = size.height;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1N0YWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFbEMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBU3BDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLEtBQUs7SUFnQmhCLElBQVksVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7UUFuQkEsNkNBQTZDO1FBRXJDLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLGVBQVUsR0FBcUIsTUFBTSxDQUFDO1FBQ3RDLFNBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBZTFCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBQyxVQUFVLEVBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsRUFBQyxVQUFVLEVBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGVBQWUsR0FB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
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An estimate of the time remaining until the process is finished.
|
|
3
|
+
*/
|
|
4
|
+
export interface TimeEstimate {
|
|
5
|
+
/**
|
|
6
|
+
* The completion percentage ranging from `0` to `1`.
|
|
7
|
+
*/
|
|
8
|
+
completion: number;
|
|
9
|
+
/**
|
|
10
|
+
* The time passed since the beginning of the process in milliseconds.
|
|
11
|
+
*/
|
|
12
|
+
elapsed: number;
|
|
13
|
+
/**
|
|
14
|
+
* The estimated time remaining until the process is finished in milliseconds.
|
|
15
|
+
*/
|
|
16
|
+
eta: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Calculates the estimated time remaining until a process is finished.
|
|
20
|
+
*/
|
|
21
|
+
export declare class TimeEstimator {
|
|
22
|
+
get onCompletionChanged(): import("../events").SubscribableValueEvent<number>;
|
|
23
|
+
private readonly completion;
|
|
24
|
+
private startTimestamp;
|
|
25
|
+
private lastUpdateTimestamp;
|
|
26
|
+
private nextCompletion;
|
|
27
|
+
/**
|
|
28
|
+
* Get the current time estimate.
|
|
29
|
+
*
|
|
30
|
+
* @param timestamp - The timestamp to calculate the estimate against.
|
|
31
|
+
* Defaults to `performance.now()`.
|
|
32
|
+
*/
|
|
33
|
+
estimate(timestamp?: number): TimeEstimate;
|
|
34
|
+
/**
|
|
35
|
+
* Update the completion percentage.
|
|
36
|
+
*
|
|
37
|
+
* @param completion - The completion percentage ranging from `0` to `1`.
|
|
38
|
+
* @param timestamp - A timestamp at which the process was updated.
|
|
39
|
+
* Defaults to `performance.now()`.
|
|
40
|
+
*/
|
|
41
|
+
update(completion: number, timestamp?: number): void;
|
|
42
|
+
reportProgress(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Reset the estimator.
|
|
45
|
+
*
|
|
46
|
+
* @param nextCompletion - If known, the completion percentage of the next
|
|
47
|
+
* update.
|
|
48
|
+
* @param timestamp - A timestamp at which the process started.
|
|
49
|
+
* Defaults to `performance.now()`.
|
|
50
|
+
*/
|
|
51
|
+
reset(nextCompletion?: number, timestamp?: number): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=TimeEstimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeEstimator.d.ts","sourceRoot":"","sources":["../../src/app/TimeEstimator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,IAAW,mBAAmB,uDAE7B;IACD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,cAAc,CAAK;IAE3B;;;;;OAKG;IACI,QAAQ,CAAC,SAAS,SAAoB,GAAG,YAAY;IAkB5D;;;;;;OAMG;IACI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,SAAoB;IAKxD,cAAc;IAMrB;;;;;;;OAOG;IACI,KAAK,CAAC,cAAc,SAAI,EAAE,SAAS,SAAoB;CAM/D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ValueDispatcher } from '../events';
|
|
2
|
+
import { clamp } from '../tweening';
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the estimated time remaining until a process is finished.
|
|
5
|
+
*/
|
|
6
|
+
export class TimeEstimator {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.completion = new ValueDispatcher(0);
|
|
9
|
+
this.startTimestamp = 0;
|
|
10
|
+
this.lastUpdateTimestamp = 0;
|
|
11
|
+
this.nextCompletion = 0;
|
|
12
|
+
}
|
|
13
|
+
get onCompletionChanged() {
|
|
14
|
+
return this.completion.subscribable;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get the current time estimate.
|
|
18
|
+
*
|
|
19
|
+
* @param timestamp - The timestamp to calculate the estimate against.
|
|
20
|
+
* Defaults to `performance.now()`.
|
|
21
|
+
*/
|
|
22
|
+
estimate(timestamp = performance.now()) {
|
|
23
|
+
const elapsed = timestamp - this.startTimestamp;
|
|
24
|
+
const completion = this.completion.current;
|
|
25
|
+
let eta = Infinity;
|
|
26
|
+
if (completion >= 1) {
|
|
27
|
+
eta = 0;
|
|
28
|
+
}
|
|
29
|
+
else if (completion > 0) {
|
|
30
|
+
const lastUpdateDuration = this.lastUpdateTimestamp - this.startTimestamp;
|
|
31
|
+
eta = lastUpdateDuration / completion - elapsed;
|
|
32
|
+
eta = Math.max(0, eta);
|
|
33
|
+
}
|
|
34
|
+
else if (this.nextCompletion > 0) {
|
|
35
|
+
eta = elapsed / this.nextCompletion - elapsed;
|
|
36
|
+
}
|
|
37
|
+
return { completion, elapsed, eta };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Update the completion percentage.
|
|
41
|
+
*
|
|
42
|
+
* @param completion - The completion percentage ranging from `0` to `1`.
|
|
43
|
+
* @param timestamp - A timestamp at which the process was updated.
|
|
44
|
+
* Defaults to `performance.now()`.
|
|
45
|
+
*/
|
|
46
|
+
update(completion, timestamp = performance.now()) {
|
|
47
|
+
this.completion.current = clamp(0, 1, completion);
|
|
48
|
+
this.lastUpdateTimestamp = timestamp;
|
|
49
|
+
}
|
|
50
|
+
reportProgress() {
|
|
51
|
+
if (window.logProgress) {
|
|
52
|
+
window.logProgress(this.completion.current);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Reset the estimator.
|
|
57
|
+
*
|
|
58
|
+
* @param nextCompletion - If known, the completion percentage of the next
|
|
59
|
+
* update.
|
|
60
|
+
* @param timestamp - A timestamp at which the process started.
|
|
61
|
+
* Defaults to `performance.now()`.
|
|
62
|
+
*/
|
|
63
|
+
reset(nextCompletion = 0, timestamp = performance.now()) {
|
|
64
|
+
this.startTimestamp = timestamp;
|
|
65
|
+
this.lastUpdateTimestamp = timestamp;
|
|
66
|
+
this.completion.current = 0;
|
|
67
|
+
this.nextCompletion = nextCompletion;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUVzdGltYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvVGltZUVzdGltYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFvQmxDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFJbUIsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUN4QixtQkFBYyxHQUFHLENBQUMsQ0FBQztJQTBEN0IsQ0FBQztJQWhFQyxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFNRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUMzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUUzQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFDbkIsSUFBSSxVQUFVLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEIsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7YUFBTSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFFLEdBQUcsR0FBRyxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQ2hELEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25DLEdBQUcsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBa0IsRUFBRSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUssTUFBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE1BQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM1RCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Motion Canvas classes.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export * from './Logger';
|
|
7
|
+
export * from './makeProject';
|
|
8
|
+
export * from './PlaybackManager';
|
|
9
|
+
export * from './PlaybackStatus';
|
|
10
|
+
export * from './Player';
|
|
11
|
+
export * from './Project';
|
|
12
|
+
export * from './project-settings';
|
|
13
|
+
export * from './Renderer';
|
|
14
|
+
export * from './SharedWebGLContext';
|
|
15
|
+
export * from './Stage';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC"}
|
package/lib/app/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Motion Canvas classes.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export * from './Logger';
|
|
7
|
+
export * from './makeProject';
|
|
8
|
+
export * from './PlaybackManager';
|
|
9
|
+
export * from './PlaybackStatus';
|
|
10
|
+
export * from './Player';
|
|
11
|
+
export * from './Project';
|
|
12
|
+
export * from './project-settings';
|
|
13
|
+
export * from './Renderer';
|
|
14
|
+
export * from './SharedWebGLContext';
|
|
15
|
+
export * from './Stage';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsU0FBUyxDQUFDIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Logger } from './Logger';
|
|
2
|
+
import type { Project, UserProject, UserProjectSettings } from './Project';
|
|
3
|
+
export declare const defaultUserProjectSettings: UserProjectSettings;
|
|
4
|
+
export declare function makeProject(project: UserProject): Project;
|
|
5
|
+
export declare function addEditorToProject(project: Project): Promise<{
|
|
6
|
+
plugins: any[];
|
|
7
|
+
name: string;
|
|
8
|
+
settings: import("./Project").ProjectSettings;
|
|
9
|
+
logger: Logger;
|
|
10
|
+
versions: import("./Project").Versions;
|
|
11
|
+
scenes: import("..").SceneDescription<any>[];
|
|
12
|
+
variables?: Record<string, unknown> | undefined;
|
|
13
|
+
experimentalFeatures?: boolean | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=makeProject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeProject.d.ts","sourceRoot":"","sources":["../../src/app/makeProject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAC,MAAM,WAAW,CAAC;AAGzE,eAAO,MAAM,0BAA0B,EAAE,mBAkBxC,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAwCzD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;;;;GAWxD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import DefaultPlugin from '../plugin/DefaultPlugin';
|
|
2
|
+
import { Color, Vector2 } from '../types';
|
|
3
|
+
import { Logger } from './Logger';
|
|
4
|
+
import { createVersionObject } from './Project';
|
|
5
|
+
export const defaultUserProjectSettings = {
|
|
6
|
+
shared: {
|
|
7
|
+
background: 'FFFFFF00',
|
|
8
|
+
range: [0, Infinity],
|
|
9
|
+
size: { x: 1920, y: 1080 },
|
|
10
|
+
},
|
|
11
|
+
rendering: {
|
|
12
|
+
exporter: {
|
|
13
|
+
name: '@twick/core/wasm',
|
|
14
|
+
},
|
|
15
|
+
fps: 30,
|
|
16
|
+
resolutionScale: 1,
|
|
17
|
+
colorSpace: 'srgb',
|
|
18
|
+
},
|
|
19
|
+
preview: {
|
|
20
|
+
fps: 30,
|
|
21
|
+
resolutionScale: 1,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export function makeProject(project) {
|
|
25
|
+
// Don't delete, has side effects
|
|
26
|
+
// TODO(konsti): Figure out how to get rid of this
|
|
27
|
+
void DefaultPlugin;
|
|
28
|
+
const settings = {
|
|
29
|
+
...defaultUserProjectSettings,
|
|
30
|
+
...project.settings,
|
|
31
|
+
shared: {
|
|
32
|
+
...defaultUserProjectSettings.shared,
|
|
33
|
+
...project.settings?.shared,
|
|
34
|
+
},
|
|
35
|
+
rendering: {
|
|
36
|
+
...defaultUserProjectSettings.rendering,
|
|
37
|
+
...project.settings?.rendering,
|
|
38
|
+
},
|
|
39
|
+
preview: {
|
|
40
|
+
...defaultUserProjectSettings.preview,
|
|
41
|
+
...project.settings?.preview,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
// Convert background and size to correct types
|
|
45
|
+
const convertedSettings = {
|
|
46
|
+
...settings,
|
|
47
|
+
shared: {
|
|
48
|
+
...settings.shared,
|
|
49
|
+
background: new Color(settings.shared.background),
|
|
50
|
+
size: new Vector2(settings.shared.size),
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
...project,
|
|
55
|
+
name: project.name ?? 'project',
|
|
56
|
+
settings: convertedSettings,
|
|
57
|
+
plugins: [],
|
|
58
|
+
logger: new Logger(),
|
|
59
|
+
versions: createVersionObject('0.10.4'),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export async function addEditorToProject(project) {
|
|
63
|
+
const url = '/@id/@twick/2d/editor';
|
|
64
|
+
const imported = await import(
|
|
65
|
+
/* webpackIgnore: true */ /* @vite-ignore */ url);
|
|
66
|
+
const plugin = imported.default();
|
|
67
|
+
return {
|
|
68
|
+
...project,
|
|
69
|
+
plugins: [...project.plugins, plugin],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL21ha2VQcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF3QjtJQUM3RCxNQUFNLEVBQUU7UUFDTixVQUFVLEVBQUUsVUFBVTtRQUN0QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO1FBQ3BCLElBQUksRUFBRSxFQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBQztLQUN6QjtJQUNELFNBQVMsRUFBRTtRQUNULFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxrQkFBa0I7U0FDekI7UUFDRCxHQUFHLEVBQUUsRUFBRTtRQUNQLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsRUFBRSxNQUFNO0tBQ25CO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsR0FBRyxFQUFFLEVBQUU7UUFDUCxlQUFlLEVBQUUsQ0FBQztLQUNuQjtDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQW9CO0lBQzlDLGlDQUFpQztJQUNqQyxrREFBa0Q7SUFDbEQsS0FBSyxhQUFhLENBQUM7SUFFbkIsTUFBTSxRQUFRLEdBQUc7UUFDZixHQUFHLDBCQUEwQjtRQUM3QixHQUFHLE9BQU8sQ0FBQyxRQUFRO1FBQ25CLE1BQU0sRUFBRTtZQUNOLEdBQUcsMEJBQTBCLENBQUMsTUFBTTtZQUNwQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTTtTQUM1QjtRQUNELFNBQVMsRUFBRTtZQUNULEdBQUcsMEJBQTBCLENBQUMsU0FBUztZQUN2QyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUztTQUMvQjtRQUNELE9BQU8sRUFBRTtZQUNQLEdBQUcsMEJBQTBCLENBQUMsT0FBTztZQUNyQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTztTQUM3QjtLQUNGLENBQUM7SUFFRiwrQ0FBK0M7SUFDL0MsTUFBTSxpQkFBaUIsR0FBRztRQUN4QixHQUFHLFFBQVE7UUFDWCxNQUFNLEVBQUU7WUFDTixHQUFHLFFBQVEsQ0FBQyxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQztZQUNsRCxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDeEM7S0FDRixDQUFDO0lBRUYsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVM7UUFDL0IsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixPQUFPLEVBQUUsRUFBRTtRQUNYLE1BQU0sRUFBRSxJQUFJLE1BQU0sRUFBRTtRQUNwQixRQUFRLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDO0tBQ3hDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxPQUFnQjtJQUN2RCxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQztJQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU07SUFDM0IseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUNqRCxDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWxDLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0tBQ3RDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Project } from './Project';
|
|
2
|
+
type SharedSettings = Project['settings']['shared'];
|
|
3
|
+
type PreviewSettings = Project['settings']['preview'];
|
|
4
|
+
type RenderingSettings = Project['settings']['rendering'];
|
|
5
|
+
export declare function getFullPreviewSettings(project: Project): SharedSettings & PreviewSettings;
|
|
6
|
+
export declare function getFullRenderingSettings(project: Project): SharedSettings & RenderingSettings;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=project-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-settings.d.ts","sourceRoot":"","sources":["../../src/app/project-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAEvC,KAAK,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpD,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;AACtD,KAAK,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;AAE1D,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,GACf,cAAc,GAAG,eAAe,CAKlC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,GACf,cAAc,GAAG,iBAAiB,CAKpC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function getFullPreviewSettings(project) {
|
|
2
|
+
return {
|
|
3
|
+
...project.settings.shared,
|
|
4
|
+
...project.settings.preview,
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export function getFullRenderingSettings(project) {
|
|
8
|
+
return {
|
|
9
|
+
...project.settings.shared,
|
|
10
|
+
...project.settings.rendering,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvcHJvamVjdC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE9BQWdCO0lBRWhCLE9BQU87UUFDTCxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUMxQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTztLQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsT0FBZ0I7SUFFaEIsT0FBTztRQUNMLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQzFCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0tBQzlCLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorate.d.ts","sourceRoot":"","sources":["../../src/decorators/decorate.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,eAAe,EAAE,QAQtE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function decorate(fn, ...decorators) {
|
|
2
|
+
const target = { [fn.name]: fn };
|
|
3
|
+
const descriptor = Object.getOwnPropertyDescriptor(target, fn.name);
|
|
4
|
+
if (descriptor) {
|
|
5
|
+
for (let i = decorators.length - 1; i >= 0; i--) {
|
|
6
|
+
decorators[i](target, fn.name, descriptor);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9kZWNvcmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLEVBQVksRUFBRSxHQUFHLFVBQTZCO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLEVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDL0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecated.d.ts","sourceRoot":"","sources":["../../src/decorators/deprecated.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CAuB5D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { deprecate } from '../utils';
|
|
2
|
+
/**
|
|
3
|
+
* Create a deprecated decorator that marks methods as deprecated.
|
|
4
|
+
*/
|
|
5
|
+
export function deprecated(remarks) {
|
|
6
|
+
return function (target, propertyKey, descriptor) {
|
|
7
|
+
const name = target.constructor.name
|
|
8
|
+
? `${target.constructor.name}.${propertyKey}`
|
|
9
|
+
: propertyKey;
|
|
10
|
+
const message = `${name}() has been deprecated.`;
|
|
11
|
+
if (descriptor.value) {
|
|
12
|
+
descriptor.value = deprecate(descriptor.value, message, remarks);
|
|
13
|
+
}
|
|
14
|
+
if (descriptor.get) {
|
|
15
|
+
descriptor.get = deprecate(descriptor.get, message, remarks);
|
|
16
|
+
}
|
|
17
|
+
if (descriptor.set) {
|
|
18
|
+
descriptor.set = deprecate(descriptor.set, message, remarks);
|
|
19
|
+
}
|
|
20
|
+
return descriptor;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2RlcHJlY2F0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQzs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBZ0I7SUFDekMsT0FBTyxVQUNMLE1BQVcsRUFDWCxXQUE0QixFQUM1QixVQUE4QjtRQUU5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQVksV0FBVyxFQUFFO1lBQ3JELENBQUMsQ0FBUyxXQUFXLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLHlCQUF5QixDQUFDO1FBRWpELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixVQUFVLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkIsVUFBVSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property decorators.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export * from './decorate';
|
|
7
|
+
export * from './lazy';
|
|
8
|
+
export * from './threadable';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxjQUFjLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a lazy decorator.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* A property marked as lazy will not be initialized until it's requested for
|
|
6
|
+
* the first time. Lazy properties are read-only.
|
|
7
|
+
*
|
|
8
|
+
* Must be used for any static properties that require the DOM API to be
|
|
9
|
+
* initialized.
|
|
10
|
+
*
|
|
11
|
+
* @param factory - A function that returns the value of this property.
|
|
12
|
+
*/
|
|
13
|
+
export declare function lazy(factory: () => unknown): PropertyDecorator;
|
|
14
|
+
//# sourceMappingURL=lazy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/decorators/lazy.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,iBAAiB,CAY9D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const UNINITIALIZED = Symbol.for('@twick/core/decorators/UNINITIALIZED');
|
|
2
|
+
/**
|
|
3
|
+
* Create a lazy decorator.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* A property marked as lazy will not be initialized until it's requested for
|
|
7
|
+
* the first time. Lazy properties are read-only.
|
|
8
|
+
*
|
|
9
|
+
* Must be used for any static properties that require the DOM API to be
|
|
10
|
+
* initialized.
|
|
11
|
+
*
|
|
12
|
+
* @param factory - A function that returns the value of this property.
|
|
13
|
+
*/
|
|
14
|
+
export function lazy(factory) {
|
|
15
|
+
return (target, propertyKey) => {
|
|
16
|
+
let value = UNINITIALIZED;
|
|
17
|
+
Object.defineProperty(target, propertyKey, {
|
|
18
|
+
get() {
|
|
19
|
+
if (value === UNINITIALIZED) {
|
|
20
|
+
value = factory.call(this);
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2xhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRXpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFzQjtJQUN6QyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQzdCLElBQUksS0FBSyxHQUFZLGFBQWEsQ0FBQztRQUNuQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7WUFDekMsR0FBRztnQkFDRCxJQUFJLEtBQUssS0FBSyxhQUFhLEVBQUUsQ0FBQztvQkFDNUIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadable.d.ts","sourceRoot":"","sources":["../../src/decorators/threadable.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAS/D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function threadable(customName) {
|
|
2
|
+
return function (_, propertyKey, descriptor) {
|
|
3
|
+
descriptor.value.prototype.name = customName ?? propertyKey;
|
|
4
|
+
descriptor.value.prototype.threadable = true;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL3RocmVhZGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFVBQVUsQ0FBQyxVQUFtQjtJQUM1QyxPQUFPLFVBQ0wsQ0FBVSxFQUNWLFdBQTRCLEVBQzVCLFVBQThCO1FBRTlCLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLElBQUksV0FBVyxDQUFDO1FBQzVELFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Subscribable } from './EventDispatcherBase';
|
|
2
|
+
import { EventDispatcherBase } from './EventDispatcherBase';
|
|
3
|
+
export interface AsyncEventHandler<T> {
|
|
4
|
+
(value: T): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Dispatches an asynchronous {@link SubscribableEvent}.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* The {@link dispatch} method returns a promise that resolves when all the
|
|
11
|
+
* handlers resolve.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* class Example {
|
|
16
|
+
* // expose the event to external classes
|
|
17
|
+
* public get onValueChanged {
|
|
18
|
+
* return this.value.subscribable;
|
|
19
|
+
* }
|
|
20
|
+
* // create a private dispatcher
|
|
21
|
+
* private value = new AsyncEventDispatcher<number>();
|
|
22
|
+
*
|
|
23
|
+
* private async dispatchExample() {
|
|
24
|
+
* // dispatching returns a Promise.
|
|
25
|
+
* await this.value.dispatch(0);
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @typeParam T - The type of the argument passed to subscribers.
|
|
31
|
+
*/
|
|
32
|
+
export declare class AsyncEventDispatcher<T> extends EventDispatcherBase<T, AsyncEventHandler<T>> {
|
|
33
|
+
dispatch(value: T): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Provides safe access to the public interface of {@link AsyncEventDispatcher}.
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* External classes can use it to subscribe to an event without being able to
|
|
40
|
+
* dispatch it.
|
|
41
|
+
*
|
|
42
|
+
* @typeParam T - The type of the argument passed to subscribers.
|
|
43
|
+
*/
|
|
44
|
+
export type SubscribableAsyncEvent<T> = Subscribable<T, AsyncEventHandler<T>>;
|
|
45
|
+
//# sourceMappingURL=AsyncEventDispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncEventDispatcher.d.ts","sourceRoot":"","sources":["../../src/events/AsyncEventDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAC9D,CAAC,EACD,iBAAiB,CAAC,CAAC,CAAC,CACrB;IACc,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EventDispatcherBase } from './EventDispatcherBase';
|
|
2
|
+
/**
|
|
3
|
+
* Dispatches an asynchronous {@link SubscribableEvent}.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The {@link dispatch} method returns a promise that resolves when all the
|
|
7
|
+
* handlers resolve.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* class Example {
|
|
12
|
+
* // expose the event to external classes
|
|
13
|
+
* public get onValueChanged {
|
|
14
|
+
* return this.value.subscribable;
|
|
15
|
+
* }
|
|
16
|
+
* // create a private dispatcher
|
|
17
|
+
* private value = new AsyncEventDispatcher<number>();
|
|
18
|
+
*
|
|
19
|
+
* private async dispatchExample() {
|
|
20
|
+
* // dispatching returns a Promise.
|
|
21
|
+
* await this.value.dispatch(0);
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @typeParam T - The type of the argument passed to subscribers.
|
|
27
|
+
*/
|
|
28
|
+
export class AsyncEventDispatcher extends EventDispatcherBase {
|
|
29
|
+
async dispatch(value) {
|
|
30
|
+
await Promise.all(this.notifySubscribers(value));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXN5bmNFdmVudERpc3BhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzL0FzeW5jRXZlbnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBTTFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxPQUFPLG9CQUF3QixTQUFRLG1CQUc1QztJQUNRLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBUTtRQUM1QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Subscribable } from './EventDispatcherBase';
|
|
2
|
+
import { EventDispatcherBase } from './EventDispatcherBase';
|
|
3
|
+
/**
|
|
4
|
+
* Dispatches a {@link SubscribableEvent}.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* class Example {
|
|
9
|
+
* // expose the event to external classes
|
|
10
|
+
* public get onValueChanged {
|
|
11
|
+
* return this.value.subscribable;
|
|
12
|
+
* }
|
|
13
|
+
* // create a private dispatcher
|
|
14
|
+
* private value = new EventDispatcher<number>();
|
|
15
|
+
*
|
|
16
|
+
* private dispatchExample() {
|
|
17
|
+
* // dispatching will notify all subscribers.
|
|
18
|
+
* this.value.dispatch(0);
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @typeParam T - The type of the value argument to subscribers.
|
|
24
|
+
*/
|
|
25
|
+
export declare class EventDispatcher<T> extends EventDispatcherBase<T> {
|
|
26
|
+
dispatch(value: T): void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Provides safe access to the public interface of {@link EventDispatcher}.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* External classes can use it to subscribe to an event without being able to
|
|
33
|
+
* dispatch it.
|
|
34
|
+
*
|
|
35
|
+
* @typeParam T - The type of the argument passed to subscribers.
|
|
36
|
+
*/
|
|
37
|
+
export type SubscribableEvent<T> = Subscribable<T>;
|
|
38
|
+
//# sourceMappingURL=EventDispatcher.d.ts.map
|