diff --git a/docz/docs/03-demos/02-frontend/09-blazor.md b/docz/docs/03-demos/02-frontend/09-blazor.md index f1fb5f6..a772154 100644 --- a/docz/docs/03-demos/02-frontend/09-blazor.md +++ b/docz/docs/03-demos/02-frontend/09-blazor.md @@ -104,7 +104,7 @@ It should be injected at the top of relevant Razor component scripts: When exporting a file with the SheetJS `writeFile` method[^2], browser APIs do not provide success or error feedback. As a result, this demo invokes functions -using the `InvokeVoidAsync` static method[^3]. +using the `InvokeVoidAsync` static method[^3]. The following C# method will invoke the `export_method` method in the browser: diff --git a/docz/docs/03-demos/02-frontend/10-openui5.md b/docz/docs/03-demos/02-frontend/10-openui5.md index 2372144..6d81c1c 100644 --- a/docz/docs/03-demos/02-frontend/10-openui5.md +++ b/docz/docs/03-demos/02-frontend/10-openui5.md @@ -260,7 +260,7 @@ flowchart LR linkStyle 1,2,3 color:blue,stroke:blue; ``` -Here is a sample method for exporting data from the UI5 `JSONModel` to XLSX: +Here is a sample method for exporting data from the UI5 `JSONModel` to XLSX: ```js title="Fetch data from JSONModel and export to XLSX" /* get model data and export to XLSX */ diff --git a/docz/docs/03-demos/03-net/03-server/04-drash.md b/docz/docs/03-demos/03-net/03-server/04-drash.md index 68f23ba..888f3bb 100644 --- a/docz/docs/03-demos/03-net/03-server/04-drash.md +++ b/docz/docs/03-demos/03-net/03-server/04-drash.md @@ -26,8 +26,8 @@ This demo was tested in the following deployments: | Drash | Deno | Date | |:--------|:-------|:-----------| -| `2.8.1` | 1.44.1 | 2024-12-19 | -| `2.8.1` | 2.1.4 | 2024-12-19 | +| `2.8.1` | 1.46.0 | 2025-05-21 | +| `2.8.1` | 2.3.3 | 2025-05-21 | ::: @@ -133,7 +133,7 @@ deno run --allow-net SheetJSDrash.ts Deno 2 requires the `--allow-import` entitlement: ```bash -deno run --allow-net --allow-write --allow-import SheetJSDenoDOM.ts +deno run --allow-net --allow-write --allow-import SheetJSDrash.ts ``` ::: @@ -142,9 +142,10 @@ deno run --allow-net --allow-write --allow-import SheetJSDenoDOM.ts 4) Open `http://localhost:7262/` in your browser. -Click "Choose File" and select `pres.numbers`. Then click "Submit" +Click "Choose File" and select `pres.numbers` from the Downloads folder. -The page should show the contents of the file as an HTML table. +Click "Submit" to make a request to the Drash server. The response should show +the contents of the file as an HTML table. 5) Open `http://localhost:7262/export` in your browser. diff --git a/docz/docs/03-demos/03-net/03-server/07-hono.md b/docz/docs/03-demos/03-net/03-server/07-hono.md index 982e721..27b4bc8 100644 --- a/docz/docs/03-demos/03-net/03-server/07-hono.md +++ b/docz/docs/03-demos/03-net/03-server/07-hono.md @@ -23,9 +23,11 @@ The ["Complete Example"](#complete-example) section includes a complete server. This demo was tested in the following deployments: -| Platform | HonoJS | Date | -|:---------------|:---------|:-----------| -| BunJS `1.1.40` | `4.6.14` | 2024-12-19 | +| Platform | HonoJS | Date | +|:---------------|:----------|:-----------| +| BunJS `1.2.13` | `2.7.8` | 2025-05-21 | +| BunJS `1.2.13` | `3.12.12` | 2025-05-21 | +| BunJS `1.2.13` | `4.7.10` | 2025-05-21 | ::: diff --git a/docz/docs/03-demos/03-net/03-server/09-elysia.md b/docz/docs/03-demos/03-net/03-server/09-elysia.md index 63c5978..4cdeac4 100644 --- a/docz/docs/03-demos/03-net/03-server/09-elysia.md +++ b/docz/docs/03-demos/03-net/03-server/09-elysia.md @@ -26,8 +26,8 @@ This demo was tested in the following deployments: | Platform | ElysiaJS | Date | |:---------------|:---------|:-----------| -| BunJS `1.1.40` | `0.8.17` | 2024-12-19 | -| BunJS `1.1.40` | `1.1.26` | 2024-12-19 | +| BunJS `1.2.13` | `0.8.17` | 2025-05-21 | +| BunJS `1.2.13` | `1.3.1` | 2025-05-21 | ::: diff --git a/docz/docs/03-demos/03-net/03-server/11-nestjs.md b/docz/docs/03-demos/03-net/03-server/11-nestjs.md index e4d84c5..cdabe3a 100644 --- a/docz/docs/03-demos/03-net/03-server/11-nestjs.md +++ b/docz/docs/03-demos/03-net/03-server/11-nestjs.md @@ -24,11 +24,12 @@ The ["Complete Example"](#complete-example) section includes a complete server. This demo was tested in the following deployments: -| NestJS | Date | -|:----------|:-------------| -| `10.4.15` | `2024-12-22` | -| `9.4.3` | `2024-12-22` | -| `8.4.7` | `2024-12-22` | +| NestJS | Date | +|:----------|:-----------| +| `11.1.1` | 2025-05-21 | +| `10.4.17` | 2025-05-21 | +| `9.4.3` | 2025-05-21 | +| `8.4.7` | 2025-05-21 | ::: diff --git a/docz/docs/03-demos/03-net/08-headless/index.md b/docz/docs/03-demos/03-net/08-headless/index.md index 7074605..7efea7f 100644 --- a/docz/docs/03-demos/03-net/08-headless/index.md +++ b/docz/docs/03-demos/03-net/08-headless/index.md @@ -130,12 +130,13 @@ This demo was tested in the following deployments: | Puppeteer | Date | |:----------|:-----------| -| `23.11.1` | 2024-12-31 | -| `22.15.0` | 2024-12-31 | -| `21.11.0` | 2024-12-31 | -| `20.9.0` | 2024-12-31 | -| `15.5.0` | 2024-12-31 | -| `10.4.0` | 2024-12-31 | +| `24.9.0` | 2025-05-21 | +| `23.11.1` | 2025-05-21 | +| `22.15.0` | 2025-05-21 | +| `21.11.0` | 2025-05-21 | +| `20.9.0` | 2025-05-21 | +| `15.5.0` | 2025-05-21 | +| `10.4.0` | 2025-05-21 | ::: @@ -145,14 +146,14 @@ This demo was tested in the following deployments: {`\ -npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz puppeteer@23.11.1`} +npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz puppeteer@24.9.0`} {`\ -bun install https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz puppeteer@23.11.1`} +bun install https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz puppeteer@24.9.0`} @@ -236,9 +237,9 @@ const { webkit } = require('playwright'); // import desired browser This demo was tested in the following deployments: -| Playwright | Date | -|:-----------|:-----------| -| `1.49.1` | 2024-12-31 | +| Playwright | Browser | Date | +|:-----------|:------------|:-----------| +| `1.52.0` | Webkit 18.4 | 2025-05-21 | ::: diff --git a/docz/docs/03-demos/04-grid/01-xs.md b/docz/docs/03-demos/04-grid/01-xs.md index 5185209..e53e352 100644 --- a/docz/docs/03-demos/04-grid/01-xs.md +++ b/docz/docs/03-demos/04-grid/01-xs.md @@ -20,8 +20,8 @@ This demo was tested in the following environments: | Browser | Date | |:-------------|:-----------| -| Chromium 131 | 2024-12-31 | -| Safari 18.2 | 2024-12-31 | +| Chromium 136 | 2025-05-21 | +| Safari 18.2 | 2025-05-21 | | Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/04-grid/02-cdg.md b/docz/docs/03-demos/04-grid/02-cdg.md index 0cfe62a..8aaf39a 100644 --- a/docz/docs/03-demos/04-grid/02-cdg.md +++ b/docz/docs/03-demos/04-grid/02-cdg.md @@ -19,8 +19,8 @@ This demo was tested in the following environments: | Browser | Date | |:-------------|:-----------| -| Chromium 131 | 2024-12-31 | -| Safari 18.2 | 2024-12-31 | +| Chromium 136 | 2025-05-21 | +| Safari 18.2 | 2025-05-21 | | Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/12-static/09-nuxtjs.md b/docz/docs/03-demos/12-static/09-nuxtjs.md index c75e8d1..33d8a19 100644 --- a/docz/docs/03-demos/12-static/09-nuxtjs.md +++ b/docz/docs/03-demos/12-static/09-nuxtjs.md @@ -33,6 +33,9 @@ Content v1 (paired with VueJS 2.x and NuxtJS 2.x) The ["Nuxt Content v2"](#nuxt-content-v2) section explores "transformers" for NuxtJS Content v2 (paired with VueJS 3.x and NuxtJS 3.x) +The ["Nuxt Content v3"](#nuxt-content-v3) section explores raw ViteJS modules +(paired with VueJS 3.x and NuxtJS 3.x) + :::info pass This demo focuses on server-side processing with NuxtJS and VueJS. @@ -918,7 +921,7 @@ export default defineNuxtConfig({ 5) Create a new file `app.vue` with the following contents: -```jsx title="app.vue (create new file)" +```html title="app.vue (create new file)" diff --git a/docz/docs/03-demos/17-mobile/01-reactnative.md b/docz/docs/03-demos/17-mobile/01-reactnative.md index ec8764a..9500721 100644 --- a/docz/docs/03-demos/17-mobile/01-reactnative.md +++ b/docz/docs/03-demos/17-mobile/01-reactnative.md @@ -578,7 +578,7 @@ reconnect the device before trying again. :::info pass -In some test runs, the app requested for local network access: +In some test runs, the app requested for local network access: > "SheetJSRNFetch" would like to find and connect to devices on your local network. diff --git a/docz/docs/03-demos/17-mobile/05-capacitor.md b/docz/docs/03-demos/17-mobile/05-capacitor.md index 9a7a662..d4b9733 100644 --- a/docz/docs/03-demos/17-mobile/05-capacitor.md +++ b/docz/docs/03-demos/17-mobile/05-capacitor.md @@ -530,7 +530,7 @@ error: Provisioning profile "iOS Team Provisioning Profile: com.sheetjs.cap" doe ``` This error was resolved by manually selecting the device as the primary target -in the Xcode workspace. +in the Xcode workspace. ::: diff --git a/docz/docs/03-demos/17-mobile/06-flutter.md b/docz/docs/03-demos/17-mobile/06-flutter.md index 9f28c4a..dfbb01c 100644 --- a/docz/docs/03-demos/17-mobile/06-flutter.md +++ b/docz/docs/03-demos/17-mobile/06-flutter.md @@ -888,7 +888,7 @@ Tap "OK" to continue. :::info pass -In some test runs, the app requested for local network access: +In some test runs, the app requested for local network access: > "Sheetjs Flutter" would like to find and connect to devices on your local network. diff --git a/docz/docs/03-demos/17-mobile/07-lynx.md b/docz/docs/03-demos/17-mobile/07-lynx.md index 889d9f7..fae3085 100644 --- a/docz/docs/03-demos/17-mobile/07-lynx.md +++ b/docz/docs/03-demos/17-mobile/07-lynx.md @@ -176,7 +176,7 @@ The demo uses Lynx `` and `` elements to display tabular data: {/* Map through each cell in the current row */} {Array.isArray(row) && row.map((cell, cellIndex) => ( {/* Cell with dynamic width based on content */} - {/* Display cell content as text */} diff --git a/docz/docs/03-demos/19-desktop/02-nwjs.md b/docz/docs/03-demos/19-desktop/02-nwjs.md index 1cb2703..78a1647 100644 --- a/docz/docs/03-demos/19-desktop/02-nwjs.md +++ b/docz/docs/03-demos/19-desktop/02-nwjs.md @@ -119,14 +119,14 @@ input.click(); This demo was tested in the following environments: -| OS and Version | Architecture | NW.js | Date | Notes | -|:---------------|:-------------|:---------|:-----------|:---------------------| -| macOS 15.3.2 | `darwin-x64` | `0.94.0` | 2025-03-31 | | -| macOS 14.5 | `darwin-arm` | `0.94.0` | 2025-03-30 | | -| Windows 11 | `win11-x64` | `0.94.0` | 2024-12-19 | | -| Windows 11 | `win11-arm` | `0.94.0` | 2025-02-23 | | -| Linux (HoloOS) | `linux-x64` | `0.89.0` | 2025-01-10 | | -| Linux (Debian) | `linux-arm` | `0.60.0` | 2025-02-16 | Unofficial build[^1] | +| OS and Version | Architecture | NW.js | Date | Notes | +|:---------------|:-------------|:----------|:-----------|:---------------------| +| macOS 15.3.2 | `darwin-x64` | `0.94.0` | 2025-03-31 | | +| macOS 14.5 | `darwin-arm` | `0.94.0` | 2025-03-30 | | +| Windows 11 | `win11-x64` | `0.100.0` | 2025-05-27 | | +| Windows 11 | `win11-arm` | `0.94.0` | 2025-02-23 | | +| Linux (HoloOS) | `linux-x64` | `0.89.0` | 2025-01-10 | | +| Linux (Debian) | `linux-arm` | `0.60.0` | 2025-02-16 | Unofficial build[^1] | ::: @@ -146,7 +146,7 @@ cd sheetjs-nwjs "version": "0.0.0", "main": "index.html", "dependencies": { - "nw": "0.94.0", + "nw": "0.100.0", "xlsx": "https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz" } }`} @@ -167,6 +167,22 @@ In the terminal window, the download can be performed with: curl -LO https://docs.sheetjs.com/nwjs/index.html ``` +:::note pass + +In PowerShell, the command may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'L'. +``` + +`curl.exe` must be invoked directly: + +```bash +curl.exe -LO https://docs.sheetjs.com/nwjs/index.html +``` + +::: + 3) Install dependencies: ```bash @@ -208,15 +224,16 @@ Unfortunately `nw-builder` will not be able to build a standalone program. 5) To build a standalone app, run the builder: ```bash -npx -p nw-builder@4.11.6 nwbuild --mode=build --version=0.94.0 --glob=false --outDir=../out ./ +npx -p nw-builder@4.11.6 nwbuild --mode=build --version=0.100.0 --glob=false --outDir=../out ./ ``` This will generate the standalone app in the `..\out\` folder. :::caution pass -There is a regression in `nw-builder` version `4.12.0`. In local `win11-x64` -testing, version `4.11.6` correctly generated the standalone application. +There is a regression in `nw-builder` versions `4.12.0` and `4.13.14`. + +In local `win11-x64` testing, `4.11.6` generates the standalone application. ::: diff --git a/docz/docs/03-demos/19-desktop/03-wails.md b/docz/docs/03-demos/19-desktop/03-wails.md index c04f28c..7fbf23e 100644 --- a/docz/docs/03-demos/19-desktop/03-wails.md +++ b/docz/docs/03-demos/19-desktop/03-wails.md @@ -54,6 +54,21 @@ platform provides many native features out of the box. ::: +:::note Tested Deployments + +This demo was tested in the following environments: + +| OS and Version | Architecture | Wails | Date | +|:---------------|:-------------|:----------|:-----------| +| macOS 15.3.2 | `darwin-x64` | `v2.10.1` | 2025-03-31 | +| macOS 14.5 | `darwin-arm` | `v2.10.1` | 2025-03-30 | +| Windows 11 | `win11-x64` | `v2.10.1` | 2025-05-27 | +| Windows 11 | `win11-arm` | `v2.10` | 2025-02-23 | +| Linux (HoloOS) | `linux-x64` | `v2.9.2` | 2025-01-02 | +| Linux (Debian) | `linux-arm` | `v2.10` | 2025-02-16 | + +::: + ## Integration Details The [SheetJS NodeJS Module](/docs/getting-started/installation/nodejs) can be @@ -291,21 +306,6 @@ async function exportFile(table_element) { ## Complete Example -:::note Tested Deployments - -This demo was tested in the following environments: - -| OS and Version | Architecture | Wails | Date | -|:---------------|:-------------|:----------|:-----------| -| macOS 15.3.2 | `darwin-x64` | `v2.10.1` | 2025-03-31 | -| macOS 14.5 | `darwin-arm` | `v2.10.1` | 2025-03-30 | -| Windows 11 | `win11-x64` | `v2.9.2` | 2024-12-21 | -| Windows 11 | `win11-arm` | `v2.10` | 2025-02-23 | -| Linux (HoloOS) | `linux-x64` | `v2.9.2` | 2025-01-02 | -| Linux (Debian) | `linux-arm` | `v2.10` | 2025-02-16 | - -::: - 0) Read the Wails "Getting Started" guide[^14] and install dependencies.
@@ -400,7 +400,11 @@ wails build It will print the path to the generated program (typically in `build/bin/`). -5) Run the generated application. +5) Run the generated application: + +| Architecture | Command | +|:-------------|:------------------------------------------| +| `win11-x64` | `.\build\bin\sheetjs-wails.exe` | **Testing** diff --git a/docz/docs/03-demos/19-desktop/04-tauri.md b/docz/docs/03-demos/19-desktop/04-tauri.md index abe943e..ba6084b 100644 --- a/docz/docs/03-demos/19-desktop/04-tauri.md +++ b/docz/docs/03-demos/19-desktop/04-tauri.md @@ -50,6 +50,21 @@ app to read and write workbooks. The app will look like the screenshots below: +:::note Tested Deployments + +This demo was tested in the following environments: + +| OS and Version | Architecture | Tauri | Date | +|:---------------|:-------------|:----------|:-----------| +| macOS 15.3.2 | `darwin-x64` | `v1.6.0` | 2025-03-31 | +| macOS 14.5 | `darwin-arm` | `v1.6.0` | 2025-03-30 | +| Windows 11 | `win11-x64` | `v1.6.0` | 2025-05-27 | +| Windows 11 | `win11-arm` | `v1.6.0` | 2025-02-23 | +| Linux (HoloOS) | `linux-x64` | `v1.6.0` | 2025-01-02 | +| Linux (Debian) | `linux-arm` | `v1.6.0` | 2025-05-27 | + +::: + ## Integration Details The [SheetJS NodeJS Module](/docs/getting-started/installation/nodejs) can be @@ -347,21 +362,6 @@ function SheetJSExportKaioponent() { ## Complete Example -:::note Tested Deployments - -This demo was tested in the following environments: - -| OS and Version | Architecture | Tauri | Date | -|:---------------|:-------------|:----------|:-----------| -| macOS 15.3.2 | `darwin-x64` | `v1.6.0` | 2025-03-31 | -| macOS 14.5 | `darwin-arm` | `v1.6.0` | 2025-03-30 | -| Windows 11 | `win11-x64` | `v1.6.0` | 2024-12-21 | -| Windows 11 | `win11-arm` | `v1.6.0` | 2025-02-23 | -| Linux (HoloOS) | `linux-x64` | `v1.6.0` | 2025-01-02 | -| Linux (Debian) | `linux-arm` | `v1.6.0` | 2025-02-16 | - -::: - 0) Read Tauri "Getting Started" guide and install prerequisites.[^16]
@@ -386,15 +386,15 @@ If required dependencies are installed, the output will show a checkmark next to [✔] Environment {` `}- OS: Mac OS 14.5.0 arm64 (X64) {` `} Xcode Command Line Tools: installed -{` `} rustc: 1.85.1 (4eb161250 2025-03-15) -{` `} cargo: 1.85.1 (d73d2caf9 2024-12-31) -{` `} rustup: 1.28.1 (f9edccde0 2025-03-05) +{` `} rustc: 1.87.0 (17067e9ac 2025-05-09) +{` `} cargo: 1.87.0 (99624be96 2025-05-06) +{` `} rustup: 1.28.2 (e4f3ad6f8 2025-04-28) {` `} Rust toolchain: stable-aarch64-apple-darwin (default) {` `}- node: 20.18.0 {` `}- pnpm: 9.12.3 {` `}- npm: 10.8.2 -{` `}- bun: 1.2.7 -{` `}- deno: deno 2.2.6 +{` `}- bun: 1.2.14 +{` `}- deno: deno 2.3.3 :::caution pass @@ -642,8 +642,9 @@ The following features should be manually verified: - When it is loaded, the app will download https://docs.sheetjs.com/pres.numbers and display the data in a table. -- Clicking "Save Data" will show a save dialog. After selecting a path and name, - the app will write a file. That file can be opened in a spreadsheet editor. +- Clicking "Save Data" will show a save dialog. If there is no filename, type + `SheetJSTauri.xlsb`. Click "Save". The app will write a file which can be + opened in a spreadsheet editor. - Edit the file in a spreadsheet editor, then click "Load Data" and select the edited file. The table will refresh with new contents. diff --git a/docz/docs/03-demos/19-desktop/05-neutralino.md b/docz/docs/03-demos/19-desktop/05-neutralino.md index 7596564..9ef63f9 100644 --- a/docz/docs/03-demos/19-desktop/05-neutralino.md +++ b/docz/docs/03-demos/19-desktop/05-neutralino.md @@ -45,6 +45,24 @@ app to read and write workbooks. The app will look like the screenshots below: +:::note Tested Deployments + +This demo was tested in the following environments: + +| OS and Version | Architecture | Server | Client | Date | +|:---------------|:-------------|:---------|:---------|:-----------| +| macOS 15.3.2 | `darwin-x64` | `6.0.0` | `6.0.0` | 2025-03-31 | +| macOS 14.5 | `darwin-arm` | `6.0.0` | `6.0.0` | 2025-03-30 | +| Windows 11 | `win11-x64` | `6.1.0` | `6.1.0` | 2025-05-27 | +| Windows 11 | `win11-arm` | `5.6.0` | `5.6.0` | 2025-02-23 | +| Linux (HoloOS) | `linux-x64` | `5.5.0` | `5.5.0` | 2025-01-02 | +| Linux (Debian) | `linux-arm` | `5.6.0` | `5.6.0` | 2025-02-16 | + +NeutralinoJS on Windows on ARM generates X64 binaries that run using the X64 +compatibility layer. The binaries are not native ARM64 programs! + +::: + ## Integration Details The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone) @@ -186,24 +204,6 @@ const save_button_callback = async() => { ## Complete Example -:::note Tested Deployments - -This demo was tested in the following environments: - -| OS and Version | Architecture | Server | Client | Date | -|:---------------|:-------------|:---------|:---------|:-----------| -| macOS 15.3.2 | `darwin-x64` | `6.0.0` | `6.0.0` | 2025-03-31 | -| macOS 14.5 | `darwin-arm` | `6.0.0` | `6.0.0` | 2025-03-30 | -| Windows 11 | `win11-x64` | `5.5.0` | `5.5.0` | 2024-12-20 | -| Windows 11 | `win11-arm` | `5.6.0` | `5.6.0` | 2025-02-23 | -| Linux (HoloOS) | `linux-x64` | `5.5.0` | `5.5.0` | 2025-01-02 | -| Linux (Debian) | `linux-arm` | `5.6.0` | `5.6.0` | 2025-02-16 | - -NeutralinoJS on Windows on ARM generates X64 binaries that run using the X64 -compatibility layer. The binaries are not native ARM64 programs! - -::: - The app core state will be the HTML table. Reading files will add the table to the window. Writing files will parse the table into a spreadsheet. @@ -247,6 +247,22 @@ subdirectory in the `sheetjs-neu` folder: curl -L -o resources/js/xlsx.full.min.js https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js`} +:::note pass + +In PowerShell, the command may fail with a parameter error: + +``` +Invoke-WebRequest : A parameter cannot be found that matches parameter name 'L'. +``` + +`curl.exe` must be invoked directly: + +{`\ +curl.exe -L -o resources/js/xlsx.full.min.js https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js`} + + +::: + 3) Add the highlighted line to `neutralino.config.json` in `nativeAllowList`: ```json title="neutralino.config.json (add highlighted line)" diff --git a/docz/docs/03-demos/19-desktop/06-reactnative.md b/docz/docs/03-demos/19-desktop/06-reactnative.md index 46af495..e37332b 100644 --- a/docz/docs/03-demos/19-desktop/06-reactnative.md +++ b/docz/docs/03-demos/19-desktop/06-reactnative.md @@ -530,6 +530,18 @@ When this demo was last tested on Windows 11 ARM, the build failed. +:::info pass + +In PowerShell, the command will fail with `msbuild` errors: + +``` + × Could not find MSBuild with VCTools for Visual Studio 17.11.0 or later. Make sure all required components have been installed +``` + +**The commands must be run in a "Native Tools Command Prompt"!** + +::: + ### Native Module diff --git a/docz/docs/03-demos/20-cli/21-txiki.md b/docz/docs/03-demos/20-cli/21-txiki.md index 208ccd3..d07cdb0 100644 --- a/docz/docs/03-demos/20-cli/21-txiki.md +++ b/docz/docs/03-demos/20-cli/21-txiki.md @@ -4,7 +4,7 @@ sidebar_label: txiki.js pagination_prev: demos/desktop/index pagination_next: demos/data/index sidebar_custom_props: - summary: Compiled apps powered by QuickJS and txiki.js + summary: Compiled apps powered by QuickJS and txiki.js --- import current from '/version.js'; diff --git a/docz/docs/03-demos/23-data/25-mongodb.md b/docz/docs/03-demos/23-data/25-mongodb.md index 6c3a912..3183c91 100644 --- a/docz/docs/03-demos/23-data/25-mongodb.md +++ b/docz/docs/03-demos/23-data/25-mongodb.md @@ -12,7 +12,7 @@ import CodeBlock from '@theme/CodeBlock'; [MongoDB](https://mongodb.github.io/node-mongodb-native/) is a document-oriented database engine. [FerretDB](https://www.ferretdb.com/) is a truly open source -implementation of the MongoDB wire protocol +implementation of the MongoDB wire protocol. [SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing data from spreadsheets. diff --git a/docz/docs/03-demos/27-local/03-storageapi.md b/docz/docs/03-demos/27-local/03-storageapi.md index 8506291..40267c8 100644 --- a/docz/docs/03-demos/27-local/03-storageapi.md +++ b/docz/docs/03-demos/27-local/03-storageapi.md @@ -11,8 +11,10 @@ simple key-value stores that only support string values and keys. This demo covers two common use patterns: -- "Row Objects" shows a simple convention for loading and storing row objects -- "Simple Strings" discusses how to persist and recover a raw Storage +- ["Row Objects"](#row-objects) shows a simple convention for loading and + storing row objects. +- ["Simple Strings"](#simple-strings) discusses how to persist and recover keys + and string values. :::note Tested Deployments @@ -20,8 +22,8 @@ Each browser demo was tested in the following environments: | Browser | Date | |:-------------|:-----------| -| Chromium 131 | 2024-12-23 | -| Safari 18.2 | 2024-12-31 | +| Chromium 136 | 2025-05-21 | +| Safari 18.2 | 2025-05-21 | | Konqueror 22 | 2025-04-23 | ::: @@ -49,10 +51,13 @@ strings using `JSON.stringify` and store using the row index as a key: #### Importing Data -Starting from a worksheet, the SheetJS `sheet_to_json` method[^1] generates an -array of row objects. `localStorage.setItem` will store data in Local Storage: +`localStorage.setItem` will store data in Local Storage. -```js +Starting from a worksheet, the SheetJS `sheet_to_json` method[^1] generates an +array of row objects. Each object in the array can be saved in the Local Storage +using the row index as the key. + +```js title="Store a SheetJS worksheet in Local Storage" function sheet_to_localStorage(worksheet) { const aoo = XLSX.utils.sheet_to_json(worksheet); for(let i = 0; i < aoo.length; ++i) { @@ -96,7 +101,7 @@ function localStorage_to_array_of_objects() { The SheetJS `json_to_sheet`[^2] method will create a new worksheet from the array of objects: -```js +```js title="Generate a SheetJS worksheet from records in Local Storage " function localStorage_to_sheet() { const aoo = []; for(let i = 0; i < localStorage.length; ++i) { @@ -118,8 +123,8 @@ After saving the exported file, the Local Storage can be inspected in the :::caution pass -This example is for illustration purposes. If array of objects is available, it -is strongly recommended to convert that array to a worksheet directly. +This example is for illustration purposes. If an array of objects is available, +it is strongly recommended to convert that array to a worksheet directly. ::: @@ -203,7 +208,7 @@ In modern browsers, `Object.entries` will generate an array of key/value pairs. The SheetJS `aoa_to_sheet`[^3] method will interpret that array as a worksheet with 2 columns (key and value): -```js +```js title="Generate a SheetJS two-column worksheet from Local Storage" function localStorage_to_ws() { const aoa = Object.entries(localStorage); return XLSX.utils.aoa_to_sheet(aoa); @@ -216,7 +221,7 @@ In the other direction, the worksheet is assumed to store keys in column A and values in column B. The SheetJS `sheet_to_json`[^1] method, with the option `header: 1`, will generate key/value pairs that can be assigned to a storage: -```js +```js title="Store a SheetJS two-column worksheet in Local Storage" function ws_to_localStorage(ws) { const aoa = XLSX.utils.sheet_to_json(ws, { header: 1 }); aoa.forEach(([key, val]) => localStorage.setItem(key, val)); diff --git a/docz/docs/03-demos/27-local/09-indexeddb.md b/docz/docs/03-demos/27-local/09-indexeddb.md index 2e23b4e..4615ad5 100644 --- a/docz/docs/03-demos/27-local/09-indexeddb.md +++ b/docz/docs/03-demos/27-local/09-indexeddb.md @@ -8,7 +8,7 @@ sidebar_custom_props: - + :::danger pass @@ -43,8 +43,8 @@ This demo was last tested in the following environments: | Browser | Date | `localForage` | |:-------------|:-----------|:--------------| -| Chromium 131 | 2024-12-31 | `1.10.0` | -| Safari 18.2 | 2024-12-31 | `1.10.0` | +| Chromium 136 | 2025-05-21 | `1.10.0` | +| Safari 18.2 | 2025-05-21 | `1.10.0` | | Konqueror 22 | 2025-04-23 | `1.10.0` | ::: @@ -116,8 +116,8 @@ This demo was last tested in the following environments: | Browser | Date | DexieJS | |:-------------|:-----------|:---------| -| Chromium 131 | 2024-12-31 | `4.0.10` | -| Safari 18.2 | 2024-12-31 | `4.0.10` | +| Chromium 136 | 2025-05-21 | `4.0.11` | +| Safari 18.2 | 2025-05-21 | `4.0.11` | | Konqueror 22 | 2025-04-23 | `4.0.10` | ::: diff --git a/docz/docs/03-demos/30-cloud/01-salesforce.md b/docz/docs/03-demos/30-cloud/01-salesforce.md index d45d437..6590b58 100644 --- a/docz/docs/03-demos/30-cloud/01-salesforce.md +++ b/docz/docs/03-demos/30-cloud/01-salesforce.md @@ -33,7 +33,7 @@ This demo was tested in the following deployments: | Lightning API | Date | |:--------------|:-----------| -| `61.0` | 2024-10-06 | +| `62.0` | 2025-05-27 | ::: @@ -331,7 +331,7 @@ npx @salesforce/cli --version When the demo was last tested, the command printed ``` -@salesforce/cli/2.60.13 darwin-arm64 node-v20.18.0 +@salesforce/cli/2.89.8 win32-x64 node-v24.1.0 ``` ::: @@ -380,7 +380,7 @@ with the following XML: ```xml title="force-app\main\default\lwc\sheetComponent\sheetComponent.js-meta.xml (replace highlighted lines)" - 61.0 + 62.0 true SheetForce @@ -412,7 +412,7 @@ A) In the Salesforce site, click on the gear icon in the top-right corner of the page and select "Setup" (Setup for current app). B) Type "Custom Code" in the left sidebar search box. Expand "Custom Code", -expand "Lightning Components" and click "Lightning Components". +expand "Lightning Components" and click the inner "Lightning Components". :::caution pass @@ -430,8 +430,8 @@ Click the link to open the page in Salesforce Classic. A) Click the "Setup" link in the top-right corner of the page. -B) Type "Lightning" in the left sidebar search box. Expand "Develop", expand -"Lightning Components" and click "Lightning Components". +B) Type "Custom Code" in the left sidebar search box. In the section, expand +"Lightning Components" and click the inner "Lightning Components". @@ -505,7 +505,8 @@ When the "Page Saved" modal is displayed, click "Activate". The following options should be set: - Click "Change..." next to "Icon" and pick a memorable icon -- Under "Lightning Experience" click "LightningBolt" then "Add page to app" +- Under "Lightning Experience" select "LightningBolt" in the left column and + click "Add page to app" in the right side Click "Save" to activate the page. diff --git a/docz/docs/03-demos/32-extensions/03-excelapi.md b/docz/docs/03-demos/32-extensions/03-excelapi.md index c2b8247..72c3e83 100644 --- a/docz/docs/03-demos/32-extensions/03-excelapi.md +++ b/docz/docs/03-demos/32-extensions/03-excelapi.md @@ -299,7 +299,7 @@ npm run stop npm start ``` -4) Activate the Task Pane for the addin (click "Show Task Pane" in the ribbon). +4) Activate the Task Pane for the addin (click "Show Task Pane" in the ribbon). 5) Hover near the top-right corner of the addin and click the `i` icon. diff --git a/docz/docs/03-demos/32-extensions/04-gsheet.md b/docz/docs/03-demos/32-extensions/04-gsheet.md index 0cdb08f..98968ba 100644 --- a/docz/docs/03-demos/32-extensions/04-gsheet.md +++ b/docz/docs/03-demos/32-extensions/04-gsheet.md @@ -37,9 +37,9 @@ remote file, parses the contents, and writes data to the sheet: This demo was tested in the following deployments: -| Clasp | Date | -|:--------|:-----------| -| `2.4.2` | 2024-12-31 | +| Clasp | Date | +|:--------------|:-----------| +| `3.0.4-alpha` | 2025-05-21 | ::: @@ -112,7 +112,7 @@ the result of setting cell `A1` to the formula `=AOA()`: ```js function AOA(url) { return [ - ["Sheet", "JS"], + ["Sheet", "JS"], [ 72, 62] ]; } @@ -153,6 +153,10 @@ The next page will include the following title: 3) At the bottom of the screen, click "Continue". +The next page will include the following title: + +> clasp – The Apps Script CLI wants access to your Google Account + 4) In the next screen, check every box that mentions "Google Apps Script". When the demo was last tested, the following were required: @@ -183,7 +187,8 @@ Authorization successful. ![extensions - apps script](pathname:///gsheet/apps-script.png) -9) Click the gear icon (Project Settings) and copy the Script ID +9) Click the gear icon (Project Settings) in the left sidebar. Scroll down to +the "IDs" section and copy the Script ID. ### Cloning the Apps Script diff --git a/docz/docs/03-demos/32-extensions/09-mathematica.md b/docz/docs/03-demos/32-extensions/09-mathematica.md index 257653a..4b93a2f 100644 --- a/docz/docs/03-demos/32-extensions/09-mathematica.md +++ b/docz/docs/03-demos/32-extensions/09-mathematica.md @@ -30,7 +30,7 @@ This demo was tested by SheetJS users in the following deployments: | Architecture | Version | Date | |:-------------|:--------|:-----------| | `darwin-x64` | `14.1` | 2025-03-31 | -| `win11-x64` | `14.0` | 2024-12-19 | +| `win11-x64` | `14.2` | 2025-05-21 | ::: @@ -181,12 +181,12 @@ This demo tests the NodeJS external engine and dedicated command line tools. ### NodeJS Engine -0) Install NodeJS. When the demo was tested, version `20.19.0` was installed. +0) Install NodeJS. When the demo was tested, version `20.19.2` was installed. 1) Install dependencies in the Home folder (`~` or `$HOME` or `%HOMEPATH%`): {`\ -npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz zeromq@6.4.0`} +npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz zeromq@6.4.2`} 2) Open a new Mathematica Notebook and register NodeJS. When the example was diff --git a/docz/docs/03-demos/32-extensions/41-ghidra.md b/docz/docs/03-demos/32-extensions/41-ghidra.md index d3ba833..d1dc254 100644 --- a/docz/docs/03-demos/32-extensions/41-ghidra.md +++ b/docz/docs/03-demos/32-extensions/41-ghidra.md @@ -344,7 +344,7 @@ If prompted, enter the path to the JDK installation. On macOS, JDK installations are typically stored in `/Library/Java/JavaVirtualMachines`. The required path is the `/Contents/Home/` folder within the specific JDK installation. -When this demo was last tested, Zulu JDK 21 was installed with Homebrew: +When this demo was last tested, Zulu JDK 21 was installed with Homebrew: ```bash brew install --cask zulu@21 diff --git a/docz/docs/03-demos/37-bigdata/02-worker.md b/docz/docs/03-demos/37-bigdata/02-worker.md index 6442883..c76e624 100644 --- a/docz/docs/03-demos/37-bigdata/02-worker.md +++ b/docz/docs/03-demos/37-bigdata/02-worker.md @@ -193,18 +193,18 @@ Each browser demo was tested in the following environments: | Browser | Date | Comments | |:-------------|:-----------|:----------------------------------------| -| Chromium 131 | 2024-12-31 | | -| Edge 131 | 2024-12-31 | | -| Safari 17.5 | 2024-12-31 | File System Access API is not supported | -| Brave 1.63 | 2024-12-31 | File System Access API is not supported | +| Chromium 136 | 2025-05-27 | | +| Edge 135 | 2025-05-27 | | +| Safari 17.1 | 2025-05-27 | File System Access API is not supported | +| Brave 1.78 | 2025-05-27 | File System Access API is not supported | | Konqueror 22 | 2025-04-23 | File System Access API is not supported | -| Firefox 133 | 2024-12-31 | File System Access API is not supported | +| Firefox 138 | 2025-05-27 | File System Access API is not supported | ::: ### Downloading a Remote File -:::note fetch in Web Workers +:::note `fetch` in Web Workers `fetch` was enabled in Web Workers in Chrome 42 and Safari 10.3 @@ -400,7 +400,7 @@ self.addEventListener('message', async(e) => { ### User-Submitted File -:::note FileReaderSync +:::note `FileReaderSync` Typically `FileReader` is used in the main browser context. In Web Workers, the synchronous version `FileReaderSync` is more efficient. diff --git a/docz/docs/07-csf/07-features/12-props.md b/docz/docs/07-csf/07-features/12-props.md index 4c7cc34..fb1509e 100644 --- a/docz/docs/07-csf/07-features/12-props.md +++ b/docz/docs/07-csf/07-features/12-props.md @@ -89,7 +89,7 @@ Some properties cannot be changed in spreadsheet applications. The underlying SheetJS output codecs can write arbitrary values. The `Props` object understands the "standard" properties listed in the following -table. "SheetJS Name" refers to the name of the property in the `Props` object. +table. "SheetJS Name" refers to the name of the property in the `Props` object. "Excel Property Setting" refers to the name in the Excel file properties dialog. | SheetJS Name | Excel Property Setting | diff --git a/docz/static/drash/SheetJSDrash.ts b/docz/static/drash/SheetJSDrash.ts index 2c1b8f9..2f9da3b 100644 --- a/docz/static/drash/SheetJSDrash.ts +++ b/docz/static/drash/SheetJSDrash.ts @@ -67,7 +67,7 @@ class WriteResource extends Drash.Resource { } const server = new Drash.Server({ - hostname: "", + hostname: "0.0.0.0", port: 7262, protocol: "http", resources: [ ParseResource, WriteResource ], diff --git a/tests/headless-playwright.sh b/tests/headless/playwright.sh similarity index 96% rename from tests/headless-playwright.sh rename to tests/headless/playwright.sh index c3b3478..1d700b7 100755 --- a/tests/headless-playwright.sh +++ b/tests/headless/playwright.sh @@ -6,7 +6,6 @@ rm -rf sheetjs-playwright mkdir sheetjs-playwright cd sheetjs-playwright -npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz playwright@1.45.0 cat >SheetJSPlaywright.js <SheetJSPuppeteer.js <