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
@@ -16278,7 +16278,7 @@ function doEncode(dv, base, fields, v) {
16278
16278
  function createStruct(t) {
16279
16279
  const { fields, size, maxEffectiveAlign } = computeStructLayout(t);
16280
16280
  return {
16281
- __struct: t,
16281
+ fields,
16282
16282
  size,
16283
16283
  structAlign: maxEffectiveAlign,
16284
16284
  decode: (p) => {
@@ -16307,6 +16307,14 @@ function createStruct(t) {
16307
16307
  };
16308
16308
  }
16309
16309
  function buildDecl(kind, member, pack) {
16310
+ const declKind = member["#"];
16311
+ if (declKind !== void 0 && declKind !== kind)
16312
+ throw new Error(`ffi-struct: ${kind}() received a '${String(declKind)}' declaration (kind mismatch \u2014 use ${declKind}() for it)`);
16313
+ const declPack = member["#pack"];
16314
+ if (pack === void 0 && declPack !== void 0)
16315
+ pack = declPack;
16316
+ else if (pack !== void 0 && declPack !== void 0 && pack !== declPack)
16317
+ throw new Error(`ffi-struct: #pack conflict: opts.pack=${pack} vs declaration ${String(declPack)}`);
16310
16318
  const decl = { "#": kind };
16311
16319
  if (pack !== void 0)
16312
16320
  decl["#pack"] = pack;
@@ -16315,49 +16323,6 @@ function buildDecl(kind, member, pack) {
16315
16323
  decl[k] = v;
16316
16324
  return decl;
16317
16325
  }
16318
- function structArray(def) {
16319
- const { fields, size } = computeStructLayout(def.__struct);
16320
- const readN = (dv, n) => {
16321
- const out = [];
16322
- for (let i = 0; i < n; i++)
16323
- out.push(doDecode(dv, i * size, fields));
16324
- return out;
16325
- };
16326
- return {
16327
- encode: (els) => {
16328
- if (!Array.isArray(els) || els.length === 0)
16329
- throw new Error(`ffi-struct: structArray(def).encode(els) requires a non-empty element array (pass NULL for an empty pointer position)`);
16330
- const out = def.alloc(els.length);
16331
- for (let i = 0; i < els.length; i++)
16332
- def.encode(els[i], out, i * def.size);
16333
- return out;
16334
- },
16335
- decode: ((p, count) => {
16336
- if (count !== void 0 && (!Number.isInteger(count) || count < 0))
16337
- throw new Error(`ffi-struct: structArray.decode(p, count) requires a non-negative integer count, got ${count}`);
16338
- if (typeof p === "number") {
16339
- if (count === void 0)
16340
- throw new Error(`ffi-struct: structArray.decode(address, count) requires an explicit count (a bare address carries no length)`);
16341
- if (count === 0)
16342
- return [];
16343
- return readN(new DataView(ffi2.readBytes(p, count * size)), count);
16344
- }
16345
- let n;
16346
- if (count !== void 0) {
16347
- n = count;
16348
- if (n * size > p.byteLength)
16349
- throw new Error(`ffi-struct: structArray.decode: count ${n} \xD7 size ${size} = ${n * size} exceeds buffer byteLength ${p.byteLength}`);
16350
- } else {
16351
- if (p.byteLength % size !== 0)
16352
- throw new Error(`ffi-struct: structArray.decode: byteLength ${p.byteLength} is not a multiple of size ${size} (mixed buffer? pass count explicitly)`);
16353
- n = p.byteLength / size;
16354
- }
16355
- if (n === 0)
16356
- return [];
16357
- return readN(new DataView(p), n);
16358
- })
16359
- };
16360
- }
16361
16326
  function struct(a, b6, c) {
16362
16327
  const isNamed = typeof a === "string";
16363
16328
  const raw = isNamed ? b6 : a;
@@ -16366,21 +16331,28 @@ function struct(a, b6, c) {
16366
16331
  }
16367
16332
 
16368
16333
  // _build/lib/windows/structs.js
16369
- var RECT = /* @__PURE__ */ struct("RECT", {
16334
+ var RECT_DECL = {
16335
+ "#": "struct",
16370
16336
  left: "i32",
16371
16337
  top: "i32",
16372
16338
  right: "i32",
16373
16339
  bottom: "i32"
16374
- });
16375
- var POINT = /* @__PURE__ */ struct("POINT", {
16340
+ };
16341
+ var RECT = /* @__PURE__ */ struct("RECT", RECT_DECL);
16342
+ var POINT_DECL = {
16343
+ "#": "struct",
16376
16344
  x: "i32",
16377
16345
  y: "i32"
16378
- });
16379
- var SIZE = /* @__PURE__ */ struct("SIZE", {
16346
+ };
16347
+ var POINT = /* @__PURE__ */ struct("POINT", POINT_DECL);
16348
+ var SIZE_DECL = {
16349
+ "#": "struct",
16380
16350
  cx: "i32",
16381
16351
  cy: "i32"
16382
- });
16383
- var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16352
+ };
16353
+ var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
16354
+ var LOGFONTW_DECL = {
16355
+ "#": "struct",
16384
16356
  lfHeight: "i32",
16385
16357
  lfWidth: "i32",
16386
16358
  lfEscapement: "i32",
@@ -16395,8 +16367,10 @@ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16395
16367
  lfQuality: "u8",
16396
16368
  lfPitchAndFamily: "u8",
16397
16369
  lfFaceName: "u16[32]@utf-16le"
16398
- });
16399
- var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16370
+ };
16371
+ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
16372
+ var OPENFILENAMEW_DECL = {
16373
+ "#": "struct",
16400
16374
  lStructSize: "u32",
16401
16375
  hwndOwner: "<HWND>ptr",
16402
16376
  hInstance: "<HMODULE>ptr",
@@ -16420,8 +16394,10 @@ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16420
16394
  pvReserved: "<>ptr",
16421
16395
  dwReserved: "u32",
16422
16396
  FlagsEx: "u32"
16423
- });
16424
- var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16397
+ };
16398
+ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", OPENFILENAMEW_DECL);
16399
+ var BROWSEINFOW_DECL = {
16400
+ "#": "struct",
16425
16401
  hwndOwner: "<HWND>ptr",
16426
16402
  pidlRoot: "<>ptr",
16427
16403
  pszDisplayName: "<>ptr",
@@ -16430,13 +16406,17 @@ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16430
16406
  lpfn: "<>ptr",
16431
16407
  lParam: "<>ptr",
16432
16408
  iImage: "i32"
16433
- });
16434
- var NMHDR = /* @__PURE__ */ struct("NMHDR", {
16409
+ };
16410
+ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", BROWSEINFOW_DECL);
16411
+ var NMHDR_DECL = {
16412
+ "#": "struct",
16435
16413
  hwndFrom: "<HWND>ptr",
16436
16414
  idFrom: "<>ptr",
16437
16415
  code: "i32"
16438
- });
16439
- var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16416
+ };
16417
+ var NMHDR = /* @__PURE__ */ struct("NMHDR", NMHDR_DECL);
16418
+ var SYSTEMTIME_DECL = {
16419
+ "#": "struct",
16440
16420
  wYear: "u16",
16441
16421
  wMonth: "u16",
16442
16422
  wDayOfWeek: "u16",
@@ -16445,35 +16425,44 @@ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16445
16425
  wMinute: "u16",
16446
16426
  wSecond: "u16",
16447
16427
  wMilliseconds: "u16"
16448
- });
16449
- var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", {
16450
- hdr: NMHDR.__struct,
16428
+ };
16429
+ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", SYSTEMTIME_DECL);
16430
+ var NMDATETIMECHANGE_DECL = {
16431
+ "#": "struct",
16432
+ hdr: NMHDR_DECL,
16451
16433
  dwFlags: "u32",
16452
- st: SYSTEMTIME.__struct
16453
- });
16454
- var LITEM = /* @__PURE__ */ struct("LITEM", {
16434
+ st: SYSTEMTIME_DECL
16435
+ };
16436
+ var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", NMDATETIMECHANGE_DECL);
16437
+ var LITEM_DECL = {
16438
+ "#": "struct",
16455
16439
  mask: "u32",
16456
16440
  iLink: "i32",
16457
16441
  state: "u32",
16458
16442
  stateMask: "u32",
16459
16443
  szID: "u16[48]@utf-16le",
16460
16444
  szUrl: "u16[2084]@utf-16le"
16461
- });
16462
- var NMLINK = /* @__PURE__ */ struct("NMLINK", {
16463
- hdr: NMHDR.__struct,
16464
- item: LITEM.__struct
16465
- });
16466
- var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", {
16467
- hdr: NMHDR.__struct,
16445
+ };
16446
+ var NMLINK_DECL = {
16447
+ "#": "struct",
16448
+ hdr: NMHDR_DECL,
16449
+ item: LITEM_DECL
16450
+ };
16451
+ var NMLINK = /* @__PURE__ */ struct("NMLINK", NMLINK_DECL);
16452
+ var NMCUSTOMDRAW_DECL = {
16453
+ "#": "struct",
16454
+ hdr: NMHDR_DECL,
16468
16455
  dwDrawStage: "u32",
16469
16456
  hdc: "<HDC>ptr",
16470
16457
  rc: "i32[4]",
16471
16458
  dwItemSpec: "<>ptr",
16472
16459
  uItemState: "u32",
16473
16460
  lItemlParam: "<>ptr"
16474
- });
16475
- var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16476
- hdr: NMHDR.__struct,
16461
+ };
16462
+ var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", NMCUSTOMDRAW_DECL);
16463
+ var NMLVCUSTOMDRAW_DECL = {
16464
+ "#": "struct",
16465
+ hdr: NMHDR_DECL,
16477
16466
  dwDrawStage: "u32",
16478
16467
  hdc: "<HDC>ptr",
16479
16468
  rc: "i32[4]",
@@ -16484,9 +16473,11 @@ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16484
16473
  clrTextBk: "u32",
16485
16474
  iSubItem: "i32",
16486
16475
  dwItemType: "u32"
16487
- });
16488
- var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16489
- hdr: NMHDR.__struct,
16476
+ };
16477
+ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", NMLVCUSTOMDRAW_DECL);
16478
+ var NMLISTVIEW_DECL = {
16479
+ "#": "struct",
16480
+ hdr: NMHDR_DECL,
16490
16481
  iItem: "i32",
16491
16482
  iSubItem: "i32",
16492
16483
  uNewState: "u32",
@@ -16494,8 +16485,10 @@ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16494
16485
  uChanged: "u32",
16495
16486
  ptAction: "i32[2]",
16496
16487
  lParam: "<>ptr"
16497
- });
16498
- var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16488
+ };
16489
+ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", NMLISTVIEW_DECL);
16490
+ var TCITEMW_DECL = {
16491
+ "#": "struct",
16499
16492
  mask: "u32",
16500
16493
  dwState: "u32",
16501
16494
  dwStateMask: "u32",
@@ -16503,8 +16496,10 @@ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16503
16496
  cchTextMax: "i32",
16504
16497
  iImage: "i32",
16505
16498
  lParam: "<>ptr"
16506
- });
16507
- var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16499
+ };
16500
+ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", TCITEMW_DECL);
16501
+ var TVITEM_DECL = {
16502
+ "#": "struct",
16508
16503
  mask: "u32",
16509
16504
  hItem: "<>ptr",
16510
16505
  state: "u32",
@@ -16515,20 +16510,26 @@ var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16515
16510
  iSelectedImage: "i32",
16516
16511
  cChildren: "i32",
16517
16512
  lParam: "<>ptr"
16518
- });
16519
- var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", {
16513
+ };
16514
+ var TVITEM = /* @__PURE__ */ struct("TVITEM", TVITEM_DECL);
16515
+ var TVINSERTSTRUCT_DECL = {
16516
+ "#": "struct",
16520
16517
  hParent: "<>ptr",
16521
16518
  hInsertAfter: "<>ptr",
16522
- item: TVITEM.__struct
16523
- });
16524
- var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", {
16519
+ item: TVITEM_DECL
16520
+ };
16521
+ var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", TVINSERTSTRUCT_DECL);
16522
+ var LVHITTESTINFO_DECL = {
16523
+ "#": "struct",
16525
16524
  pt: "i32[2]",
16526
16525
  flags: "u32",
16527
16526
  iItem: "i32",
16528
16527
  iSubItem: "i32",
16529
16528
  iGroup: "i32"
16530
- });
16531
- var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16529
+ };
16530
+ var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", LVHITTESTINFO_DECL);
16531
+ var LVITEMW_DECL = {
16532
+ "#": "struct",
16532
16533
  mask: "u32",
16533
16534
  iItem: "i32",
16534
16535
  iSubItem: "i32",
@@ -16544,8 +16545,10 @@ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16544
16545
  puColumns: "<>ptr",
16545
16546
  piColFmt: "<>ptr",
16546
16547
  iGroup: "i32"
16547
- });
16548
- var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16548
+ };
16549
+ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", LVITEMW_DECL);
16550
+ var LVCOLUMNW_DECL = {
16551
+ "#": "struct",
16549
16552
  mask: "u32",
16550
16553
  fmt: "i32",
16551
16554
  cx: "i32",
@@ -16557,23 +16560,16 @@ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16557
16560
  cxMin: "i32",
16558
16561
  cxDefault: "i32",
16559
16562
  cxIdeal: "i32"
16560
- });
16561
- var MSG = /* @__PURE__ */ struct("MSG", {
16562
- hwnd: "<HWND>ptr",
16563
- message: "u32",
16564
- wParam: "<>ptr",
16565
- lParam: "<>ptr",
16566
- time: "u32",
16567
- pt: POINT.__struct
16568
- });
16569
- var PAINTSTRUCT = /* @__PURE__ */ struct("PAINTSTRUCT", {
16570
- hdc: "<HDC>ptr",
16571
- fErase: "i32",
16572
- rcPaint: RECT.__struct,
16573
- fRestore: "i32",
16574
- fIncUpdate: "i32",
16575
- rgbReserved: "u8[32]"
16576
- });
16563
+ };
16564
+ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
16565
+ var NOTIFYICONIDENTIFIER_DECL = {
16566
+ "#": "struct",
16567
+ cbSize: "u32",
16568
+ hWnd: "<HWND>ptr",
16569
+ uID: "u32",
16570
+ guidItem: "u32[4]"
16571
+ };
16572
+ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
16577
16573
 
