@twick/core 0.14.19 → 0.14.21
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/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 +9 -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 +2 -2
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,CAW/D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function threadable(customName) {
|
|
2
|
+
return function (_, propertyKey, descriptor) {
|
|
3
|
+
if (descriptor?.value?.prototype) {
|
|
4
|
+
descriptor.value.prototype.name = customName ?? propertyKey;
|
|
5
|
+
descriptor.value.prototype.threadable = true;
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL3RocmVhZGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFVBQVUsQ0FBQyxVQUFtQjtJQUM1QyxPQUFPLFVBQ0wsQ0FBVSxFQUNWLFdBQTRCLEVBQzVCLFVBQThCO1FBRTlCLElBQUksVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNqQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxJQUFJLFdBQVcsQ0FBQztZQUM1RCxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -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=
|