quickwin 2.3.0 → 3.0.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 (99) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/constants.ts +22 -0
  4. package/enum_map.d.ts +4 -0
  5. package/examples/PdfCanvas.js +1 -1
  6. package/examples/PdfCanvas.tsx +2 -2
  7. package/examples/execd/main.js +491 -217
  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/bitmap.js +40 -0
  24. package/lib/bitmap.ts +39 -0
  25. package/lib/certs.js +31 -3
  26. package/lib/certs.ts +32 -3
  27. package/lib/dpi.js +30 -0
  28. package/lib/dpi.ts +31 -0
  29. package/lib/dumpRects.js +14 -7
  30. package/lib/dumpRects.ts +14 -6
  31. package/lib/ffi/bind.js +5 -4
  32. package/lib/ffi/bind.ts +9 -8
  33. package/lib/http-server.js +50 -25
  34. package/lib/http-server.ts +51 -23
  35. package/lib/react-qw/components/DateTimePicker.js +6 -7
  36. package/lib/react-qw/components/Input.js +5 -1
  37. package/lib/react-qw/components/ListView.js +8 -6
  38. package/lib/react-qw/components/ScrollView.js +28 -22
  39. package/lib/react-qw/index.js +7 -5
  40. package/lib/react-qw/index.ts +5 -5
  41. package/lib/react-qw/props.js +3 -3
  42. package/lib/react-qw/props.ts +3 -3
  43. package/lib/react-qw/reconciler.js +12 -17
  44. package/lib/react-qw/reconciler.ts +12 -16
  45. package/lib/text-measure.js +9 -6
  46. package/lib/text-measure.ts +9 -6
  47. package/lib/windows/comctl32.js +3 -2
  48. package/lib/windows/comctl32.ts +3 -2
  49. package/lib/windows/gdi32.js +28 -6
  50. package/lib/windows/gdi32.ts +30 -6
  51. package/lib/windows/kernel32.js +9 -0
  52. package/lib/windows/kernel32.ts +9 -0
  53. package/lib/windows/shell32.js +11 -2
  54. package/lib/windows/shell32.ts +13 -2
  55. package/lib/windows/structs.js +51 -0
  56. package/lib/windows/structs.ts +55 -0
  57. package/lib/windows/user32.js +6 -5
  58. package/lib/windows/user32.ts +6 -5
  59. package/main.js +13 -5
  60. package/package.json +2 -2
  61. package/quickwin.d.ts +13 -115
  62. package/qwin-nowasm-x86.exe +0 -0
  63. package/qwin-nowasm.exe +0 -0
  64. package/qwin-x86.exe +0 -0
  65. package/qwin.exe +0 -0
  66. package/test/bench_ffi_callraw.js +3 -4
  67. package/test/bench_ffi_callraw.ts +3 -4
  68. package/test/debug/mupdf_debug.js +4 -22
  69. package/test/debug/wasm_export_debug.js +2 -12
  70. package/test/debug/wasm_names.js +3 -13
  71. package/test/example.pdf +0 -0
  72. package/test/mupdf-cdn.js +40 -0
  73. package/test/mupdf-cdn.ts +43 -0
  74. package/test/test_ffi.js +8 -9
  75. package/test/test_ffi.ts +8 -9
  76. package/test/test_ffi_abi.js +6 -6
  77. package/test/test_ffi_abi.ts +8 -8
  78. package/test/test_ffi_windows.js +82 -11
  79. package/test/test_ffi_windows.ts +85 -11
  80. package/test/test_gdi_draw.js +3 -3
  81. package/test/test_gdi_draw.ts +4 -4
  82. package/test/test_mupdf_render.js +4 -22
  83. package/test/test_mupdf_render.ts +4 -23
  84. package/test/test_mupdf_twice.js +4 -19
  85. package/test/test_mupdf_twice.ts +4 -20
  86. package/test/test_mupdf_wasm.js +10 -4
  87. package/test/test_mupdf_wasm.ts +6 -4
  88. package/test/test_react_complex.js +316 -140
  89. package/test/test_react_counter.js +295 -133
  90. package/test/test_react_flex.js +297 -138
  91. package/test/test_react_hidden.js +296 -134
  92. package/test/test_react_listview_link.js +288 -131
  93. package/test/test_react_notify.js +290 -133
  94. package/test/test_react_render.js +295 -133
  95. package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
  96. package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
  97. package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
  98. package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
  99. package/vendor/mupdf-wasm/mupdf.js +0 -3317
