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.
Files changed (99) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/constants.ts +22 -0
  4. package/enum_map.d.ts +4 -0
  5. package/examples/PdfCanvas.js +1 -1
  6. package/examples/PdfCanvas.tsx +2 -2
  7. package/examples/execd/main.js +491 -217
  8. package/examples/pdf_preview2.js +76 -67
  9. package/examples/pdf_preview2.ts +84 -64
  10. package/examples/pdf_viewer.js +4932 -1029
  11. package/examples/pdf_viewer.tsx +11 -22
  12. package/examples/test_gallery.js +308 -143
  13. package/examples/test_gallery.tsx +12 -7
  14. package/examples/test_react_lazy.js +295 -133
  15. package/examples/test_react_lazy.tsx +4 -3
  16. package/examples/test_react_listbox.js +293 -132
  17. package/examples/test_react_listbox.tsx +3 -2
  18. package/examples/test_root_window.js +283 -126
  19. package/examples/test_tab.js +295 -133
  20. package/examples/test_tab.tsx +4 -3
  21. package/examples/tray_demo.js +37 -30
  22. package/examples/tray_demo.tsx +39 -32
  23. package/lib/bitmap.js +40 -0
  24. package/lib/bitmap.ts +39 -0
  25. package/lib/certs.js +31 -3
  26. package/lib/certs.ts +32 -3
  27. package/lib/dpi.js +30 -0
  28. package/lib/dpi.ts +31 -0
  29. package/lib/dumpRects.js +14 -7
  30. package/lib/dumpRects.ts +14 -6
  31. package/lib/ffi/bind.js +5 -4
  32. package/lib/ffi/bind.ts +9 -8
  33. package/lib/http-server.js +50 -25
  34. package/lib/http-server.ts +51 -23
  35. package/lib/react-qw/components/DateTimePicker.js +6 -7
  36. package/lib/react-qw/components/Input.js +5 -1
  37. package/lib/react-qw/components/ListView.js +8 -6
  38. package/lib/react-qw/components/ScrollView.js +28 -22
  39. package/lib/react-qw/index.js +7 -5
  40. package/lib/react-qw/index.ts +5 -5
  41. package/lib/react-qw/props.js +3 -3
  42. package/lib/react-qw/props.ts +3 -3
  43. package/lib/react-qw/reconciler.js +12 -17
  44. package/lib/react-qw/reconciler.ts +12 -16
  45. package/lib/text-measure.js +9 -6
  46. package/lib/text-measure.ts +9 -6
  47. package/lib/windows/comctl32.js +3 -2
  48. package/lib/windows/comctl32.ts +3 -2
  49. package/lib/windows/gdi32.js +28 -6
  50. package/lib/windows/gdi32.ts +30 -6
  51. package/lib/windows/kernel32.js +9 -0
  52. package/lib/windows/kernel32.ts +9 -0
  53. package/lib/windows/shell32.js +11 -2
  54. package/lib/windows/shell32.ts +13 -2
  55. package/lib/windows/structs.js +51 -0
  56. package/lib/windows/structs.ts +55 -0
  57. package/lib/windows/user32.js +6 -5
  58. package/lib/windows/user32.ts +6 -5
  59. package/main.js +13 -5
  60. package/package.json +2 -2
  61. package/quickwin.d.ts +13 -115
  62. package/qwin-nowasm-x86.exe +0 -0
  63. package/qwin-nowasm.exe +0 -0
  64. package/qwin-x86.exe +0 -0
  65. package/qwin.exe +0 -0
  66. package/test/bench_ffi_callraw.js +3 -4
  67. package/test/bench_ffi_callraw.ts +3 -4
  68. package/test/debug/mupdf_debug.js +4 -22
  69. package/test/debug/wasm_export_debug.js +2 -12
  70. package/test/debug/wasm_names.js +3 -13
  71. package/test/example.pdf +0 -0
  72. package/test/mupdf-cdn.js +40 -0
  73. package/test/mupdf-cdn.ts +43 -0
  74. package/test/test_ffi.js +8 -9
  75. package/test/test_ffi.ts +8 -9
  76. package/test/test_ffi_abi.js +6 -6
  77. package/test/test_ffi_abi.ts +8 -8
  78. package/test/test_ffi_windows.js +82 -11
  79. package/test/test_ffi_windows.ts +85 -11
  80. package/test/test_gdi_draw.js +3 -3
  81. package/test/test_gdi_draw.ts +4 -4
  82. package/test/test_mupdf_render.js +4 -22
  83. package/test/test_mupdf_render.ts +4 -23
  84. package/test/test_mupdf_twice.js +4 -19
  85. package/test/test_mupdf_twice.ts +4 -20
  86. package/test/test_mupdf_wasm.js +10 -4
  87. package/test/test_mupdf_wasm.ts +6 -4
  88. package/test/test_react_complex.js +316 -140
  89. package/test/test_react_counter.js +295 -133
  90. package/test/test_react_flex.js +297 -138
  91. package/test/test_react_hidden.js +296 -134
  92. package/test/test_react_listview_link.js +288 -131
  93. package/test/test_react_notify.js +290 -133
  94. package/test/test_react_render.js +295 -133
  95. package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
  96. package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
  97. package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
  98. package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
  99. 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, b6) {
1371
- var diff = a.sortIndex - b6.sortIndex;
1372
- return 0 !== diff ? diff : a.id - b6.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, b6 = alternate; ; ) {
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
- b6 = parentA.return;
1676
- if (null !== b6) {
1677
- a = b6;
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 === b6) return assertIsMounted(parentA), alternate;
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 !== b6.return) a = parentA, b6 = parentB;
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
- b6 = parentB;
1696
+ b7 = parentB;
1697
1697
  break;