16578
16574
  // _build/lib/windows/user32.js
16579
16575
  var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
@@ -16609,7 +16605,6 @@ import * as os4 from "os";
16609
16605
 
16610
16606
  // _build/lib/windows/gdi32.js
16611
16607
  var b2 = (name, sig, encoders) => bind("gdi32.dll", name, sig, encoders);
16612
- var POINTArr = structArray(POINT);
16613
16608
  var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
16614
16609
  var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
16615
16610
  var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
@@ -16644,14 +16639,14 @@ function applyProps(instance, newProps, _oldProps) {
16644
16639
  gui.ShowWindow(
16645
16640
  hwnd,
16646
16641
  newProps.hidden ? 0 : 5
16647
- /* gui.ShowWindowCmd.SHOW */
16642
+ /* ShowWindowCmd.SHOW */
16648
16643
  );
16649
16644
  }
16650
16645
  if ("visible" in newProps) {
16651
16646
  gui.ShowWindow(
16652
16647
  hwnd,
16653
16648
  newProps.visible ? 5 : 0
16654
- /* gui.ShowWindowCmd.HIDE */
16649
+ /* ShowWindowCmd.HIDE */
16655
16650
  );
16656
16651
  }
16657
16652
  }
@@ -16747,7 +16742,7 @@ function measureText(hdc, text, maxWidth) {
16747
16742
  -1,
16748
16743
  r.ptr,
16749
16744
  1024
16750
- /* gui.DrawTextFlag.CALCRECT */
16745
+ /* DrawTextFlag.CALCRECT */
16751
16746
  );
