quickwin 2.3.1 → 3.0.1

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 (172) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/constants.ts +15 -0
  4. package/enum_map.d.ts +3 -0
  5. package/examples/PdfCanvas.js +1 -1
  6. package/examples/PdfCanvas.tsx +2 -2
  7. package/examples/execd/main.js +334 -188
  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/abort.d.ts +21 -0
  24. package/lib/assert.d.ts +2 -0
  25. package/lib/bitmap.d.ts +7 -0
  26. package/lib/bitmap.js +40 -0
  27. package/lib/cache-utils.d.ts +6 -0
  28. package/lib/certs.d.ts +1 -0
  29. package/lib/certs.js +31 -3
  30. package/lib/dpi.d.ts +9 -0
  31. package/lib/dpi.js +30 -0
  32. package/lib/dumpRects.d.ts +2 -0
  33. package/lib/dumpRects.js +14 -7
  34. package/lib/exec-log.d.ts +23 -0
  35. package/lib/fetch.d.ts +4 -0
  36. package/lib/ffi/bind.d.ts +70 -0
  37. package/lib/ffi/bind.js +5 -4
  38. package/lib/ffi/ctype.d.ts +117 -0
  39. package/lib/ffi/index.d.ts +2 -0
  40. package/lib/ffi/struct.d.ts +174 -0
  41. package/lib/http-common.d.ts +143 -0
  42. package/lib/http-server.d.ts +59 -0
  43. package/lib/polyfill.d.ts +22 -0
  44. package/lib/react-qw/components/Button.d.ts +9 -0
  45. package/lib/react-qw/components/CheckBox.d.ts +11 -0
  46. package/lib/react-qw/components/ComboBox.d.ts +11 -0
  47. package/lib/react-qw/components/DateTimePicker.d.ts +15 -0
  48. package/lib/react-qw/components/DateTimePicker.js +6 -7
  49. package/lib/react-qw/components/Input.d.ts +15 -0
  50. package/lib/react-qw/components/Input.js +5 -1
  51. package/lib/react-qw/components/Link.d.ts +12 -0
  52. package/lib/react-qw/components/ListBox.d.ts +13 -0
  53. package/lib/react-qw/components/ListView.d.ts +37 -0
  54. package/lib/react-qw/components/ListView.js +8 -6
  55. package/lib/react-qw/components/PathPicker.d.ts +23 -0
  56. package/lib/react-qw/components/ProgressBar.d.ts +9 -0
  57. package/lib/react-qw/components/RadioButton.d.ts +11 -0
  58. package/lib/react-qw/components/ScrollView.d.ts +9 -0
  59. package/lib/react-qw/components/ScrollView.js +28 -22
  60. package/lib/react-qw/components/Slider.d.ts +12 -0
  61. package/lib/react-qw/components/Tab.d.ts +14 -0
  62. package/lib/react-qw/components/Tooltip.d.ts +7 -0
  63. package/lib/react-qw/components/TreeView.d.ts +18 -0
  64. package/lib/react-qw/components/index.d.ts +16 -0
  65. package/lib/react-qw/index.d.ts +24 -0
  66. package/lib/react-qw/index.js +7 -5
  67. package/lib/react-qw/layout.d.ts +29 -0
  68. package/lib/react-qw/nmhdr.d.ts +1 -0
  69. package/lib/react-qw/props.d.ts +2 -0
  70. package/lib/react-qw/props.js +3 -3
  71. package/lib/react-qw/reconciler.d.ts +21 -0
  72. package/lib/react-qw/reconciler.js +12 -17
  73. package/lib/stream.d.ts +20 -0
  74. package/lib/text-codec.d.ts +39 -0
  75. package/lib/text-measure.d.ts +14 -0
  76. package/lib/text-measure.js +9 -6
  77. package/lib/url.d.ts +54 -0
  78. package/lib/websocket.d.ts +73 -0
  79. package/lib/windows/{advapi32.ts → advapi32.d.ts} +6 -21
  80. package/lib/windows/comctl32.d.ts +14 -0
  81. package/lib/windows/comctl32.js +3 -2
  82. package/lib/windows/comdlg32.d.ts +4 -0
  83. package/lib/windows/{gdi32.ts → gdi32.d.ts} +184 -97
  84. package/lib/windows/gdi32.js +28 -6
  85. package/lib/windows/{kernel32.ts → kernel32.d.ts} +145 -113
  86. package/lib/windows/kernel32.js +9 -0
  87. package/lib/windows/{msimg32.ts → msimg32.d.ts} +11 -14
  88. package/lib/windows/ntdll.d.ts +5 -0
  89. package/lib/windows/ole32.d.ts +3 -0
  90. package/lib/windows/{psapi.ts → psapi.d.ts} +9 -18
  91. package/lib/windows/shell32.d.ts +51 -0
  92. package/lib/windows/shell32.js +11 -2
  93. package/lib/windows/structs.d.ts +3141 -0
  94. package/lib/windows/structs.js +51 -0
  95. package/lib/windows/user32.d.ts +623 -0
  96. package/lib/windows/user32.js +6 -5
  97. package/lib/windows/version.d.ts +27 -0
  98. package/lib/windows/{winspool.ts → winspool.d.ts} +18 -32
  99. package/main.js +13 -5
  100. package/package.json +16 -7
  101. package/quickwin.d.ts +13 -115
  102. package/qwin-nowasm-x86.exe +0 -0
  103. package/qwin-nowasm.exe +0 -0
  104. package/qwin-x86.exe +0 -0
  105. package/qwin.exe +0 -0
  106. package/test/bench_ffi_callraw.js +3 -4
  107. package/test/bench_ffi_callraw.ts +3 -4
  108. package/test/debug/mupdf_debug.js +4 -22
  109. package/test/debug/wasm_export_debug.js +2 -12
  110. package/test/debug/wasm_names.js +3 -13
  111. package/test/example.pdf +0 -0
  112. package/test/mupdf-cdn.js +40 -0
  113. package/test/mupdf-cdn.ts +43 -0
  114. package/test/test_ffi.js +8 -9
  115. package/test/test_ffi.ts +8 -9
  116. package/test/test_ffi_abi.js +6 -6
  117. package/test/test_ffi_abi.ts +8 -8
  118. package/test/test_ffi_windows.js +82 -11
  119. package/test/test_ffi_windows.ts +85 -11
  120. package/test/test_gdi_draw.js +3 -3
  121. package/test/test_gdi_draw.ts +4 -4
  122. package/test/test_mupdf_render.js +4 -22
  123. package/test/test_mupdf_render.ts +4 -23
  124. package/test/test_mupdf_twice.js +4 -19
  125. package/test/test_mupdf_twice.ts +4 -20
  126. package/test/test_mupdf_wasm.js +10 -4
  127. package/test/test_mupdf_wasm.ts +6 -4
  128. package/test/test_react_complex.js +316 -140
  129. package/test/test_react_counter.js +295 -133
  130. package/test/test_react_flex.js +297 -138
  131. package/test/test_react_hidden.js +296 -134
  132. package/test/test_react_listview_link.js +288 -131
  133. package/test/test_react_notify.js +290 -133
  134. package/test/test_react_render.js +295 -133
  135. package/lib/abort.ts +0 -69
  136. package/lib/assert.ts +0 -7
  137. package/lib/cache-utils.ts +0 -40
  138. package/lib/certs.ts +0 -229
  139. package/lib/dumpRects.ts +0 -26
  140. package/lib/exec-log.ts +0 -30
  141. package/lib/fetch.ts +0 -589
  142. package/lib/ffi/bind.ts +0 -539
  143. package/lib/ffi/ctype.ts +0 -371
  144. package/lib/ffi/index.ts +0 -6
  145. package/lib/ffi/struct.ts +0 -780
  146. package/lib/http-common.ts +0 -441
  147. package/lib/http-server.ts +0 -604
  148. package/lib/polyfill.ts +0 -171
  149. package/lib/react-qw/components/index.ts +0 -17
  150. package/lib/react-qw/index.ts +0 -96
  151. package/lib/react-qw/layout.ts +0 -111
  152. package/lib/react-qw/nmhdr.ts +0 -7
  153. package/lib/react-qw/props.ts +0 -41
  154. package/lib/react-qw/reconciler.ts +0 -383
  155. package/lib/stream.ts +0 -22
  156. package/lib/text-codec.ts +0 -171
  157. package/lib/text-measure.ts +0 -41
  158. package/lib/url.ts +0 -201
  159. package/lib/websocket.ts +0 -600
  160. package/lib/windows/comctl32.ts +0 -19
  161. package/lib/windows/comdlg32.ts +0 -10
  162. package/lib/windows/ntdll.ts +0 -11
  163. package/lib/windows/ole32.ts +0 -9
  164. package/lib/windows/shell32.ts +0 -39
  165. package/lib/windows/structs.ts +0 -752
  166. package/lib/windows/user32.ts +0 -619
  167. package/lib/windows/version.ts +0 -35
  168. package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
  169. package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
  170. package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
  171. package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
  172. 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
  }
