diff --git a/docz/docs/02-getting-started/01-installation/02-frameworks.md b/docz/docs/02-getting-started/01-installation/02-frameworks.md index 63a19b6..726e903 100644 --- a/docz/docs/02-getting-started/01-installation/02-frameworks.md +++ b/docz/docs/02-getting-started/01-installation/02-frameworks.md @@ -40,6 +40,24 @@ pnpm install --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz` yarn remove xlsx yarn add https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} + +:::caution pass + +Newer releases of Yarn may throw an error: + +``` +Usage Error: It seems you are trying to add a package using a https:... url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: yarn add my-package@https:... +``` + +The workaround is to prepend the URL with `xlsx@`: + +{`\ +yarn add xlsx@https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} + + +::: + @@ -67,7 +85,7 @@ Snyk security tooling may report errors involving "Prototype Pollution": Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-XLSX-5457926] ``` -As noted in the [Snyk report](https://web.archive.org/web/20231129100639/https://security.snyk.io/vuln/SNYK-JS-XLSX-5457926): +As noted in the [Snyk report](https://security.snyk.io/vuln/SNYK-JS-XLSX-5457926): > The issue is resolved in version 0.19.3 @@ -176,6 +194,23 @@ pnpm install --save file:vendor/xlsx-${current}.tgz`} {`\ yarn add file:vendor/xlsx-${current}.tgz`} + +:::caution pass + +Newer releases of Yarn may throw an error: + +``` +Usage Error: The file:vendor/xlsx-0.20.2.tgz string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name? +``` + +The workaround is to prepend the URI with `xlsx@`: + +{`\ +yarn add xlsx@file:vendor/xlsx-${current}.tgz`} + + +::: + diff --git a/docz/docs/02-getting-started/01-installation/03-nodejs.md b/docz/docs/02-getting-started/01-installation/03-nodejs.md index e091b8e..75ba8be 100644 --- a/docz/docs/02-getting-started/01-installation/03-nodejs.md +++ b/docz/docs/02-getting-started/01-installation/03-nodejs.md @@ -38,6 +38,24 @@ pnpm install --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz` yarn remove xlsx yarn add https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} + +:::caution pass + +Newer releases of Yarn may throw an error: + +``` +Usage Error: It seems you are trying to add a package using a https:... url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: yarn add my-package@https:... +``` + +The workaround is to prepend the URL with `xlsx@`: + +{`\ +yarn add xlsx@https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} + + +::: + @@ -57,7 +75,7 @@ Snyk security tooling may report errors involving "Prototype Pollution": Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-XLSX-5457926] ``` -As noted in the [Snyk report](https://web.archive.org/web/20231129100639/https://security.snyk.io/vuln/SNYK-JS-XLSX-5457926): +As noted in the [Snyk report](https://security.snyk.io/vuln/SNYK-JS-XLSX-5457926): > The issue is resolved in version 0.19.3 @@ -165,6 +183,23 @@ pnpm install --save file:vendor/xlsx-${current}.tgz`} {`\ yarn add file:vendor/xlsx-${current}.tgz`} + +:::caution pass + +Newer releases of Yarn may throw an error: + +``` +Usage Error: The file:vendor/xlsx-0.20.2.tgz string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name? +``` + +The workaround is to prepend the URI with `xlsx@`: + +{`\ +yarn add xlsx@file:vendor/xlsx-${current}.tgz`} + + +::: + diff --git a/docz/docs/03-demos/02-frontend/07-angularjs.md b/docz/docs/03-demos/02-frontend/07-angularjs.md index ad70776..6bd4503 100644 --- a/docz/docs/03-demos/02-frontend/07-angularjs.md +++ b/docz/docs/03-demos/02-frontend/07-angularjs.md @@ -34,10 +34,10 @@ models and data flow strategies. This demo was tested in the following environments: -| Version | Date | -|:------------------|:-----------| -| `1.8.2` (latest) | 2023-12-04 | -| `1.2.32` (legacy) | 2023-12-04 | +| Browser | Version | Date | +|:-------------|:------------------|:-----------| +| Chromiun 125 | `1.8.2` (latest) | 2024-06-09 | +| Chromium 125 | `1.2.32` (legacy) | 2024-06-09 | ::: @@ -238,7 +238,7 @@ $scope.exportSheetJS = function() { ```
- Complete Example (click to show) + How to run the example (click to hide) 1) Save the following to `index.html`: @@ -291,6 +291,10 @@ app.controller('sheetjs', function($scope, $http) { 2) Start a local web server with `npx http-server .` and access the displayed URL with a web browser (typically `http://localhost:8080`) +When the page loads, the app will fetch https://docs.sheetjs.com/pres.xlsx and +store an array of objects in state. When the "Export Table" button is clicked, +a worksheet is created and exported to XLSX. +
### HTML @@ -340,7 +344,7 @@ The HTML table can be directly exported with [`table_to_book`](/docs/api/utiliti ```
- Complete Example (click to show) + How to run the example (click to hide) 1) Save the following to `index.html`: @@ -386,6 +390,10 @@ app.controller('sheetjs', function($scope, $http) { 2) Start a local web server with `npx http-server .` and access the displayed URL with a web browser (typically `http://localhost:8080`) +When the page loads, the app will fetch https://docs.sheetjs.com/pres.xlsx and +store the HTML string in state. When the "Export Table" button is clicked, a +worksheet is created and exported to XLSX. +
[^1]: See [`$http`](https://docs.angularjs.org/api/ng/service/$http) in the AngularJS documentation. diff --git a/docz/docs/03-demos/04-grid/14-gdg.md b/docz/docs/03-demos/04-grid/14-gdg.md index 160b124..732a09f 100644 --- a/docz/docs/03-demos/04-grid/14-gdg.md +++ b/docz/docs/03-demos/04-grid/14-gdg.md @@ -26,7 +26,11 @@ user-supplied sheets and exports data to XLSX workbooks: :::note Tested Deployments -This demo was last tested on 2023 December 04 with Glide Data Grid 5.3.2 +This demo was tested in the following environments: + +| Browser | Version | Date | +|:-------------|:--------|:-----------| +| Chromiun 125 | `5.3.2` | 2024-06-09 | ::: @@ -384,7 +388,8 @@ 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 to create a XLSX file (`sheetjs-gdg.xlsx`). +7) 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. diff --git a/docz/docs/03-demos/04-grid/16-rdg.md b/docz/docs/03-demos/04-grid/16-rdg.md index f74c755..9a88bb0 100644 --- a/docz/docs/03-demos/04-grid/16-rdg.md +++ b/docz/docs/03-demos/04-grid/16-rdg.md @@ -28,15 +28,15 @@ This demo was tested in the following environments: | Version | Date | Notes | |:----------------|:-----------|:---------------------| -| `7.0.0-beta.19` | 2023-12-04 | | -| `7.0.0-beta.41` | 2023-12-04 | Editing did not work | +| `7.0.0-beta.19` | 2024-06-09 | | +| `7.0.0-beta.44` | 2024-06-09 | Editing did not work | ::: :::danger pass -When this demo was last tested, the grid correctly displayed data but could not -be edited by the user. +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`. @@ -50,7 +50,7 @@ installation with Yarn and other package managers. Using the `npm` tool, this command installs SheetJS and React Data Grid: {`\ -npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.41`} +npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`} Methods and components in both libraries can be loaded in pages using `import`: @@ -146,17 +146,17 @@ function rdg_to_ws(rows: Row[]): WorkSheet { ## Demo -1) Create a new TypeScript `create-react-app` app: +1) Create a new ViteJS app using the `react-ts` template: ```bash -npx create-react-app sheetjs-rdg --template typescript +npm create vite@latest -- sheetjs-rdg --template react-ts cd sheetjs-rdg ``` 2) Install dependencies: {`\ -npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.41`} +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`. @@ -168,12 +168,24 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/rdg/App.tsx 4) Start the development server: ```bash -npm start +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. + #### Testing -5) When the page loads, it will fetch https://docs.sheetjs.com/pres.numbers, -parse with SheetJS, and load the data in the data grid. +5) Confirm the table shows a list of Presidents. -6) Click one of the "export" buttons to export the grid data to file. +When the page loads, it will fetch https://docs.sheetjs.com/pres.numbers, parse +with SheetJS, and load the data in the data grid. + +6) Click the "export [.xlsx]" button to export the grid data to XLSX. It should +attempt to download `SheetJSRDG.xlsx`. + +7) Open the generated file in a spreadsheet editor. Set cell A7 to "SheetJS Dev" +and set cell B7 to 47. Save the file. + +8) Use the file picker to select the modified file. The table will refresh and +show the new data. \ No newline at end of file diff --git a/docz/docs/03-demos/17-mobile/06-flutter.md b/docz/docs/03-demos/17-mobile/06-flutter.md index bc193e6..183c25c 100644 --- a/docz/docs/03-demos/17-mobile/06-flutter.md +++ b/docz/docs/03-demos/17-mobile/06-flutter.md @@ -10,6 +10,8 @@ sidebar_custom_props: --- import current from '/version.js'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; Dart[^1] + Flutter[^2] is a popular cross-platform app framework. JavaScript @@ -45,15 +47,15 @@ This demo was tested in the following environments: | OS | Device | Dart | Flutter | Date | |:-----------|:------------------|:--------|:---------|:-----------| -| Android 29 | NVIDIA Shield | `3.2.2` | `3.16.2` | 2023-12-04 | -| iOS 15.1 | iPad Pro | `3.2.2` | `3.16.2` | 2023-12-04 | +| Android 30 | NVIDIA Shield | `3.4.3` | `3.22.2` | 2024-06-09 | +| iOS 15.1 | iPad Pro | `3.4.3` | `3.22.2` | 2024-06-09 | **Simulators** | OS | Device | Dart | Flutter | Dev Platform | Date | |:-----------|:------------------|:--------|:---------|:-------------|:-----------| -| Android 34 | Pixel 3a | `3.2.2` | `3.16.2` | `darwin-x64` | 2023-12-04 | -| iOS 17.0.1 | iPhone 15 Pro Max | `3.2.2` | `3.16.2` | `darwin-x64` | 2023-12-04 | +| Android 34 | Pixel 3a | `3.4.3` | `3.22.2` | `darwin-x64` | 2024-06-09 | +| iOS 17.5 | iPhone 15 Pro Max | `3.4.3` | `3.22.2` | `darwin-x64` | 2024-06-09 | ::: @@ -219,12 +221,31 @@ class SheetJSFlutterState extends State { Run `flutter doctor` and confirm the following items are checked: + + + ``` [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) -[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1) -[✓] Android Studio (version 2022.3) ``` + + + +``` +[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) +[✓] Xcode - develop for iOS and macOS (Xcode 15.4) +``` + + + + +``` +[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) +``` + + + + (the actual version numbers may differ)
@@ -290,6 +311,22 @@ If Chromium is installed, the environment variable should be manually assigned: export CHROME_EXECUTABLE=/Applications/Chromium.app/Contents/MacOS/Chromium ``` + + + + + + +```bash +export CHROME_EXECUTABLE=/Applications/Chromium.app/Contents/MacOS/Chromium +``` + + + + + + + :::
@@ -297,17 +334,18 @@ export CHROME_EXECUTABLE=/Applications/Chromium.app/Contents/MacOS/Chromium Run `flutter emulators` and check for both `ios` and `android` emulators: ``` -apple_ios_simulator • iOS Simulator • Apple • ios -Pixel_3a_API_34 • Pixel 3a API 34 • Google • android +Id • Name • Manufacturer • Platform + +apple_ios_simulator • iOS Simulator • Apple • ios +Pixel_3a_API_34 • Pixel 3a API 34 • Google • android ``` -1) Disable telemetry. +1) Disable telemetry. The following commands were confirmed to work: ```bash dart --disable-telemetry dart --disable-analytics flutter config --no-analytics -flutter config --disable-telemetry ``` ### Base Project @@ -453,9 +491,9 @@ flutter run The app fetches https://docs.sheetjs.com/pres.numbers, parses, converts data to an array of arrays, and presents the data in a Flutter `Table` widget. -:::caution pass +:::info pass -When the demo was last run, there was a build error: +In some demo runs, the build failed with an Android SDK error: ``` │ The plugin flutter_js requires a higher Android SDK version. │ @@ -513,7 +551,7 @@ flutter devices The list should include the device: ``` - SheetJS (mobile) • 1234567890 • android-arm64 • Android 10 (API 29) + SheetJS (mobile) • 726272627262726272 • android-arm64 • Android 11 (API 30) ^^^^^^^--- the first column is the name ``` @@ -529,7 +567,9 @@ flutter build apk --release flutter install ``` -The script will ask for a device: +:::note pass + +The script may ask for a device: ``` [1]: SheetJS (1234567890) @@ -541,7 +581,9 @@ Please choose one (or "q" to quit): Select the number corresponding to the device. -18) Launch the installed `sheetjs_flutter` app on the device +::: + +18) Launch the installed `sheetjs_flutter` app on the device. :::caution pass @@ -564,7 +606,7 @@ flutter devices The list should include the device: ``` - SheetPad (mobile) • 00000000-0000000000000000 • ios • iOS 15.1 19B74 + SheetPad (mobile) • 00000000-0000000000000000 • ios • iOS 15.1 19B74 ^^^^^^^^--- the first column is the name ``` @@ -574,6 +616,55 @@ The list should include the device: flutter run -d SheetPad ``` +In debug mode, "Flutter tools" will attempt to connect to the running app. The +device will ask for permission: + +> "Sheetjs Flutter" would like to find and connect to devices on your local network. + +Tap "OK" to continue. + +:::caution pass + +When this demo was last tested, the build failed with an error: + +```text +Could not build the precompiled application for the device. +Error (Xcode): No profiles for 'com.example.sheetjsFlutter' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.example.sheetjsFlutter'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild. +``` + +The message includes a hint: + +``` +Verify that the Bundle Identifier in your project is your signing id in Xcode + open ios/Runner.xcworkspace +``` + +Open the workspace and select the "Runner" project in the Navigator. In the main +pane, select "Signing & Capabilities" and ensure a Team is selected. From +the menu bar, select "Product" > "Run" to run the app. + +::: + +:::info pass + +If there is an "Untrusted Developer" error, the certificate must be trusted on +the device. The following steps were verified in iOS 15.1: + +1) Open the "Settings" app on the device + +In the "APPS FROM DEVELOPER" section of the new screen, "Sheetjs Flutter" should +be displayed. If it is missing, tap the "<" button near the top of the screen +and select a different certificate from the list. + +2) Select "General" > "VPN & Device Management". + +3) In the "DEVELOPER APP" section, tap the certificate that is "Not Trusted". + +4) After confirming "Sheetjs Flutter" is in the list, tap the "Trust" button and +tap "Trust" in the popup. + +::: + [^1]: https://dart.dev/ is the official site for the Dart Programming Language. [^2]: https://flutter.dev/ is the official site for the Flutter Framework. [^3]: [The `flutter_js` package](https://pub.dev/packages/flutter_js) is hosted on the Dart package repository. diff --git a/docz/docs/03-demos/32-extensions/11-matlab.md b/docz/docs/03-demos/32-extensions/11-matlab.md index 5d6dbfc..9852e20 100644 --- a/docz/docs/03-demos/32-extensions/11-matlab.md +++ b/docz/docs/03-demos/32-extensions/11-matlab.md @@ -23,7 +23,12 @@ spreadsheets into simple XLSX files for MATLAB. :::note Tested Deployments -This demo was last tested by SheetJS users on 2023 November 27 in MATLAB R2023a. +This demo was tested by SheetJS users in the following deployments: + +| Architecture | Version | Date | +|:-------------|:--------|:-----------| +| `darwin-x64` | R2024a | 2024-06-09 | +| `win10-x64` | R2024a | 2024-06-09 | ::: diff --git a/docz/static/flutter/and.png b/docz/static/flutter/and.png index 9cd3a28..ca098a6 100644 Binary files a/docz/static/flutter/and.png and b/docz/static/flutter/and.png differ diff --git a/docz/static/flutter/ios.png b/docz/static/flutter/ios.png index 9b5e8c3..eb5e2c8 100644 Binary files a/docz/static/flutter/ios.png and b/docz/static/flutter/ios.png differ