1698
1698
  }
1699
- if (_child === b6) {
1699
+ if (_child === b7) {
1700
1700
  didFindChild = true;
1701
- b6 = parentA;
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
- b6 = parentA;
1712
+ b7 = parentA;
1713
1713
  break;
1714
1714
  }
1715
- if (_child === b6) {
1715
+ if (_child === b7) {
1716
1716
  didFindChild = true;
1717
- b6 = parentB;
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 !== b6)
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, b6, c, d) {
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, b6, c, d);
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
  }
@@ -15356,10 +15356,10 @@ var require_constants = __commonJS({
15356
15356
  // _build/test/test_react_render.js
15357
15357
  var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
15358
15358
  import "../lib/polyfill.js";
15359
- import * as gui18 from "gui";
15359
+ import * as gui17 from "gui";
15360
15360
 
15361
15361
  // _build/lib/react-qw/index.js
15362
- import * as gui17 from "gui";
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 b6 = buf[i++];
15394
- if (b6 < 128) {
15395
- out += String.fromCharCode(b6);
15392
+ const b7 = buf[i++];
15393
+ if (b7 < 128) {
15394
+ out += String.fromCharCode(b7);
15396
15395
  continue;
15397
15396
  }
15398
- if (b6 < 192) {
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 (b6 < 224) {
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 = (b6 & 31) << 6 | b22 & 63;
15416
+ c = (b7 & 31) << 6 | b22 & 63;
15418
15417
  min = 128;
15419
- } else if (b6 < 240) {
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 = (b6 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
15431
+ c = (b7 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
15433
15432
  min = 2048;
15434
- } else if (b6 < 248) {
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 = (b6 & 7) << 18 | (b22 & 63) << 12 | (b32 & 63) << 6 | b42 & 63;
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 = win.LoadLibrary(dll);
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 = win.GetProcAddress(loadDll(dll), name);
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 b6 = /^([A-Za-z_]\w*):(\d+)$/.exec(v);
16003
- if (b6) {
16004
- const rawUnit = b6[1];
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(b6[2]);
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, b6, c) {
16323
+ function struct(a, b7, c) {
16325
16324
  const isNamed = typeof a === "string";
16326
- const raw = isNamed ? b6 : a;
16327
- const opts = isNamed ? c : b6;
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,24 +16618,34 @@ 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");
16581
16631
  var SetParent = /* @__PURE__ */ b("SetParent", "<HWND>ptr <HWND>ptr -> <HWND>ptr");
16632
+ var PostQuitMessage = /* @__PURE__ */ b("PostQuitMessage", "i32 -> void");
16582
16633
  var DefWindowProc = /* @__PURE__ */ b("DefWindowProcW", "<HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
16583
16634
  var CallWindowProc = /* @__PURE__ */ b("CallWindowProcW", "<>ptr <HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
16584
16635
  var GetDC = /* @__PURE__ */ b("GetDC", "<HWND>ptr -> <HDC>ptr");
16585
16636
  var ReleaseDC = /* @__PURE__ */ b("ReleaseDC", "<HWND>ptr <HDC>ptr! -> i32");
16586
16637
  var DrawText = /* @__PURE__ */ b("DrawTextW", "<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32");
16587
16638
  var InvalidateRect = /* @__PURE__ */ b("InvalidateRect", "<HWND>ptr <RECT>ptr i32 -> i32", { RECT });
16639
+ var UpdateWindow = /* @__PURE__ */ b("UpdateWindow", "<HWND>ptr -> i32");
16588
16640
  var SetCursor = /* @__PURE__ */ b("SetCursor", "<HCURSOR>ptr -> <HCURSOR>ptr");
16589
16641
  var LoadCursor = /* @__PURE__ */ b("LoadCursorW", "<HMODULE>ptr <>ptr -> <HCURSOR>ptr");
16590
16642
  var GetCursorPos = /* @__PURE__ */ b("GetCursorPos", "<POINT>ptr -> i32");
16591
16643
  var ScreenToClient = /* @__PURE__ */ b("ScreenToClient", "<HWND>ptr <POINT>ptr -> i32");
16644
+ var SetScrollInfo = /* @__PURE__ */ b("SetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr i32 -> i32", { SCROLLINFO });
16645
+ var GetScrollInfo = /* @__PURE__ */ b("GetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr -> i32");
16592
16646
  var ShowScrollBar = /* @__PURE__ */ b("ShowScrollBar", "<HWND>ptr u32 i32 -> i32");
16593
16647
  var GetSystemMetrics = /* @__PURE__ */ b("GetSystemMetrics", "i32 -> i32");
16648
+ var SystemParametersInfo = /* @__PURE__ */ b("SystemParametersInfoW", "u32 u32 <BYTE>ptr u32 -> i32");
16594
16649
 
16595
16650
  // _build/lib/react-qw/reconciler.js
16596
16651
  var import_react_reconciler = __toESM(require_react_reconciler(), 1);
@@ -16605,8 +16660,33 @@ var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
16605
16660
  var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
16606
16661
  var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
16607
16662
  var SelectObject = /* @__PURE__ */ b2("SelectObject", "<HDC>ptr! <HGDIOBJ>ptr -> <HGDIOBJ>ptr");
16663
+ var CreateDIBSection = /* @__PURE__ */ b2("CreateDIBSection", "<HDC>ptr <>ptr u32@ColorUse <>ptr <>ptr u32 -> <HGDIOBJ>ptr");
16664
+ var SetDIBits = /* @__PURE__ */ b2("SetDIBits", "<HDC>ptr <HGDIOBJ>ptr! u32 u32 <BYTE>ptr <>ptr u32@ColorUse -> i32");
16608
16665
  var GetObject = /* @__PURE__ */ b2("GetObjectW", "<HGDIOBJ>ptr i32 <BYTE>ptr -> i32");
16609
16666
 
16667
+ // _build/lib/dpi.js
16668
+ function getScaleFactor() {
16669
+ const hdc = GetDC(NULL);
16670
+ const dpi = hdc ? GetDeviceCaps(
16671
+ hdc,
16672
+ 88
16673
+ /* DeviceCap.LOGPIXELSX */
16674
+ ) : 96;
16675
+ if (hdc)
16676
+ ReleaseDC(NULL, hdc);
16677
+ return dpi / 96;
16678
+ }
16679
+ function createSystemDpiFont() {
16680
+ const ncm = NONCLIENTMETRICSW.encode({ cbSize: NONCLIENTMETRICSW.size });
16681
+ if (!SystemParametersInfo(41, NONCLIENTMETRICSW.size, ncm, 0)) {
16682
+ const legacySize = NONCLIENTMETRICSW.size - 4;
16683
+ NONCLIENTMETRICSW.encode({ cbSize: legacySize }, ncm);
16684
+ if (!SystemParametersInfo(41, legacySize, ncm, 0))
16685
+ return NULL;
16686
+ }
16687
+ return CreateFontIndirect(NONCLIENTMETRICSW.decode(ncm).lfMessageFont);
16688
+ }
16689
+
16610
16690
  // _build/lib/react-qw/props.js
16611
16691
  import * as gui from "gui";
16612
16692
  function applyProps(instance, newProps, _oldProps) {
@@ -16630,14 +16710,14 @@ function applyProps(instance, newProps, _oldProps) {
16630
16710
  EnableWindow(hwnd2, !newProps.disabled ? 1 : 0);
16631
16711
  }
16632
16712
  if ("hidden" in newProps) {
16633
- gui.ShowWindow(
16713
+ ShowWindow(
16634
16714
  hwnd2,
16635
16715
  newProps.hidden ? 0 : 5
16636
16716
  /* ShowWindowCmd.SHOW */
16637
16717
  );
16638
16718
  }
16639
16719
  if ("visible" in newProps) {
16640
- gui.ShowWindow(
16720
+ ShowWindow(
16641
16721
  hwnd2,
16642
16722
  newProps.visible ? 5 : 0
16643
16723
  /* ShowWindowCmd.HIDE */
@@ -16757,24 +16837,21 @@ function measureTextForHwnd(hwnd2, text) {
16757
16837
  if (hFont)
16758
16838
  SelectObject(hdc, oldFont);
16759
16839
  ReleaseDC(hwnd2, hdc);
16760
- const wr = gui2.GetWindowRect(hwnd2);
16761
- const cr = gui2.GetClientRect(hwnd2);
16762
- if (wr && cr) {
16763
- result.width += wr.right - wr.left - (cr.right - cr.left);
16764
- result.height += wr.bottom - wr.top - (cr.bottom - cr.top);
16840
+ const wr = RECT.alloc();
16841
+ const cr = RECT.alloc();
16842
+ const okWr = GetWindowRect(hwnd2, wr.ptr);
16843
+ const okCr = GetClientRect(hwnd2, cr.ptr);
16844
+ if (okWr && okCr) {
16845
+ const w = RECT.decode(wr), c = RECT.decode(cr);
16846
+ result.width += w.right - w.left - (c.right - c.left);
16847
+ result.height += w.bottom - w.top - (c.bottom - c.top);
16765
16848
  }
16766
16849
  return result;
16767
16850
  }
16768
16851
 
16769
16852
  // _build/lib/react-qw/reconciler.js
16770
- var dpiFont = gui3.CreateSystemDpiFont();
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
- })();
16853
+ var dpiFont = createSystemDpiFont();
16854
+ var scaleFactor = getScaleFactor();
16778
16855
  var DELAYED_CONTROLS = /* @__PURE__ */ new Set(["SysListView32", "SysTreeView32", "LISTBOX", "COMBOBOX", "msctls_trackbar32", "SysDateTimePick32", "SysLink"]);
16779
16856
  function isDelayedControl(winClass) {
16780
16857
  return DELAYED_CONTROLS.has(winClass);
@@ -16820,11 +16897,12 @@ function runFlexLayout(inst) {
16820
16897
  const visible = children.filter((c) => !c.props.hidden);
16821
16898
  if (visible.length === 0)
16822
16899
  return;
16823
- const rect = gui3.GetClientRect(inst.hwnd);
16824
- if (!rect) {
16900
+ const rcBuf = RECT.alloc();
16901
+ if (!GetClientRect(inst.hwnd, rcBuf.ptr)) {
16825
16902
  console.log("flex: no rect for", inst.hwnd, inst.type);
16826
16903
  return;
16827
16904
  }
16905
+ const rect = RECT.decode(rcBuf);
16828
16906
  const pw = (rect.right - rect.left) / scaleFactor;
16829
16907
  const ph = (rect.bottom - rect.top) / scaleFactor;
16830
16908
  if (pw <= 0 || ph <= 0) {
@@ -17025,7 +17103,7 @@ var hostConfig = {
17025
17103
  },
17026
17104
  hideInstance(instance) {
17027
17105
  if (instance.hwnd !== null)
17028
- gui3.ShowWindow(
17106
+ ShowWindow(
17029
17107
  instance.hwnd,
17030
17108
  0
17031
17109
  /* ShowWindowCmd.HIDE */
@@ -17033,7 +17111,7 @@ var hostConfig = {
17033
17111
  },
17034
17112
  hideTextInstance(instance) {
17035
17113
  if (instance.hwnd !== null)
17036
- gui3.ShowWindow(
17114
+ ShowWindow(
17037
17115
  instance.hwnd,
17038
17116
  0
17039
17117
  /* ShowWindowCmd.HIDE */
@@ -17041,7 +17119,7 @@ var hostConfig = {
17041
17119
  },
17042
17120
  unhideInstance(instance, _props) {
17043
17121
  if (instance.hwnd !== null)
17044
- gui3.ShowWindow(
17122
+ ShowWindow(
17045
17123
  instance.hwnd,
17046
17124
  5
17047
17125
  /* ShowWindowCmd.SHOW */
@@ -17049,7 +17127,7 @@ var hostConfig = {
17049
17127
  },
17050
17128
  unhideTextInstance(instance, _text) {
17051
17129
  if (instance.hwnd !== null)
17052
- gui3.ShowWindow(
17130
+ ShowWindow(
17053
17131
  instance.hwnd,
17054
17132
  5
17055
17133
  /* ShowWindowCmd.SHOW */
@@ -17296,11 +17374,10 @@ var DateTimePicker = (0, import_react5.forwardRef)(function DateTimePicker2({ va
17296
17374
  if (!h)
17297
17375
  return;
17298
17376
  InvalidateRect(h, NULL, 1);
17299
- const cr = gui6.GetClientRect(h);
17300
- if (cr) {
17301
- const w = cr.right - cr.left;
17302
- const hh = cr.bottom - cr.top;
17303
- gui6.SendMessage(h, 5, 0, hh << 16 | w);
17377
+ const cr = RECT.alloc();
17378
+ if (GetClientRect(h, cr.ptr)) {
17379
+ const { left, top, right, bottom } = RECT.decode(cr);
17380
+ gui6.SendMessage(h, 5, 0, bottom - top << 16 | right - left);
17304
17381
  }
17305
17382
  }, []);
17306
17383
  return (0, import_jsx_runtime4.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
@@ -17361,7 +17438,10 @@ var Input = (0, import_react6.forwardRef)(({ value: controlledValue, defaultValu
17361
17438
  const h = inputRef.current;
17362
17439
  if (!h)
17363
17440
  return;
17364
- const newText = gui7.GetWindowText(h);
17441
+ const cap = GetWindowTextLength(h) + 1;
17442
+ const buf = WCHAR.alloc(cap);
17443
+ GetWindowText(h, buf, cap);
17444
+ const newText = WCHAR.decode(buf);
17365
17445
  if (!isControlled)
17366
17446
  setInternalValue(newText);
17367
17447
  onChange?.(newText);
@@ -17449,6 +17529,49 @@ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
17449
17529
  var import_react9 = __toESM(require_react(), 1);
17450
17530
  import * as gui9 from "gui";
17451
17531
  import * as ffi3 from "ffi";
17532
+
17533
+ // _build/lib/bitmap.js
17534
+ function createBitmapFromPixels(width, height, pixels) {
17535
+ if (width <= 0 || height <= 0)
17536
+ return NULL;
17537
+ const len = width * height * 4;
17538
+ if (pixels.byteLength < len)
17539
+ return NULL;
17540
+ const bi = BITMAPINFOHEADER.encode({
17541
+ biSize: BITMAPINFOHEADER.size,
17542
+ biWidth: width,
17543
+ biHeight: -height,
17544
+ biPlanes: 1,
17545
+ biBitCount: 32
17546
+ });
17547
+ const hbm = CreateDIBSection(NULL, bi.ptr, 0, NULL, NULL, 0);
17548
+ if (!hbm)
17549
+ return NULL;
17550
+ const src = new PtrArrayBuffer(len);
17551
+ new Uint8Array(src).set(new Uint8Array(pixels, 0, len));
17552
+ if (SetDIBits(
17553
+ NULL,
17554
+ hbm,
17555
+ 0,
17556
+ height,
17557
+ src,
17558
+ bi.ptr,
17559
+ 0
17560
+ /* ColorUse.RGB_COLORS */
17561
+ ) !== height) {
17562
+ DeleteObject(hbm);
17563
+ return NULL;
17564
+ }
17565
+ return hbm;
17566
+ }
17567
+
17568
+ // _build/lib/windows/comctl32.js
17569
+ var b3 = (name, sig) => bind("comctl32.dll", name, sig);
17570
+ var ImageListCreate = /* @__PURE__ */ b3("ImageList_Create", "i32 i32 u32 i32 i32 -> <HIMAGELIST>ptr");
17571
+ var ImageListAdd = /* @__PURE__ */ b3("ImageList_Add", "<HIMAGELIST>ptr <HGDIOBJ>ptr <HGDIOBJ>ptr -> i32");
17572
+ var ImageListDestroy = /* @__PURE__ */ b3("ImageList_Destroy", "<HIMAGELIST>ptr -> i32");
17573
+
17574
+ // _build/lib/react-qw/components/ListView.js
17452
17575
  function writeU32(ptr, offset, v) {
17453
17576
  ffi3.writeByte(ptr + offset, v & 255);
17454
17577
  ffi3.writeByte(ptr + offset + 1, v >> 8 & 255);
@@ -17538,7 +17661,7 @@ function resolveCellStyle(columns, data, row, colIndex) {
17538
17661
  }
17539
17662
  function makeLVItem(i, sub, text, image) {
17540
17663
  const textBuf = WCHAR.encode(text);
17541
- const b6 = LVITEMW.encode({
17664
+ const b7 = LVITEMW.encode({
17542
17665
  mask: 1 | (image !== void 0 ? 2 : 0),
17543
17666
  iItem: i,
17544
17667
  iSubItem: sub,
@@ -17555,32 +17678,32 @@ function makeLVItem(i, sub, text, image) {
17555
17678
  piColFmt: 0,
17556
17679
  iGroup: 0
17557
17680
  });
17558
- b6.__textBuf = textBuf;
17559
- return b6;
17681
+ b7.__textBuf = textBuf;
17682
+ return b7;
17560
17683
  }
17561
17684
  var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, data, style, icons, iconSize, getIcon }, ref) {
17562
17685
  const lvRef = (0, import_react9.useRef)(null);
17563
- const iconListRef = (0, import_react9.useRef)(0);
17686
+ const iconListRef = (0, import_react9.useRef)(NULL);
17564
17687
  (0, import_react9.useEffect)(() => {
17565
17688
  const h = lvRef.current;
17566
17689
  if (!h)
17567
17690
  return;
17568
17691
  const il = iconListRef.current;
17569
- iconListRef.current = 0;
17692
+ iconListRef.current = NULL;
17570
17693
  if (il) {
17571
17694
  gui9.SendMessage(h, 4099, 1, 0);
17572
- gui9.ImageListDestroy(il);
17695
+ ImageListDestroy(il);
17573
17696
  }
17574
17697
  if (!icons || icons.length === 0)
17575
17698
  return;
17576
17699
  const size = iconSize ?? 32;
17577
- const img = gui9.ImageListCreate(size, size, 32, icons.length, 1);
17700
+ const img = ImageListCreate(size, size, 32, icons.length, 1);
17578
17701
  if (!img)
17579
17702
  return;
17580
17703
  for (const p of icons) {
17581
- const hbm = gui9.CreateBitmapFromPixels(size, size, p);
17704
+ const hbm = createBitmapFromPixels(size, size, p);
17582
17705
  if (hbm) {
17583
- gui9.ImageListAdd(img, hbm);
17706
+ ImageListAdd(img, hbm, NULL);
17584
17707
  DeleteObject(hbm);
17585
17708
  }
17586
17709
  }
@@ -17761,22 +17884,19 @@ var RadioButton = (0, import_react11.forwardRef)(({ checked: controlledChecked,
17761
17884
  // _build/lib/react-qw/components/ScrollView.js
17762
17885
  var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
17763
17886
  var import_react12 = __toESM(require_react(), 1);
17764
- import * as gui12 from "gui";
17765
17887
  var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth, contentHeight }, ref) => {
17766
17888
  const svRef = (0, import_react12.useRef)(null);
17767
17889
  const contentRef = (0, import_react12.useRef)(null);
17768
17890
  const scrollXRef = (0, import_react12.useRef)(0);
17769
17891
  const scrollYRef = (0, import_react12.useRef)(0);
17770
17892
  function updateScroll(sv, content) {
17771
- const svRect = gui12.GetClientRect(sv);
17772
- if (!svRect)
17893
+ const svBuf = RECT.alloc();
17894
+ if (!GetClientRect(sv, svBuf.ptr))
17773
17895
  return;
17774
- const svW = svRect.right - svRect.left;
17775
- const svH = svRect.bottom - svRect.top;
17776
- const hdc = GetDC(NULL);
17777
- const scale = hdc ? GetDeviceCaps(hdc, 88) / 96 : 1;
17778
- if (hdc)
17779
- ReleaseDC(NULL, hdc);
17896
+ const { left, top, right, bottom } = RECT.decode(svBuf);
17897
+ const svW = right - left;
17898
+ const svH = bottom - top;
17899
+ const scale = getScaleFactor();
17780
17900
  const natW = Math.round((contentWidth ?? svW / scale) * scale);
17781
17901
  const natH = Math.round((contentHeight ?? svH / scale) * scale);
17782
17902
  scrollXRef.current = Math.max(0, Math.min(scrollXRef.current, natW - svW));
@@ -17793,14 +17913,28 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17793
17913
  );
17794
17914
  forceFlexLayout(content);
17795
17915
  if (natW > svW) {
17796
- gui12.SetScrollInfo(sv, 0, { min: 0, max: natW - 1, page: svW, pos: scrollXRef.current }, true);
17916
+ SetScrollInfo(sv, 0, {
17917
+ cbSize: SCROLLINFO.size,
17918
+ fMask: 1 | 2 | 4,
17919
+ nMin: 0,
17920
+ nMax: natW - 1,
17921
+ nPage: svW,
17922
+ nPos: scrollXRef.current
17923
+ }, 1);
17797
17924
  ShowScrollBar(sv, 0, 1);
17798
17925
  } else {
17799
17926
  scrollXRef.current = 0;
17800
17927
  ShowScrollBar(sv, 0, 0);
17801
17928
  }
17802
17929
  if (natH > svH) {
17803
- gui12.SetScrollInfo(sv, 1, { min: 0, max: natH - 1, page: svH, pos: scrollYRef.current }, true);
17930
+ SetScrollInfo(sv, 1, {
17931
+ cbSize: SCROLLINFO.size,
17932
+ fMask: 1 | 2 | 4,
17933
+ nMin: 0,
17934
+ nMax: natH - 1,
17935
+ nPage: svH,
17936
+ nPos: scrollYRef.current
17937
+ }, 1);
17804
17938
  ShowScrollBar(sv, 1, 1);
17805
17939
  } else {
17806
17940
  scrollYRef.current = 0;
@@ -17830,15 +17964,21 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17830
17964
  1 | 4
17831
17965
  /* SetWindowPosFlag.SWP_NOZORDER */
17832
17966
  );
17833
- gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
17967
+ SetScrollInfo(sv, bar, { cbSize: SCROLLINFO.size, fMask: 4, nPos: newPos }, 1);
17834
17968
  }
17835
17969
  function handleScroll(e, bar) {
17836
17970
  const sv = svRef.current;
17837
17971
  const content = contentRef.current;
17838
17972
  if (!sv || !content)
17839
17973
  return;
17840
- const info = gui12.GetScrollInfo(sv, bar);
17841
- const maxPos = info.max - info.page + 1;
17974
+ const si = SCROLLINFO.encode({
17975
+ cbSize: SCROLLINFO.size,
17976
+ fMask: 23
17977
+ /* ScrollInfoFlag.ALL */
17978
+ });
17979
+ GetScrollInfo(sv, bar, si.ptr);
17980
+ const info = SCROLLINFO.decode(si);
17981
+ const maxPos = info.nMax - info.nPage + 1;
17842
17982
  const code = e.wParam & 65535;
17843
17983
  const ref_ = bar === 1 ? scrollYRef : scrollXRef;
17844
17984
  let newPos = ref_.current;
@@ -17849,9 +17989,9 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17849
17989
  else if (code === 1)
17850
17990
  newPos += 20;
17851
17991
  else if (code === 2)
17852
- newPos -= info.page;
17992
+ newPos -= info.nPage;
17853
17993
  else if (code === 3)
17854
- newPos += info.page;
17994
+ newPos += info.nPage;
17855
17995
  else
17856
17996
  return;
17857
17997
  newPos = Math.max(0, Math.min(maxPos, newPos));
@@ -17871,8 +18011,14 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17871
18011
  if (!isHorz && contentHeight === void 0)
17872
18012
  return;
17873
18013
  const bar = isHorz ? 0 : 1;
17874
- const info = gui12.GetScrollInfo(sv, bar);
17875
- const maxPos = info.max - info.page + 1;
18014
+ const si = SCROLLINFO.encode({
18015
+ cbSize: SCROLLINFO.size,
18016
+ fMask: 23
18017
+ /* ScrollInfoFlag.ALL */
18018
+ });
18019
+ GetScrollInfo(sv, bar, si.ptr);
18020
+ const info = SCROLLINFO.decode(si);
18021
+ const maxPos = info.nMax - info.nPage + 1;
17876
18022
  const ref_ = isHorz ? scrollXRef : scrollYRef;
17877
18023
  let newPos = ref_.current + dy;
17878
18024
  newPos = Math.max(0, Math.min(maxPos, newPos));
@@ -17920,7 +18066,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17920
18066
  // _build/lib/react-qw/components/Slider.js
17921
18067
  var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
17922
18068
  var import_react13 = __toESM(require_react(), 1);
17923
- import * as gui13 from "gui";
18069
+ import * as gui12 from "gui";
17924
18070
  var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 100, vertical = false, disabled, style }, ref) => {
17925
18071
  const wrapperRef = (0, import_react13.useRef)(null);
17926
18072
  const sliderRef = (0, import_react13.useRef)(null);
@@ -17929,14 +18075,14 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
17929
18075
  if (!h)
17930
18076
  return;
17931
18077
  const lParam = min & 65535 | (max & 65535) << 16;
17932
- gui13.SendMessage(h, 1030, 0, lParam);
17933
- gui13.SendMessage(h, 1029, 1, value);
18078
+ gui12.SendMessage(h, 1030, 0, lParam);
18079
+ gui12.SendMessage(h, 1029, 1, value);
17934
18080
  }, [min, max]);
17935
18081
  (0, import_react13.useEffect)(() => {
17936
18082
  const h = sliderRef.current;
17937
18083
  if (!h)
17938
18084
  return;
17939
- gui13.SendMessage(h, 1029, 1, value);
18085
+ gui12.SendMessage(h, 1029, 1, value);
17940
18086
  }, [value]);
17941
18087
  const tbStyle = 268435456 | 65536 | 1 | (vertical ? 2 : 0);
17942
18088
  return (0, import_jsx_runtime12.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style, ref: (h) => {
@@ -17953,7 +18099,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
17953
18099
  const h = sliderRef.current;
17954
18100
  if (!h)
17955
18101
  return 0;
17956
- const pos = gui13.SendMessage(h, 1024, 0, 0);
18102
+ const pos = gui12.SendMessage(h, 1024, 0, 0);
17957
18103
  onChange?.(pos);
17958
18104
  return 0;
17959
18105
  }
@@ -17966,7 +18112,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
17966
18112
  // _build/lib/react-qw/components/Tab.js
17967
18113
  var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
17968
18114
  var import_react14 = __toESM(require_react(), 1);
17969
- import * as gui14 from "gui";
18115
+ import * as gui13 from "gui";
17970
18116
  var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex, defaultSelectedIndex = 0, onChange, style }, ref) => {
17971
18117
  const [internalIndex, setInternalIndex] = (0, import_react14.useState)(defaultSelectedIndex);
17972
18118
  const isControlled = controlledIndex !== void 0;
@@ -17976,7 +18122,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
17976
18122
  const h = tabHwnd.current;
17977
18123
  if (!h)
17978
18124
  return;
17979
- gui14.SendMessage(h, 4873, 0, 0);
18125
+ gui13.SendMessage(h, 4873, 0, 0);
17980
18126
  for (let i = 0; i < tabs.length; i++) {
17981
18127
  const titleBuf = WCHAR.encode(tabs[i].title);
17982
18128
  const tci = TCITEMW.encode({
@@ -17989,14 +18135,14 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
17989
18135
  lParam: 0
17990
18136
  });
17991
18137
  const tciPtr = tci.ptr;
17992
- gui14.SendMessage(h, 4926, i, tciPtr);
18138
+ gui13.SendMessage(h, 4926, i, tciPtr);
17993
18139
  }
17994
- gui14.SendMessage(h, 4876, sel, 0);
18140
+ gui13.SendMessage(h, 4876, sel, 0);
17995
18141
  }, [tabs]);
17996
18142
  (0, import_react14.useEffect)(() => {
17997
18143
  const h = tabHwnd.current;
17998
18144
  if (h)
17999
- gui14.SendMessage(h, 4876, sel, 0);
18145
+ gui13.SendMessage(h, 4876, sel, 0);
18000
18146
  }, [sel]);
18001
18147
  return (0, import_jsx_runtime13.jsxs)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
18002
18148
  if (e.msg === 78) {
@@ -18005,7 +18151,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
18005
18151
  return;
18006
18152
  const code = nmCode(e.lParam);
18007
18153
  if (code === -552 || code === -2) {
18008
- const newSel = gui14.SendMessage(h, 4875, 0, 0);
18154
+ const newSel = gui13.SendMessage(h, 4875, 0, 0);
18009
18155
  if (newSel !== sel) {
18010
18156
  if (!isControlled)
18011
18157
  setInternalIndex(newSel);
@@ -18018,12 +18164,12 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
18018
18164
 
18019
18165
  // _build/lib/react-qw/components/Tooltip.js
18020
18166
  var import_react15 = __toESM(require_react(), 1);
18021
- import * as gui15 from "gui";
18167
+ import * as gui14 from "gui";
18022
18168
 
18023
18169
  // _build/lib/react-qw/components/TreeView.js
18024
18170
  var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
18025
18171
  var import_react16 = __toESM(require_react(), 1);
18026
- import * as gui16 from "gui";
18172
+ import * as gui15 from "gui";
18027
18173
  function buildTvItem(textPtr, cChildren) {
18028
18174
  let mask = 1;
18029
18175
  if (cChildren > 0)
@@ -18048,20 +18194,20 @@ function insertItems(hTree, nodes, parentHandle, hItemMap, keyMap) {
18048
18194
  const itemBuf = buildTvItem(textBuf.ptr, cChildren);
18049
18195
  const item = TVITEM.decode(itemBuf);
18050
18196
  const tvins = TVINSERTSTRUCT.encode({ hParent: parentHandle, hInsertAfter: -65536, item });
18051
- const hItem = gui16.SendMessage(hTree, 4402, 0, tvins.ptr);
18197
+ const hItem = gui15.SendMessage(hTree, 4402, 0, tvins.ptr);
18052
18198
  hItemMap.set(hItem, node);
18053
18199
  if (node.key)
18054
18200
  keyMap.set(node.key, hItem);
18055
18201
  if (node.children && node.children.length > 0) {
18056
18202
  insertItems(hTree, node.children, hItem, hItemMap, keyMap);
18057
- gui16.SendMessage(hTree, 4354, 2, hItem);
18203
+ gui15.SendMessage(hTree, 4354, 2, hItem);
18058
18204
  }
18059
18205
  }
18060
18206
  }
18061
18207
  function deleteAllItems(hTree) {
18062
- const n = gui16.SendMessage(hTree, 4357, 0, 0);
18208
+ const n = gui15.SendMessage(hTree, 4357, 0, 0);
18063
18209
  if (n > 0)
18064
- gui16.SendMessage(
18210
+ gui15.SendMessage(
18065
18211
  hTree,
18066
18212
  4353,
18067
18213
  1,
@@ -18093,7 +18239,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18093
18239
  const h = tvRef.current;
18094
18240
  if (!h)
18095
18241
  return;
18096
- gui16.SendMessage(
18242
+ gui15.SendMessage(
18097
18243
  h,
18098
18244
  4396,
18099
18245
  0,
@@ -18109,7 +18255,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18109
18255
  return;
18110
18256
  const hItem = keyMapRef.current.get(selKey);
18111
18257
  if (hItem !== void 0)
18112
- gui16.SendMessage(h, 4363, 9, hItem);
18258
+ gui15.SendMessage(h, 4363, 9, hItem);
18113
18259
  }, [selKey]);
18114
18260
  return (0, import_jsx_runtime14.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
18115
18261
  if (e.msg === 78) {
@@ -18118,7 +18264,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18118
18264
  const h = tvRef.current;
18119
18265
  if (!h)
18120
18266
  return;
18121
- const hCaret = gui16.SendMessage(h, 4362, 9, 0);
18267
+ const hCaret = gui15.SendMessage(h, 4362, 9, 0);
18122
18268
  const node = hItemMapRef.current.get(hCaret) ?? null;
18123
18269
  const key = node?.key ?? null;
18124
18270
  if (!isControlled)
@@ -18136,24 +18282,24 @@ var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
18136
18282
  var import_react17 = __toESM(require_react(), 1);
18137
18283
 
18138
18284
  // _build/lib/windows/comdlg32.js
18139
- var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18140
- var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18285
+ var b4 = (name, sig) => bind("comdlg32.dll", name, sig);
18286
+ var GetOpenFileName = /* @__PURE__ */ b4("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18141
18287
 
18142
18288
  // _build/lib/windows/shell32.js
18143
- var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18144
- var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18145
- var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18289
+ var b5 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18290
+ var SHBrowseForFolder = /* @__PURE__ */ b5("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18291
+ var SHGetPathFromIDList = /* @__PURE__ */ b5("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18146
18292
  var Shell_NotifyIconGetRect = (() => {
18147
18293
  try {
18148
- return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18294
+ return b5("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18149
18295
  } catch {
18150
18296
  return null;
18151
18297
  }
18152
18298
  })();
18153
18299
 
18154
18300
  // _build/lib/windows/ole32.js
18155
- var b5 = (name, sig) => bind("ole32.dll", name, sig);
18156
- var CoTaskMemFree = /* @__PURE__ */ b5("CoTaskMemFree", "<>ptr -> void");
18301
+ var b6 = (name, sig) => bind("ole32.dll", name, sig);
18302
+ var CoTaskMemFree = /* @__PURE__ */ b6("CoTaskMemFree", "<>ptr -> void");
18157
18303
 
18158
18304
  // _build/lib/react-qw/components/PathPicker.js
18159
18305
  function openFileDialog(owner, filter, title, multiple) {
@@ -18248,7 +18394,7 @@ var rootMap = /* @__PURE__ */ new Map();
18248
18394
  function ensureDefaultClass() {
18249
18395
  if (defaultClassRegistered)
18250
18396
  return DEFAULT_CLASS;
18251
- gui17.RegisterClass(DEFAULT_CLASS, (hwnd2, msg, wParam, lParam) => {
18397
+ gui16.RegisterClass(DEFAULT_CLASS, (hwnd2, msg, wParam, lParam) => {
18252
18398
  const entry = rootMap.get(hwnd2);
18253
18399
  if (msg === 2 && entry) {
18254
18400
  rootMap.delete(hwnd2);
@@ -18274,15 +18420,27 @@ function createRoot(container) {
18274
18420
  const ws = (cfg.ws ?? 0) | 13565952;
18275
18421
  const w = (cfg.width ?? 800) * scaleFactor;
18276
18422
  const h = (cfg.height ?? 600) * scaleFactor;
18277
- const [sw, sh] = [GetSystemMetrics(0), GetSystemMetrics(1)];
18423
+ const [sw, sh] = [GetSystemMetrics(
18424
+ 0
18425
+ /* SysMetrics.CXSCREEN */
18426
+ ), GetSystemMetrics(
18427
+ 1
18428
+ /* SysMetrics.CYSCREEN */
18429
+ )];
18278
18430
  const x = cfg.x === void 0 ? (sw - w) / 2 | 0 : cfg.x === -2147483648 ? -2147483648 : cfg.x * scaleFactor;
18279
18431
  const y = cfg.y === void 0 ? (sh - h) / 2 | 0 : cfg.y === -2147483648 ? -2147483648 : cfg.y * scaleFactor;
18280
- const hwin = gui17.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
18432
+ const hwin = gui16.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
18281
18433
  if (!hwin)
18282
18434
  throw new Error("CreateWindow failed");
18283
18435
  hwnd2 = hwin;
18284
- if (!cfg.noShowWindow)
18285
- gui17.ShowWindow(hwnd2);
18436
+ if (!cfg.noShowWindow) {
18437
+ ShowWindow(
18438
+ hwnd2,
18439
+ 1
18440
+ /* ShowWindowCmd.SHOWNORMAL */
18441
+ );
18442
+ UpdateWindow(hwnd2);
18443
+ }
18286
18444
  } else {
18287
18445
  hwnd2 = container;
18288
18446
  }
@@ -18312,21 +18470,25 @@ function render(element, containerOrConfig, _callback) {
18312
18470
  // _build/test/test_react_render.js
18313
18471
  var WS_CHILD = 1073741824;
18314
18472
  var WS_VISIBLE = 268435456;
18315
- gui18.RegisterClass("ReactTest", (hwnd2, msg, wParam, lParam) => {
18473
+ gui17.RegisterClass("ReactTest", (hwnd2, msg, wParam, lParam) => {
18316
18474
  if (!hwnd2)
18317
- return gui18.DefWindowProc(hwnd2, msg, wParam, lParam);
18475
+ return gui17.DefWindowProc(hwnd2, msg, wParam, lParam);
18318
18476
  if (msg === 2) {
18319
- gui18.PostQuitMessage(0);
18477
+ PostQuitMessage(0);
18320
18478
  return 0;
18321
18479
  }
18322
- return gui18.DefWindowProc(hwnd2, msg, wParam, lParam);
18480
+ return gui17.DefWindowProc(hwnd2, msg, wParam, lParam);
18323
18481
  });
18324
18482
  function Greeting() {
18325
18483
  return (0, import_jsx_runtime16.jsx)("w", { type: "BUTTON", text: "Hello", ws: WS_CHILD | WS_VISIBLE, style: { width: 200, height: 30 } });
18326
18484
  }
18327
- var hwnd = gui18.CreateWindow("ReactTest", "React Test", 13565952, 200, 200, 500, 400, null, null);
18485
+ var hwnd = gui17.CreateWindow("ReactTest", "React Test", 13565952, 200, 200, 500, 400, null, null);
18328
18486
  if (hwnd) {
18329
- gui18.ShowWindow(hwnd);
18487
+ ShowWindow(
18488
+ hwnd,
18489
+ 1
18490
+ /* ShowWindowCmd.SHOWNORMAL */
18491
+ );
18330
18492
  render((0, import_jsx_runtime16.jsx)(Greeting, {}), hwnd);
18331
18493
  }
18332
18494
  /*! Bundled license information: