quickwin 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.en.md +9 -9
  2. package/README.md +9 -9
  3. package/constants.ts +1063 -0
  4. package/enum_map.d.ts +129 -0
  5. package/examples/PdfCanvas.js +2 -2
  6. package/examples/PdfCanvas.tsx +3 -2
  7. package/examples/{exec_server.js → execd/main.js} +1114 -287
  8. package/examples/execd/tray.js +192 -0
  9. package/examples/execd/worker.js +122 -0
  10. package/examples/pdf_preview2.js +46 -46
  11. package/examples/pdf_preview2.ts +55 -54
  12. package/examples/pdf_viewer.js +134 -130
  13. package/examples/pdf_viewer.tsx +6 -5
  14. package/examples/test_gallery.js +135 -131
  15. package/examples/test_gallery.tsx +9 -8
  16. package/examples/test_react_lazy.js +130 -128
  17. package/examples/test_react_lazy.tsx +7 -6
  18. package/examples/test_react_listbox.js +130 -128
  19. package/examples/test_react_listbox.tsx +8 -7
  20. package/examples/test_root_window.js +130 -128
  21. package/examples/test_root_window.tsx +5 -5
  22. package/examples/test_tab.js +130 -128
  23. package/examples/test_tab.tsx +7 -6
  24. package/examples/tray_demo.js +8 -8
  25. package/examples/tray_demo.tsx +9 -8
  26. package/lib/dumpRects.js +2 -2
  27. package/lib/dumpRects.ts +3 -2
  28. package/lib/fetch.js +15 -15
  29. package/lib/fetch.ts +16 -15
  30. package/lib/ffi/bind.js +3 -3
  31. package/lib/ffi/bind.ts +3 -3
  32. package/lib/ffi/ctype.ts +3 -1
  33. package/lib/ffi/struct.js +23 -7
  34. package/lib/ffi/struct.ts +50 -23
  35. package/lib/http-server.js +5 -5
  36. package/lib/http-server.ts +6 -5
  37. package/lib/react-qw/components/Button.js +2 -2
  38. package/lib/react-qw/components/CheckBox.js +4 -4
  39. package/lib/react-qw/components/ComboBox.js +10 -10
  40. package/lib/react-qw/components/DateTimePicker.js +12 -12
  41. package/lib/react-qw/components/Input.js +7 -7
  42. package/lib/react-qw/components/Link.js +4 -4
  43. package/lib/react-qw/components/ListBox.js +12 -12
  44. package/lib/react-qw/components/ListView.js +35 -35
  45. package/lib/react-qw/components/PathPicker.js +3 -3
  46. package/lib/react-qw/components/ProgressBar.js +4 -4
  47. package/lib/react-qw/components/RadioButton.js +4 -4
  48. package/lib/react-qw/components/ScrollView.js +28 -28
  49. package/lib/react-qw/components/Slider.js +11 -11
  50. package/lib/react-qw/components/Tab.js +10 -10
  51. package/lib/react-qw/components/Tooltip.js +8 -8
  52. package/lib/react-qw/components/TreeView.js +20 -20
  53. package/lib/react-qw/index.js +5 -5
  54. package/lib/react-qw/index.ts +6 -5
  55. package/lib/react-qw/props.js +4 -4
  56. package/lib/react-qw/props.ts +5 -4
  57. package/lib/react-qw/reconciler.js +10 -10
  58. package/lib/react-qw/reconciler.ts +11 -10
  59. package/lib/text-measure.js +3 -3
  60. package/lib/text-measure.ts +4 -3
  61. package/lib/websocket.js +17 -17
  62. package/lib/websocket.ts +18 -17
  63. package/lib/windows/advapi32.js +7 -7
  64. package/lib/windows/advapi32.ts +7 -7
  65. package/lib/windows/gdi32.js +17 -17
  66. package/lib/windows/gdi32.ts +17 -17
  67. package/lib/windows/kernel32.js +41 -2
  68. package/lib/windows/kernel32.ts +45 -2
  69. package/lib/windows/shell32.js +24 -3
  70. package/lib/windows/shell32.ts +27 -4
  71. package/lib/windows/structs.js +230 -92
  72. package/lib/windows/structs.ts +278 -92
  73. package/lib/windows/user32.js +18 -6
  74. package/lib/windows/user32.ts +18 -6
  75. package/lib/windows/winspool.js +3 -3
  76. package/lib/windows/winspool.ts +3 -3
  77. package/package.json +4 -3
  78. package/quickwin.d.ts +32 -10
  79. package/qwin-nowasm-x86.exe +0 -0
  80. package/qwin-nowasm.exe +0 -0
  81. package/qwin-x86.exe +0 -0
  82. package/qwin.exe +0 -0
  83. package/test/test_ffi_bind.js +12 -10
  84. package/test/test_ffi_bind.ts +14 -12
  85. package/test/test_ffi_struct.js +60 -26
  86. package/test/test_ffi_struct.ts +58 -28
  87. package/test/test_ffi_windows.js +1 -1
  88. package/test/test_ffi_windows.ts +1 -1
  89. package/test/test_files.js +7 -7
  90. package/test/test_files.ts +8 -8
  91. package/test/test_gdi_draw.js +51 -51
  92. package/test/test_gdi_draw.ts +57 -57
  93. package/test/test_http_server.js +3 -3
  94. package/test/test_http_server.ts +4 -3
  95. package/test/test_ipv6.js +3 -3
  96. package/test/test_ipv6.ts +4 -3
  97. package/test/test_net_event.js +3 -3
  98. package/test/test_net_event.ts +4 -3
  99. package/test/test_printer.js +4 -4
  100. package/test/test_printer.ts +5 -5
  101. package/test/test_react_complex.js +132 -130
  102. package/test/test_react_counter.js +130 -128
  103. package/test/test_react_flex.js +132 -130
  104. package/test/test_react_hidden.js +130 -128
  105. package/test/test_react_listview_link.js +131 -129
  106. package/test/test_react_notify.js +148 -146
  107. package/test/test_react_render.js +130 -128
  108. package/test/test_registry.js +6 -6
  109. package/test/test_registry.ts +8 -8
  110. package/test/test_wolfssl_read.js +8 -8
  111. package/test/test_wolfssl_read.ts +9 -8
  112. package/examples/exec_server.tsx +0 -488
  113. package/examples/exec_server_worker.js +0 -395
  114. package/examples/exec_server_worker.ts +0 -417
  115. package/examples/setres.js +0 -79
  116. package/examples/setres.ts +0 -86
  117. package/quickwin_const.d.ts +0 -1037
