xbintsc 0.5.31 → 0.5.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -10
- package/dist/src/binder/references.js +14 -1
- package/dist/src/binder/references.js.map +1 -1
- package/dist/src/cli/help.d.ts +1 -1
- package/dist/src/codegen/generator/module.d.ts +1 -0
- package/dist/src/codegen/generator/module.js +54 -0
- package/dist/src/codegen/generator/module.js.map +1 -1
- package/dist/src/codegen/generator/statements/variables.js +6 -4
- package/dist/src/codegen/generator/statements/variables.js.map +1 -1
- package/dist/src/driver/version.d.ts +1 -1
- package/dist/src/driver/version.js +1 -1
- package/dist/src/extensions/gui/css.d.ts +26 -0
- package/dist/src/extensions/gui/css.js +100 -0
- package/dist/src/extensions/gui/css.js.map +1 -0
- package/dist/src/extensions/gui/html.js +9 -2
- package/dist/src/extensions/gui/html.js.map +1 -1
- package/dist/src/extensions/gui/index.js +16 -2
- package/dist/src/extensions/gui/index.js.map +1 -1
- package/dist/src/extensions/gui/three.d.ts +16 -0
- package/dist/src/extensions/gui/three.js +22 -0
- package/dist/src/extensions/gui/three.js.map +1 -0
- package/dist/src/extensions/media/index.d.ts +6 -5
- package/dist/src/extensions/media/index.js +12 -14
- package/dist/src/extensions/media/index.js.map +1 -1
- package/dist/tests/e2e/compile-builtins.test.js +24 -0
- package/dist/tests/e2e/compile-builtins.test.js.map +1 -1
- package/dist/tests/e2e/compile-objects-classes.test.js +23 -0
- package/dist/tests/e2e/compile-objects-classes.test.js.map +1 -1
- package/dist/tests/e2e/gui-browser.test.js +1 -1
- package/dist/tests/e2e/gui-browser.test.js.map +1 -1
- package/dist/tests/e2e/gui-effects.test.d.ts +6 -0
- package/dist/tests/e2e/gui-effects.test.js +262 -0
- package/dist/tests/e2e/gui-effects.test.js.map +1 -0
- package/dist/tests/e2e/gui-example-webgl.test.d.ts +10 -0
- package/dist/tests/e2e/gui-example-webgl.test.js +75 -0
- package/dist/tests/e2e/gui-example-webgl.test.js.map +1 -0
- package/dist/tests/e2e/gui-example-webgl2.test.d.ts +8 -0
- package/dist/tests/e2e/gui-example-webgl2.test.js +72 -0
- package/dist/tests/e2e/gui-example-webgl2.test.js.map +1 -0
- package/dist/tests/e2e/gui-layout.test.js +48 -0
- package/dist/tests/e2e/gui-layout.test.js.map +1 -1
- package/dist/tests/e2e/gui-media.test.js +5 -4
- package/dist/tests/e2e/gui-media.test.js.map +1 -1
- package/dist/tests/e2e/gui-webgl.test.d.ts +11 -0
- package/dist/tests/e2e/gui-webgl.test.js +179 -0
- package/dist/tests/e2e/gui-webgl.test.js.map +1 -0
- package/dist/tests/e2e/gui-webgl2.test.d.ts +10 -0
- package/dist/tests/e2e/gui-webgl2.test.js +238 -0
- package/dist/tests/e2e/gui-webgl2.test.js.map +1 -0
- package/dist/tests/extensions/gui.test.js +41 -0
- package/dist/tests/extensions/gui.test.js.map +1 -1
- package/dist/tests/extensions/media.test.js +7 -3
- package/dist/tests/extensions/media.test.js.map +1 -1
- package/doc/ai/extensions.md +29 -9
- package/doc/ai/troubleshooting.md +12 -8
- package/doc/ai/zh-CN/extensions.md +26 -8
- package/doc/ai/zh-CN/troubleshooting.md +10 -6
- package/doc/gui/api.md +3 -2
- package/doc/gui/build.md +72 -16
- package/doc/gui/canvas.md +11 -3
- package/doc/gui/dom.md +33 -18
- package/doc/gui/known-issues.md +57 -24
- package/doc/gui/layout.md +18 -0
- package/doc/gui/media.md +17 -13
- package/doc/gui/rendering.md +50 -3
- package/doc/gui/webgl.md +256 -0
- package/doc/gui.md +108 -17
- package/doc/npm-package.md +6 -4
- package/doc/requirements.md +18 -9
- package/doc/zh-CN/gui/api.md +3 -2
- package/doc/zh-CN/gui/build.md +64 -15
- package/doc/zh-CN/gui/canvas.md +9 -2
- package/doc/zh-CN/gui/dom.md +20 -7
- package/doc/zh-CN/gui/known-issues.md +45 -19
- package/doc/zh-CN/gui/layout.md +14 -0
- package/doc/zh-CN/gui/media.md +15 -11
- package/doc/zh-CN/gui/rendering.md +41 -4
- package/doc/zh-CN/gui/webgl.md +115 -0
- package/doc/zh-CN/gui.md +89 -14
- package/doc/zh-CN/npm-package.md +9 -6
- package/doc/zh-CN/requirements.md +12 -6
- package/llms.txt +2 -0
- package/package.json +1 -1
- package/runtime/ext_gui/browser.cpp +39 -13
- package/runtime/ext_gui/canvas.cpp +3 -18
- package/runtime/ext_gui/canvas_internal.h +10 -0
- package/runtime/ext_gui/canvas_raster.cpp +60 -0
- package/runtime/ext_gui/clip_values.cpp +246 -0
- package/runtime/ext_gui/css.cpp +94 -0
- package/runtime/ext_gui/css.h +22 -1
- package/runtime/ext_gui/css_match.cpp +3 -0
- package/runtime/ext_gui/css_selector.cpp +9 -0
- package/runtime/ext_gui/css_sheet.cpp +89 -45
- package/runtime/ext_gui/document.cpp +4 -1
- package/runtime/ext_gui/document.h +2 -0
- package/runtime/ext_gui/dom.h +16 -0
- package/runtime/ext_gui/dom_api.cpp +1 -0
- package/runtime/ext_gui/dom_api_canvas.cpp +17 -80
- package/runtime/ext_gui/dom_api_canvas_extra.cpp +130 -1
- package/runtime/ext_gui/dom_api_canvas_pending.cpp +41 -0
- package/runtime/ext_gui/dom_api_internal.h +259 -0
- package/runtime/ext_gui/dom_api_webgl.cpp +376 -0
- package/runtime/ext_gui/dom_api_webgl2.cpp +434 -0
- package/runtime/ext_gui/dom_api_webgl2_draw.cpp +269 -0
- package/runtime/ext_gui/dom_api_webgl_buffer.cpp +212 -0
- package/runtime/ext_gui/dom_api_webgl_rt.h +30 -0
- package/runtime/ext_gui/dom_api_webgl_shader.cpp +443 -0
- package/runtime/ext_gui/dom_api_webgl_state.cpp +444 -0
- package/runtime/ext_gui/dom_api_webgl_texture.cpp +445 -0
- package/runtime/ext_gui/effect_values.cpp +312 -0
- package/runtime/ext_gui/gradient_values.cpp +476 -0
- package/runtime/ext_gui/grid_values.cpp +230 -0
- package/runtime/ext_gui/gui_canvas.cpp +50 -2
- package/runtime/ext_gui/gui_engine.h +27 -0
- package/runtime/ext_gui/gui_events.cpp +4 -1
- package/runtime/ext_gui/gui_media.cpp +1 -1
- package/runtime/ext_gui/gui_webgl.cpp +83 -0
- package/runtime/ext_gui/layout.cpp +21 -0
- package/runtime/ext_gui/layout_flow.cpp +81 -4
- package/runtime/ext_gui/layout_flow_internal.h +31 -0
- package/runtime/ext_gui/layout_grid.cpp +374 -0
- package/runtime/ext_gui/media.h +1 -1
- package/runtime/ext_gui/media_api.h +2 -2
- package/runtime/ext_gui/media_query.cpp +211 -0
- package/runtime/ext_gui/paint.cpp +111 -77
- package/runtime/ext_gui/paint.h +33 -3
- package/runtime/ext_gui/paint_background.cpp +229 -0
- package/runtime/ext_gui/paint_clip.cpp +268 -0
- package/runtime/ext_gui/paint_effects.cpp +324 -0
- package/runtime/ext_gui/paint_internal.h +85 -0
- package/runtime/ext_gui/renderer.cpp +8 -31
- package/runtime/ext_gui/renderer_clip.cpp +196 -0
- package/runtime/ext_gui/renderer_image.cpp +13 -8
- package/runtime/ext_gui/renderer_internal.h +15 -8
- package/runtime/ext_gui/renderer_text.cpp +6 -31
- package/runtime/ext_gui/style.cpp +343 -20
- package/runtime/ext_gui/style.h +144 -3
- package/runtime/ext_gui/style_print.cpp +134 -1
- package/runtime/ext_gui/style_values.cpp +152 -126
- package/runtime/ext_gui/style_values_internal.h +35 -0
- package/runtime/ext_gui/webgl.h +466 -0
- package/runtime/ext_gui/webgl2_constants.h +274 -0
- package/runtime/ext_gui/webgl_buffer.cpp +565 -0
- package/runtime/ext_gui/webgl_constants.h +317 -0
- package/runtime/ext_gui/webgl_context.cpp +466 -0
- package/runtime/ext_gui/webgl_draw.cpp +495 -0
- package/runtime/ext_gui/webgl_glsl.h +125 -0
- package/runtime/ext_gui/webgl_glsl_compile.cpp +431 -0
- package/runtime/ext_gui/webgl_glsl_rewrite.cpp +349 -0
- package/runtime/ext_gui/webgl_glsl_scan.cpp +581 -0
- package/runtime/ext_gui/webgl_msl.cpp +62 -0
- package/runtime/ext_gui/webgl_msl.h +33 -0
- package/runtime/ext_gui/webgl_pipeline.cpp +274 -0
- package/runtime/ext_gui/webgl_program_internal.h +18 -0
- package/runtime/ext_gui/webgl_shader.cpp +582 -0
- package/runtime/ext_gui/webgl_texture.cpp +293 -0
- package/runtime/ext_gui/webgl_uniform.cpp +167 -0
- package/runtime/ext_gui/webgl_webgl2.cpp +224 -0
- package/runtime/ext_media/media.cpp +1 -1
- package/runtime/ext_media/media_bridge.c +9 -3
- package/runtime/rt_internal.h +1 -0
- package/runtime/xt_containers/access.inc +8 -0
- package/runtime/xt_regex/api.inc +2 -0
- package/runtime/xt_regex/matcher.inc +16 -3
- package/runtime/xt_regex/parser.inc +8 -2
- package/runtime/xt_regex/types.inc +3 -0
- package/runtime/xt_stdlib2/regexp-match.inc +60 -21
- package/runtime/xt_stdlib2/regexp.inc +1 -0
- package/runtime/xt_typed_array.c +1 -1
- package/scripts/build-gui.ts +90 -3
- package/scripts/build-media.ts +323 -58
- package/scripts/setup-vs-toolchain.ps1 +152 -0
- package/src/binder/references.ts +13 -1
- package/src/codegen/generator/module.ts +50 -0
- package/src/codegen/generator/statements/variables.ts +6 -3
- package/src/driver/version.ts +1 -1
- package/src/extensions/gui/css.ts +113 -0
- package/src/extensions/gui/html.ts +9 -2
- package/src/extensions/gui/index.ts +16 -2
- package/src/extensions/gui/three.ts +25 -0
- package/src/extensions/media/index.ts +13 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/extensions/gui/html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,YAAY,EACZ,UAAU,GAMX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/extensions/gui/html.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ import { join } from "node:path";
|
|
|
24
24
|
import { findRuntimeDir, platformSlug } from "../../driver/paths.js";
|
|
25
25
|
import { findRuntimeLibrary } from "../../driver/runtime-lib.js";
|
|
26
26
|
import { loadHtmlAsset } from "./html.js";
|
|
27
|
+
import { loadScriptAsset } from "./three.js";
|
|
27
28
|
/** Top-level `gui` module bindings. */
|
|
28
29
|
const guiModule = {
|
|
29
30
|
namespace: "gui",
|
|
@@ -73,6 +74,19 @@ const hostTypes = [
|
|
|
73
74
|
"ReadableStream",
|
|
74
75
|
"WebGLRenderingContext",
|
|
75
76
|
"WebGL2RenderingContext",
|
|
77
|
+
"WebGLBuffer",
|
|
78
|
+
"WebGLTexture",
|
|
79
|
+
"WebGLShader",
|
|
80
|
+
"WebGLProgram",
|
|
81
|
+
"WebGLFramebuffer",
|
|
82
|
+
"WebGLRenderbuffer",
|
|
83
|
+
"WebGLUniformLocation",
|
|
84
|
+
"WebGLActiveInfo",
|
|
85
|
+
"WebGLVertexArrayObject",
|
|
86
|
+
"WebGLSampler",
|
|
87
|
+
"WebGLQuery",
|
|
88
|
+
"WebGLSync",
|
|
89
|
+
"WebGLTransformFeedback",
|
|
76
90
|
"XRWebGLLayer",
|
|
77
91
|
"XRWebGLBinding",
|
|
78
92
|
];
|
|
@@ -177,7 +191,7 @@ export const guiExtension = {
|
|
|
177
191
|
}),
|
|
178
192
|
/** Browser globals (`window`, `document`, the DOM type names). */
|
|
179
193
|
globalValues: () => browserGlobals,
|
|
180
|
-
/** Rewrite imported `.html` assets
|
|
181
|
-
assetLoaders: () => ({ ".html": loadHtmlAsset }),
|
|
194
|
+
/** Rewrite imported `.html` assets and patch three.js's shader unroller. */
|
|
195
|
+
assetLoaders: () => ({ ".html": loadHtmlAsset, ".js": loadScriptAsset, ".mjs": loadScriptAsset }),
|
|
182
196
|
};
|
|
183
197
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/gui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/gui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GUI extension: three.js shader-unroller compatibility.
|
|
3
|
+
*
|
|
4
|
+
* three.js's `WebGLRenderer` runs unchanged on this engine's real WebGL 2
|
|
5
|
+
* backend; no Canvas2D fallback (and no renderer wrapper) is needed. The one
|
|
6
|
+
* shader-side workaround is its `unrollLoops` pass: its lazy global regex does
|
|
7
|
+
* not behave reliably on this runtime, and the shader rewriter already defines
|
|
8
|
+
* `UNROLLED_LOOP_INDEX` and keeps the numeric `for` loop. Disabling the pattern
|
|
9
|
+
* therefore leaves valid GLSL instead of a half-expanded loop.
|
|
10
|
+
*/
|
|
11
|
+
import type { AssetLoadResult } from "../registry.js";
|
|
12
|
+
/**
|
|
13
|
+
* Patch a three.js ES module so its shaders keep their light loops. Any other
|
|
14
|
+
* `.js` asset is returned verbatim.
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadScriptAsset(path: string, source: string): AssetLoadResult;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GUI extension: three.js shader-unroller compatibility.
|
|
3
|
+
*
|
|
4
|
+
* three.js's `WebGLRenderer` runs unchanged on this engine's real WebGL 2
|
|
5
|
+
* backend; no Canvas2D fallback (and no renderer wrapper) is needed. The one
|
|
6
|
+
* shader-side workaround is its `unrollLoops` pass: its lazy global regex does
|
|
7
|
+
* not behave reliably on this runtime, and the shader rewriter already defines
|
|
8
|
+
* `UNROLLED_LOOP_INDEX` and keeps the numeric `for` loop. Disabling the pattern
|
|
9
|
+
* therefore leaves valid GLSL instead of a half-expanded loop.
|
|
10
|
+
*/
|
|
11
|
+
/** three.js's unroll-loop regex declaration (r150–r16x naming). */
|
|
12
|
+
const LOOP_PATTERN = /const unrollLoopPattern = [^\n]*;/;
|
|
13
|
+
/**
|
|
14
|
+
* Patch a three.js ES module so its shaders keep their light loops. Any other
|
|
15
|
+
* `.js` asset is returned verbatim.
|
|
16
|
+
*/
|
|
17
|
+
export function loadScriptAsset(path, source) {
|
|
18
|
+
return {
|
|
19
|
+
moduleSource: source.replace(LOOP_PATTERN, "const unrollLoopPattern = /__xt_never_match__/;"),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=three.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"three.js","sourceRoot":"","sources":["../../../../src/extensions/gui/three.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,mEAAmE;AACnE,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc;IAC1D,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,iDAAiD,CAAC;KAC9F,CAAC;AACJ,CAAC"}
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* so a program that only needs windows and HTML/CSS does not pay for a media
|
|
7
7
|
* stack it never uses. This extension supplies the decoding half:
|
|
8
8
|
*
|
|
9
|
-
* - `media.a` (
|
|
10
|
-
*
|
|
9
|
+
* - `media.a` (`media.lib` with the MSVC ABI on Windows, built by
|
|
10
|
+
* `npm run media`) contains the FFmpeg-linked player from
|
|
11
|
+
* `runtime/ext_media/media.cpp` and the static FFmpeg libraries;
|
|
11
12
|
* - `runtime/ext_media/media_bridge.c` is compiled and linked directly. Its
|
|
12
13
|
* constructor installs the player table into the GUI engine and references
|
|
13
14
|
* the backend entry points, which makes the linker extract the archive
|
|
@@ -19,9 +20,9 @@
|
|
|
19
20
|
*
|
|
20
21
|
* xbintsc run app.ts --ext gui,media
|
|
21
22
|
*
|
|
22
|
-
* The archive is
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* The archive is built for every host platform. On Windows FFmpeg is compiled
|
|
24
|
+
* with the MSVC-targeting clang-cl so its COFF objects and static CRT match
|
|
25
|
+
* `gui.lib`; see `doc/gui/build.md`.
|
|
25
26
|
*/
|
|
26
27
|
import type { Extension } from "../registry.js";
|
|
27
28
|
export declare const mediaExtension: Extension;
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* so a program that only needs windows and HTML/CSS does not pay for a media
|
|
7
7
|
* stack it never uses. This extension supplies the decoding half:
|
|
8
8
|
*
|
|
9
|
-
* - `media.a` (
|
|
10
|
-
*
|
|
9
|
+
* - `media.a` (`media.lib` with the MSVC ABI on Windows, built by
|
|
10
|
+
* `npm run media`) contains the FFmpeg-linked player from
|
|
11
|
+
* `runtime/ext_media/media.cpp` and the static FFmpeg libraries;
|
|
11
12
|
* - `runtime/ext_media/media_bridge.c` is compiled and linked directly. Its
|
|
12
13
|
* constructor installs the player table into the GUI engine and references
|
|
13
14
|
* the backend entry points, which makes the linker extract the archive
|
|
@@ -19,16 +20,16 @@
|
|
|
19
20
|
*
|
|
20
21
|
* xbintsc run app.ts --ext gui,media
|
|
21
22
|
*
|
|
22
|
-
* The archive is
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* The archive is built for every host platform. On Windows FFmpeg is compiled
|
|
24
|
+
* with the MSVC-targeting clang-cl so its COFF objects and static CRT match
|
|
25
|
+
* `gui.lib`; see `doc/gui/build.md`.
|
|
25
26
|
*/
|
|
26
27
|
import { join } from "node:path";
|
|
27
28
|
import { findRuntimeDir, platformSlug } from "../../driver/paths.js";
|
|
28
29
|
import { findRuntimeLibrary } from "../../driver/runtime-lib.js";
|
|
29
30
|
/** Absolute path to the per-platform prebuilt media archive. */
|
|
30
31
|
function mediaArchive() {
|
|
31
|
-
return join(findRuntimeDir(), "lib", platformSlug(), "media.a");
|
|
32
|
+
return join(findRuntimeDir(), "lib", platformSlug(), process.platform === "win32" ? "media.lib" : "media.a");
|
|
32
33
|
}
|
|
33
34
|
export const mediaExtension = {
|
|
34
35
|
name: "media",
|
|
@@ -41,20 +42,17 @@ export const mediaExtension = {
|
|
|
41
42
|
*/
|
|
42
43
|
runtimeSources: () => [join(findRuntimeDir(), "ext_media", "media_bridge.c")],
|
|
43
44
|
nativeObjects: () => {
|
|
44
|
-
if (process.platform === "win32") {
|
|
45
|
-
throw new Error("the media extension is not available on Windows yet: it needs an MSVC-compatible " +
|
|
46
|
-
"FFmpeg build (see doc/gui/known-issues.md). Build without --ext media; media " +
|
|
47
|
-
"elements then report an 'error' event.");
|
|
48
|
-
}
|
|
49
45
|
const archive = findRuntimeLibrary("media");
|
|
50
46
|
if (archive === undefined) {
|
|
51
|
-
throw new Error(`media native library not found at ${mediaArchive()} (or media.lib).\n` +
|
|
47
|
+
throw new Error(`media native library not found at ${mediaArchive()} (media.a or media.lib).\n` +
|
|
52
48
|
`Build it for ${platformSlug()} first with \`npm run media\` (see doc/gui/build.md).`);
|
|
53
49
|
}
|
|
54
50
|
return [archive];
|
|
55
51
|
},
|
|
56
52
|
/** `media.a` is C++ and FFmpeg itself needs libm; the GUI extension already
|
|
57
|
-
* contributes the C++ runtime and the OS frameworks.
|
|
58
|
-
|
|
53
|
+
* contributes the C++ runtime and the OS frameworks. On Windows the FFmpeg
|
|
54
|
+
* objects reference the Win32 crypto/COM services (`bcrypt`, `ole32`) and
|
|
55
|
+
* `user32`. */
|
|
56
|
+
linkerFlags: () => process.platform === "win32" ? ["-lbcrypt", "-lole32", "-luser32"] : ["-lm"],
|
|
59
57
|
};
|
|
60
58
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/media/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/media/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,gEAAgE;AAChE,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,uEAAuE;IACpF,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB;;;;OAIG;IACH,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC7E,aAAa,EAAE,GAAG,EAAE;QAClB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,qCAAqC,YAAY,EAAE,4BAA4B;gBAC7E,gBAAgB,YAAY,EAAE,uDAAuD,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD;;;mBAGe;IACf,WAAW,EAAE,GAAG,EAAE,CAChB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;CAC/E,CAAC"}
|
|
@@ -208,5 +208,29 @@ describeE2E("end-to-end built-in library", (harness) => {
|
|
|
208
208
|
`;
|
|
209
209
|
expect(runProgram(source)).toBe("a=1;b=2; 30");
|
|
210
210
|
});
|
|
211
|
+
it("advances lastIndex for global regexp exec", () => {
|
|
212
|
+
const source = String.raw `
|
|
213
|
+
const re = /[a-z]+/g;
|
|
214
|
+
const first = re.exec("ab cd");
|
|
215
|
+
console.log(first![0], re.lastIndex);
|
|
216
|
+
const second = re.exec("ab cd");
|
|
217
|
+
console.log(second![0], re.lastIndex);
|
|
218
|
+
re.lastIndex = 0;
|
|
219
|
+
console.log(re.exec("ab cd")![0], re.lastIndex);
|
|
220
|
+
`;
|
|
221
|
+
expect(runProgram(source)).toBe("ab 2\ncd 5\nab 2");
|
|
222
|
+
});
|
|
223
|
+
it("supports regex classes and multiline anchors", () => {
|
|
224
|
+
const source = String.raw `
|
|
225
|
+
console.log("ab_1".replace(/[\w]+/, "Y"));
|
|
226
|
+
console.log("123".replace(/[\d]+/, "Y"));
|
|
227
|
+
const nl = String.fromCharCode(10);
|
|
228
|
+
console.log(("a" + nl + "#include <common>").replace(/^#include/m, "X").replace(/\n/g, "|"));
|
|
229
|
+
const include = /^[ \t]*#include +<([\w\d./]+)>/gm;
|
|
230
|
+
console.log(("a" + nl + "#include <common>" + nl + "b").replace(include,
|
|
231
|
+
(match: any, name: any) => "[" + name + "]"));
|
|
232
|
+
`;
|
|
233
|
+
expect(runProgram(source)).toBe(["Y", "Y", "a|X <common>", "a", "[common]", "b"].join("\n"));
|
|
234
|
+
});
|
|
211
235
|
});
|
|
212
236
|
//# sourceMappingURL=compile-builtins.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-builtins.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-builtins.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile-builtins.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-builtins.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -459,5 +459,28 @@ describeE2E("end-to-end objects, functions and classes", (harness) => {
|
|
|
459
459
|
"true false\n" +
|
|
460
460
|
"true true");
|
|
461
461
|
});
|
|
462
|
+
it("captures constructor parameters in a hoisted nested function called by a sibling", () => {
|
|
463
|
+
// Regression: a nested function declaration's closure used to be rebuilt at
|
|
464
|
+
// the call site (inside its sibling), where the constructor's captured
|
|
465
|
+
// parameters were not in scope, so it read `undefined`. The declaring
|
|
466
|
+
// function now builds and boxes the closure in its own frame.
|
|
467
|
+
const source = `
|
|
468
|
+
class Base { constructor() {} }
|
|
469
|
+
class Poly extends Base {
|
|
470
|
+
constructor(vertices: any = [], indices: any = []) {
|
|
471
|
+
super();
|
|
472
|
+
function subdivide() {
|
|
473
|
+
for (let i = 0; i < indices.length; i += 1) getVertexByIndex(indices[i]);
|
|
474
|
+
}
|
|
475
|
+
function getVertexByIndex(index: number) {
|
|
476
|
+
console.log(String(vertices[index * 3]) + "," + String(vertices[index * 3 + 1]));
|
|
477
|
+
}
|
|
478
|
+
subdivide();
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
new Poly([1, 2, 3, 4, 5, 6], [0, 1]);
|
|
482
|
+
`;
|
|
483
|
+
expect(runProgram(source)).toBe("1,2\n4,5");
|
|
484
|
+
});
|
|
462
485
|
});
|
|
463
486
|
//# sourceMappingURL=compile-objects-classes.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-objects-classes.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-objects-classes.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,WAAW,CAAC,2CAA2C,EAAE,CAAC,OAAO,EAAE,EAAE;IACnE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG;;;;;;;;;;KAUd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;KAuBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D;;kFAE0E;QAC1E,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;KAsBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE;;;2EAGmE;QACnE,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;KAiBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;KAwBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG;;;;;;;;;KASd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,mDAAmD,CACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;KAwBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,qDAAqD,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;KAgBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,uCAAuC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;KAqBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,mCAAmC,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;KAmBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,uCAAuC,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;KAkBd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,qDAAqD,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG;;;;;;;;KAQd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;KA0Bd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,uDAAuD;YACrD,sCAAsC;YACtC,mDAAmD;YACnD,oEAAoE,CACvE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+Cd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,2DAA2D;YACzD,wDAAwD;YACxD,+CAA+C,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4Cd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,8BAA8B;YAC5B,2CAA2C;YAC3C,kCAAkC;YAClC,uBAAuB;YACvB,8BAA8B;YAC9B,8CAA8C;YAC9C,yBAAyB;YACzB,sBAAsB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;KA0Bd,CAAC;QACF,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG;;;;;;;;KAQd,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC7B,uBAAuB;YACrB,uBAAuB;YACvB,QAAQ;YACR,mBAAmB;YACnB,cAAc;YACd,WAAW,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"compile-objects-classes.test.js","sourceRoot":"","sources":["../../../tests/e2e/compile-objects-classes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,7 +74,7 @@ describe.skipIf(!guiAvailable)("gui extension — browser globals", () => {
|
|
|
74
74
|
expect(value("pending")).toBe("true");
|
|
75
75
|
expect(value("audio")).toBe("48000:running:0.5");
|
|
76
76
|
expect(value("buffer")).toBe("8:0.25:1");
|
|
77
|
-
expect(value("webgl")).toBe("
|
|
77
|
+
expect(value("webgl")).toBe("function");
|
|
78
78
|
expect(value("adopt")).toBe("true:true");
|
|
79
79
|
expect(value("bound")).toBe("hi:hi");
|
|
80
80
|
expect(value("title")).toBe("ropes page:complete:false");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui-browser.test.js","sourceRoot":"","sources":["../../../tests/e2e/gui-browser.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;AAEnC,MAAM,IAAI,GAAG;;2CAE8B,CAAC;AAE5C,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,iCAAiC,EAAE,GAAG,EAAE;IACrE,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAElC,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,aAAa,CACrC,SAAS,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkDC,EACD,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CACpD,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"gui-browser.test.js","sourceRoot":"","sources":["../../../tests/e2e/gui-browser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* End-to-end tests for the `gui` extension — CSS decorative effects:
|
|
3
|
+
* `@media`, generated content, background layers, `text-shadow`, `clip-path`
|
|
4
|
+
* and `filter`.
|
|
5
|
+
*/
|
|
6
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
7
|
+
import { createGuiHarness, guiAvailable } from "./gui-helpers.js";
|
|
8
|
+
const harness = createGuiHarness();
|
|
9
|
+
describe.skipIf(!guiAvailable)("gui extension — effects", () => {
|
|
10
|
+
beforeAll(() => harness.setup());
|
|
11
|
+
afterAll(() => harness.cleanup());
|
|
12
|
+
it("applies @media rules against the viewport and skips @media print", () => {
|
|
13
|
+
const { value } = harness.compileAndRun("media", `
|
|
14
|
+
import { createWindow, run } from "gui";
|
|
15
|
+
|
|
16
|
+
const HTML = \`
|
|
17
|
+
<html><head><style>
|
|
18
|
+
body { margin: 0; }
|
|
19
|
+
#a { width: 10px; height: 10px; background: #111111; }
|
|
20
|
+
@media (min-width: 600px) { #a { background: #ff0000; } }
|
|
21
|
+
@media (max-width: 500px) { #a { background: #00ff00; } }
|
|
22
|
+
@media (orientation: landscape) { #b { color: #0000ff; } }
|
|
23
|
+
@media print { #a { background: #000000; } }
|
|
24
|
+
@media (min-width: 1000px) { #a { background: #ffff00; } }
|
|
25
|
+
@media screen and (min-width: 100px) and (max-width: 900px) {
|
|
26
|
+
#c { color: #00ff00; }
|
|
27
|
+
}
|
|
28
|
+
</style></head><body>
|
|
29
|
+
<div id="a"></div><div id="b">b</div><div id="c">c</div>
|
|
30
|
+
</body></html>
|
|
31
|
+
\`;
|
|
32
|
+
|
|
33
|
+
const win = createWindow({ title: "media", width: 800, height: 600 });
|
|
34
|
+
win.on("ready", () => {
|
|
35
|
+
console.log("a=" + win.computedStyle("#a", "background-color"));
|
|
36
|
+
console.log("b=" + win.computedStyle("#b", "color"));
|
|
37
|
+
console.log("c=" + win.computedStyle("#c", "color"));
|
|
38
|
+
console.log("mq=" + win.matchMedia("(min-width: 600px)").matches);
|
|
39
|
+
win.close();
|
|
40
|
+
});
|
|
41
|
+
win.loadHTML(HTML);
|
|
42
|
+
run();
|
|
43
|
+
`);
|
|
44
|
+
// 800x600 matches min-width:600px but not max-width:500px/1000px/print.
|
|
45
|
+
expect(value("a")).toBe("rgb(255, 0, 0)");
|
|
46
|
+
expect(value("b")).toBe("rgb(0, 0, 255)");
|
|
47
|
+
expect(value("c")).toBe("rgb(0, 255, 0)");
|
|
48
|
+
expect(value("mq")).toBe("true");
|
|
49
|
+
});
|
|
50
|
+
it("generates ::before/::after boxes with content and places them in flow", () => {
|
|
51
|
+
const { value, stdout } = harness.compileAndRun("pseudo", `
|
|
52
|
+
import { createWindow, run } from "gui";
|
|
53
|
+
|
|
54
|
+
const HTML = \`
|
|
55
|
+
<html><head><style>
|
|
56
|
+
body { margin: 0; }
|
|
57
|
+
#card { position: relative; width: 120px; height: 30px; background: #202020; color: #ffffff; }
|
|
58
|
+
#card::before {
|
|
59
|
+
content: "B"; display: inline-block; width: 10px; height: 10px;
|
|
60
|
+
background: #00ff00; color: #ff0000;
|
|
61
|
+
}
|
|
62
|
+
#card::after { content: attr(data-tail); color: #0000ff; }
|
|
63
|
+
#none::before { content: none; }
|
|
64
|
+
</style></head><body>
|
|
65
|
+
<div id="card" data-tail="tail">card</div>
|
|
66
|
+
<div id="none">x</div>
|
|
67
|
+
</body></html>
|
|
68
|
+
\`;
|
|
69
|
+
|
|
70
|
+
const win = createWindow({ title: "pseudo", width: 400, height: 300 });
|
|
71
|
+
win.on("ready", () => {
|
|
72
|
+
console.log("count=" + win.paintCount());
|
|
73
|
+
console.log("children=" + win.queryCount("#card > *"));
|
|
74
|
+
console.log("list-start");
|
|
75
|
+
console.log(win.paintList());
|
|
76
|
+
console.log("list-end");
|
|
77
|
+
win.close();
|
|
78
|
+
});
|
|
79
|
+
win.loadHTML(HTML);
|
|
80
|
+
run();
|
|
81
|
+
`);
|
|
82
|
+
const list = stdout.slice(stdout.indexOf("list-start"), stdout.indexOf("list-end"));
|
|
83
|
+
// The synthetic nodes never appear in DOM traversal.
|
|
84
|
+
expect(value("children")).toBe("0");
|
|
85
|
+
// Generated text and the inline-block pseudo background are painted.
|
|
86
|
+
expect(list).toContain('"B"');
|
|
87
|
+
expect(list).toContain('"tail"');
|
|
88
|
+
expect(list).toContain("#00ff00ff");
|
|
89
|
+
// `content: none` generates no box: no colour of its own.
|
|
90
|
+
expect(list).not.toContain("#ffff00ff");
|
|
91
|
+
// The before box comes before the card's own text, the after box after it.
|
|
92
|
+
const before = list.indexOf('"B"');
|
|
93
|
+
const own = list.indexOf('"card"');
|
|
94
|
+
const after = list.indexOf('"tail"');
|
|
95
|
+
expect(before).toBeGreaterThanOrEqual(0);
|
|
96
|
+
expect(own).toBeGreaterThan(before);
|
|
97
|
+
expect(after).toBeGreaterThan(own);
|
|
98
|
+
// `paintCount` counts rectangles: the card's background and ::before's.
|
|
99
|
+
expect(Number(value("count"))).toBe(2);
|
|
100
|
+
});
|
|
101
|
+
it("paints multi-layer linear/radial backgrounds bottom-to-top", () => {
|
|
102
|
+
const { value, stdout } = harness.compileAndRun("backgrounds", `
|
|
103
|
+
import { createWindow, run } from "gui";
|
|
104
|
+
|
|
105
|
+
const HTML = \`
|
|
106
|
+
<html><head><style>
|
|
107
|
+
body { margin: 0; }
|
|
108
|
+
#g {
|
|
109
|
+
width: 100px; height: 60px;
|
|
110
|
+
background-color: #000000;
|
|
111
|
+
background-image:
|
|
112
|
+
radial-gradient(circle at 50% 50%, #ff0000, #00ff00),
|
|
113
|
+
linear-gradient(180deg, #0000ff, #000000);
|
|
114
|
+
}
|
|
115
|
+
</style></head><body><div id="g"></div></body></html>
|
|
116
|
+
\`;
|
|
117
|
+
|
|
118
|
+
const win = createWindow({ title: "backgrounds", width: 400, height: 300 });
|
|
119
|
+
win.on("ready", () => {
|
|
120
|
+
console.log("image=" + win.computedStyle("#g", "background-image"));
|
|
121
|
+
console.log("count=" + win.paintCount());
|
|
122
|
+
console.log("list-start");
|
|
123
|
+
console.log(win.paintList());
|
|
124
|
+
console.log("list-end");
|
|
125
|
+
win.close();
|
|
126
|
+
});
|
|
127
|
+
win.loadHTML(HTML);
|
|
128
|
+
run();
|
|
129
|
+
`);
|
|
130
|
+
const list = stdout.slice(stdout.indexOf("list-start"), stdout.indexOf("list-end"));
|
|
131
|
+
expect(value("image")).toContain("radial-gradient()");
|
|
132
|
+
expect(value("image")).toContain("linear-gradient()");
|
|
133
|
+
// Both layers are painted: the red radial core and its green outer ring
|
|
134
|
+
// (the linear blue layer is underneath them).
|
|
135
|
+
expect(list).toContain("#ff0000ff");
|
|
136
|
+
expect(list).toContain("#00ff00ff");
|
|
137
|
+
expect(list).toMatch(/#0000[0-9a-f]{2}ff/);
|
|
138
|
+
// Radial bands plus the linear strips.
|
|
139
|
+
expect(Number(value("count"))).toBeGreaterThan(30);
|
|
140
|
+
});
|
|
141
|
+
it("paints text-shadow copies behind the text", () => {
|
|
142
|
+
const { value, stdout } = harness.compileAndRun("text-shadow", `
|
|
143
|
+
import { createWindow, run } from "gui";
|
|
144
|
+
|
|
145
|
+
const HTML = \`
|
|
146
|
+
<html><head><style>
|
|
147
|
+
body { margin: 0; }
|
|
148
|
+
#t { font-size: 20px; color: #ffffff; text-shadow: 2px 3px 0 #ff0000; }
|
|
149
|
+
</style></head><body><div id="t">Hi</div></body></html>
|
|
150
|
+
\`;
|
|
151
|
+
|
|
152
|
+
const win = createWindow({ title: "text-shadow", width: 400, height: 300 });
|
|
153
|
+
win.on("ready", () => {
|
|
154
|
+
console.log("shadow=" + win.computedStyle("#t", "text-shadow"));
|
|
155
|
+
console.log("list-start");
|
|
156
|
+
console.log(win.paintList());
|
|
157
|
+
console.log("list-end");
|
|
158
|
+
win.close();
|
|
159
|
+
});
|
|
160
|
+
win.loadHTML(HTML);
|
|
161
|
+
run();
|
|
162
|
+
`);
|
|
163
|
+
const list = stdout.slice(stdout.indexOf("list-start"), stdout.indexOf("list-end"));
|
|
164
|
+
expect(value("shadow")).toBe("2px 3px rgb(255, 0, 0)");
|
|
165
|
+
expect(list).toContain('text x=2.0 baseline=');
|
|
166
|
+
expect(list).toContain('color=#ff0000ff "Hi" shadow=1');
|
|
167
|
+
// The main run is still painted in the text colour.
|
|
168
|
+
expect(list).toContain('color=#ffffffff "Hi"');
|
|
169
|
+
});
|
|
170
|
+
it("clips boxes and descendants with clip-path", () => {
|
|
171
|
+
const { value, stdout } = harness.compileAndRun("clip-path", `
|
|
172
|
+
import { createWindow, run } from "gui";
|
|
173
|
+
|
|
174
|
+
const HTML = \`
|
|
175
|
+
<html><head><style>
|
|
176
|
+
body { margin: 0; }
|
|
177
|
+
#c {
|
|
178
|
+
position: relative; width: 100px; height: 100px; background: #ff0000;
|
|
179
|
+
clip-path: inset(10px 20px 30px 40px);
|
|
180
|
+
}
|
|
181
|
+
#in { position: absolute; left: 0; top: 0; width: 20px; height: 20px; background: #0000ff; }
|
|
182
|
+
#p { width: 50px; height: 50px; background: #00ff00;
|
|
183
|
+
clip-path: polygon(50% 0, 100% 100%, 0 100%); }
|
|
184
|
+
</style></head><body>
|
|
185
|
+
<div id="c"><div id="in"></div></div>
|
|
186
|
+
<div id="p"></div>
|
|
187
|
+
</body></html>
|
|
188
|
+
\`;
|
|
189
|
+
|
|
190
|
+
const win = createWindow({ title: "clip", width: 400, height: 300 });
|
|
191
|
+
win.on("ready", () => {
|
|
192
|
+
console.log("inset=" + win.computedStyle("#c", "clip-path"));
|
|
193
|
+
console.log("polygon=" + win.computedStyle("#p", "clip-path"));
|
|
194
|
+
console.log("list-start");
|
|
195
|
+
console.log(win.paintList());
|
|
196
|
+
console.log("list-end");
|
|
197
|
+
win.close();
|
|
198
|
+
});
|
|
199
|
+
win.loadHTML(HTML);
|
|
200
|
+
run();
|
|
201
|
+
`);
|
|
202
|
+
const list = stdout.slice(stdout.indexOf("list-start"), stdout.indexOf("list-end"));
|
|
203
|
+
expect(value("inset")).toBe("inset(10px 20px 30px 40px)");
|
|
204
|
+
expect(value("polygon")).toContain("polygon(");
|
|
205
|
+
expect(value("polygon")).toContain("50%");
|
|
206
|
+
expect(value("polygon")).toContain("100%");
|
|
207
|
+
// Both the clipped box and its child carry the resolved path index.
|
|
208
|
+
expect(list).toContain("clip-path=0");
|
|
209
|
+
expect(list).toContain("#ff0000ff");
|
|
210
|
+
expect(list).toContain("#0000ffff");
|
|
211
|
+
});
|
|
212
|
+
it("applies colour filters and approximates blur/drop-shadow", () => {
|
|
213
|
+
const { value, stdout } = harness.compileAndRun("filter", `
|
|
214
|
+
import { createWindow, run } from "gui";
|
|
215
|
+
|
|
216
|
+
const HTML = \`
|
|
217
|
+
<html><head><style>
|
|
218
|
+
body { margin: 0; }
|
|
219
|
+
#grey { width: 100px; height: 50px; background: #ff0000;
|
|
220
|
+
filter: grayscale(1) brightness(1.2); }
|
|
221
|
+
#dim { width: 10px; height: 10px; background: #ffffff; filter: opacity(0.5); }
|
|
222
|
+
#soft { position: absolute; left: 0; top: 100px; width: 20px; height: 20px;
|
|
223
|
+
background: #00ff00; filter: blur(4px); }
|
|
224
|
+
#shadow { position: absolute; left: 200px; top: 0; width: 20px; height: 20px;
|
|
225
|
+
background: #0000ff; filter: drop-shadow(5px 5px 0 #000000); }
|
|
226
|
+
#glass { position: absolute; left: 250px; top: 0; width: 20px; height: 20px;
|
|
227
|
+
backdrop-filter: blur(4px) brightness(0.5); }
|
|
228
|
+
</style></head><body>
|
|
229
|
+
<div id="grey"></div><div id="dim"></div><div id="soft"></div><div id="shadow"></div>
|
|
230
|
+
<div id="glass"></div>
|
|
231
|
+
</body></html>
|
|
232
|
+
\`;
|
|
233
|
+
|
|
234
|
+
const win = createWindow({ title: "filter", width: 400, height: 300 });
|
|
235
|
+
win.on("ready", () => {
|
|
236
|
+
console.log("filter=" + win.computedStyle("#grey", "filter"));
|
|
237
|
+
console.log("backdrop=" + win.computedStyle("#glass", "backdrop-filter"));
|
|
238
|
+
console.log("count=" + win.paintCount());
|
|
239
|
+
console.log("list-start");
|
|
240
|
+
console.log(win.paintList());
|
|
241
|
+
console.log("list-end");
|
|
242
|
+
win.close();
|
|
243
|
+
});
|
|
244
|
+
win.loadHTML(HTML);
|
|
245
|
+
run();
|
|
246
|
+
`);
|
|
247
|
+
const list = stdout.slice(stdout.indexOf("list-start"), stdout.indexOf("list-end"));
|
|
248
|
+
expect(value("filter")).toBe("grayscale(1) brightness(1.2)");
|
|
249
|
+
// `backdrop-filter` parses/cascades; it is not painted (no backdrop pass).
|
|
250
|
+
expect(value("backdrop")).toBe("blur(4px) brightness(0.5)");
|
|
251
|
+
// grayscale(red) = 0.2126, brightness 1.2 = 0.2551 -> #414141.
|
|
252
|
+
expect(list).toContain("#414141ff");
|
|
253
|
+
// opacity(0.5) halves the painted alpha.
|
|
254
|
+
expect(list).toContain("#ffffff80");
|
|
255
|
+
// blur(4px) spreads the green box into nine translucent copies.
|
|
256
|
+
expect(Number(value("count"))).toBeGreaterThan(9);
|
|
257
|
+
// drop-shadow paints a black rectangle behind the blue box.
|
|
258
|
+
expect(list).toContain("#000000ff");
|
|
259
|
+
expect(list).toContain("#0000ffff");
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
//# sourceMappingURL=gui-effects.test.js.map
|