quickwin 2.3.1 → 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 (97) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/constants.ts +15 -0
  4. package/enum_map.d.ts +3 -0
  5. package/examples/PdfCanvas.js +1 -1
  6. package/examples/PdfCanvas.tsx +2 -2
  7. package/examples/execd/main.js +334 -188
  8. package/examples/pdf_preview2.js +76 -67
  9. package/examples/pdf_preview2.ts +84 -64
  10. package/examples/pdf_viewer.js +4932 -1029
  11. package/examples/pdf_viewer.tsx +11 -22
  12. package/examples/test_gallery.js +308 -143
  13. package/examples/test_gallery.tsx +12 -7
  14. package/examples/test_react_lazy.js +295 -133
  15. package/examples/test_react_lazy.tsx +4 -3
  16. package/examples/test_react_listbox.js +293 -132
  17. package/examples/test_react_listbox.tsx +3 -2
  18. package/examples/test_root_window.js +283 -126
  19. package/examples/test_tab.js +295 -133
  20. package/examples/test_tab.tsx +4 -3
  21. package/examples/tray_demo.js +37 -30
  22. package/examples/tray_demo.tsx +39 -32
  23. package/lib/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/react-qw/components/DateTimePicker.js +6 -7
  34. package/lib/react-qw/components/Input.js +5 -1
  35. package/lib/react-qw/components/ListView.js +8 -6
  36. package/lib/react-qw/components/ScrollView.js +28 -22
  37. package/lib/react-qw/index.js +7 -5
  38. package/lib/react-qw/index.ts +5 -5
  39. package/lib/react-qw/props.js +3 -3
  40. package/lib/react-qw/props.ts +3 -3
  41. package/lib/react-qw/reconciler.js +12 -17
  42. package/lib/react-qw/reconciler.ts +12 -16
  43. package/lib/text-measure.js +9 -6
  44. package/lib/text-measure.ts +9 -6
  45. package/lib/windows/comctl32.js +3 -2
  46. package/lib/windows/comctl32.ts +3 -2
  47. package/lib/windows/gdi32.js +28 -6
  48. package/lib/windows/gdi32.ts +30 -6
  49. package/lib/windows/kernel32.js +9 -0
  50. package/lib/windows/kernel32.ts +9 -0
  51. package/lib/windows/shell32.js +11 -2
  52. package/lib/windows/shell32.ts +13 -2
  53. package/lib/windows/structs.js +51 -0
  54. package/lib/windows/structs.ts +55 -0
  55. package/lib/windows/user32.js +6 -5
  56. package/lib/windows/user32.ts +6 -5
  57. package/main.js +13 -5
  58. package/package.json +2 -2
  59. package/quickwin.d.ts +13 -115
  60. package/qwin-nowasm-x86.exe +0 -0
  61. package/qwin-nowasm.exe +0 -0
  62. package/qwin-x86.exe +0 -0
  63. package/qwin.exe +0 -0
  64. package/test/bench_ffi_callraw.js +3 -4
  65. package/test/bench_ffi_callraw.ts +3 -4
  66. package/test/debug/mupdf_debug.js +4 -22
  67. package/test/debug/wasm_export_debug.js +2 -12
  68. package/test/debug/wasm_names.js +3 -13
  69. package/test/example.pdf +0 -0
  70. package/test/mupdf-cdn.js +40 -0
  71. package/test/mupdf-cdn.ts +43 -0
  72. package/test/test_ffi.js +8 -9
  73. package/test/test_ffi.ts +8 -9
  74. package/test/test_ffi_abi.js +6 -6
  75. package/test/test_ffi_abi.ts +8 -8
  76. package/test/test_ffi_windows.js +82 -11
  77. package/test/test_ffi_windows.ts +85 -11
  78. package/test/test_gdi_draw.js +3 -3
  79. package/test/test_gdi_draw.ts +4 -4
  80. package/test/test_mupdf_render.js +4 -22
  81. package/test/test_mupdf_render.ts +4 -23
  82. package/test/test_mupdf_twice.js +4 -19
  83. package/test/test_mupdf_twice.ts +4 -20
  84. package/test/test_mupdf_wasm.js +10 -4
  85. package/test/test_mupdf_wasm.ts +6 -4
  86. package/test/test_react_complex.js +316 -140
  87. package/test/test_react_counter.js +295 -133
  88. package/test/test_react_flex.js +297 -138
  89. package/test/test_react_hidden.js +296 -134
  90. package/test/test_react_listview_link.js +288 -131
  91. package/test/test_react_notify.js +290 -133
  92. package/test/test_react_render.js +295 -133
  93. package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
  94. package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
  95. package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
  96. package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
  97. 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