@@ -16276,7 +16276,7 @@ function doEncode(dv, base, fields, v) {
16276
16276
  function createStruct(t) {
16277
16277
  const { fields, size, maxEffectiveAlign } = computeStructLayout(t);
16278
16278
  return {
16279
- __struct: t,
16279
+ fields,
16280
16280
  size,
16281
16281
  structAlign: maxEffectiveAlign,
16282
16282
  decode: (p) => {
@@ -16305,6 +16305,14 @@ function createStruct(t) {
16305
16305
  };
16306
16306
  }
16307
16307
  function buildDecl(kind, member, pack) {
16308
+ const declKind = member["#"];
16309
+ if (declKind !== void 0 && declKind !== kind)
16310
+ throw new Error(`ffi-struct: ${kind}() received a '${String(declKind)}' declaration (kind mismatch \u2014 use ${declKind}() for it)`);
16311
+ const declPack = member["#pack"];
16312
+ if (pack === void 0 && declPack !== void 0)
16313
+ pack = declPack;
16314
+ else if (pack !== void 0 && declPack !== void 0 && pack !== declPack)
16315
+ throw new Error(`ffi-struct: #pack conflict: opts.pack=${pack} vs declaration ${String(declPack)}`);
16308
16316
  const decl = { "#": kind };
16309
16317
  if (pack !== void 0)
16310
16318
  decl["#pack"] = pack;
@@ -16313,49 +16321,6 @@ function buildDecl(kind, member, pack) {
16313
16321
  decl[k] = v;
16314
16322
  return decl;
16315
16323
  }
16316
- function structArray(def) {
16317
- const { fields, size } = computeStructLayout(def.__struct);
16318
- const readN = (dv, n) => {
16319
- const out = [];
16320
- for (let i = 0; i < n; i++)
16321
- out.push(doDecode(dv, i * size, fields));
16322
- return out;
16323
- };
16324
- return {
16325
- encode: (els) => {
16326
- if (!Array.isArray(els) || els.length === 0)
16327
- throw new Error(`ffi-struct: structArray(def).encode(els) requires a non-empty element array (pass NULL for an empty pointer position)`);
16328
- const out = def.alloc(els.length);
16329
- for (let i = 0; i < els.length; i++)
16330
- def.encode(els[i], out, i * def.size);
16331
- return out;
16332
- },
16333
- decode: ((p, count) => {
16334
- if (count !== void 0 && (!Number.isInteger(count) || count < 0))
16335
- throw new Error(`ffi-struct: structArray.decode(p, count) requires a non-negative integer count, got ${count}`);
16336
- if (typeof p === "number") {
16337
- if (count === void 0)
16338
- throw new Error(`ffi-struct: structArray.decode(address, count) requires an explicit count (a bare address carries no length)`);
16339
- if (count === 0)
16340
- return [];
16341
- return readN(new DataView(ffi2.readBytes(p, count * size)), count);
16342
- }
16343
- let n;
16344
- if (count !== void 0) {
16345
- n = count;
16346
- if (n * size > p.byteLength)
16347
- throw new Error(`ffi-struct: structArray.decode: count ${n} \xD7 size ${size} = ${n * size} exceeds buffer byteLength ${p.byteLength}`);
16348
- } else {
16349
- if (p.byteLength % size !== 0)
16350
- throw new Error(`ffi-struct: structArray.decode: byteLength ${p.byteLength} is not a multiple of size ${size} (mixed buffer? pass count explicitly)`);
16351
- n = p.byteLength / size;
16352
- }
16353
- if (n === 0)
16354
- return [];
16355
- return readN(new DataView(p), n);
16356
- })
16357
- };
16358
- }
16359
16324
  function struct(a, b6, c) {
16360
16325
  const isNamed = typeof a === "string";
16361
16326
  const raw = isNamed ? b6 : a;
@@ -16364,21 +16329,28 @@ function struct(a, b6, c) {
16364
16329
  }
16365
16330
 
16366
16331
  // _build/lib/windows/structs.js
16367
- var RECT = /* @__PURE__ */ struct("RECT", {
16332
+ var RECT_DECL = {
16333
+ "#": "struct",
16368
16334
  left: "i32",
16369
16335
  top: "i32",
16370
16336
  right: "i32",
16371
16337
  bottom: "i32"
16372
- });
16373
- var POINT = /* @__PURE__ */ struct("POINT", {
16338
+ };
16339
+ var RECT = /* @__PURE__ */ struct("RECT", RECT_DECL);
16340
+ var POINT_DECL = {
16341
+ "#": "struct",
16374
16342
  x: "i32",
16375
16343
  y: "i32"
16376
- });
16377
- var SIZE = /* @__PURE__ */ struct("SIZE", {
16344
+ };
16345
+ var POINT = /* @__PURE__ */ struct("POINT", POINT_DECL);
16346
+ var SIZE_DECL = {
16347
+ "#": "struct",
16378
16348
  cx: "i32",
16379
16349
  cy: "i32"
16380
- });
16381
- var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16350
+ };
16351
+ var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
16352
+ var LOGFONTW_DECL = {
16353
+ "#": "struct",
16382
16354
  lfHeight: "i32",
16383
16355
  lfWidth: "i32",
16384
16356
  lfEscapement: "i32",
@@ -16393,8 +16365,10 @@ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16393
16365
  lfQuality: "u8",
16394
16366
  lfPitchAndFamily: "u8",
16395
16367
  lfFaceName: "u16[32]@utf-16le"
16396
- });
16397
- var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16368
+ };
16369
+ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
16370
+ var OPENFILENAMEW_DECL = {
16371
+ "#": "struct",
16398
16372
  lStructSize: "u32",
16399
16373
  hwndOwner: "<HWND>ptr",
16400
16374
  hInstance: "<HMODULE>ptr",
@@ -16418,8 +16392,10 @@ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16418
16392
  pvReserved: "<>ptr",
16419
16393
  dwReserved: "u32",
16420
16394
  FlagsEx: "u32"
16421
- });
16422
- var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16395
+ };
16396
+ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", OPENFILENAMEW_DECL);
16397
+ var BROWSEINFOW_DECL = {
16398
+ "#": "struct",
16423
16399
  hwndOwner: "<HWND>ptr",
16424
16400
  pidlRoot: "<>ptr",
16425
16401
  pszDisplayName: "<>ptr",
@@ -16428,13 +16404,17 @@ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16428
16404
  lpfn: "<>ptr",
16429
16405
  lParam: "<>ptr",
16430
16406
  iImage: "i32"
16431
- });
16432
- var NMHDR = /* @__PURE__ */ struct("NMHDR", {
16407
+ };
16408
+ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", BROWSEINFOW_DECL);
16409
+ var NMHDR_DECL = {
16410
+ "#": "struct",
16433
16411
  hwndFrom: "<HWND>ptr",
16434
16412
  idFrom: "<>ptr",
16435
16413
  code: "i32"
16436
- });
16437
- var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16414
+ };
16415
+ var NMHDR = /* @__PURE__ */ struct("NMHDR", NMHDR_DECL);
16416
+ var SYSTEMTIME_DECL = {
16417
+ "#": "struct",
16438
16418
  wYear: "u16",
16439
16419
  wMonth: "u16",
16440
16420
  wDayOfWeek: "u16",
@@ -16443,35 +16423,44 @@ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16443
16423
  wMinute: "u16",
16444
16424
  wSecond: "u16",
16445
16425
  wMilliseconds: "u16"
16446
- });
16447
- var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", {
16448
- hdr: NMHDR.__struct,
16426
+ };
16427
+ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", SYSTEMTIME_DECL);
16428
+ var NMDATETIMECHANGE_DECL = {
16429
+ "#": "struct",
16430
+ hdr: NMHDR_DECL,
16449
16431
  dwFlags: "u32",
16450
- st: SYSTEMTIME.__struct
16451
- });
16452
- var LITEM = /* @__PURE__ */ struct("LITEM", {
16432
+ st: SYSTEMTIME_DECL
16433
+ };
16434
+ var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", NMDATETIMECHANGE_DECL);
16435
+ var LITEM_DECL = {
16436
+ "#": "struct",
16453
16437
  mask: "u32",
16454
16438
  iLink: "i32",
16455
16439
  state: "u32",
16456
16440
  stateMask: "u32",
16457
16441
  szID: "u16[48]@utf-16le",
16458
16442
  szUrl: "u16[2084]@utf-16le"
16459
- });
16460
- var NMLINK = /* @__PURE__ */ struct("NMLINK", {
16461
- hdr: NMHDR.__struct,
16462
- item: LITEM.__struct
16463
- });
16464
- var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", {
16465
- hdr: NMHDR.__struct,
16443
+ };
16444
+ var NMLINK_DECL = {
16445
+ "#": "struct",
16446
+ hdr: NMHDR_DECL,
16447
+ item: LITEM_DECL
16448
+ };
16449
+ var NMLINK = /* @__PURE__ */ struct("NMLINK", NMLINK_DECL);
16450
+ var NMCUSTOMDRAW_DECL = {
16451
+ "#": "struct",
16452
+ hdr: NMHDR_DECL,
16466
16453
  dwDrawStage: "u32",
16467
16454
  hdc: "<HDC>ptr",
16468
16455
  rc: "i32[4]",
16469
16456
  dwItemSpec: "<>ptr",
16470
16457
  uItemState: "u32",
16471
16458
  lItemlParam: "<>ptr"
16472
- });
16473
- var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16474
- hdr: NMHDR.__struct,
16459
+ };
16460
+ var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", NMCUSTOMDRAW_DECL);
16461
+ var NMLVCUSTOMDRAW_DECL = {
16462
+ "#": "struct",
16463
+ hdr: NMHDR_DECL,
16475
16464
  dwDrawStage: "u32",
16476
16465
  hdc: "<HDC>ptr",
16477
16466
  rc: "i32[4]",
@@ -16482,9 +16471,11 @@ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16482
16471
  clrTextBk: "u32",
16483
16472
  iSubItem: "i32",
16484
16473
  dwItemType: "u32"
16485
- });
16486
- var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16487
- hdr: NMHDR.__struct,
16474
+ };
16475
+ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", NMLVCUSTOMDRAW_DECL);
16476
+ var NMLISTVIEW_DECL = {
16477
+ "#": "struct",
16478
+ hdr: NMHDR_DECL,
16488
16479
  iItem: "i32",
16489
16480
  iSubItem: "i32",
16490
16481
  uNewState: "u32",
@@ -16492,8 +16483,10 @@ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16492
16483
  uChanged: "u32",
16493
16484
  ptAction: "i32[2]",
16494
16485
  lParam: "<>ptr"
16495
- });
16496
- var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16486
+ };
16487
+ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", NMLISTVIEW_DECL);
16488
+ var TCITEMW_DECL = {
16489
+ "#": "struct",
16497
16490
  mask: "u32",
16498
16491
  dwState: "u32",
16499
16492
  dwStateMask: "u32",
@@ -16501,8 +16494,10 @@ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16501
16494
  cchTextMax: "i32",
16502
16495
  iImage: "i32",
16503
16496
  lParam: "<>ptr"
16504
- });
16505
- var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16497
+ };
16498
+ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", TCITEMW_DECL);
16499
+ var TVITEM_DECL = {
16500
+ "#": "struct",
16506
16501
  mask: "u32",
16507
16502
  hItem: "<>ptr",
16508
16503
  state: "u32",
@@ -16513,20 +16508,26 @@ var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16513
16508
  iSelectedImage: "i32",
16514
16509
  cChildren: "i32",
16515
16510
  lParam: "<>ptr"
16516
- });
16517
- var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", {
16511
+ };
16512
+ var TVITEM = /* @__PURE__ */ struct("TVITEM", TVITEM_DECL);
16513
+ var TVINSERTSTRUCT_DECL = {
16514
+ "#": "struct",
16518
16515
  hParent: "<>ptr",
16519
16516
  hInsertAfter: "<>ptr",
16520
- item: TVITEM.__struct
16521
- });
16522
- var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", {
16517
+ item: TVITEM_DECL
16518
+ };
16519
+ var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", TVINSERTSTRUCT_DECL);
16520
+ var LVHITTESTINFO_DECL = {
16521
+ "#": "struct",
16523
16522
  pt: "i32[2]",
16524
16523
  flags: "u32",
16525
16524
  iItem: "i32",
16526
16525
  iSubItem: "i32",
16527
16526
  iGroup: "i32"
16528
- });
16529
- var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16527
+ };
16528
+ var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", LVHITTESTINFO_DECL);
16529
+ var LVITEMW_DECL = {
16530
+ "#": "struct",
16530
16531
  mask: "u32",
16531
16532
  iItem: "i32",
16532
16533
  iSubItem: "i32",
@@ -16542,8 +16543,10 @@ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16542
16543
  puColumns: "<>ptr",
16543
16544
  piColFmt: "<>ptr",
16544
16545
  iGroup: "i32"
16545
- });
16546
- var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16546
+ };
16547
+ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", LVITEMW_DECL);
16548
+ var LVCOLUMNW_DECL = {
16549
+ "#": "struct",
16547
16550
  mask: "u32",
16548
16551
  fmt: "i32",
16549
16552
  cx: "i32",
@@ -16555,23 +16558,16 @@ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16555
16558
  cxMin: "i32",
16556
16559
  cxDefault: "i32",
16557
16560
  cxIdeal: "i32"
16558
- });
16559
- var MSG = /* @__PURE__ */ struct("MSG", {
16560
- hwnd: "<HWND>ptr",
16561
- message: "u32",
16562
- wParam: "<>ptr",
16563
- lParam: "<>ptr",
16564
- time: "u32",
16565
- pt: POINT.__struct
16566
- });
16567
- var PAINTSTRUCT = /* @__PURE__ */ struct("PAINTSTRUCT", {
16568
- hdc: "<HDC>ptr",
16569
- fErase: "i32",
16570
- rcPaint: RECT.__struct,
16571
- fRestore: "i32",
16572
- fIncUpdate: "i32",
16573
- rgbReserved: "u8[32]"
16574
- });
16561
+ };
16562
+ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
16563
+ var NOTIFYICONIDENTIFIER_DECL = {
16564
+ "#": "struct",
16565
+ cbSize: "u32",
16566
+ hWnd: "<HWND>ptr",
16567
+ uID: "u32",
16568
+ guidItem: "u32[4]"
16569
+ };
16570
+ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
16575
16571
 