@@ -1,17 +1,19 @@
1
- import { MaybePtr, PtrArrayBuffer } from '../lib/ffi/ctype.js'
1
+ import { MaybePtr, PtrArrayBuffer, NULL } from '../lib/ffi/ctype.js'
2
2
  import '../lib/polyfill.js'
3
3
  import * as std from 'std'
4
4
  import * as gui from 'gui'
5
- import type { Document, Page, Pixmap } from '../vendor/mupdf-wasm/mupdf.js'
5
+ import type { Document, Page, Pixmap } from '@quickwinlabs/mupdf-wasm'
6
+ import { MUPDF_JS_URL, preloadMupdfWasm } from '../test/mupdf-cdn.js'
6
7
  import { useState } from 'react'
7
8
  import { render, Button, Input, ScrollView } from '../lib/react-qw/index.js'
8
9
  import { WCHAR } from '../lib/ffi/bind.js'
9
10
  import { PdfCanvas } from './PdfCanvas.js'
10
11
  import { OPENFILENAMEW } from '../lib/windows/structs.js'
11
12
  import { GetOpenFileName } from '../lib/windows/comdlg32.js'
12
- import { WindowStyle } from '../constants'
13
+ import { MessageBox, ShowWindow } from '../lib/windows/user32.js'
14
+ import { ShowWindowCmd, WindowStyle } from '../constants'
13
15
 
14
- type MuPdf = typeof import('../vendor/mupdf-wasm/mupdf.js')
16
+ type MuPdf = typeof import('@quickwinlabs/mupdf-wasm')
15
17
 
16
18
  function openPdfFileDialog(owner: MaybePtr<'HWND'>): string | null {
17
19
  const fileBuf = WCHAR.alloc(260)
@@ -35,22 +37,9 @@ function openPdfFileDialog(owner: MaybePtr<'HWND'>): string | null {
35
37
  }
36
38
 
37
39
  async function loadMupdf(): Promise<MuPdf | null> {
38
- const wasmPath = './vendor/mupdf-wasm/mupdf-wasm.wasm'
39
- const fp = std.open(wasmPath, 'rb')
40
- if (!fp) { std.printf('Error: cannot open %s\n', wasmPath); return null }
41
- fp.seek(0, 2)
42
- const size = fp.tell()
43
- fp.seek(0, 0)
44
- const buf = new ArrayBuffer(size)
45
- fp.read(buf, 0, size)
46
- fp.close()
47
-
48
- ;(globalThis).$libmupdf_wasm_Module = {
49
- wasmBinary: buf,
50
- locateFile: (p: string) => p
51
- }
52
40
  try {
53
- return await import('../vendor/mupdf-wasm/mupdf.js')
41
+ await preloadMupdfWasm()
42
+ return await import(MUPDF_JS_URL)
54
43
  } catch (e) {
55
44
  std.printf('Error: mupdf load failed: %s\n', String(e))
56
45
  return null
@@ -159,7 +148,7 @@ function App({ mupdf, mainHwnd: hwnd }: { mupdf: MuPdf; mainHwnd: gui.HWND }) {
159
148
  setCurrentPage(page)
160
149
  setTotalPages(result.totalPages)
161
150
  } else {
162
- gui.MessageBox('Failed to render PDF page')
151
+ MessageBox(NULL, 'Failed to render PDF page', 'JS Alert', 0)
163
152
  }
164
153
  }
165
154
 
@@ -219,7 +208,7 @@ function App({ mupdf, mainHwnd: hwnd }: { mupdf: MuPdf; mainHwnd: gui.HWND }) {
219
208
  async function main() {
220
209
  const mupdf = await loadMupdf()
221
210
  if (!mupdf) {
222
- gui.MessageBox('Loading mupdf WASM failed.\nEnsure vendor/mupdf-wasm/ is present.')
211
+ MessageBox(NULL, 'Loading mupdf WASM failed.\nCheck network access to unpkg.com.', 'JS Alert', 0)
223
212
  return
224
213
  }
225
214
 
@@ -232,7 +221,7 @@ async function main() {
232
221
 
233
222
  if (hwnd) {
234
223
  render(<App mupdf={mupdf} mainHwnd={hwnd} />, hwnd)
235
- setTimeout(() => gui.ShowWindow(hwnd), 0)
224
+ setTimeout(() => ShowWindow(hwnd, ShowWindowCmd.SHOWNORMAL), 0)
236
225
  }
237
226
  }
238
227