diff --git a/README.md b/README.md index 1f72139..a7e9795 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,10 @@ function SheetJSTestDropbox() { ## Other Notes +`static/shim.js` shims the following functions: + +- `Object.hasOwn` + `src/theme/Admonition` was swizzled from 3.2.1 to enable `pass` for hiding header text. See Docusaurus issue 8568 for more details. diff --git a/docz/docs/03-demos/01-math/01-summary.md b/docz/docs/03-demos/01-math/01-summary.md index c06434c..ab49ebe 100644 --- a/docz/docs/03-demos/01-math/01-summary.md +++ b/docz/docs/03-demos/01-math/01-summary.md @@ -38,10 +38,11 @@ tutorial first. This browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 133 | 2025-03-30 | -| Safari 18.3 | 2025-03-30 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 133 | 2025-03-30 | +| Safari 18.3 | 2025-03-30 | +| Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/01-math/09-danfojs.md b/docz/docs/03-demos/01-math/09-danfojs.md index a3dbf2b..e3d8cf9 100644 --- a/docz/docs/03-demos/01-math/09-danfojs.md +++ b/docz/docs/03-demos/01-math/09-danfojs.md @@ -21,10 +21,11 @@ This demo covers details elided in the official DanfoJS documentation. This demo was tested in the following deployments: -| Platform | Version | Date | -|:------------|:--------|:-----------| -| Chrome 131 | `1.1.2` | 2025-01-01 | -| Safari 18.2 | `1.1.2` | 2025-01-01 | +| Platform | Version | Date | +|:-------------|:--------|:-----------| +| Chromium 131 | `1.1.2` | 2025-01-01 | +| Safari 18.2 | `1.1.2` | 2025-01-01 | +| Konqueror 22 | `1.1.2` | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/01-math/11-tensorflow.md b/docz/docs/03-demos/01-math/11-tensorflow.md index c7d5a3e..37188ce 100644 --- a/docz/docs/03-demos/01-math/11-tensorflow.md +++ b/docz/docs/03-demos/01-math/11-tensorflow.md @@ -34,10 +34,11 @@ results back to spreadsheets. Each browser demo was tested in the following environments: -| Browser | TF.js | Date | -|:------------|:----------|:-----------| -| Chrome 133 | `4.22.0` | 2025-04-21 | -| Safari 18.3 | `4.22.0` | 2025-04-21 | +| Browser | TF.js | Date | +|:-------------|:----------|:-----------| +| Chromium 133 | `4.22.0` | 2025-04-21 | +| Safari 18.3 | `4.22.0` | 2025-04-21 | +| Konqueror 22 | `4.22.0` | 2025-04-23 | The NodeJS demo was tested in the following environments: diff --git a/docz/docs/03-demos/02-frontend/07-angularjs.md b/docz/docs/03-demos/02-frontend/07-angularjs.md index 5dd461d..c64fd03 100644 --- a/docz/docs/03-demos/02-frontend/07-angularjs.md +++ b/docz/docs/03-demos/02-frontend/07-angularjs.md @@ -37,6 +37,7 @@ This demo was tested in the following environments: | Browser | Version | Date | |:-------------|:------------------|:-----------| | Chromium 133 | `1.8.2` (latest) | 2025-03-30 | +| Konqueror 22 | `1.8.2` (latest) | 2025-04-23 | | Chromium 133 | `1.2.32` (legacy) | 2025-03-30 | ::: diff --git a/docz/docs/03-demos/02-frontend/08-dojo.md b/docz/docs/03-demos/02-frontend/08-dojo.md index f38f0c7..269e0a0 100644 --- a/docz/docs/03-demos/02-frontend/08-dojo.md +++ b/docz/docs/03-demos/02-frontend/08-dojo.md @@ -77,6 +77,7 @@ This demo was tested in the following environments: | Platform | Date | |:-------------|:-----------| | Chromium 133 | 2025-03-30 | +| Konqueror 22 | 2025-04-23 | Demos exclusively using Dojo Core were tested using Dojo Toolkit `1.17.3`. diff --git a/docz/docs/03-demos/03-net/01-network/index.md b/docz/docs/03-demos/03-net/01-network/index.md index 87ef322..7d68920 100644 --- a/docz/docs/03-demos/03-net/01-network/index.md +++ b/docz/docs/03-demos/03-net/01-network/index.md @@ -88,10 +88,11 @@ first worksheet. The SheetJS `sheet_to_html` method[^2] creates the HTML table. Each browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 133 | 2025-03-30 | -| Safari 18.3 | 2025-03-30 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 133 | 2025-03-30 | +| Safari 18.3 | 2025-03-30 | +| Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/03-net/02-upload/index.md b/docz/docs/03-demos/03-net/02-upload/index.md index e07f2db..907e6c5 100644 --- a/docz/docs/03-demos/03-net/02-upload/index.md +++ b/docz/docs/03-demos/03-net/02-upload/index.md @@ -133,10 +133,11 @@ response. If the process was successful, a HTML table will be displayed Each browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 133 | 2025-03-30 | -| Safari 18.3 | 2025-03-30 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 133 | 2025-03-30 | +| Safari 18.3 | 2025-03-30 | +| Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/03-net/04-email/11-pst.md b/docz/docs/03-demos/03-net/04-email/11-pst.md index 6dc5eea..6371317 100644 --- a/docz/docs/03-demos/03-net/04-email/11-pst.md +++ b/docz/docs/03-demos/03-net/04-email/11-pst.md @@ -36,11 +36,12 @@ the file can be downloaded or previewed in the browser. This demo was tested in the following deployments: -| Platform | Version | Date | -|:------------|:---------|:-----------| -| Chrome 131 | `1.9.0` | 2024-12-22 | -| NodeJS 20 | `1.10.0` | 2024-12-22 | -| BunJS 1.1 | `1.10.0` | 2024-12-22 | +| Platform | Version | Date | +|:-------------|:---------|:-----------| +| Chromium 131 | `1.9.0` | 2024-12-22 | +| Konqueror 22 | `1.9.0` | 2025-04-23 | +| NodeJS 20 | `1.10.0` | 2024-12-22 | +| BunJS 1.1 | `1.10.0` | 2024-12-22 | ::: diff --git a/docz/docs/03-demos/04-grid/01-xs.md b/docz/docs/03-demos/04-grid/01-xs.md index b0129e3..5185209 100644 --- a/docz/docs/03-demos/04-grid/01-xs.md +++ b/docz/docs/03-demos/04-grid/01-xs.md @@ -18,10 +18,11 @@ With a familiar UI, `x-spreadsheet` is an excellent choice for a modern editor. This demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 131 | 2024-12-31 | -| Safari 18.2 | 2024-12-31 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 131 | 2024-12-31 | +| Safari 18.2 | 2024-12-31 | +| 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 5a004e3..0cfe62a 100644 --- a/docz/docs/03-demos/04-grid/02-cdg.md +++ b/docz/docs/03-demos/04-grid/02-cdg.md @@ -17,10 +17,11 @@ with a straightforward API. This demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 131 | 2024-12-31 | -| Safari 18.2 | 2024-12-31 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 131 | 2024-12-31 | +| Safari 18.2 | 2024-12-31 | +| Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/04-grid/10-tabulator.md b/docz/docs/03-demos/04-grid/10-tabulator.md index 9b0fa63..3ab874d 100644 --- a/docz/docs/03-demos/04-grid/10-tabulator.md +++ b/docz/docs/03-demos/04-grid/10-tabulator.md @@ -25,6 +25,7 @@ This demo was tested in the following deployments: | Browser | Version | Date | |:-------------|:--------|:-----------| | Chromium 133 | `6.3.1` | 2025-03-31 | +| Konqueror 22 | `6.3.1` | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/04-grid/12-vtl.md b/docz/docs/03-demos/04-grid/12-vtl.md index 2936a05..d12535c 100644 --- a/docz/docs/03-demos/04-grid/12-vtl.md +++ b/docz/docs/03-demos/04-grid/12-vtl.md @@ -28,7 +28,8 @@ This demo was tested in the following deployments: | Browser | Version | Date | |:-------------|:--------|:-----------| -| Chromium 125 | `1.4.0` | 2024-06-13 | +| Chromium 135 | `1.4.3` | 2025-04-23 | +| Konqueror 22 | `1.4.3` | 2025-04-23 | ::: @@ -40,7 +41,7 @@ installation in ViteJS projects using Vue 3 Table Lite. Using the `npm` tool, this command installs SheetJS and Vue 3 Table Lite: {`\ -npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.0`} +npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.3`} #### Rows and Columns Bindings @@ -136,7 +137,7 @@ cd sheetjs-vtl 2) Install dependencies: {`\ -npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.0`} +npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.3`} 3) Download [`src/App.vue`](pathname:///vtl/App.vue) and replace the contents: diff --git a/docz/docs/03-demos/04-grid/14-gdg.md b/docz/docs/03-demos/04-grid/14-gdg.md index 7ecd972..809b047 100644 --- a/docz/docs/03-demos/04-grid/14-gdg.md +++ b/docz/docs/03-demos/04-grid/14-gdg.md @@ -30,7 +30,28 @@ This demo was tested in the following environments: | Browser | Version | Date | |:-------------|:--------|:-----------| -| Chromium 125 | `5.3.2` | 2024-06-09 | +| Chromium 135 | `5.3.2` | 2025-04-23 | +| Konqueror 22 | `5.3.2` | 2025-04-23 | + +::: + +:::danger pass + +**Glide Data Grid is not compatible with ReactJS 19!** + +When trying to install in a new project, `npm install` will fail: + +``` +npm error Found: react@19.1.0 +npm error node_modules/react +npm error react@"^19.0.0" from the root project +npm error +npm error Could not resolve dependency: +npm error peer react@"^16.12.0 || 17.x || 18.x" from @glideapps/glide-data-grid@5.3.2 +npm error node_modules/@glideapps/glide-data-grid +``` + +This demo explicitly uses ReactJS 18. ::: @@ -344,13 +365,19 @@ cd sheetjs-gdg npm i ``` -2) Install SheetJS and Glide Data Grid libraries: +2) Explicitly downgrade ReactJS to version 18: + +```bash +npm i --save react@18 react-dom@18 +``` + +3) Install SheetJS and Glide Data Grid libraries: {`\ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @glideapps/glide-data-grid@5.3.2`} -3) Start dev server: +4) Start the dev server: ```bash npm run dev @@ -359,21 +386,21 @@ npm run dev The terminal window will display a URL (typically `http://localhost:5173`). Open the URL with a web browser and confirm that a page loads. -4) Download [`App.tsx`](pathname:///gdg/App.tsx) and replace `src/App.tsx`: +5) Download [`App.tsx`](pathname:///gdg/App.tsx) and replace `src/App.tsx`: ```bash curl -L -o src/App.tsx https://docs.sheetjs.com/gdg/App.tsx ``` -**Testing** +#### Testing -5) Refresh the browser window. A grid should be displayed: +6) Refresh the browser window. A grid should be displayed: ![glide-data-grid initial view](pathname:///gdg/pre.png) The demo downloads and processes https://docs.sheetjs.com/pres.numbers . -6) Make some changes to the grid data. +7) Make some changes to the grid data. :::note pass @@ -388,14 +415,14 @@ values should be 41, 42, 43, 44, and 45, as shown in the screenshot below: ![glide-data-grid after edits](pathname:///gdg/post.png) -7) Click on the "Export" button. The browser should attempt to download a XLSX +8) Click on the "Export" button. The browser should attempt to download a XLSX file (`sheetjs-gdg.xlsx`). Save the file. Open the generated file and verify the contents match the grid. -8) Reload the page. The contents will revert back to the original table. +9) Reload the page. The contents will revert back to the original table. -9) Click "Choose File" and select the new `sheetjs-gdg.xlsx` file. The table +10) Click "Choose File" and select the new `sheetjs-gdg.xlsx` file. The table should update with the data in the file. [^1]: See ["Array of Objects" in the ReactJS demo](/docs/demos/frontend/react#array-of-objects) diff --git a/docz/docs/03-demos/04-grid/16-rdg.md b/docz/docs/03-demos/04-grid/16-rdg.md index 9a88bb0..86e8c80 100644 --- a/docz/docs/03-demos/04-grid/16-rdg.md +++ b/docz/docs/03-demos/04-grid/16-rdg.md @@ -26,10 +26,11 @@ user-supplied sheets and exports data to XLSX workbooks: This demo was tested in the following environments: -| Version | Date | Notes | -|:----------------|:-----------|:---------------------| -| `7.0.0-beta.19` | 2024-06-09 | | -| `7.0.0-beta.44` | 2024-06-09 | Editing did not work | +| Browser | Version | Date | Notes | +|:-------------|:----------------|:-----------|:----------------------------| +| Chromium 135 | `7.0.0-beta.19` | 2025-04-23 | Requires ReactJS 18 | +| Chromium 135 | `7.0.0-beta.52` | 2025-04-23 | No edit support | +| Konqueror 22 | `7.0.0-beta.52` | 2025-04-23 | No edit support, CSS errors | ::: @@ -38,7 +39,8 @@ This demo was tested in the following environments: When this demo was last tested against the latest version, the grid correctly displayed data but data could not be edited by the user. -The current recommendation is to use version `7.0.0-beta.19`. +The current recommendation is to use version `7.0.0-beta.19` and to forcefully +downgrade ReactJS to version 18. ::: @@ -159,6 +161,18 @@ cd sheetjs-rdg npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`} +
+ Installing RDG version that supports editing (click to show) + +Editing support requires ReactJS 18 and React DataGrid version `7.0.0-beta.19`: + +{`\ +npm i -S react@18 react-dom@18 +npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`} + + +
+ 3) Download [`App.tsx`](pathname:///rdg/App.tsx) and replace `src/App.tsx`. ```bash @@ -174,6 +188,30 @@ npm run dev The terminal window will display a URL (typically `http://localhost:5173`). Open the URL with a web browser and confirm that a page loads. +:::caution pass + +**There were breaking changes in point releases of React DataGrid!** + +The JavaScript console may show an error message referencing `default`: + +``` +Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/react-data-grid.js?v=f9b1b87a' does not provide an export named 'default' (at App.tsx:2:8) +``` + +In a point release, `DataGrid` was moved from the default export to a named +export. The `src/App.tsx` script must be edited to reflect the change: + +```js title="src/App.tsx (edit highlighted lines)" +import React, { useEffect, useState, ChangeEvent } from "react"; +// highlight-next-line +import { textEditor, Column, DataGrid } from "react-data-grid"; +import { read, utils, WorkSheet, writeFile } from "xlsx"; +``` + +After updating the script, the webpage must be manually refreshed. + +::: + #### Testing 5) Confirm the table shows a list of Presidents. diff --git a/docz/docs/03-demos/04-grid/18-mui.md b/docz/docs/03-demos/04-grid/18-mui.md index ba54827..e902253 100644 --- a/docz/docs/03-demos/04-grid/18-mui.md +++ b/docz/docs/03-demos/04-grid/18-mui.md @@ -184,9 +184,10 @@ export default function MUITableSheetJSExport() { This demo was tested in the following deployments: -| Material UI | Emotion | Date | -|:------------|:----------|:-----------| -| `5.15.20` | `11.11.4` | 2024-06-12 | +| Browser | Material UI | Emotion | Date | +|:-------------|:------------|:----------|:-----------| +| Chromium 135 | `7.0.2` | `11.11.4` | 2025-04-23 | +| Konqueror 22 | `7.0.2` | `11.11.4` | 2025-04-23 | ::: @@ -200,7 +201,7 @@ cd sheetjs-mui 2) Install dependencies: {`\ -npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/material@5.15.20 @emotion/react@11.11.4 @emotion/styled@11.11.5`} +npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/material@7.0.2 @emotion/react@11.11.4 @emotion/styled@11.11.5`} 3) Download [`App.tsx`](pathname:///mui/table/App.tsx) and replace `src/App.tsx`. @@ -215,8 +216,14 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/table/App.tsx npm run dev ``` -The script should open the live demo in a web browser. Click the "Export" button -to save the file. Open the generated file in a spreadsheet editor. +The terminal window will display a URL (typically `http://localhost:5173`). +Open the URL with a web browser and confirm that a page loads. + +Confirm the table shows a list of Presidents. When the page loads, it will fetch +https://docs.sheetjs.com/pres.numbers, parse with SheetJS, and load the data in +the data grid. + +Click the "Export" button and open the generated file in a spreadsheet editor. ## Material UI Data Grid @@ -330,9 +337,10 @@ export default function App() { This demo was tested in the following deployments: -| Data Grid | Emotion | Date | -|:----------|:----------|:-----------| -| `7.6.2` | `11.11.4` | 2024-06-12 | +| Browser | Data Grid | Emotion | Date | +|:-------------|:----------|:----------|:-----------| +| Chromium 125 | `8.0.0` | `11.11.4` | 2025-04-23 | +| Konqueror 22 | `8.0.0` | `11.11.4` | 2025-04-23 | ::: @@ -346,7 +354,7 @@ cd sheetjs-muidg 2) Install dependencies: {`\ -npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/x-data-grid@7.6.2 @emotion/react@11.11.4 @emotion/styled@11.11.5`} +npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/x-data-grid@8.0.0 @emotion/react@11.11.4 @emotion/styled@11.11.5`} 3) Download [`App.tsx`](pathname:///mui/dg/App.tsx) and replace `src/App.tsx`. @@ -361,8 +369,30 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/dg/App.tsx npm run dev ``` +The terminal window will display a URL (typically `http://localhost:5173`). +Open the URL with a web browser and confirm that a page loads. + When the page loads, it will process https://docs.sheetjs.com/pres.numbers +:::caution pass + +The data grid uses nascent ECMAScript features that are not supported in older +browsers. Shims can be added in the `` section of `index.html`: + +```html title="index.html (add highlighted lines in HEAD)" + + + + + +``` + +::: + [^1]: See ["Sheet Objects"](/docs/csf/sheet) [^2]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output) [^3]: See [`table_to_book` in "HTML" Utilities](/docs/api/utilities/html#create-new-sheet) diff --git a/docz/docs/03-demos/12-static/09-nuxtjs.md b/docz/docs/03-demos/12-static/09-nuxtjs.md index 3bed3c9..1e22f22 100644 --- a/docz/docs/03-demos/12-static/09-nuxtjs.md +++ b/docz/docs/03-demos/12-static/09-nuxtjs.md @@ -48,7 +48,7 @@ This demo was tested in the following environments: | Nuxt Content | Nuxt | Date | |:-------------|:-----------|:-----------| -| `1.15.1` | `2.18.1` | 2024-11-14 | +| `1.15.1` | `2.18.1` | 2025-04-23 | | `2.13.4` | `3.14.159` | 2024-11-14 | ::: @@ -58,7 +58,7 @@ This demo was tested in the following environments: Nuxt embeds telemetry. According to the docs, it can be disabled with: ```bash -npx nuxt telemetry disable +npx -y nuxt telemetry disable ``` **When the demo was last tested, this command did not work.** @@ -268,7 +268,7 @@ The recommended solution is to switch to Node 18. 1) Create a stock app: ```bash -npx create-nuxt-app@4.0.0 sheetjs-nuxt +npx -y create-nuxt-app@4.0.0 sheetjs-nuxt ``` When prompted, enter the following options: @@ -412,7 +412,7 @@ This will create a static site in the `dist` folder. 9) Serve the static site: ```bash -npx http-server dist +npx -y http-server dist ``` Access the displayed URL (typically `http://localhost:8080`) in a web browser. diff --git a/docz/docs/03-demos/23-data/11-sqlite.md b/docz/docs/03-demos/23-data/11-sqlite.md index 53e8ab5..b0c6aad 100644 --- a/docz/docs/03-demos/23-data/11-sqlite.md +++ b/docz/docs/03-demos/23-data/11-sqlite.md @@ -40,6 +40,7 @@ This demo was tested in the following environments: | Platform | Connector Library | Date | |:-----------------|:----------------------------|:-----------| | Chromium 131 | `sql.js` (`1.8.0`) | 2025-01-08 | +| Konqueror 22 | `sql.js` (`1.8.0`) | 2025-04-23 | | NodeJS `20.18.0` | `better-sqlite3` (`11.7.2`) | 2025-01-08 | | BunJS `1.1.43` | (built-in) | 2025-01-08 | | Deno `2.1.4` | `sqlite` (`3.9.1`) | 2025-01-09 | diff --git a/docz/docs/03-demos/23-data/19-alasql.md b/docz/docs/03-demos/23-data/19-alasql.md index 368a997..34f0519 100644 --- a/docz/docs/03-demos/23-data/19-alasql.md +++ b/docz/docs/03-demos/23-data/19-alasql.md @@ -12,6 +12,8 @@ sidebar_custom_props: import current from '/version.js'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; [AlaSQL](https://alasql.org/) is a pure JavaScript in-memory SQL database. It @@ -28,10 +30,12 @@ strategies for general data processing in AlaSQL expressions. This demo was tested in the following environments: -| Environment | AlaSQL | Date | -|:--------------------|:-------|:----------:| -| NodeJS | 3.1.0 | 2024-06-03 | -| Standalone (Chrome) | 3.1.0 | 2024-06-03 | +| Environment | AlaSQL | Date | +|:-------------|:-------|:----------:| +| Chromium 135 | 3.1.0 | 2025-04-23 | +| Konqueror 22 | 3.1.0 | 2025-04-23 | +| NodeJS | 3.1.0 | 2025-04-23 | +| BunJS | 3.1.0 | 2025-04-23 | ::: @@ -263,8 +267,8 @@ const { promise: alasql } = require("alasql"); 1) Create an empty folder for the project: ```bash -mkdir alasql -cd alasql +mkdir sheetjs-alasql +cd sheetjs-alasql ``` 2) In the folder, create a stub `package.json` with the `xlsx` override: @@ -279,10 +283,23 @@ cd alasql 3) Install SheetJS and AlaSQL: + + + {`\ npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} + + + +{`\ +bun i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} + + + + + 4) Download the test file https://docs.sheetjs.com/pres.numbers : ```bash @@ -311,11 +328,24 @@ const { promise: alasql } = require("alasql"); 6) Run the test script + + + ```bash node SheetJSAlaSQL.js ``` -The output should display: + + + +```bash +bun run SheetJSAlaSQL.js +``` + + + + +The script will print the following array of objects: ```js [ @@ -325,7 +355,7 @@ The output should display: ] ``` -The script should generate `SheetJSAlaSQL1.xlsx` with the additional row: +The script will generate `SheetJSAlaSQL1.xlsx` with an additional row: ```csv Name,Index diff --git a/docz/docs/03-demos/27-local/01-file.md b/docz/docs/03-demos/27-local/01-file.md index f2bcb7b..98e8f22 100644 --- a/docz/docs/03-demos/27-local/01-file.md +++ b/docz/docs/03-demos/27-local/01-file.md @@ -274,8 +274,8 @@ const u8 = new Uint8Array(array); :::danger pass -Not all web APIs are supported in all browsers. For example, Firefox does not -support the "File System Access API". +Not all web APIs are supported in all browsers. For example, Konqueror and +Firefox do not support the "File System Access API". Even when a browser technically supports a web API, it may be disabled in the client browser. Some APIs do not give any feedback. @@ -464,16 +464,17 @@ When this demo was last tested, Google Chrome did not add an entry to the This browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 131 | 2025-01-07 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 131 | 2025-01-07 | Some lesser-used browsers do not support File System Access API: -| Browser | Date | -|:------------|:-----------| -| Safari 17.5 | 2025-01-07 | -| Firefox 133 | 2025-01-07 | +| Browser | Date | +|:-------------|:-----------| +| Safari 17.5 | 2025-01-07 | +| Konqueror 22 | 2025-04-23 | +| Firefox 133 | 2025-01-07 | ::: diff --git a/docz/docs/03-demos/27-local/02-websql.md b/docz/docs/03-demos/27-local/02-websql.md index 7a186c3..60b2e40 100644 --- a/docz/docs/03-demos/27-local/02-websql.md +++ b/docz/docs/03-demos/27-local/02-websql.md @@ -156,17 +156,18 @@ This workbook is typically exported to the filesystem with `writeFile`[^6]. This browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 118 | 2025-03-30 | +| Browser | Date | +|:-------------|:-----------| +| Konqueror 22 | 2025-04-23 | +| Chromium 118 | 2025-03-30 | Browsers that do not support WebSQL will throw errors: -| Browser | Date | Error Message | -|:------------|:-----------|:------------------------------| -| Chrome 133 | 2025-03-30 | `openDatabase is not defined` | -| Safari 18.3 | 2025-03-30 | `Web SQL is deprecated` | -| Firefox 136 | 2025-03-30 | `openDatabase is not defined` | +| Browser | Date | Error Message | +|:-------------|:-----------|:------------------------------| +| Chromium 133 | 2025-03-30 | `openDatabase is not defined` | +| Safari 18.3 | 2025-03-30 | `Web SQL is deprecated` | +| Firefox 136 | 2025-03-30 | `openDatabase is not defined` | ::: diff --git a/docz/docs/03-demos/27-local/03-storageapi.md b/docz/docs/03-demos/27-local/03-storageapi.md index db6795d..8506291 100644 --- a/docz/docs/03-demos/27-local/03-storageapi.md +++ b/docz/docs/03-demos/27-local/03-storageapi.md @@ -18,10 +18,11 @@ This demo covers two common use patterns: Each browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 131 | 2024-12-23 | -| Safari 18.2 | 2024-12-31 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 131 | 2024-12-23 | +| Safari 18.2 | 2024-12-31 | +| Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/27-local/05-clipboard.md b/docz/docs/03-demos/27-local/05-clipboard.md index 7393454..ecc1c8e 100644 --- a/docz/docs/03-demos/27-local/05-clipboard.md +++ b/docz/docs/03-demos/27-local/05-clipboard.md @@ -20,10 +20,17 @@ Not all Clipboard APIs offer access to all clipboard types. Each browser demo was tested in the following environments: -| Browser | Date | Notes -|:------------|:-----------|:-------------------------| -| Chrome 126 | 2024-06-30 | | -| Safari 17.3 | 2024-06-30 | `text/rtf` not supported | +| Browser | Architecture | Date | Notes | +|:-------------|:-------------|:-----------|:--------------------------------| +| Chromium 133 | `darwin-arm` | 2025-04-23 | | +| Safari 17.5 | `darwin-arm` | 2025-04-23 | `text/rtf` not supported | +| Chromium 116 | `win11-arm` | 2025-04-23 | | +| Edge 135 | `win11-arm` | 2025-04-23 | | +| Chromium 135 | `linux-arm` | 2025-04-23 | | +| Konqueror 22 | `linux-arm` | 2025-04-23 | `text/rtf`, files not supported | + +Windows and macOS tests were run against Excel, while Linux tests were run +against Gnumeric. ::: diff --git a/docz/docs/03-demos/27-local/09-indexeddb.md b/docz/docs/03-demos/27-local/09-indexeddb.md index 1ce1d2a..2e23b4e 100644 --- a/docz/docs/03-demos/27-local/09-indexeddb.md +++ b/docz/docs/03-demos/27-local/09-indexeddb.md @@ -41,10 +41,11 @@ production sites. This demo was last tested in the following environments: -| Browser | Date | `localForage` | -|:------------|:-----------|:--------------| -| Chrome 131 | 2024-12-31 | `1.10.0` | -| Safari 18.2 | 2024-12-31 | `1.10.0` | +| Browser | Date | `localForage` | +|:-------------|:-----------|:--------------| +| Chromium 131 | 2024-12-31 | `1.10.0` | +| Safari 18.2 | 2024-12-31 | `1.10.0` | +| Konqueror 22 | 2025-04-23 | `1.10.0` | ::: @@ -113,10 +114,11 @@ function SheetJSLocalForage() { This demo was last tested in the following environments: -| Browser | Date | DexieJS | -|:------------|:-----------|:---------| -| Chrome 131 | 2024-12-31 | `4.0.10` | -| Safari 18.2 | 2024-12-31 | `4.0.10` | +| Browser | Date | DexieJS | +|:-------------|:-----------|:---------| +| Chromium 131 | 2024-12-31 | `4.0.10` | +| Safari 18.2 | 2024-12-31 | `4.0.10` | +| Konqueror 22 | 2025-04-23 | `4.0.10` | ::: diff --git a/docz/docs/03-demos/32-extensions/02-chromium.md b/docz/docs/03-demos/32-extensions/02-chromium.md index f2abaa8..9ae12a3 100644 --- a/docz/docs/03-demos/32-extensions/02-chromium.md +++ b/docz/docs/03-demos/32-extensions/02-chromium.md @@ -23,9 +23,9 @@ tables with a content script and a background script. This demo was tested in the following deployments: -| Platform | Date | -|:------------|:-----------| -| Chrome 131 | 2025-01-02 | +| Platform | Date | +|:-------------|:-----------| +| Chromium 131 | 2025-01-02 | ::: diff --git a/docz/docs/03-demos/37-bigdata/01-stream.md b/docz/docs/03-demos/37-bigdata/01-stream.md index 0eb065d..dde4356 100644 --- a/docz/docs/03-demos/37-bigdata/01-stream.md +++ b/docz/docs/03-demos/37-bigdata/01-stream.md @@ -283,10 +283,11 @@ Joseph Biden,46 Each browser demo was tested in the following environments: -| Browser | Date | -|:------------|:-----------| -| Chrome 126 | 2024-07-18 | -| Safari 17.4 | 2024-07-18 | +| Browser | Date | +|:-------------|:-----------| +| Chromium 126 | 2024-07-18 | +| Safari 17.4 | 2024-07-18 | +| Konqueror 22 | 2025-04-23 | ::: diff --git a/docz/docs/03-demos/37-bigdata/02-worker.md b/docz/docs/03-demos/37-bigdata/02-worker.md index 583b750..6442883 100644 --- a/docz/docs/03-demos/37-bigdata/02-worker.md +++ b/docz/docs/03-demos/37-bigdata/02-worker.md @@ -191,13 +191,14 @@ const worker = new Worker( Each browser demo was tested in the following environments: -| Browser | Date | Comments | -|:------------|:-----------|:----------------------------------------| -| Chrome 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 | -| Firefox 133 | 2024-12-31 | File System Access API is not supported | +| 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 | +| Konqueror 22 | 2025-04-23 | File System Access API is not supported | +| Firefox 133 | 2024-12-31 | File System Access API is not supported | ::: diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md index 5f26f9d..6603efd 100644 --- a/docz/docs/03-demos/42-engines/09-hermes.md +++ b/docz/docs/03-demos/42-engines/09-hermes.md @@ -848,10 +848,13 @@ This demo was tested in the following deployments: | Architecture | Hermes | Date | |:-------------|:---------|:-----------| | `darwin-x64` | `0.13.0` | 2025-03-31 | +| `darwin-arm` | `0.13.0` | 2025-04-23 | | `win11-x64` | `0.13.0` | 2024-12-20 | | `win11-arm` | `0.13.0` | 2025-02-23 | | `linux-x64` | `0.13.0` | 2025-04-21 | +When this demo was last tested, `jsvu` did not support `linux-arm`. + ::: Due to limitations of the standalone binary, this demo will encode a test file diff --git a/docz/docs/03-demos/42-engines/23-jerryscript.md b/docz/docs/03-demos/42-engines/23-jerryscript.md index 224dd60..ed4fe5e 100644 --- a/docz/docs/03-demos/42-engines/23-jerryscript.md +++ b/docz/docs/03-demos/42-engines/23-jerryscript.md @@ -38,7 +38,7 @@ This demo was tested in the following environments: |:-------------|:----------|:-----------| | `darwin-x64` | `5020015` | 2025-03-31 | | `darwin-arm` | `d2d30df` | 2025-02-13 | -| `win11-x64` | `d2d30df` | 2024-12-19 | +| `win11-x64` | `5020015` | 2025-04-23 | | `win11-arm` | `5020015` | 2025-02-23 | | `linux-x64` | `5020015` | 2025-04-21 | | `linux-arm` | `5020015` | 2025-02-15 | diff --git a/docz/docs/03-demos/42-engines/25-mujs.md b/docz/docs/03-demos/42-engines/25-mujs.md index 9e96fc6..54befad 100644 --- a/docz/docs/03-demos/42-engines/25-mujs.md +++ b/docz/docs/03-demos/42-engines/25-mujs.md @@ -324,7 +324,7 @@ This demo was tested in the following deployments: |:-------------|:--------|:-----------| | `darwin-x64` | `1.3.6` | 2025-03-31 | | `darwin-arm` | `1.3.5` | 2025-02-13 | -| `win11-x64` | `1.3.5` | 2024-12-19 | +| `win11-x64` | `1.3.6` | 2025-04-23 | | `win11-arm` | `1.3.5` | 2025-02-23 | | `linux-x64` | `1.3.5` | 2025-01-09 | | `linux-arm` | `1.3.5` | 2025-02-15 | diff --git a/docz/docs/03-demos/42-engines/26-jurassic.md b/docz/docs/03-demos/42-engines/26-jurassic.md index 8883150..6f8973b 100644 --- a/docz/docs/03-demos/42-engines/26-jurassic.md +++ b/docz/docs/03-demos/42-engines/26-jurassic.md @@ -178,7 +178,7 @@ This demo was tested in the following deployments: |:-------------|:---------|:-----------| | `darwin-x64` | `3.2.9` | 2025-03-31 | | `darwin-arm` | `3.2.9` | 2025-03-30 | -| `win11-x64` | `3.2.8` | 2024-12-19 | +| `win11-x64` | `3.2.9` | 2025-04-23 | | `win11-arm` | `3.2.9` | 2025-02-23 | | `linux-x64` | `3.2.8` | 2025-01-10 | | `linux-arm` | `3.2.9` | 2025-02-15 | diff --git a/docz/docs/09-miscellany/04-testing.md b/docz/docs/09-miscellany/04-testing.md index 871eb64..9940788 100644 --- a/docz/docs/09-miscellany/04-testing.md +++ b/docz/docs/09-miscellany/04-testing.md @@ -83,6 +83,7 @@ ExtendScript Toolkit 3.5 is available as a standalone download for Windows. - Chrome 26+ (including Android 6.0+) - Safari 8+ (Desktop) and Safari 10+ (iOS) - Edge 13-18 and 79+ + - Konqueror 22 - FF Latest The automated browser tests seek to test the latest patch version of each major diff --git a/docz/docs/index.md b/docz/docs/index.md index 316da67..cfa63c7 100644 --- a/docz/docs/index.md +++ b/docz/docs/index.md @@ -381,6 +381,7 @@ In previous runs, tests passed in: - Android Browser versions starting from 5.1 - Safari macOS versions starting from 6 - Edge 13 - 18 and versions starting from 79 +- Konqueror 22 Sauce Labs has removed many legacy browser versions over the years. SheetJS LLC still maintains testing infrastructure for legacy deployments. Questions about diff --git a/docz/docusaurus.config.js b/docz/docusaurus.config.js index a1514c1..401cabe 100644 --- a/docz/docusaurus.config.js +++ b/docz/docusaurus.config.js @@ -198,7 +198,8 @@ const config = { { src: "https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js", async: true - } + }, + "/shim.js" ], stylesheets: [ { diff --git a/docz/package.json b/docz/package.json index ebf938f..1f0e346 100644 --- a/docz/package.json +++ b/docz/package.json @@ -47,7 +47,6 @@ ], "development": [ "last 1 chrome version", - "last 1 firefox version", "last 1 safari version" ] } diff --git a/docz/static/nuxt/3/sheetformer.ts b/docz/static/nuxt/3/sheetformer.ts index 9890b92..a85d242 100644 --- a/docz/static/nuxt/3/sheetformer.ts +++ b/docz/static/nuxt/3/sheetformer.ts @@ -9,7 +9,7 @@ export default defineTransformer({ extensions: ['.xlsx'], parse (_id: string, rawContent: string) { const wb = read(readFileSync(resolve("./content/" + _id.slice(8)))); - const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name])})); + const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name]!)})); return { _id, body }; } }); \ No newline at end of file diff --git a/docz/static/shim.js b/docz/static/shim.js new file mode 100644 index 0000000..9c8f078 --- /dev/null +++ b/docz/static/shim.js @@ -0,0 +1,2 @@ +/* workaround for legacy browsers */ +if(!Object.hasOwn) Object.hasOwn = function(o, v) { return o.hasOwnProperty(v); }; \ No newline at end of file diff --git a/docz/static/vtl/App.vue b/docz/static/vtl/App.vue index 54ac812..df9aacd 100644 --- a/docz/static/vtl/App.vue +++ b/docz/static/vtl/App.vue @@ -87,7 +87,7 @@ function exportFile(type: string): void { utils.book_append_sheet(wb, workBook.value[sheet], sheet); }); - writeFile(wb, `sheet.${type}`); + writeFile(wb, `SheetJSVTL.${type}`); } function selectSheet(sheet: string): void { diff --git a/tests/data/alasql-bun.sh b/tests/data/alasql-bun.sh new file mode 100755 index 0000000..30eb122 --- /dev/null +++ b/tests/data/alasql-bun.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/data/alasql/#nodejs-example + +cd /tmp +mkdir sheetjs-alasql +cd sheetjs-alasql +cat <package.json +{ + "overrides": { + "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz" + } +} +EOF + +bun i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz + +curl -L -O https://docs.sheetjs.com/pres.numbers + +cat <SheetJSAlaSQL.js +const { promise: alasql } = require("alasql"); + +(async() => { + /* read data from spreadsheet to JS */ + const data = await alasql(\` + SELECT \\\`Name\\\`, \\\`Index\\\` + FROM XLSX("pres.numbers", {autoExt:false}) + WHERE \\\`Index\\\` < 45 + \`); + console.log(data); + + /* write data from JS to spreadsheet */ + data.push({ Name: "SheetJS Dev", Index: 47 }); + await alasql(\`SELECT * INTO XLSX("SheetJSAlaSQL1.xlsx") FROM ?\`, [data]); +})(); +EOF + +bun run SheetJSAlaSQL.js + +bunx xlsx-cli SheetJSAlaSQL1.xlsx diff --git a/tests/data/alasql-node.sh b/tests/data/alasql-node.sh new file mode 100755 index 0000000..a7bf463 --- /dev/null +++ b/tests/data/alasql-node.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# https://docs.sheetjs.com/docs/demos/data/alasql/#nodejs-example + +cd /tmp +mkdir sheetjs-alasql +cd sheetjs-alasql +cat <package.json +{ + "overrides": { + "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz" + } +} +EOF + +npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz + +curl -L -O https://docs.sheetjs.com/pres.numbers + +cat <SheetJSAlaSQL.js +const { promise: alasql } = require("alasql"); + +(async() => { + /* read data from spreadsheet to JS */ + const data = await alasql(\` + SELECT \\\`Name\\\`, \\\`Index\\\` + FROM XLSX("pres.numbers", {autoExt:false}) + WHERE \\\`Index\\\` < 45 + \`); + console.log(data); + + /* write data from JS to spreadsheet */ + data.push({ Name: "SheetJS Dev", Index: 47 }); + await alasql(\`SELECT * INTO XLSX("SheetJSAlaSQL1.xlsx") FROM ?\`, [data]); +})(); +EOF + +node SheetJSAlaSQL.js + +npx xlsx-cli SheetJSAlaSQL1.xlsx