quickwin 2.3.0 → 3.0.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/README.en.md +1 -2
- package/README.md +1 -2
- package/constants.ts +22 -0
- package/enum_map.d.ts +4 -0
- package/examples/PdfCanvas.js +1 -1
- package/examples/PdfCanvas.tsx +2 -2
- package/examples/execd/main.js +491 -217
- package/examples/pdf_preview2.js +76 -67
- package/examples/pdf_preview2.ts +84 -64
- package/examples/pdf_viewer.js +4932 -1029
- package/examples/pdf_viewer.tsx +11 -22
- package/examples/test_gallery.js +308 -143
- package/examples/test_gallery.tsx +12 -7
- package/examples/test_react_lazy.js +295 -133
- package/examples/test_react_lazy.tsx +4 -3
- package/examples/test_react_listbox.js +293 -132
- package/examples/test_react_listbox.tsx +3 -2
- package/examples/test_root_window.js +283 -126
- package/examples/test_tab.js +295 -133
- package/examples/test_tab.tsx +4 -3
- package/examples/tray_demo.js +37 -30
- package/examples/tray_demo.tsx +39 -32
- package/lib/bitmap.js +40 -0
- package/lib/bitmap.ts +39 -0
- package/lib/certs.js +31 -3
- package/lib/certs.ts +32 -3
- package/lib/dpi.js +30 -0
- package/lib/dpi.ts +31 -0
- package/lib/dumpRects.js +14 -7
- package/lib/dumpRects.ts +14 -6
- package/lib/ffi/bind.js +5 -4
- package/lib/ffi/bind.ts +9 -8
- package/lib/http-server.js +50 -25
- package/lib/http-server.ts +51 -23
- package/lib/react-qw/components/DateTimePicker.js +6 -7
- package/lib/react-qw/components/Input.js +5 -1
- package/lib/react-qw/components/ListView.js +8 -6
- package/lib/react-qw/components/ScrollView.js +28 -22
- package/lib/react-qw/index.js +7 -5
- package/lib/react-qw/index.ts +5 -5
- package/lib/react-qw/props.js +3 -3
- package/lib/react-qw/props.ts +3 -3
- package/lib/react-qw/reconciler.js +12 -17
- package/lib/react-qw/reconciler.ts +12 -16
- package/lib/text-measure.js +9 -6
- package/lib/text-measure.ts +9 -6
- package/lib/windows/comctl32.js +3 -2
- package/lib/windows/comctl32.ts +3 -2
- package/lib/windows/gdi32.js +28 -6
- package/lib/windows/gdi32.ts +30 -6
- package/lib/windows/kernel32.js +9 -0
- package/lib/windows/kernel32.ts +9 -0
- package/lib/windows/shell32.js +11 -2
- package/lib/windows/shell32.ts +13 -2
- package/lib/windows/structs.js +51 -0
- package/lib/windows/structs.ts +55 -0
- package/lib/windows/user32.js +6 -5
- package/lib/windows/user32.ts +6 -5
- package/main.js +13 -5
- package/package.json +2 -2
- package/quickwin.d.ts +13 -115
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/test/bench_ffi_callraw.js +3 -4
- package/test/bench_ffi_callraw.ts +3 -4
- package/test/debug/mupdf_debug.js +4 -22
- package/test/debug/wasm_export_debug.js +2 -12
- package/test/debug/wasm_names.js +3 -13
- package/test/example.pdf +0 -0
- package/test/mupdf-cdn.js +40 -0
- package/test/mupdf-cdn.ts +43 -0
- package/test/test_ffi.js +8 -9
- package/test/test_ffi.ts +8 -9
- package/test/test_ffi_abi.js +6 -6
- package/test/test_ffi_abi.ts +8 -8
- package/test/test_ffi_windows.js +82 -11
- package/test/test_ffi_windows.ts +85 -11
- package/test/test_gdi_draw.js +3 -3
- package/test/test_gdi_draw.ts +4 -4
- package/test/test_mupdf_render.js +4 -22
- package/test/test_mupdf_render.ts +4 -23
- package/test/test_mupdf_twice.js +4 -19
- package/test/test_mupdf_twice.ts +4 -20
- package/test/test_mupdf_wasm.js +10 -4
- package/test/test_mupdf_wasm.ts +6 -4
- package/test/test_react_complex.js +316 -140
- package/test/test_react_counter.js +295 -133
- package/test/test_react_flex.js +297 -138
- package/test/test_react_hidden.js +296 -134
- package/test/test_react_listview_link.js +288 -131
- package/test/test_react_notify.js +290 -133
- package/test/test_react_render.js +295 -133
- package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
- package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
- package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
- package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
- package/vendor/mupdf-wasm/mupdf.js +0 -3317
|
@@ -1367,9 +1367,9 @@ var require_scheduler_development = __commonJS({
|
|
|
1367
1367
|
}
|
|
1368
1368
|
return first;
|
|
1369
1369
|
}
|
|
1370
|
-
function compare(a,
|
|
1371
|
-
var diff = a.sortIndex -
|
|
1372
|
-
return 0 !== diff ? diff : a.id -
|
|
1370
|
+
function compare(a, b7) {
|
|
1371
|
+
var diff = a.sortIndex - b7.sortIndex;
|
|
1372
|
+
return 0 !== diff ? diff : a.id - b7.id;
|
|
1373
1373
|
}
|
|
1374
1374
|
function advanceTimers(currentTime) {
|
|
1375
1375
|
for (var timer = peek(timerQueue); null !== timer; ) {
|
|
@@ -1667,14 +1667,14 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1667
1667
|
throw Error("Unable to find node on an unmounted component.");
|
|
1668
1668
|
return alternate !== fiber ? null : fiber;
|
|
1669
1669
|
}
|
|
1670
|
-
for (var a = fiber,
|
|
1670
|
+
for (var a = fiber, b7 = alternate; ; ) {
|
|
1671
1671
|
var parentA = a.return;
|
|
1672
1672
|
if (null === parentA) break;
|
|
1673
1673
|
var parentB = parentA.alternate;
|
|
1674
1674
|
if (null === parentB) {
|
|
1675
|
-
|
|
1676
|
-
if (null !==
|
|
1677
|
-
a =
|
|
1675
|
+
b7 = parentA.return;
|
|
1676
|
+
if (null !== b7) {
|
|
1677
|
+
a = b7;
|
|
1678
1678
|
continue;
|
|
1679
1679
|
}
|
|
1680
1680
|
break;
|
|
@@ -1682,23 +1682,23 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1682
1682
|
if (parentA.child === parentB.child) {
|
|
1683
1683
|
for (parentB = parentA.child; parentB; ) {
|
|
1684
1684
|
if (parentB === a) return assertIsMounted(parentA), fiber;
|
|
1685
|
-
if (parentB ===
|
|
1685
|
+
if (parentB === b7) return assertIsMounted(parentA), alternate;
|
|
1686
1686
|
parentB = parentB.sibling;
|
|
1687
1687
|
}
|
|
1688
1688
|
throw Error("Unable to find node on an unmounted component.");
|
|
1689
1689
|
}
|
|
1690
|
-
if (a.return !==
|
|
1690
|
+
if (a.return !== b7.return) a = parentA, b7 = parentB;
|
|
1691
1691
|
else {
|
|
1692
1692
|
for (var didFindChild = false, _child = parentA.child; _child; ) {
|
|
1693
1693
|
if (_child === a) {
|
|
1694
1694
|
didFindChild = true;
|
|
1695
1695
|
a = parentA;
|
|
1696
|
-
|
|
1696
|
+
b7 = parentB;
|
|
1697
1697
|
break;
|
|
1698
1698
|
}
|
|
1699
|
-
if (_child ===
|
|
1699
|
+
if (_child === b7) {
|
|
1700
1700
|
didFindChild = true;
|
|
1701
|
-
|
|
1701
|
+
b7 = parentA;
|
|
1702
1702
|
a = parentB;
|
|
1703
1703
|
break;
|
|
1704
1704
|
}
|
|
@@ -1709,12 +1709,12 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1709
1709
|
if (_child === a) {
|
|
1710
1710
|
didFindChild = true;
|
|
1711
1711
|
a = parentB;
|
|
1712
|
-
|
|
1712
|
+
b7 = parentA;
|
|
1713
1713
|
break;
|
|
1714
1714
|
}
|
|
1715
|
-
if (_child ===
|
|
1715
|
+
if (_child === b7) {
|
|
1716
1716
|
didFindChild = true;
|
|
1717
|
-
|
|
1717
|
+
b7 = parentB;
|
|
1718
1718
|
a = parentA;
|
|
1719
1719
|
break;
|
|
1720
1720
|
}
|
|
@@ -1726,7 +1726,7 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1726
1726
|
);
|
|
1727
1727
|
}
|
|
1728
1728
|
}
|
|
1729
|
-
if (a.alternate !==
|
|
1729
|
+
if (a.alternate !== b7)
|
|
1730
1730
|
throw Error(
|
|
1731
1731
|
"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue."
|
|
1732
1732
|
);
|
|
@@ -15071,10 +15071,10 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15071
15071
|
setCurrentUpdatePriority(previousPriority), ReactSharedInternals.T = prevTransition;
|
|
15072
15072
|
}
|
|
15073
15073
|
};
|
|
15074
|
-
exports2.discreteUpdates = function(fn, a,
|
|
15074
|
+
exports2.discreteUpdates = function(fn, a, b7, c, d) {
|
|
15075
15075
|
var prevTransition = ReactSharedInternals.T, previousPriority = getCurrentUpdatePriority();
|
|
15076
15076
|
try {
|
|
15077
|
-
return setCurrentUpdatePriority(2), ReactSharedInternals.T = null, fn(a,
|
|
15077
|
+
return setCurrentUpdatePriority(2), ReactSharedInternals.T = null, fn(a, b7, c, d);
|
|
15078
15078
|
} finally {
|
|
15079
15079
|
setCurrentUpdatePriority(previousPriority), ReactSharedInternals.T = prevTransition, executionContext === NoContext && (workInProgressRootRenderTargetTime = now$1() + RENDER_TIMEOUT_MS);
|
|
15080
15080
|
}
|
|
@@ -15359,7 +15359,7 @@ var import_react18 = __toESM(require_react(), 1);
|
|
|
15359
15359
|
import "../lib/polyfill.js";
|
|
15360
15360
|
|
|
15361
15361
|
// _build/lib/react-qw/index.js
|
|
15362
|
-
import * as
|
|
15362
|
+
import * as gui16 from "gui";
|
|
15363
15363
|
|
|
15364
15364
|
// _build/lib/windows/user32.js
|
|
15365
15365
|
import * as os3 from "os";
|
|
@@ -15368,7 +15368,6 @@ import * as os3 from "os";
|
|
|
15368
15368
|
import * as ffi from "ffi";
|
|
15369
15369
|
import * as os2 from "os";
|
|
15370
15370
|
import * as std from "std";
|
|
15371
|
-
import * as win from "win";
|
|
15372
15371
|
|
|
15373
15372
|
// _build/lib/text-codec.js
|
|
15374
15373
|
var _labelMap = {
|
|
@@ -15390,19 +15389,19 @@ function _normalizeLabel(label) {
|
|
|
15390
15389
|
function _decodeUTF8(buf, fatal) {
|
|
15391
15390
|
let out = "";
|
|
15392
15391
|
for (let i = 0; i < buf.length; ) {
|
|
15393
|
-
const
|
|
15394
|
-
if (
|
|
15395
|
-
out += String.fromCharCode(
|
|
15392
|
+
const b7 = buf[i++];
|
|
15393
|
+
if (b7 < 128) {
|
|
15394
|
+
out += String.fromCharCode(b7);
|
|
15396
15395
|
continue;
|
|
15397
15396
|
}
|
|
15398
|
-
if (
|
|
15397
|
+
if (b7 < 192) {
|
|
15399
15398
|
out += fatal ? (() => {
|
|
15400
15399
|
throw new TypeError("unexpected continuation byte");
|
|
15401
15400
|
})() : "\uFFFD";
|
|
15402
15401
|
continue;
|
|
15403
15402
|
}
|
|
15404
15403
|
let c, min;
|
|
15405
|
-
if (
|
|
15404
|
+
if (b7 < 224) {
|
|
15406
15405
|
if (i >= buf.length) {
|
|
15407
15406
|
out += fatal ? (() => {
|
|
15408
15407
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15414,9 +15413,9 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15414
15413
|
out += "\uFFFD";
|
|
15415
15414
|
continue;
|
|
15416
15415
|
}
|
|
15417
|
-
c = (
|
|
15416
|
+
c = (b7 & 31) << 6 | b22 & 63;
|
|
15418
15417
|
min = 128;
|
|
15419
|
-
} else if (
|
|
15418
|
+
} else if (b7 < 240) {
|
|
15420
15419
|
if (i + 1 >= buf.length) {
|
|
15421
15420
|
out += fatal ? (() => {
|
|
15422
15421
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15429,9 +15428,9 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15429
15428
|
out += "\uFFFD";
|
|
15430
15429
|
continue;
|
|
15431
15430
|
}
|
|
15432
|
-
c = (
|
|
15431
|
+
c = (b7 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
|
|
15433
15432
|
min = 2048;
|
|
15434
|
-
} else if (
|
|
15433
|
+
} else if (b7 < 248) {
|
|
15435
15434
|
if (i + 2 >= buf.length) {
|
|
15436
15435
|
out += fatal ? (() => {
|
|
15437
15436
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15445,7 +15444,7 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15445
15444
|
out += "\uFFFD";
|
|
15446
15445
|
continue;
|
|
15447
15446
|
}
|
|
15448
|
-
c = (
|
|
15447
|
+
c = (b7 & 7) << 18 | (b22 & 63) << 12 | (b32 & 63) << 6 | b42 & 63;
|
|
15449
15448
|
min = 65536;
|
|
15450
15449
|
} else {
|
|
15451
15450
|
out += fatal ? (() => {
|
|
@@ -15749,7 +15748,7 @@ function loadDll(dll) {
|
|
|
15749
15748
|
const cached = _dllCache.get(dll);
|
|
15750
15749
|
if (cached !== void 0)
|
|
15751
15750
|
return cached;
|
|
15752
|
-
const loaded =
|
|
15751
|
+
const loaded = ffi.LoadLibrary(dll);
|
|
15753
15752
|
if (!loaded)
|
|
15754
15753
|
throw new Error(`ffi-bind: LoadLibrary("${dll}") failed`);
|
|
15755
15754
|
_dllCache.set(dll, loaded);
|
|
@@ -15959,7 +15958,7 @@ var BYTE = {
|
|
|
15959
15958
|
};
|
|
15960
15959
|
var builtinCodecs = { WCHAR, BYTE };
|
|
15961
15960
|
function bind(dll, name, sig, encoders, decoders) {
|
|
15962
|
-
const proc =
|
|
15961
|
+
const proc = ffi.GetProcAddress(loadDll(dll), name);
|
|
15963
15962
|
if (!proc)
|
|
15964
15963
|
throw new Error(`ffi-bind: proc "${name}" not found in ${dll}`);
|
|
15965
15964
|
const effDec = decoders ?? encoders;
|
|
@@ -15999,13 +15998,13 @@ function lower(v) {
|
|
|
15999
15998
|
type: { tag: "array", elementType: el.type, elementSize: el.size }
|
|
16000
15999
|
};
|
|
16001
16000
|
}
|
|
16002
|
-
const
|
|
16003
|
-
if (
|
|
16004
|
-
const rawUnit =
|
|
16001
|
+
const b7 = /^([A-Za-z_]\w*):(\d+)$/.exec(v);
|
|
16002
|
+
if (b7) {
|
|
16003
|
+
const rawUnit = b7[1];
|
|
16005
16004
|
const unit = normToken(rawUnit);
|
|
16006
16005
|
if (!isCNumberToken(unit) || unit === "f32" || unit === "f64")
|
|
16007
16006
|
throw new Error(`ffi-struct: bitfield unit must be an integer type, got "${rawUnit}"`);
|
|
16008
|
-
const width = Number(
|
|
16007
|
+
const width = Number(b7[2]);
|
|
16009
16008
|
const s2 = SizeAlign[unit];
|
|
16010
16009
|
const cap = s2 * 8;
|
|
16011
16010
|
if (!Number.isInteger(width) || width < 1)
|
|
@@ -16321,10 +16320,10 @@ function buildDecl(kind, member, pack) {
|
|
|
16321
16320
|
decl[k] = v;
|
|
16322
16321
|
return decl;
|
|
16323
16322
|
}
|
|
16324
|
-
function struct(a,
|
|
16323
|
+
function struct(a, b7, c) {
|
|
16325
16324
|
const isNamed = typeof a === "string";
|
|
16326
|
-
const raw = isNamed ?
|
|
16327
|
-
const opts = isNamed ? c :
|
|
16325
|
+
const raw = isNamed ? b7 : a;
|
|
16326
|
+
const opts = isNamed ? c : b7;
|
|
16328
16327
|
return createStruct(buildDecl("struct", raw, opts?.pack));
|
|
16329
16328
|
}
|
|
16330
16329
|
|
|
@@ -16349,6 +16348,17 @@ var SIZE_DECL = {
|
|
|
16349
16348
|
cy: "i32"
|
|
16350
16349
|
};
|
|
16351
16350
|
var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
|
|
16351
|
+
var SCROLLINFO_DECL = {
|
|
16352
|
+
"#": "struct",
|
|
16353
|
+
cbSize: "u32",
|
|
16354
|
+
fMask: "u32",
|
|
16355
|
+
nMin: "i32",
|
|
16356
|
+
nMax: "i32",
|
|
16357
|
+
nPage: "u32",
|
|
16358
|
+
nPos: "i32",
|
|
16359
|
+
nTrackPos: "i32"
|
|
16360
|
+
};
|
|
16361
|
+
var SCROLLINFO = /* @__PURE__ */ struct("SCROLLINFO", SCROLLINFO_DECL);
|
|
16352
16362
|
var LOGFONTW_DECL = {
|
|
16353
16363
|
"#": "struct",
|
|
16354
16364
|
lfHeight: "i32",
|
|
@@ -16367,6 +16377,41 @@ var LOGFONTW_DECL = {
|
|
|
16367
16377
|
lfFaceName: "u16[32]@utf-16le"
|
|
16368
16378
|
};
|
|
16369
16379
|
var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
|
|
16380
|
+
var NONCLIENTMETRICSW_DECL = {
|
|
16381
|
+
"#": "struct",
|
|
16382
|
+
cbSize: "u32",
|
|
16383
|
+
iBorderWidth: "i32",
|
|
16384
|
+
iScrollWidth: "i32",
|
|
16385
|
+
iScrollHeight: "i32",
|
|
16386
|
+
iCaptionWidth: "i32",
|
|
16387
|
+
iCaptionHeight: "i32",
|
|
16388
|
+
lfCaptionFont: LOGFONTW_DECL,
|
|
16389
|
+
iSmCaptionWidth: "i32",
|
|
16390
|
+
iSmCaptionHeight: "i32",
|
|
16391
|
+
lfSmCaptionFont: LOGFONTW_DECL,
|
|
16392
|
+
iMenuWidth: "i32",
|
|
16393
|
+
iMenuHeight: "i32",
|
|
16394
|
+
lfMenuFont: LOGFONTW_DECL,
|
|
16395
|
+
lfStatusFont: LOGFONTW_DECL,
|
|
16396
|
+
lfMessageFont: LOGFONTW_DECL,
|
|
16397
|
+
iPaddedBorderWidth: "i32"
|
|
16398
|
+
};
|
|
16399
|
+
var NONCLIENTMETRICSW = /* @__PURE__ */ struct("NONCLIENTMETRICSW", NONCLIENTMETRICSW_DECL);
|
|
16400
|
+
var BITMAPINFOHEADER_DECL = {
|
|
16401
|
+
"#": "struct",
|
|
16402
|
+
biSize: "u32",
|
|
16403
|
+
biWidth: "i32",
|
|
16404
|
+
biHeight: "i32",
|
|
16405
|
+
biPlanes: "u16",
|
|
16406
|
+
biBitCount: "u16",
|
|
16407
|
+
biCompression: "u32",
|
|
16408
|
+
biSizeImage: "u32",
|
|
16409
|
+
biXPelsPerMeter: "i32",
|
|
16410
|
+
biYPelsPerMeter: "i32",
|
|
16411
|
+
biClrUsed: "u32",
|
|
16412
|
+
biClrImportant: "u32"
|
|
16413
|
+
};
|
|
16414
|
+
var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", BITMAPINFOHEADER_DECL);
|
|
16370
16415
|
var OPENFILENAMEW_DECL = {
|
|
16371
16416
|
"#": "struct",
|
|
16372
16417
|
lStructSize: "u32",
|
|
@@ -16573,8 +16618,13 @@ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFY
|
|
|
16573
16618
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
16574
16619
|
var _bProbe = b("GetDesktopWindow", " -> <HWND>ptr");
|
|
16575
16620
|
var LONG_PTR_SYM = os3.arch === "x64" ? "PtrW" : "W";
|
|
16621
|
+
var ShowWindow = /* @__PURE__ */ b("ShowWindow", "<HWND>ptr i32@ShowWindowCmd -> i32");
|
|
16576
16622
|
var SetWindowPos = /* @__PURE__ */ b("SetWindowPos", "<HWND>ptr <>ptr@SetWindowPosHwnd i32 i32 i32 i32 u32 -> i32");
|
|
16623
|
+
var GetWindowRect = /* @__PURE__ */ b("GetWindowRect", "<HWND>ptr <RECT>ptr -> i32");
|
|
16624
|
+
var GetClientRect = /* @__PURE__ */ b("GetClientRect", "<HWND>ptr <RECT>ptr -> i32");
|
|
16625
|
+
var GetWindowText = /* @__PURE__ */ b("GetWindowTextW", "<HWND>ptr <BYTE>ptr i32 -> i32");
|
|
16577
16626
|
var SetWindowText = /* @__PURE__ */ b("SetWindowTextW", "<HWND>ptr <WCHAR>ptr -> i32");
|
|
16627
|
+
var GetWindowTextLength = /* @__PURE__ */ b("GetWindowTextLengthW", "<HWND>ptr -> i32");
|
|
16578
16628
|
var GetWindowLongPtr = /* @__PURE__ */ b("GetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp -> <>ptr");
|
|
16579
16629
|
var SetWindowLongPtr = /* @__PURE__ */ b("SetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp <>ptr -> <>ptr");
|
|
16580
16630
|
var EnableWindow = /* @__PURE__ */ b("EnableWindow", "<HWND>ptr i32 -> i32");
|
|
@@ -16585,12 +16635,16 @@ var GetDC = /* @__PURE__ */ b("GetDC", "<HWND>ptr -> <HDC>ptr");
|
|
|
16585
16635
|
var ReleaseDC = /* @__PURE__ */ b("ReleaseDC", "<HWND>ptr <HDC>ptr! -> i32");
|
|
16586
16636
|
var DrawText = /* @__PURE__ */ b("DrawTextW", "<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32");
|
|
16587
16637
|
var InvalidateRect = /* @__PURE__ */ b("InvalidateRect", "<HWND>ptr <RECT>ptr i32 -> i32", { RECT });
|
|
16638
|
+
var UpdateWindow = /* @__PURE__ */ b("UpdateWindow", "<HWND>ptr -> i32");
|
|
16588
16639
|
var SetCursor = /* @__PURE__ */ b("SetCursor", "<HCURSOR>ptr -> <HCURSOR>ptr");
|
|
16589
16640
|
var LoadCursor = /* @__PURE__ */ b("LoadCursorW", "<HMODULE>ptr <>ptr -> <HCURSOR>ptr");
|
|
16590
16641
|
var GetCursorPos = /* @__PURE__ */ b("GetCursorPos", "<POINT>ptr -> i32");
|
|
16591
16642
|
var ScreenToClient = /* @__PURE__ */ b("ScreenToClient", "<HWND>ptr <POINT>ptr -> i32");
|
|
16643
|
+
var SetScrollInfo = /* @__PURE__ */ b("SetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr i32 -> i32", { SCROLLINFO });
|
|
16644
|
+
var GetScrollInfo = /* @__PURE__ */ b("GetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr -> i32");
|
|
16592
16645
|
var ShowScrollBar = /* @__PURE__ */ b("ShowScrollBar", "<HWND>ptr u32 i32 -> i32");
|
|
16593
16646
|
var GetSystemMetrics = /* @__PURE__ */ b("GetSystemMetrics", "i32 -> i32");
|
|
16647
|
+
var SystemParametersInfo = /* @__PURE__ */ b("SystemParametersInfoW", "u32 u32 <BYTE>ptr u32 -> i32");
|
|
16594
16648
|
|
|
16595
16649
|
// _build/lib/react-qw/reconciler.js
|
|
16596
16650
|
var import_react_reconciler = __toESM(require_react_reconciler(), 1);
|
|
@@ -16605,8 +16659,33 @@ var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
|
|
|
16605
16659
|
var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
|
|
16606
16660
|
var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
|
|
16607
16661
|
var SelectObject = /* @__PURE__ */ b2("SelectObject", "<HDC>ptr! <HGDIOBJ>ptr -> <HGDIOBJ>ptr");
|
|
16662
|
+
var CreateDIBSection = /* @__PURE__ */ b2("CreateDIBSection", "<HDC>ptr <>ptr u32@ColorUse <>ptr <>ptr u32 -> <HGDIOBJ>ptr");
|
|
16663
|
+
var SetDIBits = /* @__PURE__ */ b2("SetDIBits", "<HDC>ptr <HGDIOBJ>ptr! u32 u32 <BYTE>ptr <>ptr u32@ColorUse -> i32");
|
|
16608
16664
|
var GetObject = /* @__PURE__ */ b2("GetObjectW", "<HGDIOBJ>ptr i32 <BYTE>ptr -> i32");
|
|
16609
16665
|
|
|
16666
|
+
// _build/lib/dpi.js
|
|
16667
|
+
function getScaleFactor() {
|
|
16668
|
+
const hdc = GetDC(NULL);
|
|
16669
|
+
const dpi = hdc ? GetDeviceCaps(
|
|
16670
|
+
hdc,
|
|
16671
|
+
88
|
|
16672
|
+
/* DeviceCap.LOGPIXELSX */
|
|
16673
|
+
) : 96;
|
|
16674
|
+
if (hdc)
|
|
16675
|
+
ReleaseDC(NULL, hdc);
|
|
16676
|
+
return dpi / 96;
|
|
16677
|
+
}
|
|
16678
|
+
function createSystemDpiFont() {
|
|
16679
|
+
const ncm = NONCLIENTMETRICSW.encode({ cbSize: NONCLIENTMETRICSW.size });
|
|
16680
|
+
if (!SystemParametersInfo(41, NONCLIENTMETRICSW.size, ncm, 0)) {
|
|
16681
|
+
const legacySize = NONCLIENTMETRICSW.size - 4;
|
|
16682
|
+
NONCLIENTMETRICSW.encode({ cbSize: legacySize }, ncm);
|
|
16683
|
+
if (!SystemParametersInfo(41, legacySize, ncm, 0))
|
|
16684
|
+
return NULL;
|
|
16685
|
+
}
|
|
16686
|
+
return CreateFontIndirect(NONCLIENTMETRICSW.decode(ncm).lfMessageFont);
|
|
16687
|
+
}
|
|
16688
|
+
|
|
16610
16689
|
// _build/lib/react-qw/props.js
|
|
16611
16690
|
import * as gui from "gui";
|
|
16612
16691
|
function applyProps(instance, newProps, _oldProps) {
|
|
@@ -16630,14 +16709,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16630
16709
|
EnableWindow(hwnd, !newProps.disabled ? 1 : 0);
|
|
16631
16710
|
}
|
|
16632
16711
|
if ("hidden" in newProps) {
|
|
16633
|
-
|
|
16712
|
+
ShowWindow(
|
|
16634
16713
|
hwnd,
|
|
16635
16714
|
newProps.hidden ? 0 : 5
|
|
16636
16715
|
/* ShowWindowCmd.SHOW */
|
|
16637
16716
|
);
|
|
16638
16717
|
}
|
|
16639
16718
|
if ("visible" in newProps) {
|
|
16640
|
-
|
|
16719
|
+
ShowWindow(
|
|
16641
16720
|
hwnd,
|
|
16642
16721
|
newProps.visible ? 5 : 0
|
|
16643
16722
|
/* ShowWindowCmd.HIDE */
|
|
@@ -16757,24 +16836,21 @@ function measureTextForHwnd(hwnd, text) {
|
|
|
16757
16836
|
if (hFont)
|
|
16758
16837
|
SelectObject(hdc, oldFont);
|
|
16759
16838
|
ReleaseDC(hwnd, hdc);
|
|
16760
|
-
const wr =
|
|
16761
|
-
const cr =
|
|
16762
|
-
|
|
16763
|
-
|
|
16764
|
-
|
|
16839
|
+
const wr = RECT.alloc();
|
|
16840
|
+
const cr = RECT.alloc();
|
|
16841
|
+
const okWr = GetWindowRect(hwnd, wr.ptr);
|
|
16842
|
+
const okCr = GetClientRect(hwnd, cr.ptr);
|
|
16843
|
+
if (okWr && okCr) {
|
|
16844
|
+
const w = RECT.decode(wr), c = RECT.decode(cr);
|
|
16845
|
+
result.width += w.right - w.left - (c.right - c.left);
|
|
16846
|
+
result.height += w.bottom - w.top - (c.bottom - c.top);
|
|
16765
16847
|
}
|
|
16766
16848
|
return result;
|
|
16767
16849
|
}
|
|
16768
16850
|
|
|
16769
16851
|
// _build/lib/react-qw/reconciler.js
|
|
16770
|
-
var dpiFont =
|
|
16771
|
-
var scaleFactor = (
|
|
16772
|
-
const hdc = GetDC(NULL);
|
|
16773
|
-
const dpi = hdc ? GetDeviceCaps(hdc, 88) : 96;
|
|
16774
|
-
if (hdc)
|
|
16775
|
-
ReleaseDC(NULL, hdc);
|
|
16776
|
-
return dpi / 96;
|
|
16777
|
-
})();
|
|
16852
|
+
var dpiFont = createSystemDpiFont();
|
|
16853
|
+
var scaleFactor = getScaleFactor();
|
|
16778
16854
|
var DELAYED_CONTROLS = /* @__PURE__ */ new Set(["SysListView32", "SysTreeView32", "LISTBOX", "COMBOBOX", "msctls_trackbar32", "SysDateTimePick32", "SysLink"]);
|
|
16779
16855
|
function isDelayedControl(winClass) {
|
|
16780
16856
|
return DELAYED_CONTROLS.has(winClass);
|
|
@@ -16820,11 +16896,12 @@ function runFlexLayout(inst) {
|
|
|
16820
16896
|
const visible = children.filter((c) => !c.props.hidden);
|
|
16821
16897
|
if (visible.length === 0)
|
|
16822
16898
|
return;
|
|
16823
|
-
const
|
|
16824
|
-
if (!
|
|
16899
|
+
const rcBuf = RECT.alloc();
|
|
16900
|
+
if (!GetClientRect(inst.hwnd, rcBuf.ptr)) {
|
|
16825
16901
|
console.log("flex: no rect for", inst.hwnd, inst.type);
|
|
16826
16902
|
return;
|
|
16827
16903
|
}
|
|
16904
|
+
const rect = RECT.decode(rcBuf);
|
|
16828
16905
|
const pw = (rect.right - rect.left) / scaleFactor;
|
|
16829
16906
|
const ph = (rect.bottom - rect.top) / scaleFactor;
|
|
16830
16907
|
if (pw <= 0 || ph <= 0) {
|
|
@@ -17025,7 +17102,7 @@ var hostConfig = {
|
|
|
17025
17102
|
},
|
|
17026
17103
|
hideInstance(instance) {
|
|
17027
17104
|
if (instance.hwnd !== null)
|
|
17028
|
-
|
|
17105
|
+
ShowWindow(
|
|
17029
17106
|
instance.hwnd,
|
|
17030
17107
|
0
|
|
17031
17108
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17033,7 +17110,7 @@ var hostConfig = {
|
|
|
17033
17110
|
},
|
|
17034
17111
|
hideTextInstance(instance) {
|
|
17035
17112
|
if (instance.hwnd !== null)
|
|
17036
|
-
|
|
17113
|
+
ShowWindow(
|
|
17037
17114
|
instance.hwnd,
|
|
17038
17115
|
0
|
|
17039
17116
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17041,7 +17118,7 @@ var hostConfig = {
|
|
|
17041
17118
|
},
|
|
17042
17119
|
unhideInstance(instance, _props) {
|
|
17043
17120
|
if (instance.hwnd !== null)
|
|
17044
|
-
|
|
17121
|
+
ShowWindow(
|
|
17045
17122
|
instance.hwnd,
|
|
17046
17123
|
5
|
|
17047
17124
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17049,7 +17126,7 @@ var hostConfig = {
|
|
|
17049
17126
|
},
|
|
17050
17127
|
unhideTextInstance(instance, _text) {
|
|
17051
17128
|
if (instance.hwnd !== null)
|
|
17052
|
-
|
|
17129
|
+
ShowWindow(
|
|
17053
17130
|
instance.hwnd,
|
|
17054
17131
|
5
|
|
17055
17132
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17296,11 +17373,10 @@ var DateTimePicker = (0, import_react5.forwardRef)(function DateTimePicker2({ va
|
|
|
17296
17373
|
if (!h)
|
|
17297
17374
|
return;
|
|
17298
17375
|
InvalidateRect(h, NULL, 1);
|
|
17299
|
-
const cr =
|
|
17300
|
-
if (cr) {
|
|
17301
|
-
const
|
|
17302
|
-
|
|
17303
|
-
gui6.SendMessage(h, 5, 0, hh << 16 | w);
|
|
17376
|
+
const cr = RECT.alloc();
|
|
17377
|
+
if (GetClientRect(h, cr.ptr)) {
|
|
17378
|
+
const { left, top, right, bottom } = RECT.decode(cr);
|
|
17379
|
+
gui6.SendMessage(h, 5, 0, bottom - top << 16 | right - left);
|
|
17304
17380
|
}
|
|
17305
17381
|
}, []);
|
|
17306
17382
|
return (0, import_jsx_runtime4.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
@@ -17361,7 +17437,10 @@ var Input = (0, import_react6.forwardRef)(({ value: controlledValue, defaultValu
|
|
|
17361
17437
|
const h = inputRef.current;
|
|
17362
17438
|
if (!h)
|
|
17363
17439
|
return;
|
|
17364
|
-
const
|
|
17440
|
+
const cap = GetWindowTextLength(h) + 1;
|
|
17441
|
+
const buf = WCHAR.alloc(cap);
|
|
17442
|
+
GetWindowText(h, buf, cap);
|
|
17443
|
+
const newText = WCHAR.decode(buf);
|
|
17365
17444
|
if (!isControlled)
|
|
17366
17445
|
setInternalValue(newText);
|
|
17367
17446
|
onChange?.(newText);
|
|
@@ -17449,6 +17528,49 @@ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
|
17449
17528
|
var import_react9 = __toESM(require_react(), 1);
|
|
17450
17529
|
import * as gui9 from "gui";
|
|
17451
17530
|
import * as ffi3 from "ffi";
|
|
17531
|
+
|
|
17532
|
+
// _build/lib/bitmap.js
|
|
17533
|
+
function createBitmapFromPixels(width, height, pixels) {
|
|
17534
|
+
if (width <= 0 || height <= 0)
|
|
17535
|
+
return NULL;
|
|
17536
|
+
const len = width * height * 4;
|
|
17537
|
+
if (pixels.byteLength < len)
|
|
17538
|
+
return NULL;
|
|
17539
|
+
const bi = BITMAPINFOHEADER.encode({
|
|
17540
|
+
biSize: BITMAPINFOHEADER.size,
|
|
17541
|
+
biWidth: width,
|
|
17542
|
+
biHeight: -height,
|
|
17543
|
+
biPlanes: 1,
|
|
17544
|
+
biBitCount: 32
|
|
17545
|
+
});
|
|
17546
|
+
const hbm = CreateDIBSection(NULL, bi.ptr, 0, NULL, NULL, 0);
|
|
17547
|
+
if (!hbm)
|
|
17548
|
+
return NULL;
|
|
17549
|
+
const src = new PtrArrayBuffer(len);
|
|
17550
|
+
new Uint8Array(src).set(new Uint8Array(pixels, 0, len));
|
|
17551
|
+
if (SetDIBits(
|
|
17552
|
+
NULL,
|
|
17553
|
+
hbm,
|
|
17554
|
+
0,
|
|
17555
|
+
height,
|
|
17556
|
+
src,
|
|
17557
|
+
bi.ptr,
|
|
17558
|
+
0
|
|
17559
|
+
/* ColorUse.RGB_COLORS */
|
|
17560
|
+
) !== height) {
|
|
17561
|
+
DeleteObject(hbm);
|
|
17562
|
+
return NULL;
|
|
17563
|
+
}
|
|
17564
|
+
return hbm;
|
|
17565
|
+
}
|
|
17566
|
+
|
|
17567
|
+
// _build/lib/windows/comctl32.js
|
|
17568
|
+
var b3 = (name, sig) => bind("comctl32.dll", name, sig);
|
|
17569
|
+
var ImageListCreate = /* @__PURE__ */ b3("ImageList_Create", "i32 i32 u32 i32 i32 -> <HIMAGELIST>ptr");
|
|
17570
|
+
var ImageListAdd = /* @__PURE__ */ b3("ImageList_Add", "<HIMAGELIST>ptr <HGDIOBJ>ptr <HGDIOBJ>ptr -> i32");
|
|
17571
|
+
var ImageListDestroy = /* @__PURE__ */ b3("ImageList_Destroy", "<HIMAGELIST>ptr -> i32");
|
|
17572
|
+
|
|
17573
|
+
// _build/lib/react-qw/components/ListView.js
|
|
17452
17574
|
function writeU32(ptr, offset, v) {
|
|
17453
17575
|
ffi3.writeByte(ptr + offset, v & 255);
|
|
17454
17576
|
ffi3.writeByte(ptr + offset + 1, v >> 8 & 255);
|
|
@@ -17538,7 +17660,7 @@ function resolveCellStyle(columns, data, row, colIndex) {
|
|
|
17538
17660
|
}
|
|
17539
17661
|
function makeLVItem(i, sub, text, image) {
|
|
17540
17662
|
const textBuf = WCHAR.encode(text);
|
|
17541
|
-
const
|
|
17663
|
+
const b7 = LVITEMW.encode({
|
|
17542
17664
|
mask: 1 | (image !== void 0 ? 2 : 0),
|
|
17543
17665
|
iItem: i,
|
|
17544
17666
|
iSubItem: sub,
|
|
@@ -17555,32 +17677,32 @@ function makeLVItem(i, sub, text, image) {
|
|
|
17555
17677
|
piColFmt: 0,
|
|
17556
17678
|
iGroup: 0
|
|
17557
17679
|
});
|
|
17558
|
-
|
|
17559
|
-
return
|
|
17680
|
+
b7.__textBuf = textBuf;
|
|
17681
|
+
return b7;
|
|
17560
17682
|
}
|
|
17561
17683
|
var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, data, style, icons, iconSize, getIcon }, ref) {
|
|
17562
17684
|
const lvRef = (0, import_react9.useRef)(null);
|
|
17563
|
-
const iconListRef = (0, import_react9.useRef)(
|
|
17685
|
+
const iconListRef = (0, import_react9.useRef)(NULL);
|
|
17564
17686
|
(0, import_react9.useEffect)(() => {
|
|
17565
17687
|
const h = lvRef.current;
|
|
17566
17688
|
if (!h)
|
|
17567
17689
|
return;
|
|
17568
17690
|
const il = iconListRef.current;
|
|
17569
|
-
iconListRef.current =
|
|
17691
|
+
iconListRef.current = NULL;
|
|
17570
17692
|
if (il) {
|
|
17571
17693
|
gui9.SendMessage(h, 4099, 1, 0);
|
|
17572
|
-
|
|
17694
|
+
ImageListDestroy(il);
|
|
17573
17695
|
}
|
|
17574
17696
|
if (!icons || icons.length === 0)
|
|
17575
17697
|
return;
|
|
17576
17698
|
const size = iconSize ?? 32;
|
|
17577
|
-
const img =
|
|
17699
|
+
const img = ImageListCreate(size, size, 32, icons.length, 1);
|
|
17578
17700
|
if (!img)
|
|
17579
17701
|
return;
|
|
17580
17702
|
for (const p of icons) {
|
|
17581
|
-
const hbm =
|
|
17703
|
+
const hbm = createBitmapFromPixels(size, size, p);
|
|
17582
17704
|
if (hbm) {
|
|
17583
|
-
|
|
17705
|
+
ImageListAdd(img, hbm, NULL);
|
|
17584
17706
|
DeleteObject(hbm);
|
|
17585
17707
|
}
|
|
17586
17708
|
}
|
|
@@ -17761,22 +17883,19 @@ var RadioButton = (0, import_react11.forwardRef)(({ checked: controlledChecked,
|
|
|
17761
17883
|
// _build/lib/react-qw/components/ScrollView.js
|
|
17762
17884
|
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
17763
17885
|
var import_react12 = __toESM(require_react(), 1);
|
|
17764
|
-
import * as gui12 from "gui";
|
|
17765
17886
|
var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth, contentHeight }, ref) => {
|
|
17766
17887
|
const svRef = (0, import_react12.useRef)(null);
|
|
17767
17888
|
const contentRef = (0, import_react12.useRef)(null);
|
|
17768
17889
|
const scrollXRef = (0, import_react12.useRef)(0);
|
|
17769
17890
|
const scrollYRef = (0, import_react12.useRef)(0);
|
|
17770
17891
|
function updateScroll(sv, content) {
|
|
17771
|
-
const
|
|
17772
|
-
if (!
|
|
17892
|
+
const svBuf = RECT.alloc();
|
|
17893
|
+
if (!GetClientRect(sv, svBuf.ptr))
|
|
17773
17894
|
return;
|
|
17774
|
-
const
|
|
17775
|
-
const
|
|
17776
|
-
const
|
|
17777
|
-
const scale =
|
|
17778
|
-
if (hdc)
|
|
17779
|
-
ReleaseDC(NULL, hdc);
|
|
17895
|
+
const { left, top, right, bottom } = RECT.decode(svBuf);
|
|
17896
|
+
const svW = right - left;
|
|
17897
|
+
const svH = bottom - top;
|
|
17898
|
+
const scale = getScaleFactor();
|
|
17780
17899
|
const natW = Math.round((contentWidth ?? svW / scale) * scale);
|
|
17781
17900
|
const natH = Math.round((contentHeight ?? svH / scale) * scale);
|
|
17782
17901
|
scrollXRef.current = Math.max(0, Math.min(scrollXRef.current, natW - svW));
|
|
@@ -17793,14 +17912,28 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17793
17912
|
);
|
|
17794
17913
|
forceFlexLayout(content);
|
|
17795
17914
|
if (natW > svW) {
|
|
17796
|
-
|
|
17915
|
+
SetScrollInfo(sv, 0, {
|
|
17916
|
+
cbSize: SCROLLINFO.size,
|
|
17917
|
+
fMask: 1 | 2 | 4,
|
|
17918
|
+
nMin: 0,
|
|
17919
|
+
nMax: natW - 1,
|
|
17920
|
+
nPage: svW,
|
|
17921
|
+
nPos: scrollXRef.current
|
|
17922
|
+
}, 1);
|
|
17797
17923
|
ShowScrollBar(sv, 0, 1);
|
|
17798
17924
|
} else {
|
|
17799
17925
|
scrollXRef.current = 0;
|
|
17800
17926
|
ShowScrollBar(sv, 0, 0);
|
|
17801
17927
|
}
|
|
17802
17928
|
if (natH > svH) {
|
|
17803
|
-
|
|
17929
|
+
SetScrollInfo(sv, 1, {
|
|
17930
|
+
cbSize: SCROLLINFO.size,
|
|
17931
|
+
fMask: 1 | 2 | 4,
|
|
17932
|
+
nMin: 0,
|
|
17933
|
+
nMax: natH - 1,
|
|
17934
|
+
nPage: svH,
|
|
17935
|
+
nPos: scrollYRef.current
|
|
17936
|
+
}, 1);
|
|
17804
17937
|
ShowScrollBar(sv, 1, 1);
|
|
17805
17938
|
} else {
|
|
17806
17939
|
scrollYRef.current = 0;
|
|
@@ -17830,15 +17963,21 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17830
17963
|
1 | 4
|
|
17831
17964
|
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17832
17965
|
);
|
|
17833
|
-
|
|
17966
|
+
SetScrollInfo(sv, bar, { cbSize: SCROLLINFO.size, fMask: 4, nPos: newPos }, 1);
|
|
17834
17967
|
}
|
|
17835
17968
|
function handleScroll(e, bar) {
|
|
17836
17969
|
const sv = svRef.current;
|
|
17837
17970
|
const content = contentRef.current;
|
|
17838
17971
|
if (!sv || !content)
|
|
17839
17972
|
return;
|
|
17840
|
-
const
|
|
17841
|
-
|
|
17973
|
+
const si = SCROLLINFO.encode({
|
|
17974
|
+
cbSize: SCROLLINFO.size,
|
|
17975
|
+
fMask: 23
|
|
17976
|
+
/* ScrollInfoFlag.ALL */
|
|
17977
|
+
});
|
|
17978
|
+
GetScrollInfo(sv, bar, si.ptr);
|
|
17979
|
+
const info = SCROLLINFO.decode(si);
|
|
17980
|
+
const maxPos = info.nMax - info.nPage + 1;
|
|
17842
17981
|
const code = e.wParam & 65535;
|
|
17843
17982
|
const ref_ = bar === 1 ? scrollYRef : scrollXRef;
|
|
17844
17983
|
let newPos = ref_.current;
|
|
@@ -17849,9 +17988,9 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17849
17988
|
else if (code === 1)
|
|
17850
17989
|
newPos += 20;
|
|
17851
17990
|
else if (code === 2)
|
|
17852
|
-
newPos -= info.
|
|
17991
|
+
newPos -= info.nPage;
|
|
17853
17992
|
else if (code === 3)
|
|
17854
|
-
newPos += info.
|
|
17993
|
+
newPos += info.nPage;
|
|
17855
17994
|
else
|
|
17856
17995
|
return;
|
|
17857
17996
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17871,8 +18010,14 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17871
18010
|
if (!isHorz && contentHeight === void 0)
|
|
17872
18011
|
return;
|
|
17873
18012
|
const bar = isHorz ? 0 : 1;
|
|
17874
|
-
const
|
|
17875
|
-
|
|
18013
|
+
const si = SCROLLINFO.encode({
|
|
18014
|
+
cbSize: SCROLLINFO.size,
|
|
18015
|
+
fMask: 23
|
|
18016
|
+
/* ScrollInfoFlag.ALL */
|
|
18017
|
+
});
|
|
18018
|
+
GetScrollInfo(sv, bar, si.ptr);
|
|
18019
|
+
const info = SCROLLINFO.decode(si);
|
|
18020
|
+
const maxPos = info.nMax - info.nPage + 1;
|
|
17876
18021
|
const ref_ = isHorz ? scrollXRef : scrollYRef;
|
|
17877
18022
|
let newPos = ref_.current + dy;
|
|
17878
18023
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17920,7 +18065,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17920
18065
|
// _build/lib/react-qw/components/Slider.js
|
|
17921
18066
|
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
|
17922
18067
|
var import_react13 = __toESM(require_react(), 1);
|
|
17923
|
-
import * as
|
|
18068
|
+
import * as gui12 from "gui";
|
|
17924
18069
|
var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 100, vertical = false, disabled, style }, ref) => {
|
|
17925
18070
|
const wrapperRef = (0, import_react13.useRef)(null);
|
|
17926
18071
|
const sliderRef = (0, import_react13.useRef)(null);
|
|
@@ -17929,14 +18074,14 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17929
18074
|
if (!h)
|
|
17930
18075
|
return;
|
|
17931
18076
|
const lParam = min & 65535 | (max & 65535) << 16;
|
|
17932
|
-
|
|
17933
|
-
|
|
18077
|
+
gui12.SendMessage(h, 1030, 0, lParam);
|
|
18078
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17934
18079
|
}, [min, max]);
|
|
17935
18080
|
(0, import_react13.useEffect)(() => {
|
|
17936
18081
|
const h = sliderRef.current;
|
|
17937
18082
|
if (!h)
|
|
17938
18083
|
return;
|
|
17939
|
-
|
|
18084
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17940
18085
|
}, [value]);
|
|
17941
18086
|
const tbStyle = 268435456 | 65536 | 1 | (vertical ? 2 : 0);
|
|
17942
18087
|
return (0, import_jsx_runtime12.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style, ref: (h) => {
|
|
@@ -17953,7 +18098,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17953
18098
|
const h = sliderRef.current;
|
|
17954
18099
|
if (!h)
|
|
17955
18100
|
return 0;
|
|
17956
|
-
const pos =
|
|
18101
|
+
const pos = gui12.SendMessage(h, 1024, 0, 0);
|
|
17957
18102
|
onChange?.(pos);
|
|
17958
18103
|
return 0;
|
|
17959
18104
|
}
|
|
@@ -17966,7 +18111,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17966
18111
|
// _build/lib/react-qw/components/Tab.js
|
|
17967
18112
|
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
|
17968
18113
|
var import_react14 = __toESM(require_react(), 1);
|
|
17969
|
-
import * as
|
|
18114
|
+
import * as gui13 from "gui";
|
|
17970
18115
|
var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex, defaultSelectedIndex = 0, onChange, style }, ref) => {
|
|
17971
18116
|
const [internalIndex, setInternalIndex] = (0, import_react14.useState)(defaultSelectedIndex);
|
|
17972
18117
|
const isControlled = controlledIndex !== void 0;
|
|
@@ -17976,7 +18121,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17976
18121
|
const h = tabHwnd.current;
|
|
17977
18122
|
if (!h)
|
|
17978
18123
|
return;
|
|
17979
|
-
|
|
18124
|
+
gui13.SendMessage(h, 4873, 0, 0);
|
|
17980
18125
|
for (let i = 0; i < tabs.length; i++) {
|
|
17981
18126
|
const titleBuf = WCHAR.encode(tabs[i].title);
|
|
17982
18127
|
const tci = TCITEMW.encode({
|
|
@@ -17989,14 +18134,14 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17989
18134
|
lParam: 0
|
|
17990
18135
|
});
|
|
17991
18136
|
const tciPtr = tci.ptr;
|
|
17992
|
-
|
|
18137
|
+
gui13.SendMessage(h, 4926, i, tciPtr);
|
|
17993
18138
|
}
|
|
17994
|
-
|
|
18139
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
17995
18140
|
}, [tabs]);
|
|
17996
18141
|
(0, import_react14.useEffect)(() => {
|
|
17997
18142
|
const h = tabHwnd.current;
|
|
17998
18143
|
if (h)
|
|
17999
|
-
|
|
18144
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
18000
18145
|
}, [sel]);
|
|
18001
18146
|
return (0, import_jsx_runtime13.jsxs)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18002
18147
|
if (e.msg === 78) {
|
|
@@ -18005,7 +18150,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18005
18150
|
return;
|
|
18006
18151
|
const code = nmCode(e.lParam);
|
|
18007
18152
|
if (code === -552 || code === -2) {
|
|
18008
|
-
const newSel =
|
|
18153
|
+
const newSel = gui13.SendMessage(h, 4875, 0, 0);
|
|
18009
18154
|
if (newSel !== sel) {
|
|
18010
18155
|
if (!isControlled)
|
|
18011
18156
|
setInternalIndex(newSel);
|
|
@@ -18018,12 +18163,12 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18018
18163
|
|
|
18019
18164
|
// _build/lib/react-qw/components/Tooltip.js
|
|
18020
18165
|
var import_react15 = __toESM(require_react(), 1);
|
|
18021
|
-
import * as
|
|
18166
|
+
import * as gui14 from "gui";
|
|
18022
18167
|
|
|
18023
18168
|
// _build/lib/react-qw/components/TreeView.js
|
|
18024
18169
|
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
|
18025
18170
|
var import_react16 = __toESM(require_react(), 1);
|
|
18026
|
-
import * as
|
|
18171
|
+
import * as gui15 from "gui";
|
|
18027
18172
|
function buildTvItem(textPtr, cChildren) {
|
|
18028
18173
|
let mask = 1;
|
|
18029
18174
|
if (cChildren > 0)
|
|
@@ -18048,20 +18193,20 @@ function insertItems(hTree, nodes, parentHandle, hItemMap, keyMap) {
|
|
|
18048
18193
|
const itemBuf = buildTvItem(textBuf.ptr, cChildren);
|
|
18049
18194
|
const item = TVITEM.decode(itemBuf);
|
|
18050
18195
|
const tvins = TVINSERTSTRUCT.encode({ hParent: parentHandle, hInsertAfter: -65536, item });
|
|
18051
|
-
const hItem =
|
|
18196
|
+
const hItem = gui15.SendMessage(hTree, 4402, 0, tvins.ptr);
|
|
18052
18197
|
hItemMap.set(hItem, node);
|
|
18053
18198
|
if (node.key)
|
|
18054
18199
|
keyMap.set(node.key, hItem);
|
|
18055
18200
|
if (node.children && node.children.length > 0) {
|
|
18056
18201
|
insertItems(hTree, node.children, hItem, hItemMap, keyMap);
|
|
18057
|
-
|
|
18202
|
+
gui15.SendMessage(hTree, 4354, 2, hItem);
|
|
18058
18203
|
}
|
|
18059
18204
|
}
|
|
18060
18205
|
}
|
|
18061
18206
|
function deleteAllItems(hTree) {
|
|
18062
|
-
const n =
|
|
18207
|
+
const n = gui15.SendMessage(hTree, 4357, 0, 0);
|
|
18063
18208
|
if (n > 0)
|
|
18064
|
-
|
|
18209
|
+
gui15.SendMessage(
|
|
18065
18210
|
hTree,
|
|
18066
18211
|
4353,
|
|
18067
18212
|
1,
|
|
@@ -18093,7 +18238,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18093
18238
|
const h = tvRef.current;
|
|
18094
18239
|
if (!h)
|
|
18095
18240
|
return;
|
|
18096
|
-
|
|
18241
|
+
gui15.SendMessage(
|
|
18097
18242
|
h,
|
|
18098
18243
|
4396,
|
|
18099
18244
|
0,
|
|
@@ -18109,7 +18254,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18109
18254
|
return;
|
|
18110
18255
|
const hItem = keyMapRef.current.get(selKey);
|
|
18111
18256
|
if (hItem !== void 0)
|
|
18112
|
-
|
|
18257
|
+
gui15.SendMessage(h, 4363, 9, hItem);
|
|
18113
18258
|
}, [selKey]);
|
|
18114
18259
|
return (0, import_jsx_runtime14.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18115
18260
|
if (e.msg === 78) {
|
|
@@ -18118,7 +18263,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18118
18263
|
const h = tvRef.current;
|
|
18119
18264
|
if (!h)
|
|
18120
18265
|
return;
|
|
18121
|
-
const hCaret =
|
|
18266
|
+
const hCaret = gui15.SendMessage(h, 4362, 9, 0);
|
|
18122
18267
|
const node = hItemMapRef.current.get(hCaret) ?? null;
|
|
18123
18268
|
const key = node?.key ?? null;
|
|
18124
18269
|
if (!isControlled)
|
|
@@ -18136,24 +18281,24 @@ var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
|
|
18136
18281
|
var import_react17 = __toESM(require_react(), 1);
|
|
18137
18282
|
|
|
18138
18283
|
// _build/lib/windows/comdlg32.js
|
|
18139
|
-
var
|
|
18140
|
-
var GetOpenFileName = /* @__PURE__ */
|
|
18284
|
+
var b4 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
18285
|
+
var GetOpenFileName = /* @__PURE__ */ b4("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18141
18286
|
|
|
18142
18287
|
// _build/lib/windows/shell32.js
|
|
18143
|
-
var
|
|
18144
|
-
var SHBrowseForFolder = /* @__PURE__ */
|
|
18145
|
-
var SHGetPathFromIDList = /* @__PURE__ */
|
|
18288
|
+
var b5 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18289
|
+
var SHBrowseForFolder = /* @__PURE__ */ b5("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18290
|
+
var SHGetPathFromIDList = /* @__PURE__ */ b5("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18146
18291
|
var Shell_NotifyIconGetRect = (() => {
|
|
18147
18292
|
try {
|
|
18148
|
-
return
|
|
18293
|
+
return b5("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18149
18294
|
} catch {
|
|
18150
18295
|
return null;
|
|
18151
18296
|
}
|
|
18152
18297
|
})();
|
|
18153
18298
|
|
|
18154
18299
|
// _build/lib/windows/ole32.js
|
|
18155
|
-
var
|
|
18156
|
-
var CoTaskMemFree = /* @__PURE__ */
|
|
18300
|
+
var b6 = (name, sig) => bind("ole32.dll", name, sig);
|
|
18301
|
+
var CoTaskMemFree = /* @__PURE__ */ b6("CoTaskMemFree", "<>ptr -> void");
|
|
18157
18302
|
|
|
18158
18303
|
// _build/lib/react-qw/components/PathPicker.js
|
|
18159
18304
|
function openFileDialog(owner, filter, title, multiple) {
|
|
@@ -18248,7 +18393,7 @@ var rootMap = /* @__PURE__ */ new Map();
|
|
|
18248
18393
|
function ensureDefaultClass() {
|
|
18249
18394
|
if (defaultClassRegistered)
|
|
18250
18395
|
return DEFAULT_CLASS;
|
|
18251
|
-
|
|
18396
|
+
gui16.RegisterClass(DEFAULT_CLASS, (hwnd, msg, wParam, lParam) => {
|
|
18252
18397
|
const entry = rootMap.get(hwnd);
|
|
18253
18398
|
if (msg === 2 && entry) {
|
|
18254
18399
|
rootMap.delete(hwnd);
|
|
@@ -18274,15 +18419,27 @@ function createRoot(container) {
|
|
|
18274
18419
|
const ws = (cfg.ws ?? 0) | 13565952;
|
|
18275
18420
|
const w = (cfg.width ?? 800) * scaleFactor;
|
|
18276
18421
|
const h = (cfg.height ?? 600) * scaleFactor;
|
|
18277
|
-
const [sw, sh] = [GetSystemMetrics(
|
|
18422
|
+
const [sw, sh] = [GetSystemMetrics(
|
|
18423
|
+
0
|
|
18424
|
+
/* SysMetrics.CXSCREEN */
|
|
18425
|
+
), GetSystemMetrics(
|
|
18426
|
+
1
|
|
18427
|
+
/* SysMetrics.CYSCREEN */
|
|
18428
|
+
)];
|
|
18278
18429
|
const x = cfg.x === void 0 ? (sw - w) / 2 | 0 : cfg.x === -2147483648 ? -2147483648 : cfg.x * scaleFactor;
|
|
18279
18430
|
const y = cfg.y === void 0 ? (sh - h) / 2 | 0 : cfg.y === -2147483648 ? -2147483648 : cfg.y * scaleFactor;
|
|
18280
|
-
const hwin =
|
|
18431
|
+
const hwin = gui16.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
|
|
18281
18432
|
if (!hwin)
|
|
18282
18433
|
throw new Error("CreateWindow failed");
|
|
18283
18434
|
hwnd = hwin;
|
|
18284
|
-
if (!cfg.noShowWindow)
|
|
18285
|
-
|
|
18435
|
+
if (!cfg.noShowWindow) {
|
|
18436
|
+
ShowWindow(
|
|
18437
|
+
hwnd,
|
|
18438
|
+
1
|
|
18439
|
+
/* ShowWindowCmd.SHOWNORMAL */
|
|
18440
|
+
);
|
|
18441
|
+
UpdateWindow(hwnd);
|
|
18442
|
+
}
|
|
18286
18443
|
} else {
|
|
18287
18444
|
hwnd = container;
|
|
18288
18445
|
}
|