@twick/2d 0.14.0 → 1.14.3
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 -21
- package/editor/editor/tsconfig.build.tsbuildinfo +1 -1
- package/lib/components/Audio.d.ts.map +1 -1
- package/lib/components/Audio.js +33 -3
- package/lib/components/CodeBlock.d.ts +1 -1
- package/lib/components/Img.js +23 -23
- package/lib/components/Line.js +31 -31
- package/lib/components/Media.d.ts +6 -0
- package/lib/components/Media.d.ts.map +1 -1
- package/lib/components/Media.js +277 -61
- package/lib/components/Node.d.ts +1 -1
- package/lib/components/Path.d.ts +1 -1
- package/lib/components/SVG.d.ts +1 -1
- package/lib/components/Shape.d.ts +1 -1
- package/lib/components/Spline.js +25 -25
- package/lib/components/Video.d.ts +0 -1
- package/lib/components/Video.d.ts.map +1 -1
- package/lib/components/Video.js +70 -65
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -5
- package/src/editor/NodeInspectorConfig.tsx +76 -76
- package/src/editor/PreviewOverlayConfig.tsx +67 -67
- package/src/editor/Provider.tsx +93 -93
- package/src/editor/SceneGraphTabConfig.tsx +81 -81
- package/src/editor/icons/CircleIcon.tsx +7 -7
- package/src/editor/icons/CodeBlockIcon.tsx +8 -8
- package/src/editor/icons/CurveIcon.tsx +7 -7
- package/src/editor/icons/GridIcon.tsx +7 -7
- package/src/editor/icons/IconMap.ts +35 -35
- package/src/editor/icons/ImgIcon.tsx +8 -8
- package/src/editor/icons/LayoutIcon.tsx +9 -9
- package/src/editor/icons/LineIcon.tsx +7 -7
- package/src/editor/icons/NodeIcon.tsx +7 -7
- package/src/editor/icons/RayIcon.tsx +7 -7
- package/src/editor/icons/RectIcon.tsx +7 -7
- package/src/editor/icons/ShapeIcon.tsx +7 -7
- package/src/editor/icons/TxtIcon.tsx +8 -8
- package/src/editor/icons/VideoIcon.tsx +7 -7
- package/src/editor/icons/View2DIcon.tsx +10 -10
- package/src/editor/index.ts +17 -17
- package/src/editor/tree/DetachedRoot.tsx +23 -23
- package/src/editor/tree/NodeElement.tsx +74 -74
- package/src/editor/tree/TreeElement.tsx +72 -72
- package/src/editor/tree/TreeRoot.tsx +10 -10
- package/src/editor/tree/ViewRoot.tsx +20 -20
- package/src/editor/tree/index.module.scss +38 -38
- package/src/editor/tree/index.ts +3 -3
- package/src/editor/tsconfig.build.json +5 -5
- package/src/editor/tsconfig.json +12 -12
- package/src/editor/tsdoc.json +4 -4
- package/src/editor/vite-env.d.ts +1 -1
- package/src/lib/code/CodeCursor.ts +445 -445
- package/src/lib/code/CodeDiffer.ts +78 -78
- package/src/lib/code/CodeFragment.ts +97 -97
- package/src/lib/code/CodeHighlighter.ts +75 -75
- package/src/lib/code/CodeMetrics.ts +47 -47
- package/src/lib/code/CodeRange.test.ts +74 -74
- package/src/lib/code/CodeRange.ts +216 -216
- package/src/lib/code/CodeScope.ts +101 -101
- package/src/lib/code/CodeSelection.ts +24 -24
- package/src/lib/code/CodeSignal.ts +327 -327
- package/src/lib/code/CodeTokenizer.ts +54 -54
- package/src/lib/code/DefaultHighlightStyle.ts +98 -98
- package/src/lib/code/LezerHighlighter.ts +113 -113
- package/src/lib/code/diff.test.ts +311 -311
- package/src/lib/code/diff.ts +319 -319
- package/src/lib/code/extractRange.ts +126 -126
- package/src/lib/code/index.ts +13 -13
- package/src/lib/components/Audio.ts +168 -131
- package/src/lib/components/Bezier.ts +105 -105
- package/src/lib/components/Circle.ts +266 -266
- package/src/lib/components/Code.ts +526 -526
- package/src/lib/components/CodeBlock.ts +576 -576
- package/src/lib/components/CubicBezier.ts +112 -112
- package/src/lib/components/Curve.ts +455 -455
- package/src/lib/components/Grid.ts +135 -135
- package/src/lib/components/Icon.ts +96 -96
- package/src/lib/components/Img.ts +319 -319
- package/src/lib/components/Knot.ts +157 -157
- package/src/lib/components/Latex.ts +122 -122
- package/src/lib/components/Layout.ts +1092 -1092
- package/src/lib/components/Line.ts +429 -429
- package/src/lib/components/Media.ts +576 -346
- package/src/lib/components/Node.ts +1940 -1940
- package/src/lib/components/Path.ts +137 -137
- package/src/lib/components/Polygon.ts +171 -171
- package/src/lib/components/QuadBezier.ts +100 -100
- package/src/lib/components/Ray.ts +125 -125
- package/src/lib/components/Rect.ts +187 -187
- package/src/lib/components/Rive.ts +156 -156
- package/src/lib/components/SVG.ts +797 -797
- package/src/lib/components/Shape.ts +143 -143
- package/src/lib/components/Spline.ts +344 -344
- package/src/lib/components/Txt.test.tsx +81 -81
- package/src/lib/components/Txt.ts +203 -203
- package/src/lib/components/TxtLeaf.ts +205 -205
- package/src/lib/components/Video.ts +461 -462
- package/src/lib/components/View2D.ts +98 -98
- package/src/lib/components/__tests__/children.test.tsx +142 -142
- package/src/lib/components/__tests__/clone.test.tsx +126 -126
- package/src/lib/components/__tests__/generatorTest.ts +28 -28
- package/src/lib/components/__tests__/mockScene2D.ts +45 -45
- package/src/lib/components/__tests__/query.test.tsx +122 -122
- package/src/lib/components/__tests__/state.test.tsx +60 -60
- package/src/lib/components/index.ts +28 -28
- package/src/lib/components/types.ts +35 -35
- package/src/lib/curves/ArcSegment.ts +159 -159
- package/src/lib/curves/CircleSegment.ts +77 -77
- package/src/lib/curves/CubicBezierSegment.ts +78 -78
- package/src/lib/curves/CurveDrawingInfo.ts +11 -11
- package/src/lib/curves/CurvePoint.ts +15 -15
- package/src/lib/curves/CurveProfile.ts +7 -7
- package/src/lib/curves/KnotInfo.ts +10 -10
- package/src/lib/curves/LineSegment.ts +62 -62
- package/src/lib/curves/Polynomial.ts +355 -355
- package/src/lib/curves/Polynomial2D.ts +62 -62
- package/src/lib/curves/PolynomialSegment.ts +124 -124
- package/src/lib/curves/QuadBezierSegment.ts +64 -64
- package/src/lib/curves/Segment.ts +17 -17
- package/src/lib/curves/UniformPolynomialCurveSampler.ts +94 -94
- package/src/lib/curves/createCurveProfileLerp.ts +471 -471
- package/src/lib/curves/getBezierSplineProfile.ts +223 -223
- package/src/lib/curves/getCircleProfile.ts +86 -86
- package/src/lib/curves/getPathProfile.ts +178 -178
- package/src/lib/curves/getPointAtDistance.ts +21 -21
- package/src/lib/curves/getPolylineProfile.test.ts +21 -21
- package/src/lib/curves/getPolylineProfile.ts +89 -89
- package/src/lib/curves/getRectProfile.ts +139 -139
- package/src/lib/curves/index.ts +16 -16
- package/src/lib/decorators/canvasStyleSignal.ts +16 -16
- package/src/lib/decorators/colorSignal.ts +9 -9
- package/src/lib/decorators/compound.ts +72 -72
- package/src/lib/decorators/computed.ts +18 -18
- package/src/lib/decorators/defaultStyle.ts +18 -18
- package/src/lib/decorators/filtersSignal.ts +136 -136
- package/src/lib/decorators/index.ts +10 -10
- package/src/lib/decorators/initializers.ts +32 -32
- package/src/lib/decorators/nodeName.ts +13 -13
- package/src/lib/decorators/signal.test.ts +90 -90
- package/src/lib/decorators/signal.ts +345 -345
- package/src/lib/decorators/spacingSignal.ts +15 -15
- package/src/lib/decorators/vector2Signal.ts +30 -30
- package/src/lib/globals.d.ts +2 -2
- package/src/lib/index.ts +8 -8
- package/src/lib/jsx-dev-runtime.ts +2 -2
- package/src/lib/jsx-runtime.ts +46 -46
- package/src/lib/parse-svg-path.d.ts +14 -14
- package/src/lib/partials/Filter.ts +180 -180
- package/src/lib/partials/Gradient.ts +102 -102
- package/src/lib/partials/Pattern.ts +34 -34
- package/src/lib/partials/ShaderConfig.ts +117 -117
- package/src/lib/partials/index.ts +4 -4
- package/src/lib/partials/types.ts +58 -58
- package/src/lib/scenes/Scene2D.ts +242 -242
- package/src/lib/scenes/index.ts +3 -3
- package/src/lib/scenes/makeScene2D.ts +16 -16
- package/src/lib/scenes/useScene2D.ts +6 -6
- package/src/lib/tsconfig.build.json +5 -5
- package/src/lib/tsconfig.json +10 -10
- package/src/lib/tsdoc.json +4 -4
- package/src/lib/utils/CanvasUtils.ts +306 -306
- package/src/lib/utils/diff.test.ts +453 -453
- package/src/lib/utils/diff.ts +148 -148
- package/src/lib/utils/index.ts +2 -2
- package/src/lib/utils/is.ts +11 -11
- package/src/lib/utils/makeSignalExtensions.ts +30 -30
- package/src/lib/utils/video/declarations.d.ts +1 -1
- package/src/lib/utils/video/ffmpeg-client.ts +50 -50
- package/src/lib/utils/video/mp4-parser-manager.ts +72 -72
- package/src/lib/utils/video/parser/index.ts +1 -1
- package/src/lib/utils/video/parser/parser.ts +257 -257
- package/src/lib/utils/video/parser/sampler.ts +72 -72
- package/src/lib/utils/video/parser/segment.ts +302 -302
- package/src/lib/utils/video/parser/sink.ts +29 -29
- package/src/lib/utils/video/parser/utils.ts +31 -31
- package/src/tsconfig.base.json +19 -19
- package/src/tsconfig.build.json +8 -8
- package/src/tsconfig.json +5 -5
- package/tsconfig.project.json +7 -7
- package/lib/components/utils/waitUntil.d.ts +0 -7
- package/lib/components/utils/waitUntil.d.ts.map +0 -1
- package/lib/components/utils/waitUntil.js +0 -15
- package/lib/utils/waitUntil.d.ts +0 -7
- package/lib/utils/waitUntil.d.ts.map +0 -1
- package/lib/utils/waitUntil.js +0 -15
- package/src/lib/utils/waitUntil.ts +0 -18
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import {DataStream} from 'mp4box';
|
|
2
|
-
|
|
3
|
-
export function description(file: any, track: any) {
|
|
4
|
-
const trak = file.getTrackById(track.id);
|
|
5
|
-
for (const entry of trak.mdia.minf.stbl.stsd.entries) {
|
|
6
|
-
const box = entry.avcC || entry.hvcC || entry.vpcC || entry.av1C;
|
|
7
|
-
if (box) {
|
|
8
|
-
const stream = new DataStream(undefined, 0, DataStream.BIG_ENDIAN);
|
|
9
|
-
box.write(stream);
|
|
10
|
-
return new Uint8Array(stream.buffer, 8); // Remove the box header.
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
throw new Error('avcC, hvcC, vpcC, or av1C box not found');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface Edit {
|
|
17
|
-
mediaTime: number;
|
|
18
|
-
segmentDuration: number;
|
|
19
|
-
mediaRateInteger: number;
|
|
20
|
-
mediaRateFraction: number;
|
|
21
|
-
fps: number;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function mp4BoxEditToEdit(edit: any): Omit<Edit, 'fps'> {
|
|
25
|
-
return {
|
|
26
|
-
mediaTime: edit.media_time,
|
|
27
|
-
segmentDuration: edit.segment_duration,
|
|
28
|
-
mediaRateInteger: edit.media_rate_integer,
|
|
29
|
-
mediaRateFraction: edit.media_rate_fraction,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
1
|
+
import {DataStream} from 'mp4box';
|
|
2
|
+
|
|
3
|
+
export function description(file: any, track: any) {
|
|
4
|
+
const trak = file.getTrackById(track.id);
|
|
5
|
+
for (const entry of trak.mdia.minf.stbl.stsd.entries) {
|
|
6
|
+
const box = entry.avcC || entry.hvcC || entry.vpcC || entry.av1C;
|
|
7
|
+
if (box) {
|
|
8
|
+
const stream = new DataStream(undefined, 0, DataStream.BIG_ENDIAN);
|
|
9
|
+
box.write(stream);
|
|
10
|
+
return new Uint8Array(stream.buffer, 8); // Remove the box header.
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
throw new Error('avcC, hvcC, vpcC, or av1C box not found');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface Edit {
|
|
17
|
+
mediaTime: number;
|
|
18
|
+
segmentDuration: number;
|
|
19
|
+
mediaRateInteger: number;
|
|
20
|
+
mediaRateFraction: number;
|
|
21
|
+
fps: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function mp4BoxEditToEdit(edit: any): Omit<Edit, 'fps'> {
|
|
25
|
+
return {
|
|
26
|
+
mediaTime: edit.media_time,
|
|
27
|
+
segmentDuration: edit.segment_duration,
|
|
28
|
+
mediaRateInteger: edit.media_rate_integer,
|
|
29
|
+
mediaRateFraction: edit.media_rate_fraction,
|
|
30
|
+
};
|
|
31
|
+
}
|
package/src/tsconfig.base.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"rootDir": ".",
|
|
4
|
-
"outDir": "..",
|
|
5
|
-
"strict": true,
|
|
6
|
-
"noImplicitOverride": true,
|
|
7
|
-
"module": "esnext",
|
|
8
|
-
"target": "es2020",
|
|
9
|
-
"moduleResolution": "node",
|
|
10
|
-
"resolveJsonModule": true,
|
|
11
|
-
"declaration": true,
|
|
12
|
-
"declarationMap": true,
|
|
13
|
-
"inlineSourceMap": true,
|
|
14
|
-
"experimentalDecorators": true,
|
|
15
|
-
"skipLibCheck": true,
|
|
16
|
-
"composite": true,
|
|
17
|
-
"incremental": true
|
|
18
|
-
}
|
|
19
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"rootDir": ".",
|
|
4
|
+
"outDir": "..",
|
|
5
|
+
"strict": true,
|
|
6
|
+
"noImplicitOverride": true,
|
|
7
|
+
"module": "esnext",
|
|
8
|
+
"target": "es2020",
|
|
9
|
+
"moduleResolution": "node",
|
|
10
|
+
"resolveJsonModule": true,
|
|
11
|
+
"declaration": true,
|
|
12
|
+
"declarationMap": true,
|
|
13
|
+
"inlineSourceMap": true,
|
|
14
|
+
"experimentalDecorators": true,
|
|
15
|
+
"skipLibCheck": true,
|
|
16
|
+
"composite": true,
|
|
17
|
+
"incremental": true
|
|
18
|
+
}
|
|
19
|
+
}
|
package/src/tsconfig.build.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
{
|
|
2
|
-
"files": [],
|
|
3
|
-
"include": [],
|
|
4
|
-
"references": [
|
|
5
|
-
{"path": "./lib/tsconfig.build.json"},
|
|
6
|
-
{"path": "./editor/tsconfig.build.json"}
|
|
7
|
-
]
|
|
8
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"files": [],
|
|
3
|
+
"include": [],
|
|
4
|
+
"references": [
|
|
5
|
+
{"path": "./lib/tsconfig.build.json"},
|
|
6
|
+
{"path": "./editor/tsconfig.build.json"}
|
|
7
|
+
]
|
|
8
|
+
}
|
package/src/tsconfig.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
{
|
|
2
|
-
"files": [],
|
|
3
|
-
"include": [],
|
|
4
|
-
"references": [{"path": "./lib"}, {"path": "./editor"}]
|
|
5
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"files": [],
|
|
3
|
+
"include": [],
|
|
4
|
+
"references": [{"path": "./lib"}, {"path": "./editor"}]
|
|
5
|
+
}
|
package/tsconfig.project.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "@twick/core/tsconfig.project.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"jsx": "react-jsx",
|
|
5
|
-
"jsxImportSource": "@twick/2d/lib"
|
|
6
|
-
}
|
|
7
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": "@twick/core/tsconfig.project.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"jsx": "react-jsx",
|
|
5
|
+
"jsxImportSource": "@twick/2d/lib"
|
|
6
|
+
}
|
|
7
|
+
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Waits until a condition is met.
|
|
3
|
-
* @param condition - Function that returns true when the condition is met
|
|
4
|
-
* @param timeout - Optional timeout in milliseconds
|
|
5
|
-
*/
|
|
6
|
-
export declare function waitUntil(condition: () => boolean, timeout?: number): Generator<void, void, unknown>;
|
|
7
|
-
//# sourceMappingURL=waitUntil.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitUntil.d.ts","sourceRoot":"","sources":["../../../src/lib/components/utils/waitUntil.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAiB,SAAS,CACxB,SAAS,EAAE,MAAM,OAAO,EACxB,OAAO,GAAE,MAAc,GACtB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAShC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Waits until a condition is met.
|
|
3
|
-
* @param condition - Function that returns true when the condition is met
|
|
4
|
-
* @param timeout - Optional timeout in milliseconds
|
|
5
|
-
*/
|
|
6
|
-
export function* waitUntil(condition, timeout = 10000) {
|
|
7
|
-
const startTime = Date.now();
|
|
8
|
-
while (!condition()) {
|
|
9
|
-
if (Date.now() - startTime > timeout) {
|
|
10
|
-
throw new Error('Timeout waiting for condition');
|
|
11
|
-
}
|
|
12
|
-
yield;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdFVudGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL3dhaXRVbnRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQ3hCLFNBQXdCLEVBQ3hCLFVBQWtCLEtBQUs7SUFFdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTdCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELEtBQUssQ0FBQztJQUNSLENBQUM7QUFDSCxDQUFDIn0=
|
package/lib/utils/waitUntil.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Waits until a condition is met.
|
|
3
|
-
* @param condition - Function that returns true when the condition is met
|
|
4
|
-
* @param timeout - Optional timeout in milliseconds
|
|
5
|
-
*/
|
|
6
|
-
export declare function waitUntil(condition: () => boolean, timeout?: number): Generator<void, void, unknown>;
|
|
7
|
-
//# sourceMappingURL=waitUntil.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitUntil.d.ts","sourceRoot":"","sources":["../../src/lib/utils/waitUntil.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAiB,SAAS,CACxB,SAAS,EAAE,MAAM,OAAO,EACxB,OAAO,GAAE,MAAc,GACtB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAShC"}
|
package/lib/utils/waitUntil.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Waits until a condition is met.
|
|
3
|
-
* @param condition - Function that returns true when the condition is met
|
|
4
|
-
* @param timeout - Optional timeout in milliseconds
|
|
5
|
-
*/
|
|
6
|
-
export function* waitUntil(condition, timeout = 10000) {
|
|
7
|
-
const startTime = Date.now();
|
|
8
|
-
while (!condition()) {
|
|
9
|
-
if (Date.now() - startTime > timeout) {
|
|
10
|
-
throw new Error('Timeout waiting for condition');
|
|
11
|
-
}
|
|
12
|
-
yield;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdFVudGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi91dGlscy93YWl0VW50aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsU0FBUyxDQUN4QixTQUF3QixFQUN4QixVQUFrQixLQUFLO0lBRXZCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU3QixPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxLQUFLLENBQUM7SUFDUixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Waits until a condition is met.
|
|
3
|
-
* @param condition - Function that returns true when the condition is met
|
|
4
|
-
* @param timeout - Optional timeout in milliseconds
|
|
5
|
-
*/
|
|
6
|
-
export function* waitUntil(
|
|
7
|
-
condition: () => boolean,
|
|
8
|
-
timeout: number = 10000,
|
|
9
|
-
): Generator<void, void, unknown> {
|
|
10
|
-
const startTime = Date.now();
|
|
11
|
-
|
|
12
|
-
while (!condition()) {
|
|
13
|
-
if (Date.now() - startTime > timeout) {
|
|
14
|
-
throw new Error('Timeout waiting for condition');
|
|
15
|
-
}
|
|
16
|
-
yield;
|
|
17
|
-
}
|
|
18
|
-
}
|