@@ -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 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,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
- gui.ShowWindow(
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
- gui.ShowWindow(
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 = gui2.GetWindowRect(hwnd);
16761
- const cr = gui2.GetClientRect(hwnd);
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);
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 = 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
- })();
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 rect = gui3.GetClientRect(inst.hwnd);
16824
- if (!rect) {
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
- gui3.ShowWindow(
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
- gui3.ShowWindow(
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
- gui3.ShowWindow(
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
- gui3.ShowWindow(
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 = 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);
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 newText = gui7.GetWindowText(h);
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 b6 = LVITEMW.encode({
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
- b6.__textBuf = textBuf;
17559
- return b6;
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)(0);
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 = 0;
17691
+ iconListRef.current = NULL;
17570
17692
  if (il) {
17571
17693
  gui9.SendMessage(h, 4099, 1, 0);
17572
- gui9.ImageListDestroy(il);
17694
+ ImageListDestroy(il);
17573
17695
  }
17574
17696
  if (!icons || icons.length === 0)
17575
17697
  return;
17576
17698
  const size = iconSize ?? 32;
17577
- const img = gui9.ImageListCreate(size, size, 32, icons.length, 1);
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 = gui9.CreateBitmapFromPixels(size, size, p);
17703
+ const hbm = createBitmapFromPixels(size, size, p);
17582
17704
  if (hbm) {
17583
- gui9.ImageListAdd(img, hbm);
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 svRect = gui12.GetClientRect(sv);
17772
- if (!svRect)
17892
+ const svBuf = RECT.alloc();
17893
+ if (!GetClientRect(sv, svBuf.ptr))
17773
17894
  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);
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
- gui12.SetScrollInfo(sv, 0, { min: 0, max: natW - 1, page: svW, pos: scrollXRef.current }, true);
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
- gui12.SetScrollInfo(sv, 1, { min: 0, max: natH - 1, page: svH, pos: scrollYRef.current }, true);
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
- gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
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 info = gui12.GetScrollInfo(sv, bar);
17841
- const maxPos = info.max - info.page + 1;
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.page;
17991
+ newPos -= info.nPage;
17853
17992
  else if (code === 3)
17854
- newPos += info.page;
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 info = gui12.GetScrollInfo(sv, bar);
17875
- const maxPos = info.max - info.page + 1;
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 gui13 from "gui";
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
- gui13.SendMessage(h, 1030, 0, lParam);
17933
- gui13.SendMessage(h, 1029, 1, value);
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
- gui13.SendMessage(h, 1029, 1, value);
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 = gui13.SendMessage(h, 1024, 0, 0);
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 gui14 from "gui";
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
- gui14.SendMessage(h, 4873, 0, 0);
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
- gui14.SendMessage(h, 4926, i, tciPtr);
18137
+ gui13.SendMessage(h, 4926, i, tciPtr);
17993
18138
  }
17994
- gui14.SendMessage(h, 4876, sel, 0);
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
- gui14.SendMessage(h, 4876, sel, 0);
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 = gui14.SendMessage(h, 4875, 0, 0);
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 gui15 from "gui";
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 gui16 from "gui";
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 = gui16.SendMessage(hTree, 4402, 0, tvins.ptr);
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
- gui16.SendMessage(hTree, 4354, 2, hItem);
18202
+ gui15.SendMessage(hTree, 4354, 2, hItem);
18058
18203
  }
18059
18204
  }
18060
18205
  }
18061
18206
  function deleteAllItems(hTree) {
18062
- const n = gui16.SendMessage(hTree, 4357, 0, 0);
18207
+ const n = gui15.SendMessage(hTree, 4357, 0, 0);
18063
18208
  if (n > 0)
18064
- gui16.SendMessage(
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
- gui16.SendMessage(
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
- gui16.SendMessage(h, 4363, 9, hItem);
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 = gui16.SendMessage(h, 4362, 9, 0);
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 b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18140
- var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
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 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");
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 b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
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 b5 = (name, sig) => bind("ole32.dll", name, sig);
18156
- var CoTaskMemFree = /* @__PURE__ */ b5("CoTaskMemFree", "<>ptr -> void");
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
- gui17.RegisterClass(DEFAULT_CLASS, (hwnd, msg, wParam, lParam) => {
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(0), GetSystemMetrics(1)];
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 = gui17.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
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
- gui17.ShowWindow(hwnd);
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
  }