16752
16747
  const { right, bottom } = RECT.decode(r);
16753
16748
  return { width: right, height: bottom };
@@ -16795,7 +16790,7 @@ function setupWindowProc(instance, hwnd) {
16795
16790
  const oldProc = GetWindowLongPtr(
16796
16791
  hwnd,
16797
16792
  -4
16798
- /* gui.Gwlp.WNDPROC */
16793
+ /* Gwlp.WNDPROC */
16799
16794
  );
16800
16795
  instancesByHwnd.set(hwnd, instance);
16801
16796
  gui3.SetWindowProc(hwnd, (hwnd2, msg, wParam, lParam) => {
@@ -16883,7 +16878,7 @@ function runFlexLayout(inst) {
16883
16878
  r.width * scaleFactor,
16884
16879
  r.height * scaleFactor,
16885
16880
  64
16886
- /* gui.SetWindowPosFlag.SWP_SHOWWINDOW */
16881
+ /* SetWindowPosFlag.SWP_SHOWWINDOW */
16887
16882
  );
16888
16883
  InvalidateRect(child2.hwnd, NULL, 1);
16889
16884
  child2.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
@@ -17039,7 +17034,7 @@ var hostConfig = {
17039
17034
  gui3.ShowWindow(
17040
17035
  instance.hwnd,
17041
17036
  0
17042
- /* gui.ShowWindowCmd.HIDE */
17037
+ /* ShowWindowCmd.HIDE */
17043
17038
  );
17044
17039
  },
17045
17040
  hideTextInstance(instance) {
@@ -17047,7 +17042,7 @@ var hostConfig = {
17047
17042
  gui3.ShowWindow(
17048
17043
  instance.hwnd,
17049
17044
  0
17050
- /* gui.ShowWindowCmd.HIDE */
17045
+ /* ShowWindowCmd.HIDE */
17051
17046
  );
17052
17047
  },
17053
17048
  unhideInstance(instance, _props) {
@@ -17055,7 +17050,7 @@ var hostConfig = {
17055
17050
  gui3.ShowWindow(
17056
17051
  instance.hwnd,
17057
17052
  5
17058
- /* gui.ShowWindowCmd.SHOW */
17053
+ /* ShowWindowCmd.SHOW */
17059
17054
  );
17060
17055
  },
17061
17056
  unhideTextInstance(instance, _text) {
@@ -17063,7 +17058,7 @@ var hostConfig = {
17063
17058
  gui3.ShowWindow(
17064
17059
  instance.hwnd,
17065
17060
  5
17066
- /* gui.ShowWindowCmd.SHOW */
17061
+ /* ShowWindowCmd.SHOW */
17067
17062
  );
17068
17063
  },
17069
17064
  shouldSetTextContent(_type, props) {
@@ -17491,7 +17486,7 @@ function getCellFont(hwnd, style) {
17491
17486
  ...base,
17492
17487
  ...style.bold ? {
17493
17488
  lfWeight: 700
17494
- /* gui.FontWeight.BOLD */
17489
+ /* FontWeight.BOLD */
17495
17490
  } : {},
17496
17491
  ...style.italic ? { lfItalic: 1 } : {},
17497
17492
  ...style.underline ? { lfUnderline: 1 } : {}
@@ -17613,7 +17608,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns: c
17613
17608
  4150,
17614
17609
  0,
17615
17610
  32 | 1 | 65536
17616
- /* gui.LvExStyle.DOUBLEBUFFER */
17611
+ /* LvExStyle.DOUBLEBUFFER */
17617
17612
  );
17618
17613
  const n = columns2.length;
17619
17614
  for (let j = 0; j < n; j++) {
@@ -17658,7 +17653,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns: c
17658
17653
  4126,
17659
17654
  j,
17660
17655
  -2
17661
- /* gui.LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17656
+ /* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17662
17657
  );
17663
17658
  }
17664
17659
  }
@@ -17800,7 +17795,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17800
17795
  natW,
17801
17796
  natH,
17802
17797
  4
17803
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17798
+ /* SetWindowPosFlag.SWP_NOZORDER */
17804
17799
  );
17805
17800
  forceFlexLayout(content);
17806
17801
  if (natW > svW) {
@@ -17839,7 +17834,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17839
17834
  0,
17840
17835
  0,
17841
17836
  1 | 4
17842
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17837
+ /* SetWindowPosFlag.SWP_NOZORDER */
17843
17838
  );
17844
17839
  gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
17845
17840
  }
@@ -17905,7 +17900,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17905
17900
  handleScroll(
17906
17901
  e,
17907
17902
  1
17908
- /* gui.ScrollBar.VERT */
17903
+ /* ScrollBar.VERT */
17909
17904
  );
17910
17905
  return 0;
17911
17906
  }
@@ -17913,7 +17908,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17913
17908
  handleScroll(
17914
17909
  e,
17915
17910
  0
17916
- /* gui.ScrollBar.HORZ */
17911
+ /* ScrollBar.HORZ */
17917
17912
  );
17918
17913
  return 0;
17919
17914
  }
@@ -18077,7 +18072,7 @@ function deleteAllItems(hTree) {
18077
18072
  4353,
18078
18073
  1,
18079
18074
  -65536
18080
- /* gui.TvInsertAfter.ROOT */
18075
+ /* TvInsertAfter.ROOT */
18081
18076
  );
18082
18077
  }
18083
18078
  var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: data2, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
@@ -18109,7 +18104,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: dat
18109
18104
  4396,
18110
18105
  0,
18111
18106
  4
18112
- /* gui.TvExStyle.DOUBLEBUFFER */
18107
+ /* TvExStyle.DOUBLEBUFFER */
18113
18108
  );
18114
18109
  }, []);