16576
16572
  // _build/lib/windows/user32.js
16577
16573
  var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
@@ -16605,7 +16601,6 @@ import * as os4 from "os";
16605
16601
 
16606
16602
  // _build/lib/windows/gdi32.js
16607
16603
  var b2 = (name, sig, encoders) => bind("gdi32.dll", name, sig, encoders);
16608
- var POINTArr = structArray(POINT);
16609
16604
  var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
16610
16605
  var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
16611
16606
  var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
@@ -16638,14 +16633,14 @@ function applyProps(instance, newProps, _oldProps) {
16638
16633
  gui.ShowWindow(
16639
16634
  hwnd,
16640
16635
  newProps.hidden ? 0 : 5
16641
- /* gui.ShowWindowCmd.SHOW */
16636
+ /* ShowWindowCmd.SHOW */
16642
16637
  );
16643
16638
  }
16644
16639
  if ("visible" in newProps) {
16645
16640
  gui.ShowWindow(
16646
16641
  hwnd,
16647
16642
  newProps.visible ? 5 : 0
16648
- /* gui.ShowWindowCmd.HIDE */
16643
+ /* ShowWindowCmd.HIDE */
16649
16644
  );
16650
16645
  }
16651
16646
  }
@@ -16741,7 +16736,7 @@ function measureText(hdc, text, maxWidth) {
16741
16736
  -1,
16742
16737
  r.ptr,
16743
16738
  1024
16744
- /* gui.DrawTextFlag.CALCRECT */
16739
+ /* DrawTextFlag.CALCRECT */
16745
16740
  );
16746
16741
  const { right, bottom } = RECT.decode(r);
16747
16742
  return { width: right, height: bottom };
@@ -16789,7 +16784,7 @@ function setupWindowProc(instance, hwnd) {
16789
16784
  const oldProc = GetWindowLongPtr(
16790
16785
  hwnd,
16791
16786
  -4
16792
- /* gui.Gwlp.WNDPROC */
16787
+ /* Gwlp.WNDPROC */
16793
16788
  );
16794
16789
  instancesByHwnd.set(hwnd, instance);
16795
16790
  gui3.SetWindowProc(hwnd, (hwnd2, msg, wParam, lParam) => {
@@ -16877,7 +16872,7 @@ function runFlexLayout(inst) {
16877
16872
  r.width * scaleFactor,
16878
16873
  r.height * scaleFactor,
16879
16874
  64
16880
- /* gui.SetWindowPosFlag.SWP_SHOWWINDOW */
16875
+ /* SetWindowPosFlag.SWP_SHOWWINDOW */
16881
16876
  );
16882
16877
  InvalidateRect(child.hwnd, NULL, 1);
16883
16878
  child.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
@@ -17033,7 +17028,7 @@ var hostConfig = {
17033
17028
  gui3.ShowWindow(
17034
17029
  instance.hwnd,
17035
17030
  0
17036
- /* gui.ShowWindowCmd.HIDE */
17031
+ /* ShowWindowCmd.HIDE */
17037
17032
  );
17038
17033
  },
17039
17034
  hideTextInstance(instance) {
@@ -17041,7 +17036,7 @@ var hostConfig = {
17041
17036
  gui3.ShowWindow(
17042
17037
  instance.hwnd,
17043
17038
  0
17044
- /* gui.ShowWindowCmd.HIDE */
17039
+ /* ShowWindowCmd.HIDE */
17045
17040
  );
17046
17041
  },
17047
17042
  unhideInstance(instance, _props) {
@@ -17049,7 +17044,7 @@ var hostConfig = {
17049
17044
  gui3.ShowWindow(
17050
17045
  instance.hwnd,
17051
17046
  5
17052
- /* gui.ShowWindowCmd.SHOW */
17047
+ /* ShowWindowCmd.SHOW */
17053
17048
  );
17054
17049
  },
17055
17050
  unhideTextInstance(instance, _text) {
@@ -17057,7 +17052,7 @@ var hostConfig = {
17057
17052
  gui3.ShowWindow(
17058
17053
  instance.hwnd,
17059
17054
  5
17060
- /* gui.ShowWindowCmd.SHOW */
17055
+ /* ShowWindowCmd.SHOW */
17061
17056
  );
17062
17057
  },
17063
17058
  shouldSetTextContent(_type, props) {
@@ -17485,7 +17480,7 @@ function getCellFont(hwnd, style) {
17485
17480
  ...base,
17486
17481
  ...style.bold ? {
17487
17482
  lfWeight: 700
17488
- /* gui.FontWeight.BOLD */
17483
+ /* FontWeight.BOLD */
17489
17484
  } : {},
17490
17485
  ...style.italic ? { lfItalic: 1 } : {},
17491
17486
  ...style.underline ? { lfUnderline: 1 } : {}
@@ -17607,7 +17602,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
17607
17602
  4150,
17608
17603
  0,
17609
17604
  32 | 1 | 65536
17610
- /* gui.LvExStyle.DOUBLEBUFFER */
17605
+ /* LvExStyle.DOUBLEBUFFER */
17611
17606
  );
17612
17607
  const n = columns.length;
17613
17608
  for (let j = 0; j < n; j++) {
@@ -17652,7 +17647,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
17652
17647
  4126,
17653
17648
  j,
17654
17649
  -2
17655
- /* gui.LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17650
+ /* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17656
17651
  );
17657
17652
  }
17658
17653
  }
@@ -17794,7 +17789,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17794
17789
  natW,
17795
17790
  natH,
17796
17791
  4
17797
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17792
+ /* SetWindowPosFlag.SWP_NOZORDER */
17798
17793
  );
17799
17794
  forceFlexLayout(content);
17800
17795
  if (natW > svW) {
@@ -17833,7 +17828,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17833
17828
  0,
17834
17829
  0,
17835
17830
  1 | 4
17836
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17831
+ /* SetWindowPosFlag.SWP_NOZORDER */
17837
17832
  );
17838
17833
  gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
17839
17834
  }
@@ -17899,7 +17894,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17899
17894
  handleScroll(
17900
17895
  e,
17901
17896
  1
17902
- /* gui.ScrollBar.VERT */
17897
+ /* ScrollBar.VERT */
17903
17898
  );
17904
17899
  return 0;
17905
17900
  }
@@ -17907,7 +17902,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17907
17902
  handleScroll(
17908
17903
  e,
17909
17904
  0
17910
- /* gui.ScrollBar.HORZ */
17905
+ /* ScrollBar.HORZ */
17911
17906
  );
17912
17907
  return 0;
17913
17908
  }
@@ -18071,7 +18066,7 @@ function deleteAllItems(hTree) {
18071
18066
  4353,
18072
18067
  1,
18073
18068
  -65536
18074
- /* gui.TvInsertAfter.ROOT */
18069
+ /* TvInsertAfter.ROOT */
18075
18070
  );
18076
18071
  }
18077
18072
  var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
@@ -18103,7 +18098,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18103
18098
  4396,
18104
18099
  0,
18105
18100
  4
18106
- /* gui.TvExStyle.DOUBLEBUFFER */
18101
+ /* TvExStyle.DOUBLEBUFFER */
18107
18102
  );
18108
18103
  }, []);
