@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
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
/**
|
|
3
|
+
* Run the given generator or callback after a specific amount of time.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* yield* delay(1, rect.fill('#ff0000', 2));
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* Note that the same animation can be written as:
|
|
11
|
+
* ```ts
|
|
12
|
+
* yield* waitFor(1),
|
|
13
|
+
* yield* rect.fill('#ff0000', 2),
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* The reason `delay` exists is to make it easier to pass it to other flow
|
|
17
|
+
* functions. For example:
|
|
18
|
+
* ```ts
|
|
19
|
+
* yield* all(
|
|
20
|
+
* rect.opacity(1, 3),
|
|
21
|
+
* delay(1, rect.fill('#ff0000', 2));
|
|
22
|
+
* );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @param time - The delay in seconds
|
|
26
|
+
* @param task - The task or callback to run after the delay.
|
|
27
|
+
*/
|
|
28
|
+
export declare function delay(time: number, task: ThreadGenerator | Callback): ThreadGenerator;
|
|
29
|
+
//# sourceMappingURL=delay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/flow/delay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAiB,KAAK,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,GAAG,QAAQ,GAC/B,eAAe,CAOjB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { decorate, threadable } from '../decorators';
|
|
2
|
+
import { waitFor } from './scheduling';
|
|
3
|
+
decorate(delay, threadable());
|
|
4
|
+
/**
|
|
5
|
+
* Run the given generator or callback after a specific amount of time.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* yield* delay(1, rect.fill('#ff0000', 2));
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Note that the same animation can be written as:
|
|
13
|
+
* ```ts
|
|
14
|
+
* yield* waitFor(1),
|
|
15
|
+
* yield* rect.fill('#ff0000', 2),
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The reason `delay` exists is to make it easier to pass it to other flow
|
|
19
|
+
* functions. For example:
|
|
20
|
+
* ```ts
|
|
21
|
+
* yield* all(
|
|
22
|
+
* rect.opacity(1, 3),
|
|
23
|
+
* delay(1, rect.fill('#ff0000', 2));
|
|
24
|
+
* );
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @param time - The delay in seconds
|
|
28
|
+
* @param task - The task or callback to run after the delay.
|
|
29
|
+
*/
|
|
30
|
+
export function* delay(time, task) {
|
|
31
|
+
yield* waitFor(time);
|
|
32
|
+
if ('next' in task) {
|
|
33
|
+
yield* task;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
task();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9kZWxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXJDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsS0FBSyxDQUNwQixJQUFZLEVBQ1osSUFBZ0M7SUFFaEMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
export interface EveryCallback {
|
|
3
|
+
/**
|
|
4
|
+
* A callback called by {@link EveryTimer} every N seconds.
|
|
5
|
+
*
|
|
6
|
+
* @param tick - The amount of times the timer has ticked.
|
|
7
|
+
*/
|
|
8
|
+
(tick: number): void;
|
|
9
|
+
}
|
|
10
|
+
export interface EveryTimer {
|
|
11
|
+
/**
|
|
12
|
+
* The generator responsible for running this timer.
|
|
13
|
+
*/
|
|
14
|
+
runner: ThreadGenerator;
|
|
15
|
+
setInterval(value: number): void;
|
|
16
|
+
setCallback(value: EveryCallback): void;
|
|
17
|
+
/**
|
|
18
|
+
* Wait until the timer ticks.
|
|
19
|
+
*/
|
|
20
|
+
sync(): ThreadGenerator;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Call the given callback every N seconds.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const timer = every(2, time => console.log(time));
|
|
28
|
+
* yield timer.runner;
|
|
29
|
+
*
|
|
30
|
+
* // current time: 0s
|
|
31
|
+
* yield* waitFor(5);
|
|
32
|
+
* // current time: 5s
|
|
33
|
+
* yield* timer.sync();
|
|
34
|
+
* // current time: 6s
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @param interval - The interval between subsequent calls.
|
|
38
|
+
* @param callback - The callback to be called.
|
|
39
|
+
*/
|
|
40
|
+
export declare function every(interval: number, callback: EveryCallback): EveryTimer;
|
|
41
|
+
//# sourceMappingURL=every.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../src/flow/every.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAExC;;OAEG;IACH,IAAI,IAAI,eAAe,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,UAAU,CAwC3E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { decorate, threadable } from '../decorators';
|
|
2
|
+
import { usePlayback } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Call the given callback every N seconds.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const timer = every(2, time => console.log(time));
|
|
9
|
+
* yield timer.runner;
|
|
10
|
+
*
|
|
11
|
+
* // current time: 0s
|
|
12
|
+
* yield* waitFor(5);
|
|
13
|
+
* // current time: 5s
|
|
14
|
+
* yield* timer.sync();
|
|
15
|
+
* // current time: 6s
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @param interval - The interval between subsequent calls.
|
|
19
|
+
* @param callback - The callback to be called.
|
|
20
|
+
*/
|
|
21
|
+
export function every(interval, callback) {
|
|
22
|
+
let changed = false;
|
|
23
|
+
decorate(everyRunner, threadable('every'));
|
|
24
|
+
function* everyRunner() {
|
|
25
|
+
const project = usePlayback();
|
|
26
|
+
let acc = 0;
|
|
27
|
+
let tick = 0;
|
|
28
|
+
callback(tick);
|
|
29
|
+
changed = true;
|
|
30
|
+
while (true) {
|
|
31
|
+
if (acc >= project.secondsToFrames(interval)) {
|
|
32
|
+
acc = 0;
|
|
33
|
+
tick++;
|
|
34
|
+
callback(tick);
|
|
35
|
+
changed = true;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
changed = false;
|
|
39
|
+
}
|
|
40
|
+
acc++;
|
|
41
|
+
yield;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
runner: everyRunner(),
|
|
46
|
+
setInterval(value) {
|
|
47
|
+
interval = value;
|
|
48
|
+
changed = false;
|
|
49
|
+
},
|
|
50
|
+
setCallback(value) {
|
|
51
|
+
callback = value;
|
|
52
|
+
changed = false;
|
|
53
|
+
},
|
|
54
|
+
*sync() {
|
|
55
|
+
while (!changed) {
|
|
56
|
+
yield;
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9ldmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBeUJyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBdUI7SUFDN0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLENBQUMsV0FBVztRQUNuQixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNqQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNsQixDQUFDO1lBQ0QsR0FBRyxFQUFFLENBQUM7WUFDTixLQUFLLENBQUM7UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3JCLFdBQVcsQ0FBQyxLQUFLO1lBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxXQUFXLENBQUMsS0FBSztZQUNmLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO1FBQ0QsQ0FBQyxJQUFJO1lBQ0gsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixLQUFLLENBQUM7WUFDUixDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for controlling the flow and timing of an animation.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export * from './all';
|
|
6
|
+
export * from './any';
|
|
7
|
+
export * from './chain';
|
|
8
|
+
export * from './delay';
|
|
9
|
+
export * from './every';
|
|
10
|
+
export * from './join';
|
|
11
|
+
export * from './loop';
|
|
12
|
+
export * from './loopFor';
|
|
13
|
+
export * from './names';
|
|
14
|
+
export * from './run';
|
|
15
|
+
export * from './scheduling';
|
|
16
|
+
export * from './sequence';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for controlling the flow and timing of an animation.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export * from './all';
|
|
6
|
+
export * from './any';
|
|
7
|
+
export * from './chain';
|
|
8
|
+
export * from './delay';
|
|
9
|
+
export * from './every';
|
|
10
|
+
export * from './join';
|
|
11
|
+
export * from './loop';
|
|
12
|
+
export * from './loopFor';
|
|
13
|
+
export * from './names';
|
|
14
|
+
export * from './run';
|
|
15
|
+
export * from './scheduling';
|
|
16
|
+
export * from './sequence';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQyJ9
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading/ThreadGenerator';
|
|
2
|
+
/**
|
|
3
|
+
* Pause the current generator until all listed tasks are finished.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const task = yield generatorFunction();
|
|
8
|
+
*
|
|
9
|
+
* // do something concurrently
|
|
10
|
+
*
|
|
11
|
+
* yield* join(task);
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @param tasks - A list of tasks to join.
|
|
15
|
+
*/
|
|
16
|
+
export declare function join(...tasks: ThreadGenerator[]): ThreadGenerator;
|
|
17
|
+
/**
|
|
18
|
+
* Pause the current generator until listed tasks are finished.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const taskA = yield generatorFunctionA();
|
|
23
|
+
* const taskB = yield generatorFunctionB();
|
|
24
|
+
*
|
|
25
|
+
* // do something concurrently
|
|
26
|
+
*
|
|
27
|
+
* // await any of the tasks
|
|
28
|
+
* yield* join(false, taskA, taskB);
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @param all - Whether we should wait for all tasks or for at least one.
|
|
32
|
+
* @param tasks - A list of tasks to join.
|
|
33
|
+
*/
|
|
34
|
+
export declare function join(all: boolean, ...tasks: ThreadGenerator[]): ThreadGenerator;
|
|
35
|
+
//# sourceMappingURL=join.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/flow/join.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAIlE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;AACnE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,OAAO,EACZ,GAAG,KAAK,EAAE,eAAe,EAAE,GAC1B,eAAe,CAAC"}
|
package/lib/flow/join.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { decorate, threadable } from '../decorators';
|
|
2
|
+
import { useThread } from '../utils';
|
|
3
|
+
decorate(join, threadable());
|
|
4
|
+
export function* join(first, ...tasks) {
|
|
5
|
+
let all = true;
|
|
6
|
+
if (typeof first === 'boolean') {
|
|
7
|
+
all = first;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
tasks.push(first);
|
|
11
|
+
}
|
|
12
|
+
const parent = useThread();
|
|
13
|
+
const threads = (tasks
|
|
14
|
+
.map(task => parent.children.find(thread => thread.runner === task))
|
|
15
|
+
.filter(thread => thread));
|
|
16
|
+
const startTime = parent.time();
|
|
17
|
+
let childTime;
|
|
18
|
+
if (all) {
|
|
19
|
+
while (threads.find(thread => !thread.canceled)) {
|
|
20
|
+
yield;
|
|
21
|
+
}
|
|
22
|
+
childTime = Math.max(...threads.map(thread => thread.time()));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
while (!threads.find(thread => thread.canceled)) {
|
|
26
|
+
yield;
|
|
27
|
+
}
|
|
28
|
+
const canceled = threads.filter(thread => thread.canceled);
|
|
29
|
+
childTime = Math.min(...canceled.map(thread => thread.time()));
|
|
30
|
+
}
|
|
31
|
+
parent.time(Math.max(startTime, childTime));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L2pvaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFxQzdCLE1BQU0sU0FBUyxDQUFDLENBQUMsSUFBSSxDQUNuQixLQUFnQyxFQUNoQyxHQUFHLEtBQXdCO0lBRTNCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztJQUNmLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxPQUFPLEdBQWEsQ0FDeEIsS0FBSztTQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNuRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FDNUIsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxJQUFJLFNBQVMsQ0FBQztJQUNkLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hELEtBQUssQ0FBQztRQUNSLENBQUM7UUFDRCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxLQUFLLENBQUM7UUFDUixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyJ9
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
export interface LoopCallback {
|
|
3
|
+
/**
|
|
4
|
+
* A callback called by {@link loop} during each iteration.
|
|
5
|
+
*
|
|
6
|
+
* @param i - The current iteration index.
|
|
7
|
+
*/
|
|
8
|
+
(i: number): ThreadGenerator | void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Run the given generator in a loop.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Each iteration waits until the previous one is completed.
|
|
15
|
+
* Because this loop never finishes it cannot be used in the main thread.
|
|
16
|
+
* Instead, use `yield` or {@link threading.spawn} to run the loop concurrently.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* Rotate the `rect` indefinitely:
|
|
20
|
+
* ```ts
|
|
21
|
+
* yield loop(
|
|
22
|
+
* () => rect.rotation(0).rotation(360, 2, linear),
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @param factory - A function creating the generator to run. Because generators
|
|
27
|
+
* can't be reset, a new generator is created on each
|
|
28
|
+
* iteration.
|
|
29
|
+
*/
|
|
30
|
+
export declare function loop(factory: LoopCallback): ThreadGenerator;
|
|
31
|
+
/**
|
|
32
|
+
* Run the given generator N times.
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* Each iteration waits until the previous one is completed.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const colors = [
|
|
40
|
+
* '#ff6470',
|
|
41
|
+
* '#ffc66d',
|
|
42
|
+
* '#68abdf',
|
|
43
|
+
* '#99c47a',
|
|
44
|
+
* ];
|
|
45
|
+
*
|
|
46
|
+
* yield* loop(
|
|
47
|
+
* colors.length,
|
|
48
|
+
* i => rect.fill(colors[i], 2),
|
|
49
|
+
* );
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @param iterations - The number of iterations.
|
|
53
|
+
* @param factory - A function creating the generator to run. Because generators
|
|
54
|
+
* can't be reset, a new generator is created on each
|
|
55
|
+
* iteration.
|
|
56
|
+
*/
|
|
57
|
+
export declare function loop(iterations: number, factory: LoopCallback): ThreadGenerator;
|
|
58
|
+
//# sourceMappingURL=loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/flow/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AA4BlD,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CACrC;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,eAAe,CAAC;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,IAAI,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,eAAe,CAAC"}
|
package/lib/flow/loop.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { decorate, threadable } from '../decorators';
|
|
2
|
+
import { useLogger, useThread } from '../utils';
|
|
3
|
+
const infiniteLoop = `
|
|
4
|
+
Make sure to use \`yield\` or \`spawn()\` to execute the loop concurrently in a
|
|
5
|
+
separate thread:
|
|
6
|
+
|
|
7
|
+
\`\`\`ts wrong
|
|
8
|
+
// prettier-ignore
|
|
9
|
+
yield* loop(() => rect().opacity(0).opacity(1, 1));
|
|
10
|
+
\`\`\`
|
|
11
|
+
|
|
12
|
+
\`\`\`ts correct
|
|
13
|
+
yield loop(() => rect().opacity(0).opacity(1, 1));
|
|
14
|
+
// or
|
|
15
|
+
spawn(loop(() => rect().opacity(0).opacity(1, 1)));
|
|
16
|
+
\`\`\`
|
|
17
|
+
|
|
18
|
+
If you want to execute the loop a finite number of times, specify the iteration
|
|
19
|
+
count as the first argument:
|
|
20
|
+
|
|
21
|
+
\`\`\`ts
|
|
22
|
+
// prettier-ignore
|
|
23
|
+
yield* loop(10, () => rect().opacity(0).opacity(1, 1));
|
|
24
|
+
// ^ iteration count
|
|
25
|
+
\`\`\`
|
|
26
|
+
`;
|
|
27
|
+
decorate(loop, threadable());
|
|
28
|
+
export function* loop(iterations, factory) {
|
|
29
|
+
if (typeof iterations !== 'number') {
|
|
30
|
+
factory = iterations;
|
|
31
|
+
iterations = Infinity;
|
|
32
|
+
}
|
|
33
|
+
if (iterations === Infinity && useThread().parent === null) {
|
|
34
|
+
useLogger().error({
|
|
35
|
+
message: 'Tried to execute an infinite loop in the main thread.',
|
|
36
|
+
remarks: infiniteLoop,
|
|
37
|
+
stack: new Error().stack,
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
for (let i = 0; i < iterations; i++) {
|
|
42
|
+
const generator = factory(i);
|
|
43
|
+
if (generator) {
|
|
44
|
+
yield* generator;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
yield;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L2xvb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUMsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBdUJwQixDQUFDO0FBV0YsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBcUQ3QixNQUFNLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDbkIsVUFBaUMsRUFDakMsT0FBc0I7SUFFdEIsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQ3JCLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksVUFBVSxLQUFLLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDM0QsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSx1REFBdUQ7WUFDaEUsT0FBTyxFQUFFLFlBQVk7WUFDckIsS0FBSyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUMsS0FBSztTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxPQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQztRQUNSLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
import type { LoopCallback } from './loop';
|
|
3
|
+
/**
|
|
4
|
+
* Run a generator in a loop for the given amount of time.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Generators are executed completely before the next iteration starts.
|
|
8
|
+
* An iteration is allowed to finish even when the time is up. This means that
|
|
9
|
+
* the actual duration of the loop may be longer than the given duration.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* yield* loopFor(
|
|
14
|
+
* 3,
|
|
15
|
+
* () => circle().position.x(-10, 0.1).to(10, 0.1)
|
|
16
|
+
* );
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @param seconds - The duration in seconds.
|
|
20
|
+
* @param factory - A function creating the generator to run. Because generators
|
|
21
|
+
* can't be reset, a new generator is created on each
|
|
22
|
+
* iteration.
|
|
23
|
+
*/
|
|
24
|
+
export declare function loopFor(seconds: number, factory: LoopCallback): ThreadGenerator;
|
|
25
|
+
//# sourceMappingURL=loopFor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopFor.d.ts","sourceRoot":"","sources":["../../src/flow/loopFor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAGzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAiB,OAAO,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,eAAe,CAgBjB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { decorate, threadable } from '../decorators';
|
|
2
|
+
import { usePlayback, useThread } from '../utils';
|
|
3
|
+
decorate(loopFor, threadable());
|
|
4
|
+
/**
|
|
5
|
+
* Run a generator in a loop for the given amount of time.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Generators are executed completely before the next iteration starts.
|
|
9
|
+
* An iteration is allowed to finish even when the time is up. This means that
|
|
10
|
+
* the actual duration of the loop may be longer than the given duration.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* yield* loopFor(
|
|
15
|
+
* 3,
|
|
16
|
+
* () => circle().position.x(-10, 0.1).to(10, 0.1)
|
|
17
|
+
* );
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param seconds - The duration in seconds.
|
|
21
|
+
* @param factory - A function creating the generator to run. Because generators
|
|
22
|
+
* can't be reset, a new generator is created on each
|
|
23
|
+
* iteration.
|
|
24
|
+
*/
|
|
25
|
+
export function* loopFor(seconds, factory) {
|
|
26
|
+
const thread = useThread();
|
|
27
|
+
const step = usePlayback().framesToSeconds(1);
|
|
28
|
+
const targetTime = thread.time() + seconds;
|
|
29
|
+
let iteration = 0;
|
|
30
|
+
while (targetTime - step > thread.fixed) {
|
|
31
|
+
const generator = factory(iteration);
|
|
32
|
+
if (generator) {
|
|
33
|
+
yield* generator;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
yield;
|
|
37
|
+
}
|
|
38
|
+
iteration += 1;
|
|
39
|
+
}
|
|
40
|
+
thread.time(targetTime);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcEZvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L2xvb3BGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHaEQsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsT0FBTyxDQUN0QixPQUFlLEVBQ2YsT0FBcUI7SUFFckIsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFM0MsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE9BQU8sVUFBVSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUM7UUFDUixDQUFDO1FBQ0QsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/flow/names.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAM7E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function setTaskName(task, source) {
|
|
2
|
+
const prototype = Object.getPrototypeOf(task);
|
|
3
|
+
if (!prototype.threadable) {
|
|
4
|
+
prototype.threadable = true;
|
|
5
|
+
prototype.name = typeof source === 'string' ? source : getTaskName(source);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export function getTaskName(task) {
|
|
9
|
+
return Object.getPrototypeOf(task).name ?? null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9uYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQWUsRUFBRSxNQUEwQjtJQUNyRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDNUIsU0FBUyxDQUFDLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFlO0lBQ3pDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO0FBQ2xELENBQUMifQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
/**
|
|
3
|
+
* Turn the given generator function into a task.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* If you want to immediately run the generator in its own thread, you can use
|
|
7
|
+
* {@link threading.spawn} instead. This function is useful when you want to
|
|
8
|
+
* pass the created task to other flow functions.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* yield* all(
|
|
13
|
+
* run(function* () {
|
|
14
|
+
* // do things
|
|
15
|
+
* }),
|
|
16
|
+
* rect.opacity(1, 1),
|
|
17
|
+
* );
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param runner - A generator function or a factory that creates the generator.
|
|
21
|
+
*/
|
|
22
|
+
export declare function run(runner: () => ThreadGenerator): ThreadGenerator;
|
|
23
|
+
/**
|
|
24
|
+
* Turn the given generator function into a task.
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* If you want to immediately run the generator in its own thread, you can use
|
|
28
|
+
* {@link threading.spawn} instead. This function is useful when you want to
|
|
29
|
+
* pass the created task to other flow functions.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* yield* all(
|
|
34
|
+
* run(function* () {
|
|
35
|
+
* // do things
|
|
36
|
+
* }),
|
|
37
|
+
* rect.opacity(1, 1),
|
|
38
|
+
* );
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @param runner - A generator function or a factory that creates the generator.
|
|
42
|
+
* @param name - An optional name used when displaying this generator in the UI.
|
|
43
|
+
*/
|
|
44
|
+
export declare function run(name: string, runner: () => ThreadGenerator): ThreadGenerator;
|
|
45
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/flow/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,eAAe,GAAG,eAAe,CAAC;AACpE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,GAAG,CACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,eAAe,GAC5B,eAAe,CAAC"}
|
package/lib/flow/run.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { setTaskName } from './names';
|
|
2
|
+
export function run(firstArg, runner) {
|
|
3
|
+
let task;
|
|
4
|
+
if (typeof firstArg === 'string') {
|
|
5
|
+
task = runner();
|
|
6
|
+
setTaskName(task, firstArg);
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
task = firstArg();
|
|
10
|
+
setTaskName(task, task);
|
|
11
|
+
}
|
|
12
|
+
return task;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvcnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFnRHBDLE1BQU0sVUFBVSxHQUFHLENBQ2pCLFFBQTBDLEVBQzFDLE1BQThCO0lBRTlCLElBQUksSUFBSSxDQUFDO0lBQ1QsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEdBQUcsTUFBTyxFQUFFLENBQUM7UUFDakIsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQztRQUNsQixXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
/**
|
|
3
|
+
* Wait for the given amount of time.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* // current time: 0s
|
|
8
|
+
* yield waitFor(2);
|
|
9
|
+
* // current time: 2s
|
|
10
|
+
* yield waitFor(3);
|
|
11
|
+
* // current time: 5s
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @param seconds - The relative time in seconds.
|
|
15
|
+
* @param after - An optional task to be run after the function completes.
|
|
16
|
+
*/
|
|
17
|
+
export declare function waitFor(seconds?: number, after?: ThreadGenerator): ThreadGenerator;
|
|
18
|
+
//# sourceMappingURL=scheduling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../src/flow/scheduling.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,OAAO,CACtB,OAAO,SAAI,EACX,KAAK,CAAC,EAAE,eAAe,GACtB,eAAe,CAejB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { decorate, threadable } from '../decorators';
|
|
2
|
+
import { usePlayback, useThread } from '../utils';
|
|
3
|
+
decorate(waitFor, threadable());
|
|
4
|
+
/**
|
|
5
|
+
* Wait for the given amount of time.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // current time: 0s
|
|
10
|
+
* yield waitFor(2);
|
|
11
|
+
* // current time: 2s
|
|
12
|
+
* yield waitFor(3);
|
|
13
|
+
* // current time: 5s
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @param seconds - The relative time in seconds.
|
|
17
|
+
* @param after - An optional task to be run after the function completes.
|
|
18
|
+
*/
|
|
19
|
+
export function* waitFor(seconds = 0, after) {
|
|
20
|
+
const thread = useThread();
|
|
21
|
+
const step = usePlayback().framesToSeconds(1);
|
|
22
|
+
const targetTime = thread.time() + seconds;
|
|
23
|
+
// subtracting the step is not necessary, but it keeps the thread time ahead
|
|
24
|
+
// of the project time.
|
|
25
|
+
while (targetTime - step > thread.fixed) {
|
|
26
|
+
yield;
|
|
27
|
+
}
|
|
28
|
+
thread.time(targetTime);
|
|
29
|
+
if (after) {
|
|
30
|
+
yield* after;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L3NjaGVkdWxpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFaEQsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQ3RCLE9BQU8sR0FBRyxDQUFDLEVBQ1gsS0FBdUI7SUFFdkIsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDM0MsNEVBQTRFO0lBQzVFLHVCQUF1QjtJQUN2QixPQUFPLFVBQVUsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLEtBQUssQ0FBQztJQUNSLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ThreadGenerator } from '../threading';
|
|
2
|
+
/**
|
|
3
|
+
* Start all tasks one after another with a constant delay between.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The function doesn't wait until the previous task in the sequence has
|
|
7
|
+
* finished. Once the delay has passed, the next task will start even if
|
|
8
|
+
* the previous is still running.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* yield* sequence(
|
|
13
|
+
* 0.1,
|
|
14
|
+
* ...rects.map(rect => rect.x(100, 1))
|
|
15
|
+
* );
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @param delay - The delay between each of the tasks.
|
|
19
|
+
* @param tasks - A list of tasks to be run in a sequence.
|
|
20
|
+
*/
|
|
21
|
+
export declare function sequence(delay: number, ...tasks: ThreadGenerator[]): ThreadGenerator;
|
|
22
|
+
//# sourceMappingURL=sequence.d.ts.map
|