18115
18110
  (0, import_react16.useEffect)(() => {
@@ -18151,9 +18146,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18151
18146
  var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18152
18147
 
18153
18148
  // _build/lib/windows/shell32.js
18154
- var b4 = (name, sig) => bind("shell32.dll", name, sig);
18149
+ var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18155
18150
  var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18156
18151
  var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18152
+ var Shell_NotifyIconGetRect = (() => {
18153
+ try {
18154
+ return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18155
+ } catch {
18156
+ return null;
18157
+ }
18158
+ })();
18157
18159
 
18158
18160
  // _build/lib/windows/ole32.js
18159
18161
  var b5 = (name, sig) => bind("ole32.dll", name, sig);
@@ -18405,7 +18407,7 @@ function runAll() {
18405
18407
  const lvNM = (code) => nm(HDR + 128, code);
18406
18408
  let m = lvNM(
18407
18409
  -2
18408
- /* gui.LvNotifyCode.CLICK */
18410
+ /* LvNotifyCode.CLICK */
18409
18411
  );
18410
18412
  m.dv.setInt32(HDR, 1, true);
18411
18413
  m.dv.setInt32(HDR + 4, 2, true);
@@ -18413,7 +18415,7 @@ function runAll() {
18413
18415
  expect("LV click(item=1,sub=2) \u89E6\u53D1 onCellClick", lvClicks.slice(), ["b@1"]);
18414
18416
  m = lvNM(
18415
18417
  -2
18416
- /* gui.LvNotifyCode.CLICK */
18418
+ /* LvNotifyCode.CLICK */
18417
18419
  );
18418
18420
  m.dv.setInt32(HDR, 0, true);
18419
18421
  m.dv.setInt32(HDR + 4, 0, true);
@@ -18421,7 +18423,7 @@ function runAll() {
18421
18423
  expect("LV click(sub=0, \u8BE5\u5217\u65E0 onCellClick) \u4E0D\u89E6\u53D1", lvClicks.slice(), ["b@1"]);
18422
18424
  m = lvNM(
18423
18425
  -2
18424
- /* gui.LvNotifyCode.CLICK */
18426
+ /* LvNotifyCode.CLICK */
18425
18427
  );
18426
18428
  m.dv.setInt32(HDR, 9, true);
18427
18429
  m.dv.setInt32(HDR + 4, 2, true);
@@ -18429,7 +18431,7 @@ function runAll() {
18429
18431
  expect("LV click(item \u8D8A\u754C) \u4E0D\u89E6\u53D1", lvClicks.slice(), ["b@1"]);
18430
18432
  m = lvNM(
18431
18433
  -2
18432
- /* gui.LvNotifyCode.CLICK */
18434
+ /* LvNotifyCode.CLICK */
18433
18435
  );
18434
18436
  m.dv.setInt32(HDR, 2, true);
18435
18437
  m.dv.setInt32(HDR + 4, 2, true);
@@ -18438,21 +18440,21 @@ function runAll() {
18438
18440
  const SEL = 2;
18439
18441
  m = lvNM(
18440
18442
  -100
18441
- /* gui.LvNotifyCode.ITEMCHANGING */
18443
+ /* LvNotifyCode.ITEMCHANGING */
18442
18444
  );
18443
18445
  m.dv.setUint32(HDR + 8, SEL, true);
18444
18446
  m.dv.setUint32(HDR + 12, 0, true);
18445
18447
  expect("LV ITEMCHANGING \u9009\u4E2D\u4F4D\u53D8\u5316 \u2192 \u62E6\u622A(1)", notify(lvW, m.b), 1);
18446
18448
  m = lvNM(
18447
18449
  -100
18448
- /* gui.LvNotifyCode.ITEMCHANGING */
18450
+ /* LvNotifyCode.ITEMCHANGING */
18449
18451
  );
18450
18452
  m.dv.setUint32(HDR + 8, 1, true);
18451
18453
  m.dv.setUint32(HDR + 12, 0, true);
18452
18454
  expect("LV ITEMCHANGING \u9009\u4E2D\u4F4D\u4E0D\u53D8 \u2192 \u653E\u884C(0)", notify(lvW, m.b), 0);
18453
18455
  m = lvNM(
18454
18456
  -100
18455
- /* gui.LvNotifyCode.ITEMCHANGING */
18457
+ /* LvNotifyCode.ITEMCHANGING */
18456
18458
  );
18457
18459
  m.dv.setUint32(HDR + 8, 2147483648 | SEL, true);
18458
18460
  m.dv.setUint32(HDR + 12, 2147483648, true);
@@ -18465,7 +18467,7 @@ function runAll() {
18465
18467
  const x = nm(
18466
18468
  cdEnd + 64,
18467
18469
  -12
18468
- /* gui.LvNotifyCode.CUSTOMDRAW */
18470
+ /* LvNotifyCode.CUSTOMDRAW */
18469
18471
  );
18470
18472
  x.dv.setUint32(cdStage, stage, true);
18471
18473
  setPtr(x.dv, cdHdc, memDc);
@@ -18477,26 +18479,26 @@ function runAll() {
18477
18479
  "LV CUSTOMDRAW PREPAINT \u2192 NOTIFYITEMDRAW",
18478
18480
  notify(lvW, cd(1, 0, 0).b),
18479
18481
  32
18480
- /* gui.CustomDrawFlag.NOTIFYITEMDRAW */
18482
+ /* CustomDrawFlag.NOTIFYITEMDRAW */
18481
18483
  );
18482
18484
  expect(
18483
18485
  "LV CUSTOMDRAW ITEMPREPAINT \u2192 NOTIFYSUBITEMDRAW",
18484
18486
  notify(lvW, cd(65537, 0, 0).b),
18485
18487
  32
18486
- /* gui.CustomDrawFlag.NOTIFYSUBITEMDRAW */
18488
+ /* CustomDrawFlag.NOTIFYSUBITEMDRAW */
18487
18489
  );
18488
18490
  expect(
18489
18491
  "LV CUSTOMDRAW SUBITEMPREPAINT(\u65E0\u6837\u5F0F\u5217) \u2192 DODEFAULT",
18490
18492
  notify(lvW, cd(196609, 1, 0).b),
18491
18493
  0
18492
- /* gui.CustomDrawFlag.DODEFAULT */
18494
+ /* CustomDrawFlag.DODEFAULT */
18493
18495
  );
18494
18496
  const sub = cd(196609, 1, 2);
18495
18497
  expect(
18496
18498
  "LV CUSTOMDRAW SUBITEMPREPAINT(\u6837\u5F0F\u5217, \u5E26\u5B57\u4F53) \u2192 NEWFONT",
18497
18499
  notify(lvW, sub.b),
18498
18500
  2
18499
- /* gui.CustomDrawFlag.NEWFONT */
18501
+ /* CustomDrawFlag.NEWFONT */
18500
18502
  );
18501
18503
  expect("LV CUSTOMDRAW \u5199\u56DE clrText", sub.dv.getUint32(lvText, true), 16711680);
18502
18504
  expect("LV CUSTOMDRAW \u5199\u56DE clrTextBk", sub.dv.getUint32(lvBk, true), 1122867);
@@ -18511,18 +18513,18 @@ function runAll() {
18511
18513
  };
18512
18514
  notify(linkW, lk(
18513
18515
  -2
18514
- /* gui.SysLinkNotifyCode.CLICK */
18516
+ /* SysLinkNotifyCode.CLICK */
18515
18517
  ).b);
18516
18518
  notify(linkW, lk(
18517
18519
  -4
18518
- /* gui.SysLinkNotifyCode.RETURN */
18520
+ /* SysLinkNotifyCode.RETURN */
18519
18521
  ).b);
18520
18522
  expect("Link CLICK/RETURN \u2192 onClick(url)", linkUrls.slice(), [URL, URL]);
18521
18523
  const dt = (flags) => {
18522
18524
  const x = nm(
18523
18525
  HDR + 4 + 16 + 8,
18524
18526
  -759
18525
- /* gui.DtNotifyCode.DATETIMECHANGE */
18527
+ /* DtNotifyCode.DATETIMECHANGE */
18526
18528
  );
18527
18529
  x.dv.setUint32(HDR, flags, true);
18528
18530
  const s = HDR + 4;
@@ -18538,11 +18540,11 @@ function runAll() {
18538
18540
  };
18539
18541
  notify(dtpW, dt(
18540
18542
  0
18541
- /* gui.DtFlag.GDT_VALID */
18543
+ /* DtFlag.GDT_VALID */
18542
18544
  ).b);
18543
18545
  notify(dtpW, dt(
18544
18546
  1
18545
- /* gui.DtFlag.GDT_NONE */
18547
+ /* DtFlag.GDT_NONE */
18546
18548
  ).b);
18547
18549
  expect("DTP DATETIMECHANGE \u2192 onChange(Date | null)", dtpVals.slice(), [new Date(2024, 1, 29, 13, 45, 59).getTime(), null]);
18548
18550
  const back = new ArrayBuffer(16);
@@ -18562,7 +18564,7 @@ function runAll() {
18562
18564
  notify(tabW, nm(
18563
18565
  HDR + 8,
18564
18566
  -552
18565
- /* gui.TcNotifyCode.SELCHANGING */
18567
+ /* TcNotifyCode.SELCHANGING */
18566
18568
  ).b);
18567
18569
  expect("Tab SELCHANGING \u2192 onChange(1)", tabSel.slice(), [1]);
18568
18570
  const tv = child(tvW);