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
  }
@@ -15357,10 +15357,10 @@ var require_constants = __commonJS({
15357
15357
  var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
15358
15358
  var import_react18 = __toESM(require_react(), 1);
15359
15359
  import "../lib/polyfill.js";
15360
- import * as gui18 from "gui";
15360
+ import * as gui17 from "gui";
15361
15361
 
15362
15362
  // _build/lib/react-qw/index.js
15363
- import * as gui17 from "gui";
15363
+ import * as gui16 from "gui";
15364
15364
 
15365
15365
  // _build/lib/windows/user32.js
15366
15366
  import * as os3 from "os";
@@ -15369,7 +15369,6 @@ import * as os3 from "os";
15369
15369
  import * as ffi from "ffi";
15370
15370
  import * as os2 from "os";
15371
15371
  import * as std from "std";
15372
- import * as win from "win";
15373
15372
 
15374
15373
  // _build/lib/text-codec.js
15375
15374
  var _labelMap = {
@@ -15391,19 +15390,19 @@ function _normalizeLabel(label) {
15391
15390
  function _decodeUTF8(buf, fatal) {
15392
15391
  let out = "";
15393
15392
  for (let i = 0; i < buf.length; ) {
15394
- const b6 = buf[i++];
15395
- if (b6 < 128) {
15396
- out += String.fromCharCode(b6);
15393
+ const b7 = buf[i++];
15394
+ if (b7 < 128) {
15395
+ out += String.fromCharCode(b7);
15397
15396
  continue;
15398
15397
  }
15399
- if (b6 < 192) {
15398
+ if (b7 < 192) {
15400
15399
  out += fatal ? (() => {
15401
15400
  throw new TypeError("unexpected continuation byte");
15402
15401
  })() : "\uFFFD";
15403
15402
  continue;
15404
15403
  }
15405
15404
  let c, min;
15406
- if (b6 < 224) {
15405
+ if (b7 < 224) {
15407
15406
  if (i >= buf.length) {
15408
15407
  out += fatal ? (() => {
15409
15408
  throw new TypeError("incomplete utf-8");
@@ -15415,9 +15414,9 @@ function _decodeUTF8(buf, fatal) {
15415
15414
  out += "\uFFFD";
15416
15415
  continue;
15417
15416
  }
15418
- c = (b6 & 31) << 6 | b22 & 63;
15417
+ c = (b7 & 31) << 6 | b22 & 63;
15419
15418
  min = 128;
15420
- } else if (b6 < 240) {
15419
+ } else if (b7 < 240) {
15421
15420
  if (i + 1 >= buf.length) {
15422
15421
  out += fatal ? (() => {
15423
15422
  throw new TypeError("incomplete utf-8");
@@ -15430,9 +15429,9 @@ function _decodeUTF8(buf, fatal) {
15430
15429
  out += "\uFFFD";
15431
15430
  continue;
15432
15431
  }
15433
- c = (b6 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
15432
+ c = (b7 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
15434
15433
  min = 2048;
15435
- } else if (b6 < 248) {
15434
+ } else if (b7 < 248) {
15436
15435
  if (i + 2 >= buf.length) {
15437
15436
  out += fatal ? (() => {
15438
15437
  throw new TypeError("incomplete utf-8");
@@ -15446,7 +15445,7 @@ function _decodeUTF8(buf, fatal) {
15446
15445
  out += "\uFFFD";
15447
15446
  continue;
15448
15447
  }
15449
- c = (b6 & 7) << 18 | (b22 & 63) << 12 | (b32 & 63) << 6 | b42 & 63;
15448
+ c = (b7 & 7) << 18 | (b22 & 63) << 12 | (b32 & 63) << 6 | b42 & 63;
15450
15449
  min = 65536;
15451
15450
  } else {
15452
15451
  out += fatal ? (() => {
@@ -15750,7 +15749,7 @@ function loadDll(dll) {
15750
15749
  const cached = _dllCache.get(dll);
15751
15750
  if (cached !== void 0)
15752
15751
  return cached;
15753
- const loaded = win.LoadLibrary(dll);
15752
+ const loaded = ffi.LoadLibrary(dll);
15754
15753
  if (!loaded)
15755
15754
  throw new Error(`ffi-bind: LoadLibrary("${dll}") failed`);
15756
15755
  _dllCache.set(dll, loaded);
@@ -15960,7 +15959,7 @@ var BYTE = {
15960
15959
  };
15961
15960
  var builtinCodecs = { WCHAR, BYTE };
15962
15961
  function bind(dll, name, sig, encoders, decoders) {
15963
- const proc = win.GetProcAddress(loadDll(dll), name);
15962
+ const proc = ffi.GetProcAddress(loadDll(dll), name);
15964
15963
  if (!proc)
15965
15964
  throw new Error(`ffi-bind: proc "${name}" not found in ${dll}`);
15966
15965
  const effDec = decoders ?? encoders;
@@ -16000,13 +15999,13 @@ function lower(v) {
16000
15999
  type: { tag: "array", elementType: el.type, elementSize: el.size }
16001
16000
  };
16002
16001
  }
16003
- const b6 = /^([A-Za-z_]\w*):(\d+)$/.exec(v);
16004
- if (b6) {
16005
- const rawUnit = b6[1];
16002
+ const b7 = /^([A-Za-z_]\w*):(\d+)$/.exec(v);
16003
+ if (b7) {
16004
+ const rawUnit = b7[1];
16006
16005
  const unit = normToken(rawUnit);
16007
16006
  if (!isCNumberToken(unit) || unit === "f32" || unit === "f64")
16008
16007
  throw new Error(`ffi-struct: bitfield unit must be an integer type, got "${rawUnit}"`);
16009
- const width = Number(b6[2]);
16008
+ const width = Number(b7[2]);
16010
16009
  const s2 = SizeAlign[unit];
16011
16010
  const cap = s2 * 8;
16012
16011
  if (!Number.isInteger(width) || width < 1)
@@ -16322,10 +16321,10 @@ function buildDecl(kind, member, pack) {
16322
16321
  decl[k] = v;
16323
16322
  return decl;
16324
16323
  }
16325
- function struct(a, b6, c) {
16324
+ function struct(a, b7, c) {
16326
16325
  const isNamed = typeof a === "string";
16327
- const raw = isNamed ? b6 : a;
16328
- const opts = isNamed ? c : b6;
16326
+ const raw = isNamed ? b7 : a;
16327
+ const opts = isNamed ? c : b7;
16329
16328
  return createStruct(buildDecl("struct", raw, opts?.pack));
16330
16329
  }
16331
16330
 
@@ -16350,6 +16349,17 @@ var SIZE_DECL = {
16350
16349
  cy: "i32"
16351
16350
  };
16352
16351
  var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
16352
+ var SCROLLINFO_DECL = {
16353
+ "#": "struct",
16354
+ cbSize: "u32",
16355
+ fMask: "u32",
16356
+ nMin: "i32",
16357
+ nMax: "i32",
16358
+ nPage: "u32",
16359
+ nPos: "i32",
16360
+ nTrackPos: "i32"
16361
+ };
16362
+ var SCROLLINFO = /* @__PURE__ */ struct("SCROLLINFO", SCROLLINFO_DECL);
16353
16363
  var LOGFONTW_DECL = {
16354
16364
  "#": "struct",
16355
16365
  lfHeight: "i32",
@@ -16368,6 +16378,41 @@ var LOGFONTW_DECL = {
16368
16378
  lfFaceName: "u16[32]@utf-16le"
16369
16379
  };
16370
16380
  var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
16381
+ var NONCLIENTMETRICSW_DECL = {
16382
+ "#": "struct",
16383
+ cbSize: "u32",
16384
+ iBorderWidth: "i32",
16385
+ iScrollWidth: "i32",
16386
+ iScrollHeight: "i32",
16387
+ iCaptionWidth: "i32",
16388
+ iCaptionHeight: "i32",
16389
+ lfCaptionFont: LOGFONTW_DECL,
16390
+ iSmCaptionWidth: "i32",
16391
+ iSmCaptionHeight: "i32",
16392
+ lfSmCaptionFont: LOGFONTW_DECL,
16393
+ iMenuWidth: "i32",
16394
+ iMenuHeight: "i32",
16395
+ lfMenuFont: LOGFONTW_DECL,
16396
+ lfStatusFont: LOGFONTW_DECL,
16397
+ lfMessageFont: LOGFONTW_DECL,
16398
+ iPaddedBorderWidth: "i32"
16399
+ };
16400
+ var NONCLIENTMETRICSW = /* @__PURE__ */ struct("NONCLIENTMETRICSW", NONCLIENTMETRICSW_DECL);
16401
+ var BITMAPINFOHEADER_DECL = {
16402
+ "#": "struct",
16403
+ biSize: "u32",
16404
+ biWidth: "i32",
16405
+ biHeight: "i32",
16406
+ biPlanes: "u16",
16407
+ biBitCount: "u16",
16408
+ biCompression: "u32",
16409
+ biSizeImage: "u32",
16410
+ biXPelsPerMeter: "i32",
16411
+ biYPelsPerMeter: "i32",
16412
+ biClrUsed: "u32",
16413
+ biClrImportant: "u32"
16414
+ };
16415
+ var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", BITMAPINFOHEADER_DECL);
16371
16416
  var OPENFILENAMEW_DECL = {
16372
16417
  "#": "struct",
16373
16418
  lStructSize: "u32",
@@ -16574,24 +16619,35 @@ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFY
16574
16619
  var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
16575
16620
  var _bProbe = b("GetDesktopWindow", " -> <HWND>ptr");
16576
16621
  var LONG_PTR_SYM = os3.arch === "x64" ? "PtrW" : "W";
16622
+ var ShowWindow = /* @__PURE__ */ b("ShowWindow", "<HWND>ptr i32@ShowWindowCmd -> i32");
16577
16623
  var SetWindowPos = /* @__PURE__ */ b("SetWindowPos", "<HWND>ptr <>ptr@SetWindowPosHwnd i32 i32 i32 i32 u32 -> i32");
16624
+ var GetWindowRect = /* @__PURE__ */ b("GetWindowRect", "<HWND>ptr <RECT>ptr -> i32");
16625
+ var GetClientRect = /* @__PURE__ */ b("GetClientRect", "<HWND>ptr <RECT>ptr -> i32");
16626
+ var GetWindowText = /* @__PURE__ */ b("GetWindowTextW", "<HWND>ptr <BYTE>ptr i32 -> i32");
16578
16627
  var SetWindowText = /* @__PURE__ */ b("SetWindowTextW", "<HWND>ptr <WCHAR>ptr -> i32");
16628
+ var GetWindowTextLength = /* @__PURE__ */ b("GetWindowTextLengthW", "<HWND>ptr -> i32");
16579
16629
  var GetWindowLongPtr = /* @__PURE__ */ b("GetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp -> <>ptr");
16580
16630
  var SetWindowLongPtr = /* @__PURE__ */ b("SetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp <>ptr -> <>ptr");
16581
16631
  var EnableWindow = /* @__PURE__ */ b("EnableWindow", "<HWND>ptr i32 -> i32");
16582
16632
  var SetParent = /* @__PURE__ */ b("SetParent", "<HWND>ptr <HWND>ptr -> <HWND>ptr");
16633
+ var GetWindow = /* @__PURE__ */ b("GetWindow", "<HWND>ptr u32@GetWindowCmd -> <HWND>ptr");
16634
+ var PostQuitMessage = /* @__PURE__ */ b("PostQuitMessage", "i32 -> void");
16583
16635
  var DefWindowProc = /* @__PURE__ */ b("DefWindowProcW", "<HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
16584
16636
  var CallWindowProc = /* @__PURE__ */ b("CallWindowProcW", "<>ptr <HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
16585
16637
  var GetDC = /* @__PURE__ */ b("GetDC", "<HWND>ptr -> <HDC>ptr");
16586
16638
  var ReleaseDC = /* @__PURE__ */ b("ReleaseDC", "<HWND>ptr <HDC>ptr! -> i32");
16587
16639
  var DrawText = /* @__PURE__ */ b("DrawTextW", "<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32");
16588
16640
  var InvalidateRect = /* @__PURE__ */ b("InvalidateRect", "<HWND>ptr <RECT>ptr i32 -> i32", { RECT });
16641
+ var UpdateWindow = /* @__PURE__ */ b("UpdateWindow", "<HWND>ptr -> i32");
16589
16642
  var SetCursor = /* @__PURE__ */ b("SetCursor", "<HCURSOR>ptr -> <HCURSOR>ptr");
16590
16643
  var LoadCursor = /* @__PURE__ */ b("LoadCursorW", "<HMODULE>ptr <>ptr -> <HCURSOR>ptr");
16591
16644
  var GetCursorPos = /* @__PURE__ */ b("GetCursorPos", "<POINT>ptr -> i32");
16592
16645
  var ScreenToClient = /* @__PURE__ */ b("ScreenToClient", "<HWND>ptr <POINT>ptr -> i32");
16646
+ var SetScrollInfo = /* @__PURE__ */ b("SetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr i32 -> i32", { SCROLLINFO });
16647
+ var GetScrollInfo = /* @__PURE__ */ b("GetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr -> i32");
16593
16648
  var ShowScrollBar = /* @__PURE__ */ b("ShowScrollBar", "<HWND>ptr u32 i32 -> i32");
16594
16649
  var GetSystemMetrics = /* @__PURE__ */ b("GetSystemMetrics", "i32 -> i32");
16650
+ var SystemParametersInfo = /* @__PURE__ */ b("SystemParametersInfoW", "u32 u32 <BYTE>ptr u32 -> i32");
16595
16651
 
16596
16652
  // _build/lib/react-qw/reconciler.js
16597
16653
  var import_react_reconciler = __toESM(require_react_reconciler(), 1);
@@ -16606,8 +16662,33 @@ var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
16606
16662
  var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
16607
16663
  var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
16608
16664
  var SelectObject = /* @__PURE__ */ b2("SelectObject", "<HDC>ptr! <HGDIOBJ>ptr -> <HGDIOBJ>ptr");
16665
+ var CreateDIBSection = /* @__PURE__ */ b2("CreateDIBSection", "<HDC>ptr <>ptr u32@ColorUse <>ptr <>ptr u32 -> <HGDIOBJ>ptr");
16666
+ var SetDIBits = /* @__PURE__ */ b2("SetDIBits", "<HDC>ptr <HGDIOBJ>ptr! u32 u32 <BYTE>ptr <>ptr u32@ColorUse -> i32");
16609
16667
  var GetObject = /* @__PURE__ */ b2("GetObjectW", "<HGDIOBJ>ptr i32 <BYTE>ptr -> i32");
16610
16668
 
16669
+ // _build/lib/dpi.js
16670
+ function getScaleFactor() {
16671
+ const hdc = GetDC(NULL);
16672
+ const dpi = hdc ? GetDeviceCaps(
16673
+ hdc,
16674
+ 88
16675
+ /* DeviceCap.LOGPIXELSX */
16676
+ ) : 96;
16677
+ if (hdc)
16678
+ ReleaseDC(NULL, hdc);
16679
+ return dpi / 96;
16680
+ }
16681
+ function createSystemDpiFont() {
16682
+ const ncm = NONCLIENTMETRICSW.encode({ cbSize: NONCLIENTMETRICSW.size });
16683
+ if (!SystemParametersInfo(41, NONCLIENTMETRICSW.size, ncm, 0)) {
16684
+ const legacySize = NONCLIENTMETRICSW.size - 4;
16685
+ NONCLIENTMETRICSW.encode({ cbSize: legacySize }, ncm);
16686
+ if (!SystemParametersInfo(41, legacySize, ncm, 0))
16687
+ return NULL;
16688
+ }
16689
+ return CreateFontIndirect(NONCLIENTMETRICSW.decode(ncm).lfMessageFont);
16690
+ }
16691
+
16611
16692
  // _build/lib/react-qw/props.js
16612
16693
  import * as gui from "gui";
16613
16694
  function applyProps(instance, newProps, _oldProps) {
@@ -16631,14 +16712,14 @@ function applyProps(instance, newProps, _oldProps) {
16631
16712
  EnableWindow(hwnd, !newProps.disabled ? 1 : 0);
16632
16713
  }
16633
16714
  if ("hidden" in newProps) {
16634
- gui.ShowWindow(
16715
+ ShowWindow(
16635
16716
  hwnd,
16636
16717
  newProps.hidden ? 0 : 5
16637
16718
  /* ShowWindowCmd.SHOW */
16638
16719
  );
16639
16720
  }
16640
16721
  if ("visible" in newProps) {
16641
- gui.ShowWindow(
16722
+ ShowWindow(
16642
16723
  hwnd,
16643
16724
  newProps.visible ? 5 : 0
16644
16725
  /* ShowWindowCmd.HIDE */
@@ -16758,24 +16839,21 @@ function measureTextForHwnd(hwnd, text) {
16758
16839
  if (hFont)
16759
16840
  SelectObject(hdc, oldFont);
16760
16841
  ReleaseDC(hwnd, hdc);
16761
- const wr = gui2.GetWindowRect(hwnd);
16762
- const cr = gui2.GetClientRect(hwnd);
16763
- if (wr && cr) {
16764
- result.width += wr.right - wr.left - (cr.right - cr.left);
16765
- result.height += wr.bottom - wr.top - (cr.bottom - cr.top);
16842
+ const wr = RECT.alloc();
16843
+ const cr = RECT.alloc();
16844
+ const okWr = GetWindowRect(hwnd, wr.ptr);
16845
+ const okCr = GetClientRect(hwnd, cr.ptr);
16846
+ if (okWr && okCr) {
16847
+ const w = RECT.decode(wr), c = RECT.decode(cr);
16848
+ result.width += w.right - w.left - (c.right - c.left);
16849
+ result.height += w.bottom - w.top - (c.bottom - c.top);
16766
16850
  }
16767
16851
  return result;
16768
16852
  }
16769
16853
 
16770
16854
  // _build/lib/react-qw/reconciler.js
16771
- var dpiFont = gui3.CreateSystemDpiFont();
16772
- var scaleFactor = (() => {
16773
- const hdc = GetDC(NULL);
16774
- const dpi = hdc ? GetDeviceCaps(hdc, 88) : 96;
16775
- if (hdc)
16776
- ReleaseDC(NULL, hdc);
16777
- return dpi / 96;
16778
- })();
16855
+ var dpiFont = createSystemDpiFont();
16856
+ var scaleFactor = getScaleFactor();
16779
16857
  var DELAYED_CONTROLS = /* @__PURE__ */ new Set(["SysListView32", "SysTreeView32", "LISTBOX", "COMBOBOX", "msctls_trackbar32", "SysDateTimePick32", "SysLink"]);
16780
16858
  function isDelayedControl(winClass) {
16781
16859
  return DELAYED_CONTROLS.has(winClass);
@@ -16821,11 +16899,12 @@ function runFlexLayout(inst) {
16821
16899
  const visible = children.filter((c) => !c.props.hidden);
16822
16900
  if (visible.length === 0)
16823
16901
  return;
16824
- const rect = gui3.GetClientRect(inst.hwnd);
16825
- if (!rect) {
16902
+ const rcBuf = RECT.alloc();
16903
+ if (!GetClientRect(inst.hwnd, rcBuf.ptr)) {
16826
16904
  console.log("flex: no rect for", inst.hwnd, inst.type);
16827
16905
  return;
16828
16906
  }
16907
+ const rect = RECT.decode(rcBuf);
16829
16908
  const pw = (rect.right - rect.left) / scaleFactor;
16830
16909
  const ph = (rect.bottom - rect.top) / scaleFactor;
16831
16910
  if (pw <= 0 || ph <= 0) {
@@ -17026,7 +17105,7 @@ var hostConfig = {
17026
17105
  },
17027
17106
  hideInstance(instance) {
17028
17107
  if (instance.hwnd !== null)
17029
- gui3.ShowWindow(
17108
+ ShowWindow(
17030
17109
  instance.hwnd,
17031
17110
  0
17032
17111
  /* ShowWindowCmd.HIDE */
@@ -17034,7 +17113,7 @@ var hostConfig = {
17034
17113
  },
17035
17114
  hideTextInstance(instance) {
17036
17115
  if (instance.hwnd !== null)
17037
- gui3.ShowWindow(
17116
+ ShowWindow(
17038
17117
  instance.hwnd,
17039
17118
  0
17040
17119
  /* ShowWindowCmd.HIDE */
@@ -17042,7 +17121,7 @@ var hostConfig = {
17042
17121
  },
17043
17122
  unhideInstance(instance, _props) {
17044
17123
  if (instance.hwnd !== null)
17045
- gui3.ShowWindow(
17124
+ ShowWindow(
17046
17125
  instance.hwnd,
17047
17126
  5
17048
17127
  /* ShowWindowCmd.SHOW */
@@ -17050,7 +17129,7 @@ var hostConfig = {
17050
17129
  },
17051
17130
  unhideTextInstance(instance, _text) {
17052
17131
  if (instance.hwnd !== null)
17053
- gui3.ShowWindow(
17132
+ ShowWindow(
17054
17133
  instance.hwnd,
17055
17134
  5
17056
17135
  /* ShowWindowCmd.SHOW */
@@ -17297,11 +17376,10 @@ var DateTimePicker = (0, import_react5.forwardRef)(function DateTimePicker2({ va
17297
17376
  if (!h)
17298
17377
  return;
17299
17378
  InvalidateRect(h, NULL, 1);
17300
- const cr = gui6.GetClientRect(h);
17301
- if (cr) {
17302
- const w = cr.right - cr.left;
17303
- const hh = cr.bottom - cr.top;
17304
- gui6.SendMessage(h, 5, 0, hh << 16 | w);
17379
+ const cr = RECT.alloc();
17380
+ if (GetClientRect(h, cr.ptr)) {
17381
+ const { left, top, right, bottom } = RECT.decode(cr);
17382
+ gui6.SendMessage(h, 5, 0, bottom - top << 16 | right - left);
17305
17383
  }
17306
17384
  }, []);
17307
17385
  return (0, import_jsx_runtime4.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
@@ -17362,7 +17440,10 @@ var Input = (0, import_react6.forwardRef)(({ value: controlledValue, defaultValu
17362
17440
  const h = inputRef.current;
17363
17441
  if (!h)
17364
17442
  return;
17365
- const newText = gui7.GetWindowText(h);
17443
+ const cap = GetWindowTextLength(h) + 1;
17444
+ const buf = WCHAR.alloc(cap);
17445
+ GetWindowText(h, buf, cap);
17446
+ const newText = WCHAR.decode(buf);
17366
17447
  if (!isControlled)
17367
17448
  setInternalValue(newText);
17368
17449
  onChange?.(newText);
@@ -17450,6 +17531,49 @@ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
17450
17531
  var import_react9 = __toESM(require_react(), 1);
17451
17532
  import * as gui9 from "gui";
17452
17533
  import * as ffi3 from "ffi";
17534
+
17535
+ // _build/lib/bitmap.js
17536
+ function createBitmapFromPixels(width, height, pixels) {
17537
+ if (width <= 0 || height <= 0)
17538
+ return NULL;
17539
+ const len = width * height * 4;
17540
+ if (pixels.byteLength < len)
17541
+ return NULL;
17542
+ const bi = BITMAPINFOHEADER.encode({
17543
+ biSize: BITMAPINFOHEADER.size,
17544
+ biWidth: width,
17545
+ biHeight: -height,
17546
+ biPlanes: 1,
17547
+ biBitCount: 32
17548
+ });
17549
+ const hbm = CreateDIBSection(NULL, bi.ptr, 0, NULL, NULL, 0);
17550
+ if (!hbm)
17551
+ return NULL;
17552
+ const src = new PtrArrayBuffer(len);
17553
+ new Uint8Array(src).set(new Uint8Array(pixels, 0, len));
17554
+ if (SetDIBits(
17555
+ NULL,
17556
+ hbm,
17557
+ 0,
17558
+ height,
17559
+ src,
17560
+ bi.ptr,
17561
+ 0
17562
+ /* ColorUse.RGB_COLORS */
17563
+ ) !== height) {
17564
+ DeleteObject(hbm);
17565
+ return NULL;
17566
+ }
17567
+ return hbm;
17568
+ }
17569
+
17570
+ // _build/lib/windows/comctl32.js
17571
+ var b3 = (name, sig) => bind("comctl32.dll", name, sig);
17572
+ var ImageListCreate = /* @__PURE__ */ b3("ImageList_Create", "i32 i32 u32 i32 i32 -> <HIMAGELIST>ptr");
17573
+ var ImageListAdd = /* @__PURE__ */ b3("ImageList_Add", "<HIMAGELIST>ptr <HGDIOBJ>ptr <HGDIOBJ>ptr -> i32");
17574
+ var ImageListDestroy = /* @__PURE__ */ b3("ImageList_Destroy", "<HIMAGELIST>ptr -> i32");
17575
+
17576
+ // _build/lib/react-qw/components/ListView.js
17453
17577
  function writeU32(ptr, offset, v) {
17454
17578
  ffi3.writeByte(ptr + offset, v & 255);
17455
17579
  ffi3.writeByte(ptr + offset + 1, v >> 8 & 255);
@@ -17539,7 +17663,7 @@ function resolveCellStyle(columns, data, row, colIndex) {
17539
17663
  }
17540
17664
  function makeLVItem(i, sub, text, image) {
17541
17665
  const textBuf = WCHAR.encode(text);
17542
- const b6 = LVITEMW.encode({
17666
+ const b7 = LVITEMW.encode({
17543
17667
  mask: 1 | (image !== void 0 ? 2 : 0),
17544
17668
  iItem: i,
17545
17669
  iSubItem: sub,
@@ -17556,32 +17680,32 @@ function makeLVItem(i, sub, text, image) {
17556
17680
  piColFmt: 0,
17557
17681
  iGroup: 0
17558
17682
  });
17559
- b6.__textBuf = textBuf;
17560
- return b6;
17683
+ b7.__textBuf = textBuf;
17684
+ return b7;
17561
17685
  }
17562
17686
  var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, data, style, icons, iconSize, getIcon }, ref) {
17563
17687
  const lvRef = (0, import_react9.useRef)(null);
17564
- const iconListRef = (0, import_react9.useRef)(0);
17688
+ const iconListRef = (0, import_react9.useRef)(NULL);
17565
17689
  (0, import_react9.useEffect)(() => {
17566
17690
  const h = lvRef.current;
17567
17691
  if (!h)
17568
17692
  return;
17569
17693
  const il = iconListRef.current;
17570
- iconListRef.current = 0;
17694
+ iconListRef.current = NULL;
17571
17695
  if (il) {
17572
17696
  gui9.SendMessage(h, 4099, 1, 0);
17573
- gui9.ImageListDestroy(il);
17697
+ ImageListDestroy(il);
17574
17698
  }
17575
17699
  if (!icons || icons.length === 0)
17576
17700
  return;
17577
17701
  const size = iconSize ?? 32;
17578
- const img = gui9.ImageListCreate(size, size, 32, icons.length, 1);
17702
+ const img = ImageListCreate(size, size, 32, icons.length, 1);
17579
17703
  if (!img)
17580
17704
  return;
17581
17705
  for (const p of icons) {
17582
- const hbm = gui9.CreateBitmapFromPixels(size, size, p);
17706
+ const hbm = createBitmapFromPixels(size, size, p);
17583
17707
  if (hbm) {
17584
- gui9.ImageListAdd(img, hbm);
17708
+ ImageListAdd(img, hbm, NULL);
17585
17709
  DeleteObject(hbm);
17586
17710
  }
17587
17711
  }
@@ -17762,22 +17886,19 @@ var RadioButton = (0, import_react11.forwardRef)(({ checked: controlledChecked,
17762
17886
  // _build/lib/react-qw/components/ScrollView.js
17763
17887
  var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
17764
17888
  var import_react12 = __toESM(require_react(), 1);
17765
- import * as gui12 from "gui";
17766
17889
  var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth, contentHeight }, ref) => {
17767
17890
  const svRef = (0, import_react12.useRef)(null);
17768
17891
  const contentRef = (0, import_react12.useRef)(null);
17769
17892
  const scrollXRef = (0, import_react12.useRef)(0);
17770
17893
  const scrollYRef = (0, import_react12.useRef)(0);
17771
17894
  function updateScroll(sv, content) {
17772
- const svRect = gui12.GetClientRect(sv);
17773
- if (!svRect)
17895
+ const svBuf = RECT.alloc();
17896
+ if (!GetClientRect(sv, svBuf.ptr))
17774
17897
  return;
17775
- const svW = svRect.right - svRect.left;
17776
- const svH = svRect.bottom - svRect.top;
17777
- const hdc = GetDC(NULL);
17778
- const scale = hdc ? GetDeviceCaps(hdc, 88) / 96 : 1;
17779
- if (hdc)
17780
- ReleaseDC(NULL, hdc);
17898
+ const { left, top, right, bottom } = RECT.decode(svBuf);
17899
+ const svW = right - left;
17900
+ const svH = bottom - top;
17901
+ const scale = getScaleFactor();
17781
17902
  const natW = Math.round((contentWidth ?? svW / scale) * scale);
17782
17903
  const natH = Math.round((contentHeight ?? svH / scale) * scale);
17783
17904
  scrollXRef.current = Math.max(0, Math.min(scrollXRef.current, natW - svW));
@@ -17794,14 +17915,28 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17794
17915
  );
17795
17916
  forceFlexLayout(content);
17796
17917
  if (natW > svW) {
17797
- gui12.SetScrollInfo(sv, 0, { min: 0, max: natW - 1, page: svW, pos: scrollXRef.current }, true);
17918
+ SetScrollInfo(sv, 0, {
17919
+ cbSize: SCROLLINFO.size,
17920
+ fMask: 1 | 2 | 4,
17921
+ nMin: 0,
17922
+ nMax: natW - 1,
17923
+ nPage: svW,
17924
+ nPos: scrollXRef.current
17925
+ }, 1);
17798
17926
  ShowScrollBar(sv, 0, 1);
17799
17927
  } else {
17800
17928
  scrollXRef.current = 0;
17801
17929
  ShowScrollBar(sv, 0, 0);
17802
17930
  }
17803
17931
  if (natH > svH) {
17804
- gui12.SetScrollInfo(sv, 1, { min: 0, max: natH - 1, page: svH, pos: scrollYRef.current }, true);
17932
+ SetScrollInfo(sv, 1, {
17933
+ cbSize: SCROLLINFO.size,
17934
+ fMask: 1 | 2 | 4,
17935
+ nMin: 0,
17936
+ nMax: natH - 1,
17937
+ nPage: svH,
17938
+ nPos: scrollYRef.current
17939
+ }, 1);
17805
17940
  ShowScrollBar(sv, 1, 1);
17806
17941
  } else {
17807
17942
  scrollYRef.current = 0;
@@ -17831,15 +17966,21 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17831
17966
  1 | 4
17832
17967
  /* SetWindowPosFlag.SWP_NOZORDER */
17833
17968
  );
17834
- gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
17969
+ SetScrollInfo(sv, bar, { cbSize: SCROLLINFO.size, fMask: 4, nPos: newPos }, 1);
17835
17970
  }
17836
17971
  function handleScroll(e, bar) {
17837
17972
  const sv = svRef.current;
17838
17973
  const content = contentRef.current;
17839
17974
  if (!sv || !content)
17840
17975
  return;
17841
- const info = gui12.GetScrollInfo(sv, bar);
17842
- const maxPos = info.max - info.page + 1;
17976
+ const si = SCROLLINFO.encode({
17977
+ cbSize: SCROLLINFO.size,
17978
+ fMask: 23
17979
+ /* ScrollInfoFlag.ALL */
17980
+ });
17981
+ GetScrollInfo(sv, bar, si.ptr);
17982
+ const info = SCROLLINFO.decode(si);
17983
+ const maxPos = info.nMax - info.nPage + 1;
17843
17984
  const code = e.wParam & 65535;
17844
17985
  const ref_ = bar === 1 ? scrollYRef : scrollXRef;
17845
17986
  let newPos = ref_.current;
@@ -17850,9 +17991,9 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17850
17991
  else if (code === 1)
17851
17992
  newPos += 20;
17852
17993
  else if (code === 2)
17853
- newPos -= info.page;
17994
+ newPos -= info.nPage;
17854
17995
  else if (code === 3)
17855
- newPos += info.page;
17996
+ newPos += info.nPage;
17856
17997
  else
17857
17998
  return;
17858
17999
  newPos = Math.max(0, Math.min(maxPos, newPos));
@@ -17872,8 +18013,14 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17872
18013
  if (!isHorz && contentHeight === void 0)
17873
18014
  return;
17874
18015
  const bar = isHorz ? 0 : 1;
17875
- const info = gui12.GetScrollInfo(sv, bar);
17876
- const maxPos = info.max - info.page + 1;
18016
+ const si = SCROLLINFO.encode({
18017
+ cbSize: SCROLLINFO.size,
18018
+ fMask: 23
18019
+ /* ScrollInfoFlag.ALL */
18020
+ });
18021
+ GetScrollInfo(sv, bar, si.ptr);
18022
+ const info = SCROLLINFO.decode(si);
18023
+ const maxPos = info.nMax - info.nPage + 1;
17877
18024
  const ref_ = isHorz ? scrollXRef : scrollYRef;
17878
18025
  let newPos = ref_.current + dy;
17879
18026
  newPos = Math.max(0, Math.min(maxPos, newPos));
@@ -17921,7 +18068,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17921
18068
  // _build/lib/react-qw/components/Slider.js
17922
18069
  var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
17923
18070
  var import_react13 = __toESM(require_react(), 1);
17924
- import * as gui13 from "gui";
18071
+ import * as gui12 from "gui";
17925
18072
  var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 100, vertical = false, disabled, style }, ref) => {
17926
18073
  const wrapperRef = (0, import_react13.useRef)(null);
17927
18074
  const sliderRef = (0, import_react13.useRef)(null);
@@ -17930,14 +18077,14 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
17930
18077
  if (!h)
17931
18078
  return;
17932
18079
  const lParam = min & 65535 | (max & 65535) << 16;
17933
- gui13.SendMessage(h, 1030, 0, lParam);
17934
- gui13.SendMessage(h, 1029, 1, value);
18080
+ gui12.SendMessage(h, 1030, 0, lParam);
18081
+ gui12.SendMessage(h, 1029, 1, value);
17935
18082
  }, [min, max]);
17936
18083
  (0, import_react13.useEffect)(() => {
17937
18084
  const h = sliderRef.current;
17938
18085
  if (!h)
17939
18086
  return;
17940
- gui13.SendMessage(h, 1029, 1, value);
18087
+ gui12.SendMessage(h, 1029, 1, value);
17941
18088
  }, [value]);
17942
18089
  const tbStyle = 268435456 | 65536 | 1 | (vertical ? 2 : 0);
17943
18090
  return (0, import_jsx_runtime12.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style, ref: (h) => {
@@ -17954,7 +18101,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
17954
18101
  const h = sliderRef.current;
17955
18102
  if (!h)
17956
18103
  return 0;
17957
- const pos = gui13.SendMessage(h, 1024, 0, 0);
18104
+ const pos = gui12.SendMessage(h, 1024, 0, 0);
17958
18105
  onChange?.(pos);
17959
18106
  return 0;
17960
18107
  }
@@ -17967,7 +18114,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
17967
18114
  // _build/lib/react-qw/components/Tab.js
17968
18115
  var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
17969
18116
  var import_react14 = __toESM(require_react(), 1);
17970
- import * as gui14 from "gui";
18117
+ import * as gui13 from "gui";
17971
18118
  var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex, defaultSelectedIndex = 0, onChange, style }, ref) => {
17972
18119
  const [internalIndex, setInternalIndex] = (0, import_react14.useState)(defaultSelectedIndex);
17973
18120
  const isControlled = controlledIndex !== void 0;
@@ -17977,7 +18124,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
17977
18124
  const h = tabHwnd.current;
17978
18125
  if (!h)
17979
18126
  return;
17980
- gui14.SendMessage(h, 4873, 0, 0);
18127
+ gui13.SendMessage(h, 4873, 0, 0);
17981
18128
  for (let i = 0; i < tabs.length; i++) {
17982
18129
  const titleBuf = WCHAR.encode(tabs[i].title);
17983
18130
  const tci = TCITEMW.encode({
@@ -17990,14 +18137,14 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
17990
18137
  lParam: 0
17991
18138
  });
17992
18139
  const tciPtr = tci.ptr;
17993
- gui14.SendMessage(h, 4926, i, tciPtr);
18140
+ gui13.SendMessage(h, 4926, i, tciPtr);
17994
18141
  }
17995
- gui14.SendMessage(h, 4876, sel, 0);
18142
+ gui13.SendMessage(h, 4876, sel, 0);
17996
18143
  }, [tabs]);
17997
18144
  (0, import_react14.useEffect)(() => {
17998
18145
  const h = tabHwnd.current;
17999
18146
  if (h)
18000
- gui14.SendMessage(h, 4876, sel, 0);
18147
+ gui13.SendMessage(h, 4876, sel, 0);
18001
18148
  }, [sel]);
18002
18149
  return (0, import_jsx_runtime13.jsxs)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
18003
18150
  if (e.msg === 78) {
@@ -18006,7 +18153,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
18006
18153
  return;
18007
18154
  const code = nmCode(e.lParam);
18008
18155
  if (code === -552 || code === -2) {
18009
- const newSel = gui14.SendMessage(h, 4875, 0, 0);
18156
+ const newSel = gui13.SendMessage(h, 4875, 0, 0);
18010
18157
  if (newSel !== sel) {
18011
18158
  if (!isControlled)
18012
18159
  setInternalIndex(newSel);
@@ -18019,12 +18166,12 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
18019
18166
 
18020
18167
  // _build/lib/react-qw/components/Tooltip.js
18021
18168
  var import_react15 = __toESM(require_react(), 1);
18022
- import * as gui15 from "gui";
18169
+ import * as gui14 from "gui";
18023
18170
 
18024
18171
  // _build/lib/react-qw/components/TreeView.js
18025
18172
  var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
18026
18173
  var import_react16 = __toESM(require_react(), 1);
18027
- import * as gui16 from "gui";
18174
+ import * as gui15 from "gui";
18028
18175
  function buildTvItem(textPtr, cChildren) {
18029
18176
  let mask = 1;
18030
18177
  if (cChildren > 0)
@@ -18049,20 +18196,20 @@ function insertItems(hTree, nodes, parentHandle, hItemMap, keyMap) {
18049
18196
  const itemBuf = buildTvItem(textBuf.ptr, cChildren);
18050
18197
  const item = TVITEM.decode(itemBuf);
18051
18198
  const tvins = TVINSERTSTRUCT.encode({ hParent: parentHandle, hInsertAfter: -65536, item });
18052
- const hItem = gui16.SendMessage(hTree, 4402, 0, tvins.ptr);
18199
+ const hItem = gui15.SendMessage(hTree, 4402, 0, tvins.ptr);
18053
18200
  hItemMap.set(hItem, node);
18054
18201
  if (node.key)
18055
18202
  keyMap.set(node.key, hItem);
18056
18203
  if (node.children && node.children.length > 0) {
18057
18204
  insertItems(hTree, node.children, hItem, hItemMap, keyMap);
18058
- gui16.SendMessage(hTree, 4354, 2, hItem);
18205
+ gui15.SendMessage(hTree, 4354, 2, hItem);
18059
18206
  }
18060
18207
  }
18061
18208
  }
18062
18209
  function deleteAllItems(hTree) {
18063
- const n = gui16.SendMessage(hTree, 4357, 0, 0);
18210
+ const n = gui15.SendMessage(hTree, 4357, 0, 0);
18064
18211
  if (n > 0)
18065
- gui16.SendMessage(
18212
+ gui15.SendMessage(
18066
18213
  hTree,
18067
18214
  4353,
18068
18215
  1,
@@ -18094,7 +18241,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18094
18241
  const h = tvRef.current;
18095
18242
  if (!h)
18096
18243
  return;
18097
- gui16.SendMessage(
18244
+ gui15.SendMessage(
18098
18245
  h,
18099
18246
  4396,
18100
18247
  0,
@@ -18110,7 +18257,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18110
18257
  return;
18111
18258
  const hItem = keyMapRef.current.get(selKey);
18112
18259
  if (hItem !== void 0)
18113
- gui16.SendMessage(h, 4363, 9, hItem);
18260
+ gui15.SendMessage(h, 4363, 9, hItem);
18114
18261
  }, [selKey]);
18115
18262
  return (0, import_jsx_runtime14.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
18116
18263
  if (e.msg === 78) {
@@ -18119,7 +18266,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18119
18266
  const h = tvRef.current;
18120
18267
  if (!h)
18121
18268
  return;
18122
- const hCaret = gui16.SendMessage(h, 4362, 9, 0);
18269
+ const hCaret = gui15.SendMessage(h, 4362, 9, 0);
18123
18270
  const node = hItemMapRef.current.get(hCaret) ?? null;
18124
18271
  const key = node?.key ?? null;
18125
18272
  if (!isControlled)
@@ -18137,24 +18284,24 @@ var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
18137
18284
  var import_react17 = __toESM(require_react(), 1);
18138
18285
 
18139
18286
  // _build/lib/windows/comdlg32.js
18140
- var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18141
- var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18287
+ var b4 = (name, sig) => bind("comdlg32.dll", name, sig);
18288
+ var GetOpenFileName = /* @__PURE__ */ b4("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18142
18289
 
18143
18290
  // _build/lib/windows/shell32.js
18144
- var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18145
- var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18146
- var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18291
+ var b5 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18292
+ var SHBrowseForFolder = /* @__PURE__ */ b5("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18293
+ var SHGetPathFromIDList = /* @__PURE__ */ b5("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18147
18294
  var Shell_NotifyIconGetRect = (() => {
18148
18295
  try {
18149
- return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18296
+ return b5("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18150
18297
  } catch {
18151
18298
  return null;
18152
18299
  }
18153
18300
  })();
18154
18301
 
18155
18302
  // _build/lib/windows/ole32.js
18156
- var b5 = (name, sig) => bind("ole32.dll", name, sig);
18157
- var CoTaskMemFree = /* @__PURE__ */ b5("CoTaskMemFree", "<>ptr -> void");
18303
+ var b6 = (name, sig) => bind("ole32.dll", name, sig);
18304
+ var CoTaskMemFree = /* @__PURE__ */ b6("CoTaskMemFree", "<>ptr -> void");
18158
18305
 
18159
18306
  // _build/lib/react-qw/components/PathPicker.js
18160
18307
  function openFileDialog(owner, filter, title, multiple) {
@@ -18249,7 +18396,7 @@ var rootMap = /* @__PURE__ */ new Map();
18249
18396
  function ensureDefaultClass() {
18250
18397
  if (defaultClassRegistered)
18251
18398
  return DEFAULT_CLASS;
18252
- gui17.RegisterClass(DEFAULT_CLASS, (hwnd, msg, wParam, lParam) => {
18399
+ gui16.RegisterClass(DEFAULT_CLASS, (hwnd, msg, wParam, lParam) => {
18253
18400
  const entry = rootMap.get(hwnd);
18254
18401
  if (msg === 2 && entry) {
18255
18402
  rootMap.delete(hwnd);
@@ -18275,15 +18422,27 @@ function createRoot(container) {
18275
18422
  const ws = (cfg.ws ?? 0) | 13565952;
18276
18423
  const w = (cfg.width ?? 800) * scaleFactor;
18277
18424
  const h = (cfg.height ?? 600) * scaleFactor;
18278
- const [sw, sh] = [GetSystemMetrics(0), GetSystemMetrics(1)];
18425
+ const [sw, sh] = [GetSystemMetrics(
18426
+ 0
18427
+ /* SysMetrics.CXSCREEN */
18428
+ ), GetSystemMetrics(
18429
+ 1
18430
+ /* SysMetrics.CYSCREEN */
18431
+ )];
18279
18432
  const x = cfg.x === void 0 ? (sw - w) / 2 | 0 : cfg.x === -2147483648 ? -2147483648 : cfg.x * scaleFactor;
18280
18433
  const y = cfg.y === void 0 ? (sh - h) / 2 | 0 : cfg.y === -2147483648 ? -2147483648 : cfg.y * scaleFactor;
18281
- const hwin = gui17.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
18434
+ const hwin = gui16.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
18282
18435
  if (!hwin)
18283
18436
  throw new Error("CreateWindow failed");
18284
18437
  hwnd = hwin;
18285
- if (!cfg.noShowWindow)
18286
- gui17.ShowWindow(hwnd);
18438
+ if (!cfg.noShowWindow) {
18439
+ ShowWindow(
18440
+ hwnd,
18441
+ 1
18442
+ /* ShowWindowCmd.SHOWNORMAL */
18443
+ );
18444
+ UpdateWindow(hwnd);
18445
+ }
18287
18446
  } else {
18288
18447
  hwnd = container;
18289
18448
  }
@@ -18371,25 +18530,25 @@ var Tester = class {
18371
18530
 
18372
18531
  // _build/test/test_react_flex.js
18373
18532
  var __setItems = null;
18374
- gui18.RegisterClass("FlexTest", (hwnd, msg, wParam, lParam) => {
18533
+ gui17.RegisterClass("FlexTest", (hwnd, msg, wParam, lParam) => {
18375
18534
  if (!hwnd)
18376
- return gui18.DefWindowProc(hwnd, msg, wParam, lParam);
18535
+ return gui17.DefWindowProc(hwnd, msg, wParam, lParam);
18377
18536
  if (msg === 2) {
18378
- gui18.PostQuitMessage(0);
18537
+ PostQuitMessage(0);
18379
18538
  return 0;
18380
18539
  }
18381
- return gui18.DefWindowProc(hwnd, msg, wParam, lParam);
18540
+ return gui17.DefWindowProc(hwnd, msg, wParam, lParam);
18382
18541
  });
18383
18542
  function childrenOf(hwnd) {
18384
18543
  const kids = [];
18385
- let child = gui18.GetWindow(
18544
+ let child = GetWindow(
18386
18545
  hwnd,
18387
18546
  5
18388
18547
  /* GetWindowCmd.CHILD */
18389
18548
  );
18390
18549
  while (child) {
18391
18550
  kids.push(child);
18392
- child = gui18.GetWindow(
18551
+ child = GetWindow(
18393
18552
  child,
18394
18553
  2
18395
18554
  /* GetWindowCmd.NEXT */
@@ -18398,10 +18557,10 @@ function childrenOf(hwnd) {
18398
18557
  return kids.reverse();
18399
18558
  }
18400
18559
  function getRelativeRect(childHwnd, parentHwnd) {
18401
- const pr = gui18.GetWindowRect(parentHwnd);
18402
- const cr = gui18.GetWindowRect(childHwnd);
18403
- if (!pr || !cr)
18560
+ const pBuf = RECT.alloc(), cBuf = RECT.alloc();
18561
+ if (!GetWindowRect(parentHwnd, pBuf.ptr) || !GetWindowRect(childHwnd, cBuf.ptr))
18404
18562
  return { x: 0, y: 0, width: 0, height: 0 };
18563
+ const pr = RECT.decode(pBuf), cr = RECT.decode(cBuf);
18405
18564
  return {
18406
18565
  x: cr.left - pr.left,
18407
18566
  y: cr.top - pr.top,
@@ -18516,7 +18675,7 @@ async function testRowCol(tester, root, rootHwnd, name, dir, parentW, parentH, c
18516
18675
  }
18517
18676
  async function main() {
18518
18677
  const tester = new Tester();
18519
- const hwnd = gui18.CreateWindow("FlexTest", "", 0, 0, 0, 800, 600, null, null);
18678
+ const hwnd = gui17.CreateWindow("FlexTest", "", 0, 0, 0, 800, 600, null, null);
18520
18679
  if (!hwnd) {
18521
18680
  tester.check("create root window", true, false);
18522
18681
  tester.summary();
@@ -18650,7 +18809,7 @@ async function main() {
18650
18809
  outer4 = childrenOf(hwnd);
18651
18810
  checkDynamic(outer4, [175]);
18652
18811
  tester.summary();
18653
- gui18.PostQuitMessage(0);
18812
+ PostQuitMessage(0);
18654
18813
  }
18655
18814
  main();
18656
18815
  /*! Bundled license information: