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
@@ -16280,7 +16280,7 @@ function doEncode(dv, base, fields, v) {
16280
16280
  function createStruct(t) {
16281
16281
  const { fields, size, maxEffectiveAlign } = computeStructLayout(t);
16282
16282
  return {
16283
- __struct: t,
16283
+ fields,
16284
16284
  size,
16285
16285
  structAlign: maxEffectiveAlign,
16286
16286
  decode: (p) => {
@@ -16309,6 +16309,14 @@ function createStruct(t) {
16309
16309
  };
16310
16310
  }
16311
16311
  function buildDecl(kind, member, pack) {
16312
+ const declKind = member["#"];
16313
+ if (declKind !== void 0 && declKind !== kind)
16314
+ throw new Error(`ffi-struct: ${kind}() received a '${String(declKind)}' declaration (kind mismatch \u2014 use ${declKind}() for it)`);
16315
+ const declPack = member["#pack"];
16316
+ if (pack === void 0 && declPack !== void 0)
16317
+ pack = declPack;
16318
+ else if (pack !== void 0 && declPack !== void 0 && pack !== declPack)
16319
+ throw new Error(`ffi-struct: #pack conflict: opts.pack=${pack} vs declaration ${String(declPack)}`);
16312
16320
  const decl = { "#": kind };
16313
16321
  if (pack !== void 0)
16314
16322
  decl["#pack"] = pack;
@@ -16317,49 +16325,6 @@ function buildDecl(kind, member, pack) {
16317
16325
  decl[k] = v;
16318
16326
  return decl;
16319
16327
  }
16320
- function structArray(def) {
16321
- const { fields, size } = computeStructLayout(def.__struct);
16322
- const readN = (dv, n) => {
16323
- const out = [];
16324
- for (let i = 0; i < n; i++)
16325
- out.push(doDecode(dv, i * size, fields));
16326
- return out;
16327
- };
16328
- return {
16329
- encode: (els) => {
16330
- if (!Array.isArray(els) || els.length === 0)
16331
- throw new Error(`ffi-struct: structArray(def).encode(els) requires a non-empty element array (pass NULL for an empty pointer position)`);
16332
- const out = def.alloc(els.length);
16333
- for (let i = 0; i < els.length; i++)
16334
- def.encode(els[i], out, i * def.size);
16335
- return out;
16336
- },
16337
- decode: ((p, count) => {
16338
- if (count !== void 0 && (!Number.isInteger(count) || count < 0))
16339
- throw new Error(`ffi-struct: structArray.decode(p, count) requires a non-negative integer count, got ${count}`);
16340
- if (typeof p === "number") {
16341
- if (count === void 0)
16342
- throw new Error(`ffi-struct: structArray.decode(address, count) requires an explicit count (a bare address carries no length)`);
16343
- if (count === 0)
16344
- return [];
16345
- return readN(new DataView(ffi2.readBytes(p, count * size)), count);
16346
- }
16347
- let n;
16348
- if (count !== void 0) {
16349
- n = count;
16350
- if (n * size > p.byteLength)
16351
- throw new Error(`ffi-struct: structArray.decode: count ${n} \xD7 size ${size} = ${n * size} exceeds buffer byteLength ${p.byteLength}`);
16352
- } else {
16353
- if (p.byteLength % size !== 0)
16354
- throw new Error(`ffi-struct: structArray.decode: byteLength ${p.byteLength} is not a multiple of size ${size} (mixed buffer? pass count explicitly)`);
16355
- n = p.byteLength / size;
16356
- }
16357
- if (n === 0)
16358
- return [];
16359
- return readN(new DataView(p), n);
16360
- })
16361
- };
16362
- }
16363
16328
  function struct(a, b6, c) {
16364
16329
  const isNamed = typeof a === "string";
16365
16330
  const raw = isNamed ? b6 : a;
@@ -16368,21 +16333,28 @@ function struct(a, b6, c) {
16368
16333
  }
16369
16334
 
16370
16335
  // _build/lib/windows/structs.js
16371
- var RECT = /* @__PURE__ */ struct("RECT", {
16336
+ var RECT_DECL = {
16337
+ "#": "struct",
16372
16338
  left: "i32",
16373
16339
  top: "i32",
16374
16340
  right: "i32",
16375
16341
  bottom: "i32"
16376
- });
16377
- var POINT = /* @__PURE__ */ struct("POINT", {
16342
+ };
16343
+ var RECT = /* @__PURE__ */ struct("RECT", RECT_DECL);
16344
+ var POINT_DECL = {
16345
+ "#": "struct",
16378
16346
  x: "i32",
16379
16347
  y: "i32"
16380
- });
16381
- var SIZE = /* @__PURE__ */ struct("SIZE", {
16348
+ };
16349
+ var POINT = /* @__PURE__ */ struct("POINT", POINT_DECL);
16350
+ var SIZE_DECL = {
16351
+ "#": "struct",
16382
16352
  cx: "i32",
16383
16353
  cy: "i32"
16384
- });
16385
- var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16354
+ };
16355
+ var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
16356
+ var LOGFONTW_DECL = {
16357
+ "#": "struct",
16386
16358
  lfHeight: "i32",
16387
16359
  lfWidth: "i32",
16388
16360
  lfEscapement: "i32",
@@ -16397,8 +16369,10 @@ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", {
16397
16369
  lfQuality: "u8",
16398
16370
  lfPitchAndFamily: "u8",
16399
16371
  lfFaceName: "u16[32]@utf-16le"
16400
- });
16401
- var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", {
16372
+ };
16373
+ var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
16374
+ var BITMAPINFOHEADER_DECL = {
16375
+ "#": "struct",
16402
16376
  biSize: "u32",
16403
16377
  biWidth: "i32",
16404
16378
  biHeight: "i32",
@@ -16410,8 +16384,10 @@ var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", {
16410
16384
  biYPelsPerMeter: "i32",
16411
16385
  biClrUsed: "u32",
16412
16386
  biClrImportant: "u32"
16413
- });
16414
- var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16387
+ };
16388
+ var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", BITMAPINFOHEADER_DECL);
16389
+ var OPENFILENAMEW_DECL = {
16390
+ "#": "struct",
16415
16391
  lStructSize: "u32",
16416
16392
  hwndOwner: "<HWND>ptr",
16417
16393
  hInstance: "<HMODULE>ptr",
@@ -16435,8 +16411,10 @@ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", {
16435
16411
  pvReserved: "<>ptr",
16436
16412
  dwReserved: "u32",
16437
16413
  FlagsEx: "u32"
16438
- });
16439
- var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16414
+ };
16415
+ var OPENFILENAMEW = /* @__PURE__ */ struct("OPENFILENAMEW", OPENFILENAMEW_DECL);
16416
+ var BROWSEINFOW_DECL = {
16417
+ "#": "struct",
16440
16418
  hwndOwner: "<HWND>ptr",
16441
16419
  pidlRoot: "<>ptr",
16442
16420
  pszDisplayName: "<>ptr",
@@ -16445,13 +16423,17 @@ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", {
16445
16423
  lpfn: "<>ptr",
16446
16424
  lParam: "<>ptr",
16447
16425
  iImage: "i32"
16448
- });
16449
- var NMHDR = /* @__PURE__ */ struct("NMHDR", {
16426
+ };
16427
+ var BROWSEINFOW = /* @__PURE__ */ struct("BROWSEINFOW", BROWSEINFOW_DECL);
16428
+ var NMHDR_DECL = {
16429
+ "#": "struct",
16450
16430
  hwndFrom: "<HWND>ptr",
16451
16431
  idFrom: "<>ptr",
16452
16432
  code: "i32"
16453
- });
16454
- var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16433
+ };
16434
+ var NMHDR = /* @__PURE__ */ struct("NMHDR", NMHDR_DECL);
16435
+ var SYSTEMTIME_DECL = {
16436
+ "#": "struct",
16455
16437
  wYear: "u16",
16456
16438
  wMonth: "u16",
16457
16439
  wDayOfWeek: "u16",
@@ -16460,35 +16442,44 @@ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", {
16460
16442
  wMinute: "u16",
16461
16443
  wSecond: "u16",
16462
16444
  wMilliseconds: "u16"
16463
- });
16464
- var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", {
16465
- hdr: NMHDR.__struct,
16445
+ };
16446
+ var SYSTEMTIME = /* @__PURE__ */ struct("SYSTEMTIME", SYSTEMTIME_DECL);
16447
+ var NMDATETIMECHANGE_DECL = {
16448
+ "#": "struct",
16449
+ hdr: NMHDR_DECL,
16466
16450
  dwFlags: "u32",
16467
- st: SYSTEMTIME.__struct
16468
- });
16469
- var LITEM = /* @__PURE__ */ struct("LITEM", {
16451
+ st: SYSTEMTIME_DECL
16452
+ };
16453
+ var NMDATETIMECHANGE = /* @__PURE__ */ struct("NMDATETIMECHANGE", NMDATETIMECHANGE_DECL);
16454
+ var LITEM_DECL = {
16455
+ "#": "struct",
16470
16456
  mask: "u32",
16471
16457
  iLink: "i32",
16472
16458
  state: "u32",
16473
16459
  stateMask: "u32",
16474
16460
  szID: "u16[48]@utf-16le",
16475
16461
  szUrl: "u16[2084]@utf-16le"
16476
- });
16477
- var NMLINK = /* @__PURE__ */ struct("NMLINK", {
16478
- hdr: NMHDR.__struct,
16479
- item: LITEM.__struct
16480
- });
16481
- var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", {
16482
- hdr: NMHDR.__struct,
16462
+ };
16463
+ var NMLINK_DECL = {
16464
+ "#": "struct",
16465
+ hdr: NMHDR_DECL,
16466
+ item: LITEM_DECL
16467
+ };
16468
+ var NMLINK = /* @__PURE__ */ struct("NMLINK", NMLINK_DECL);
16469
+ var NMCUSTOMDRAW_DECL = {
16470
+ "#": "struct",
16471
+ hdr: NMHDR_DECL,
16483
16472
  dwDrawStage: "u32",
16484
16473
  hdc: "<HDC>ptr",
16485
16474
  rc: "i32[4]",
16486
16475
  dwItemSpec: "<>ptr",
16487
16476
  uItemState: "u32",
16488
16477
  lItemlParam: "<>ptr"
16489
- });
16490
- var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16491
- hdr: NMHDR.__struct,
16478
+ };
16479
+ var NMCUSTOMDRAW = /* @__PURE__ */ struct("NMCUSTOMDRAW", NMCUSTOMDRAW_DECL);
16480
+ var NMLVCUSTOMDRAW_DECL = {
16481
+ "#": "struct",
16482
+ hdr: NMHDR_DECL,
16492
16483
  dwDrawStage: "u32",
16493
16484
  hdc: "<HDC>ptr",
16494
16485
  rc: "i32[4]",
@@ -16499,9 +16490,11 @@ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", {
16499
16490
  clrTextBk: "u32",
16500
16491
  iSubItem: "i32",
16501
16492
  dwItemType: "u32"
16502
- });
16503
- var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16504
- hdr: NMHDR.__struct,
16493
+ };
16494
+ var NMLVCUSTOMDRAW = /* @__PURE__ */ struct("NMLVCUSTOMDRAW", NMLVCUSTOMDRAW_DECL);
16495
+ var NMLISTVIEW_DECL = {
16496
+ "#": "struct",
16497
+ hdr: NMHDR_DECL,
16505
16498
  iItem: "i32",
16506
16499
  iSubItem: "i32",
16507
16500
  uNewState: "u32",
@@ -16509,8 +16502,10 @@ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", {
16509
16502
  uChanged: "u32",
16510
16503
  ptAction: "i32[2]",
16511
16504
  lParam: "<>ptr"
16512
- });
16513
- var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16505
+ };
16506
+ var NMLISTVIEW = /* @__PURE__ */ struct("NMLISTVIEW", NMLISTVIEW_DECL);
16507
+ var TCITEMW_DECL = {
16508
+ "#": "struct",
16514
16509
  mask: "u32",
16515
16510
  dwState: "u32",
16516
16511
  dwStateMask: "u32",
@@ -16518,8 +16513,10 @@ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", {
16518
16513
  cchTextMax: "i32",
16519
16514
  iImage: "i32",
16520
16515
  lParam: "<>ptr"
16521
- });
16522
- var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16516
+ };
16517
+ var TCITEMW = /* @__PURE__ */ struct("TCITEMW", TCITEMW_DECL);
16518
+ var TVITEM_DECL = {
16519
+ "#": "struct",
16523
16520
  mask: "u32",
16524
16521
  hItem: "<>ptr",
16525
16522
  state: "u32",
@@ -16530,20 +16527,26 @@ var TVITEM = /* @__PURE__ */ struct("TVITEM", {
16530
16527
  iSelectedImage: "i32",
16531
16528
  cChildren: "i32",
16532
16529
  lParam: "<>ptr"
16533
- });
16534
- var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", {
16530
+ };
16531
+ var TVITEM = /* @__PURE__ */ struct("TVITEM", TVITEM_DECL);
16532
+ var TVINSERTSTRUCT_DECL = {
16533
+ "#": "struct",
16535
16534
  hParent: "<>ptr",
16536
16535
  hInsertAfter: "<>ptr",
16537
- item: TVITEM.__struct
16538
- });
16539
- var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", {
16536
+ item: TVITEM_DECL
16537
+ };
16538
+ var TVINSERTSTRUCT = /* @__PURE__ */ struct("TVINSERTSTRUCT", TVINSERTSTRUCT_DECL);
16539
+ var LVHITTESTINFO_DECL = {
16540
+ "#": "struct",
16540
16541
  pt: "i32[2]",
16541
16542
  flags: "u32",
16542
16543
  iItem: "i32",
16543
16544
  iSubItem: "i32",
16544
16545
  iGroup: "i32"
16545
- });
16546
- var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16546
+ };
16547
+ var LVHITTESTINFO = /* @__PURE__ */ struct("LVHITTESTINFO", LVHITTESTINFO_DECL);
16548
+ var LVITEMW_DECL = {
16549
+ "#": "struct",
16547
16550
  mask: "u32",
16548
16551
  iItem: "i32",
16549
16552
  iSubItem: "i32",
@@ -16559,8 +16562,10 @@ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", {
16559
16562
  puColumns: "<>ptr",
16560
16563
  piColFmt: "<>ptr",
16561
16564
  iGroup: "i32"
16562
- });
16563
- var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16565
+ };
16566
+ var LVITEMW = /* @__PURE__ */ struct("LVITEMW", LVITEMW_DECL);
16567
+ var LVCOLUMNW_DECL = {
16568
+ "#": "struct",
16564
16569
  mask: "u32",
16565
16570
  fmt: "i32",
16566
16571
  cx: "i32",
@@ -16572,23 +16577,16 @@ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", {
16572
16577
  cxMin: "i32",
16573
16578
  cxDefault: "i32",
16574
16579
  cxIdeal: "i32"
16575
- });
16576
- var MSG = /* @__PURE__ */ struct("MSG", {
16577
- hwnd: "<HWND>ptr",
16578
- message: "u32",
16579
- wParam: "<>ptr",
16580
- lParam: "<>ptr",
16581
- time: "u32",
16582
- pt: POINT.__struct
16583
- });
16584
- var PAINTSTRUCT = /* @__PURE__ */ struct("PAINTSTRUCT", {
16585
- hdc: "<HDC>ptr",
16586
- fErase: "i32",
16587
- rcPaint: RECT.__struct,
16588
- fRestore: "i32",
16589
- fIncUpdate: "i32",
16590
- rgbReserved: "u8[32]"
16591
- });
16580
+ };
16581
+ var LVCOLUMNW = /* @__PURE__ */ struct("LVCOLUMNW", LVCOLUMNW_DECL);
16582
+ var NOTIFYICONIDENTIFIER_DECL = {
16583
+ "#": "struct",
16584
+ cbSize: "u32",
16585
+ hWnd: "<HWND>ptr",
16586
+ uID: "u32",
16587
+ guidItem: "u32[4]"
16588
+ };
16589
+ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFYICONIDENTIFIER_DECL);
16592
16590
 
16593
16591
  // _build/lib/windows/user32.js
16594
16592
  var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
@@ -16622,7 +16620,6 @@ import * as os4 from "os";
16622
16620
 
16623
16621
  // _build/lib/windows/gdi32.js
16624
16622
  var b2 = (name, sig, encoders) => bind("gdi32.dll", name, sig, encoders);
16625
- var POINTArr = structArray(POINT);
16626
16623
  var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
16627
16624
  var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
16628
16625
  var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
@@ -16656,14 +16653,14 @@ function applyProps(instance, newProps, _oldProps) {
16656
16653
  gui.ShowWindow(
16657
16654
  hwnd,
16658
16655
  newProps.hidden ? 0 : 5
16659
- /* gui.ShowWindowCmd.SHOW */
16656
+ /* ShowWindowCmd.SHOW */
16660
16657
  );
16661
16658
  }
16662
16659
  if ("visible" in newProps) {
16663
16660
  gui.ShowWindow(
16664
16661
  hwnd,
16665
16662
  newProps.visible ? 5 : 0
16666
- /* gui.ShowWindowCmd.HIDE */
16663
+ /* ShowWindowCmd.HIDE */
16667
16664
  );
16668
16665
  }
16669
16666
  }
@@ -16759,7 +16756,7 @@ function measureText(hdc, text, maxWidth) {
16759
16756
  -1,
16760
16757
  r.ptr,
16761
16758
  1024
16762
- /* gui.DrawTextFlag.CALCRECT */
16759
+ /* DrawTextFlag.CALCRECT */
16763
16760
  );
16764
16761
  const { right, bottom } = RECT.decode(r);
16765
16762
  return { width: right, height: bottom };
@@ -16807,7 +16804,7 @@ function setupWindowProc(instance, hwnd) {
16807
16804
  const oldProc = GetWindowLongPtr(
16808
16805
  hwnd,
16809
16806
  -4
16810
- /* gui.Gwlp.WNDPROC */
16807
+ /* Gwlp.WNDPROC */
16811
16808
  );
16812
16809
  instancesByHwnd.set(hwnd, instance);
16813
16810
  gui3.SetWindowProc(hwnd, (hwnd2, msg, wParam, lParam) => {
@@ -16895,7 +16892,7 @@ function runFlexLayout(inst) {
16895
16892
  r.width * scaleFactor,
16896
16893
  r.height * scaleFactor,
16897
16894
  64
16898
- /* gui.SetWindowPosFlag.SWP_SHOWWINDOW */
16895
+ /* SetWindowPosFlag.SWP_SHOWWINDOW */
16899
16896
  );
16900
16897
  InvalidateRect(child.hwnd, NULL, 1);
16901
16898
  child.lastRect = { x: r.x, y: r.y, w: r.width, h: r.height };
@@ -17051,7 +17048,7 @@ var hostConfig = {
17051
17048
  gui3.ShowWindow(
17052
17049
  instance.hwnd,
17053
17050
  0
17054
- /* gui.ShowWindowCmd.HIDE */
17051
+ /* ShowWindowCmd.HIDE */
17055
17052
  );
17056
17053
  },
17057
17054
  hideTextInstance(instance) {
@@ -17059,7 +17056,7 @@ var hostConfig = {
17059
17056
  gui3.ShowWindow(
17060
17057
  instance.hwnd,
17061
17058
  0
17062
- /* gui.ShowWindowCmd.HIDE */
17059
+ /* ShowWindowCmd.HIDE */
17063
17060
  );
17064
17061
  },
17065
17062
  unhideInstance(instance, _props) {
@@ -17067,7 +17064,7 @@ var hostConfig = {
17067
17064
  gui3.ShowWindow(
17068
17065
  instance.hwnd,
17069
17066
  5
17070
- /* gui.ShowWindowCmd.SHOW */
17067
+ /* ShowWindowCmd.SHOW */
17071
17068
  );
17072
17069
  },
17073
17070
  unhideTextInstance(instance, _text) {
@@ -17075,7 +17072,7 @@ var hostConfig = {
17075
17072
  gui3.ShowWindow(
17076
17073
  instance.hwnd,
17077
17074
  5
17078
- /* gui.ShowWindowCmd.SHOW */
17075
+ /* ShowWindowCmd.SHOW */
17079
17076
  );
17080
17077
  },
17081
17078
  shouldSetTextContent(_type, props) {
@@ -17503,7 +17500,7 @@ function getCellFont(hwnd, style) {
17503
17500
  ...base,
17504
17501
  ...style.bold ? {
17505
17502
  lfWeight: 700
17506
- /* gui.FontWeight.BOLD */
17503
+ /* FontWeight.BOLD */
17507
17504
  } : {},
17508
17505
  ...style.italic ? { lfItalic: 1 } : {},
17509
17506
  ...style.underline ? { lfUnderline: 1 } : {}
@@ -17625,7 +17622,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
17625
17622
  4150,
17626
17623
  0,
17627
17624
  32 | 1 | 65536
17628
- /* gui.LvExStyle.DOUBLEBUFFER */
17625
+ /* LvExStyle.DOUBLEBUFFER */
17629
17626
  );
17630
17627
  const n = columns.length;
17631
17628
  for (let j = 0; j < n; j++) {
@@ -17670,7 +17667,7 @@ var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, d
17670
17667
  4126,
17671
17668
  j,
17672
17669
  -2
17673
- /* gui.LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17670
+ /* LvColumnWidthCmd.AUTOSIZE_USEHEADER */
17674
17671
  );
17675
17672
  }
17676
17673
  }
@@ -17812,7 +17809,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17812
17809
  natW,
17813
17810
  natH,
17814
17811
  4
17815
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17812
+ /* SetWindowPosFlag.SWP_NOZORDER */
17816
17813
  );
17817
17814
  forceFlexLayout(content);
17818
17815
  if (natW > svW) {
@@ -17851,7 +17848,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17851
17848
  0,
17852
17849
  0,
17853
17850
  1 | 4
17854
- /* gui.SetWindowPosFlag.SWP_NOZORDER */
17851
+ /* SetWindowPosFlag.SWP_NOZORDER */
17855
17852
  );
17856
17853
  gui12.SetScrollInfo(sv, bar, { pos: newPos }, true);
17857
17854
  }
@@ -17917,7 +17914,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17917
17914
  handleScroll(
17918
17915
  e,
17919
17916
  1
17920
- /* gui.ScrollBar.VERT */
17917
+ /* ScrollBar.VERT */
17921
17918
  );
17922
17919
  return 0;
17923
17920
  }
@@ -17925,7 +17922,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
17925
17922
  handleScroll(
17926
17923
  e,
17927
17924
  0
17928
- /* gui.ScrollBar.HORZ */
17925
+ /* ScrollBar.HORZ */
17929
17926
  );
17930
17927
  return 0;
17931
17928
  }
@@ -18089,7 +18086,7 @@ function deleteAllItems(hTree) {
18089
18086
  4353,
18090
18087
  1,
18091
18088
  -65536
18092
- /* gui.TvInsertAfter.ROOT */
18089
+ /* TvInsertAfter.ROOT */
18093
18090
  );
18094
18091
  }
18095
18092
  var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onSelect, defaultSelectedKey, selectedKey: controlledKey, style }, ref) {
@@ -18121,7 +18118,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
18121
18118
  4396,
18122
18119
  0,
18123
18120
  4
18124
- /* gui.TvExStyle.DOUBLEBUFFER */
18121
+ /* TvExStyle.DOUBLEBUFFER */
18125
18122
  );
18126
18123
  }, []);
18127
18124
  (0, import_react16.useEffect)(() => {
@@ -18163,9 +18160,16 @@ var b3 = (name, sig) => bind("comdlg32.dll", name, sig);
18163
18160
  var GetOpenFileName = /* @__PURE__ */ b3("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
18164
18161
 
18165
18162
  // _build/lib/windows/shell32.js
18166
- var b4 = (name, sig) => bind("shell32.dll", name, sig);
18163
+ var b4 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
18167
18164
  var SHBrowseForFolder = /* @__PURE__ */ b4("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
18168
18165
  var SHGetPathFromIDList = /* @__PURE__ */ b4("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
18166
+ var Shell_NotifyIconGetRect = (() => {
18167
+ try {
18168
+ return b4("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
18169
+ } catch {
18170
+ return null;
18171
+ }
18172
+ })();
18169
18173
 
18170
18174
  // _build/lib/windows/ole32.js
18171
18175
  var b5 = (name, sig) => bind("ole32.dll", name, sig);
@@ -9,6 +9,7 @@ import { WCHAR } from '../lib/ffi/bind.js'
9
9
  import { PdfCanvas } from './PdfCanvas.js'
10
10
  import { OPENFILENAMEW } from '../lib/windows/structs.js'
11
11
  import { GetOpenFileName } from '../lib/windows/comdlg32.js'
12
+ import { WindowStyle } from '../constants'
12
13
 
13
14
  type MuPdf = typeof import('../vendor/mupdf-wasm/mupdf.js')
14
15
 
@@ -180,17 +181,17 @@ function App({ mupdf, mainHwnd: hwnd }: { mupdf: MuPdf; mainHwnd: gui.HWND }) {
180
181
 
181
182
  return (
182
183
  <w type="STATIC"
183
- ws={gui.WindowStyle.VISIBLE | gui.WindowStyle.CLIPCHILDREN}
184
+ ws={WindowStyle.VISIBLE | WindowStyle.CLIPCHILDREN}
184
185
  style={{ flexDirection: 'column', gap: 4, width: 1180, height: 720 }}
185
186
  >
186
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
187
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
187
188
  style={{ flexDirection: 'row', gap: 6, alignItems: 'stretch', height: 28 }}
188
189
  >
189
190
  <w type="STATIC" style={{ width: 6 }} />
190
191
  <Button onClick={handleOpen} style={{ width: 80 }}>Open</Button>
191
192
  <Input value={filePath} placeholder="File path..." readonly style={{ flexGrow: 1 }} />
192
193
  <Button onClick={handlePrev} disabled={currentPage <= 0} style={{ width: 60 }}>Prev</Button>
193
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
194
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
194
195
  text={totalPages > 0 ? `Page ${currentPage + 1} / ${totalPages}` : 'No file'}
195
196
  style={{ width: 120 }}
196
197
  />
@@ -205,7 +206,7 @@ function App({ mupdf, mainHwnd: hwnd }: { mupdf: MuPdf; mainHwnd: gui.HWND }) {
205
206
  style={{ width: pixmap.w, height: pixmap.h }}
206
207
  />
207
208
  ) : (
208
- <w type="STATIC" ws={gui.WindowStyle.VISIBLE}
209
+ <w type="STATIC" ws={WindowStyle.VISIBLE}
209
210
  text="Open a PDF file to preview"
210
211
  style={{ width: 300, height: 30 }}
211
212
  />
@@ -225,7 +226,7 @@ async function main() {
225
226
  gui.RegisterClass('PdfViewerWin')
226
227
  const hwnd = gui.CreateWindow(
227
228
  'PdfViewerWin', 'PDF Viewer',
228
- gui.WindowStyle.OVERLAPPEDWINDOW,
229
+ WindowStyle.OVERLAPPEDWINDOW,
229
230
  100, 100, 1200, 800, null, null
230
231
  )
231
232