18109
18104
  (0, import_react16.useEffect)(() => {
@@ -18145,9 +18140,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18145
18140
  var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18146
18141
 
18147
18142
  // _build/lib/windows/shell32.js
18148
- var b4 = (name, sig) => bind("shell32.dll", name, sig);
18143
+ var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18149
18144
  var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18150
18145
  var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18146
+ var Shell_NotifyIconGetRect = (() => {
18147
+ try {
18148
+ return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18149
+ } catch {
18150
+ return null;
18151
+ }
18152
+ })();
18151
18153
 
18152
18154
  // _build/lib/windows/ole32.js
18153
18155
  var b5 = (name, sig) => bind("ole32.dll", name, sig);
@@ -1,14 +1,14 @@
1
1
  import '../lib/polyfill.js'
2
2
  import { useState } from 'react'
3
3
  import { Button, Input, createRoot } from '../lib/react-qw/index.js'
4
- import * as gui from 'gui'
4
+ import { WindowStyle } from '../constants'
5
5
 
6
6
  function Counter() {
7
7
  const [count, setCount] = useState(0)
8
8
  return (
9
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
9
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
10
10
  style={{ flexDirection: 'column', gap: 8, flexGrow: 1 }}>
11
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
11
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
12
12
  style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
13
13
  <Button onClick={() => setCount(c => c + 1)}>Count: {count}</Button>
14
14
  <Button onClick={() => setCount(0)}>Reset</Button>
@@ -23,10 +23,10 @@ function Logger() {
23
23
  const [logs, setLogs] = useState<string[]>([])
24
24
  const add = () => setLogs(prev => [...prev, `log ${prev.length + 1}`])
25
25
  return (
26
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
26
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
27
27
  style={{ flexDirection: 'column', gap: 8, flexGrow: 1 }}>
28
28
  <Button onClick={add}>Add Log</Button>
29
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
29
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
30
30
  style={{ flexDirection: 'column', gap: 4, flexGrow: 1 }}>
31
31
  {logs.map((l, i) => <w key={String(i)} type="STATIC" text={l} />)}
32
32
  </w>