workarounds for docusaurus breaking changes

This commit is contained in:
SheetJS 2024-04-14 03:40:38 -04:00
parent ac6e3daa1c
commit b571592055
58 changed files with 117 additions and 117 deletions

@ -27,7 +27,7 @@ new versions are released!
:::
:::warning pass
:::danger pass
A number of services host older versions of the SheetJS libraries. Due to
syncing issues, they are generally out of date.
@ -206,7 +206,7 @@ xport.addEventListener("click", async() => {
## Bower
:::warning pass
:::danger pass
Bower is deprecated and the maintainers recommend using other tools.

@ -80,7 +80,7 @@ Until Snyk fixes the bugs, the official recommendation is to
### Legacy Endpoints
:::warning pass
:::danger pass
Older releases are technically available on the public npm registry as `xlsx`,
but the registry is out of date. The latest version on that registry is 0.18.5
@ -209,7 +209,7 @@ The ["Bundlers" demo](/docs/demos/frontend/bundler) includes complete examples.
Dynamic imports with `import()` will only download scripts when they are needed.
:::warning pass
:::danger pass
Dynamic `import` will always download the full contents of the imported scripts!

@ -70,7 +70,7 @@ Until Snyk fixes the bugs, the official recommendation is to
### Legacy Endpoints
:::warning pass
:::danger pass
Older releases are technically available on the public npm registry as `xlsx`,
but the registry is out of date. The latest version on that registry is 0.18.5
@ -237,7 +237,7 @@ XLSX.set_cptable(cpexcel);
#### NextJS
:::warning pass
:::danger pass
`fs` cannot be imported from the top level in NextJS pages. This will not work:

@ -137,7 +137,7 @@ sap.ui.define([
})
```
:::warning pass
:::danger pass
**Copy and pasting code does not work** for SheetJS scripts as they contain
Unicode characters that may be mangled. The standalone script should be

@ -70,7 +70,7 @@ and the types URLs should be updated at the same time:
#### Deno Registry
:::warning pass
:::danger pass
The official Deno registry is out of date. This is a registry bug.

@ -947,7 +947,7 @@ current Java releases.
:::
:::warning pass
:::danger pass
There are a number of potential pitfalls.

@ -455,7 +455,7 @@ NextJS requires a number of workarounds for simple client-side JavaScript code.
:::
:::warning Telemetry
:::danger Telemetry
NextJS collects telemetry by default. The `telemetry` subcommand can disable it:

@ -38,7 +38,7 @@ should be directed to the Angular project.
:::
:::warning Telemetry
:::danger Telemetry
Angular CLI enables telemetry by default. When using a recent version, disable
analytics globally through the CLI tool before creating a new project:
@ -69,7 +69,7 @@ import { read, utils, writeFile } from 'xlsx';
The various SheetJS APIs work with various data shapes. The preferred state
depends on the application.
:::warning pass
:::danger pass
Angular 17 broke backwards compatibility with projects using Angular 2 - 16.
@ -724,7 +724,7 @@ this.columns = Array.from({ length: range.e.c + 1 }, (_, i) => ({
## Older Versions
:::warning pass
:::danger pass
This demo is included for legacy deployments. There are incompatibilities with
different NodeJS and other ecosystem versions. Issues should be raised with

@ -10,7 +10,7 @@ sidebar_position: 7
import current from '/version.js';
import CodeBlock from '@theme/CodeBlock';
:::warning pass
:::danger pass
This demo is for the legacy AngularJS framework (version 1).

@ -57,7 +57,7 @@ require(
</script>`}
</CodeBlock>
:::warning pass
:::danger pass
The official Google CDN does not have the newest releases of Dojo Toolkit

@ -38,7 +38,7 @@ else document.write(XLSX.version);
## Internet Explorer
:::warning pass
:::danger pass
Internet Explorer is unmaintained and users should consider modern browsers.
The SheetJS testing grid still includes IE and should work.

@ -260,7 +260,7 @@ npx webpack@3.x -p
</TabItem>
<TabItem value="4+" label="4.x, 5.x and beyond" default>
:::warning Pinning specific versions of webpack
:::danger Pinning specific versions of webpack
The webpack tooling is not designed for switching between versions. A specific
version above 4.0 can be pinned by locally installing webpack and the CLI tool.

@ -51,7 +51,7 @@ can load relevant parts of the library:
import { read, utils, writeFileXLSX } from 'xlsx';
```
:::warning Parcel Bug
:::danger Parcel Bug
Errors of the form `Could not statically evaluate fs call` stem from a Parcel
bug[^1]. Upgrade to Parcel version 1.5.0 or later.

@ -63,7 +63,7 @@ part of the `utils` object, the required import is:
import { utils, writeFile } from 'xlsx';
```
:::warning pass
:::danger pass
When this demo was tested against the `@swc/core@1.3.100`, `spack` crashed:

@ -489,7 +489,7 @@ was added to the platform, third party modules wrapped the native APIs.
#### request
:::warning pass
:::danger pass
`request` has been deprecated and should only be used in legacy deployments.

@ -19,7 +19,7 @@ This demo covers three workflows:
- [Reading mail](#reading-mail) covers libraries for reading messages
- [Data files](#data-files) covers mailbox file formats
:::warning pass
:::danger pass
There are a number of caveats when dealing with live mail servers. It is advised
to follow connector module documentation carefully and test with new accounts
@ -29,7 +29,7 @@ before integrating with important inboxes or accounts.
## Live Servers
:::warning pass
:::danger pass
It is strongly advised to use a test email address before using an important
address. One small mistake could erase decades of messages or result in a block

@ -344,7 +344,7 @@ After installing engines, re-run the script.
PhantomJS is a headless web browser powered by WebKit.
:::warning pass
:::danger pass
This information is provided for legacy deployments. PhantomJS development has
been suspended and there are known vulnerabilities, so new projects should use

@ -33,7 +33,7 @@ This demo was tested in the following environments:
:::
:::warning pass
:::danger pass
When this demo was last tested, the grid correctly displayed data but could not
be edited by the user.

@ -56,7 +56,7 @@ through a special Export button. It handles the SheetJS operations internally.
### Angular UI Grid
:::warning pass
:::danger pass
This UI Grid is for AngularJS, not the modern Angular. New projects should not
use AngularJS. This demo is included for legacy applications.

@ -48,7 +48,7 @@ overridden through a `package.json` override in the latest versions of NodeJS:
:::
:::warning Telemetry
:::danger Telemetry
GatsbyJS collects telemetry by default. The `telemetry` subcommand can disable it:

@ -31,7 +31,7 @@ The ["Demo"](#demo) uses NextJS and SheetJS to pull data from a spreadsheet.
We'll explore how to create asset modules that process spreadsheet data at build
time and how to read files on the server in NextJS lifecycle methods.
:::warning Telemetry
:::danger Telemetry
NextJS collects telemetry by default. The `telemetry` subcommand can disable it:
@ -196,7 +196,7 @@ export async function getStaticProps() {
The [SheetJS NodeJS module](/docs/getting-started/installation/nodejs) can be
imported from page scripts.
:::warning pass
:::danger pass
[The SheetJS ESM build](/docs/getting-started/installation/nodejs#esm-import)
does not load NodeJS native modules directly. The Installation section includes
@ -243,7 +243,7 @@ export async function getServerSideProps() {
}
```
:::warning Reading and writing files during the build process
:::danger Reading and writing files during the build process
As the NextJS workaround is non-traditional, it bears repeating:
@ -711,7 +711,7 @@ npx next export
</TabItem>
<TabItem value="14" label="NextJS 14">
:::warning NextJS breaking changes
:::danger NextJS breaking changes
**NextJS 14 removed the `export` subcommand!**

@ -53,7 +53,7 @@ This demo was tested in the following environments:
:::
:::warning Telemetry
:::danger Telemetry
Nuxt embeds telemetry. According to the docs, it can be disabled with:

@ -36,7 +36,7 @@ flowchart LR
aoo --> |index.astro\ntemplate body| html
```
:::warning Telemetry
:::danger Telemetry
AstroJS enables telemetry by default. The tool has an option to disable telemetry:

@ -316,7 +316,7 @@ tapping "Import data from a spreadsheet", verify that the app shows new data:
**iOS Testing**
:::warning pass
:::danger pass
**iOS testing can only be performed on Apple hardware running macOS!**
@ -542,7 +542,7 @@ Click on the icon and select the real device from the list.
## Local Files
:::warning pass
:::danger pass
React Native does not provide a native file picker or a method for reading and
writing data from documents on the devices. A third-party library must be used.
@ -926,7 +926,7 @@ This demo was tested in the following environments:
:::
:::warning pass
:::danger pass
There are many moving parts and pitfalls with React Native apps. It is strongly
recommended to follow the official React Native tutorials for iOS and Android
@ -1260,7 +1260,7 @@ npx xlsx-cli sheetjsw.xlsx
**iOS Testing**
:::warning pass
:::danger pass
**iOS testing can only be performed on Apple hardware running macOS!**

@ -69,7 +69,7 @@ This demo was tested in the following environments:
:::
:::warning Telemetry
:::danger Telemetry
Before starting this demo, manually disable telemetry.
@ -301,16 +301,16 @@ In the last macOS test, the following output was displayed:
<summary><b>Expected output</b> (click to hide)</summary>
<pre>
<span {...g}></span> Getting environment information{'\n'}
{'\n'}
<b>No issues were detected.</b>{'\n'}
<span {...g}></span> Your ANDROID_HOME environment variable is set and points to correct directory.{'\n'}
<span {...g}></span> Your adb from the Android SDK is correctly installed.{'\n'}
<span {...g}></span> The Android SDK is installed.{'\n'}
<span {...g}></span> A compatible Android SDK for compilation is found.{'\n'}
<span {...g}></span> Javac is installed and is configured properly.{'\n'}
<span {...g}></span> The Java Development Kit (JDK) is installed and is configured properly.{'\n'}
<span {...g}></span> Getting NativeScript components versions information...{'\n'}
<span {...g}></span> Getting environment information
<b>No issues were detected.</b>
<span {...g}></span> Your ANDROID_HOME environment variable is set and points to correct directory.
<span {...g}></span> Your adb from the Android SDK is correctly installed.
<span {...g}></span> The Android SDK is installed.
<span {...g}></span> A compatible Android SDK for compilation is found.
<span {...g}></span> Javac is installed and is configured properly.
<span {...g}></span> The Java Development Kit (JDK) is installed and is configured properly.
<span {...g}></span> Getting NativeScript components versions information...
<span {...g}></span> Component nativescript has 8.6.1 version and is up to date.
</pre>
@ -328,19 +328,19 @@ In the last macOS test, the following output was displayed:
<summary><b>Expected output</b> (click to hide)</summary>
<pre>
<span {...g}></span> Getting environment information{'\n'}
{'\n'}
<b>No issues were detected.</b>{'\n'}
<span {...g}></span> Xcode is installed and is configured properly.{'\n'}
<span {...g}></span> xcodeproj is installed and is configured properly.{'\n'}
<span {...g}></span> CocoaPods are installed.{'\n'}
<span {...g}></span> CocoaPods update is not required.{'\n'}
<span {...g}></span> CocoaPods are configured properly.{'\n'}
<span {...g}></span> Your current CocoaPods version is newer than 1.0.0.{'\n'}
<span {...g}></span> Python installed and configured correctly.{'\n'}
<span {...g}></span> The Python 'six' package is found.{'\n'}
<span {...g}></span> Xcode version 15.0.1 satisfies minimum required version 10.{'\n'}
<span {...g}></span> Getting NativeScript components versions information...{'\n'}
<span {...g}></span> Getting environment information
<b>No issues were detected.</b>
<span {...g}></span> Xcode is installed and is configured properly.
<span {...g}></span> xcodeproj is installed and is configured properly.
<span {...g}></span> CocoaPods are installed.
<span {...g}></span> CocoaPods update is not required.
<span {...g}></span> CocoaPods are configured properly.
<span {...g}></span> Your current CocoaPods version is newer than 1.0.0.
<span {...g}></span> Python installed and configured correctly.
<span {...g}></span> The Python 'six' package is found.
<span {...g}></span> Xcode version 15.0.1 satisfies minimum required version 10.
<span {...g}></span> Getting NativeScript components versions information...
<span {...g}></span> Component nativescript has 8.6.1 version and is up to date.
</pre>
@ -619,7 +619,7 @@ The first item in the list will change.
### iOS
:::warning pass
:::danger pass
**iOS testing can only be performed on Apple hardware running macOS!**

@ -63,7 +63,7 @@ The file integration uses `@awesome-cordova-plugins/file` version `6.4.0`.
:::
:::warning Telemetry
:::danger Telemetry
Before starting this demo, manually disable telemetry. On Linux and MacOS:
@ -471,7 +471,7 @@ brew install gradle
:::
:::warning pass
:::danger pass
When the demo was last tested on Android, reading files worked as expected.
However, the generated files were not externally visible from the Files app.

@ -41,7 +41,7 @@ This demo was tested in the following environments:
:::
:::warning Telemetry
:::danger Telemetry
Before starting this demo, manually disable telemetry. On Linux and MacOS:

@ -50,7 +50,7 @@ This demo was tested in the following environments:
:::
:::warning Telemetry
:::danger Telemetry
Before starting this demo, manually disable telemetry. On MacOS:

@ -12,7 +12,7 @@ extensions and libraries to create a hybrid development experience. Developers
well-versed in web technologies can now build actual mobile applications that
run on iOS and Android!
:::warning pass
:::danger pass
**The ecosystem has broken backwards-compatibility many times!**

@ -61,7 +61,7 @@ applications, [check the mobile demo](/docs/demos/mobile/reactnative)
:::
:::warning Telemetry
:::danger Telemetry
**React Native for Windows + macOS commands include telemetry without proper**
**disclaimer or global opt-out.**
@ -382,7 +382,7 @@ RCT_EXPORT_METHOD(PickAndRead:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromi
## Windows Demo
:::warning pass
:::danger pass
There is no simple standalone executable file at the end of the process.
@ -482,7 +482,7 @@ Specific Windows SDK versions can be installed through Visual Studio Installer.
npx react-native run-windows --no-telemetry --arch=X86
```
:::warning pass
:::danger pass
The ARM64 binary is normally built with
@ -616,7 +616,7 @@ npx react-native run-windows --no-telemetry
npx react-native run-windows --no-telemetry --arch=X86
```
:::warning pass
:::danger pass
The ARM64 binary is normally built with
@ -702,7 +702,7 @@ npx react-native run-macos
Close the running app from the dock and close the Metro terminal window.
:::warning pass
:::danger pass
When the demo was last tested on x64, the app failed with a warning

@ -220,7 +220,7 @@ set PATH="C:\correct\path\to\python\three";%PATH%
</TabItem>
<TabItem value="pkg" label="pkg">
:::warning pass
:::danger pass
When this demo was last tested, `pkg` failed with an error referencing `node20`:

@ -88,7 +88,7 @@ an array of objects.
Queries must be manually generated from the objects. Assuming the field names
in the object match the column headers, a loop can generate `INSERT` queries.
:::warning pass
:::danger pass
**PostgreSQL does not allow parameterized queries with variable column names**

@ -92,7 +92,7 @@ an array of objects.
Queries must be manually generated from the objects. Assuming the field names
in the object match the column headers, a loop can generate `INSERT` queries.
:::warning pass
:::danger pass
**MariaDB does not allow parameterized queries with variable column names**

@ -13,7 +13,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
:::warning pass
:::danger pass
**Redis has relicensed away from open source!**
@ -233,7 +233,7 @@ const aoa = [ ["Hash"], [key] ].concat(Object.entries(values));
## Complete Example
:::warning pass
:::danger pass
The most recent version of the `redis` node module does not work with most
versions of NodeJS. It is "ESM-only", requiring NodeJS 18 or later. As a result,

@ -272,7 +272,7 @@ const u8 = new Uint8Array(array);
## Web Browsers
:::warning pass
:::danger pass
Not all web APIs are supported in all browsers. For example, Firefox does not
support the "File System Access API".
@ -431,7 +431,7 @@ drop_dom_element.addEventListener("dragenter", suppress, false);
### File System Access API
:::warning Limited Browser Support
:::danger Limited Browser Support
At the time of writing, browser support was fairly limited. Chrome introduced
the feature in version 86. Safari did not support File System Access API.

@ -9,7 +9,7 @@ sidebar_custom_props:
import CodeBlock from '@theme/CodeBlock';
:::warning pass
:::danger pass
WebSQL is no longer enabled by default in Chrome. Chrome 123 will officially
remove support. For SQL in the browser, there are a few alternatives:

@ -11,7 +11,7 @@ sidebar_custom_props:
<script type="text/javascript" src="https://unpkg.com/dexie@3.2.4/dist/dexie.js"></script>
</head>
:::warning pass
:::danger pass
IndexedDB is a very low-level API.

@ -33,7 +33,7 @@ This demo was last tested on 2023 September 30 using Lightning API version `58.0
:::
:::warning Telemetry
:::danger Telemetry
The Salesforce developer tools embed telemetry. It can be disabled by setting
the environment variable `SF_DISABLE_TELEMETRY` to `true` or by running
@ -316,7 +316,7 @@ cd SheetForce
npx @salesforce/cli lightning generate component --type lwc -n sheetComponent -d force-app/main/default/lwc
```
:::warning pass
:::danger pass
At the time of testing, the CLI tool created components with app version 59.
This version number is not valid for scratch orgs.
@ -501,7 +501,7 @@ The app will display the "SheetForce demo" text from the component template:
<ol start="16"><li><p>Download <a href={"https://cdn.sheetjs.com/xlsx-" + current + "/package/dist/xlsx.full.min.js"}>{"https://cdn.sheetjs.com/xlsx-" + current + "/package/dist/xlsx.full.min.js"}</a></p></li></ol>
:::warning pass
:::danger pass
**DO NOT "COPY AND PASTE"!** The file should be explicitly downloaded. Copying
and pasting corrupts the source code and the component will fail in subtle ways.

@ -41,7 +41,7 @@ This demo was last tested on 2023 October 06.
## Telemetry
:::warning Telemetry
:::danger Telemetry
**Each command-line tool related to Azure embeds telemetry.**
@ -268,7 +268,7 @@ cd SheetJSAzure
func new --template httpTrigger --language JavaScript --name SheetJSAzure
```
:::warning pass
:::danger pass
When the demo was last tested, the stock TypeScript template did not work.

@ -129,7 +129,7 @@ the source data or artifacts from the `postprocess` script changed.
### Post-Processing Data
:::warning pass
:::danger pass
The `flat-postprocessing` library includes a number of utilities for different
data formats. The `readXLSX` helper uses SheetJS under the hood.

@ -38,7 +38,7 @@ imported from Deno Deploy server scripts.
### Supported Frameworks
:::warning pass
:::danger pass
Deno Deploy does not offer any sort of temporary file access in functions.

@ -35,7 +35,7 @@ A workbook will be assembled and exported to Excel Binary workbooks (XLSB).
- "Exporting files": SheetJS libraries will read XLSX and ODS files exported by
Google Sheets and generate CSV rows from every worksheet.
:::warning pass
:::danger pass
It is strongly recommended to create a new Google account for testing.
@ -354,7 +354,7 @@ A valid phone number (for SMS verification) may be required.
1) Open https://console.cloud.google.com in a web browser. Review the Google
Cloud Platform Terms of Service.
:::warning pass
:::danger pass
You must agree to the Google Cloud Platform Terms of Service to use the APIs.

@ -43,7 +43,7 @@ Excel 365 before running the demo.
:::
:::warning Telemetry
:::danger Telemetry
The Office Add-in CLI collects telemetry by default. It can be disabled:

@ -148,7 +148,7 @@ SF_display("{stata import excel \"sheetjs.tmp.xlsx\", firstrow} will read the fi
The function will print the following text to the terminal:
<pre>
<span {...b}>import excel "sheetjs.tmp.xlsx", firstrow</span> will read the first sheet and use headers{'\n'}
<span {...b}>import excel "sheetjs.tmp.xlsx", firstrow</span> will read the first sheet and use headers
</pre>
The blue text is clickable. When a user clicks the text, the command
@ -402,17 +402,17 @@ plugin call cleanfile, "pres.numbers" verbose
The result will show the data from `pres.numbers`:
<pre>
<b>. plugin call cleanfile, "pres.numbers" verbose</b>{'\n'}
Worksheet 0 Name: Sheet1{'\n'}
Name,Index{'\n'}
Bill Clinton,42{'\n'}
GeorgeW Bush,43{'\n'}
Barack Obama,44{'\n'}
Donald Trump,45{'\n'}
Joseph Biden,46{'\n'}
{'\n'}
Saved to `sheetjs.tmp.xlsx`{'\n'}
<span {...b}>import excel "sheetjs.tmp.xlsx", firstrow</span> will read the first sheet and use headers{'\n'}
<b>. plugin call cleanfile, "pres.numbers" verbose</b>
Worksheet 0 Name: Sheet1
Name,Index
Bill Clinton,42
GeorgeW Bush,43
Barack Obama,44
Donald Trump,45
Joseph Biden,46
Saved to `sheetjs.tmp.xlsx`
<span {...b}>import excel "sheetjs.tmp.xlsx", firstrow</span> will read the first sheet and use headers
for more help, see <span {...b}>import excel</span>
</pre>
@ -440,7 +440,7 @@ import excel "sheetjs.tmp.xlsx", firstrow
The output will show the import result:
<pre>
<b>. import excel "sheetjs.tmp.xlsx", firstrow</b>{'\n'}
<b>. import excel "sheetjs.tmp.xlsx", firstrow</b>
(2 vars, 5 obs)
</pre>

@ -78,7 +78,7 @@ In a CommonJS context, NodeJS Streams and `fs` immediately work with SheetJS:
const XLSX = require("xlsx"); // "just works"
```
:::warning ECMAScript Module Machinations
:::danger ECMAScript Module Machinations
In NodeJS ESM, the dependency must be loaded manually:

@ -504,7 +504,7 @@ in the ["Large Datasets"](/docs/demos/bigdata/stream#browser) demo.
#### File System Access API
:::warning Browser Compatibility
:::danger Browser Compatibility
At the time of writing, the File System Access API is only available in Chromium
and Chromium-based browsers like Chrome and Edge.

@ -14,7 +14,7 @@ passing is straightforward. The demo shows a standalone Swift sample for MacOS.
The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone)
can be parsed and evaluated in a JSC context.
:::warning Platform Limitations
:::danger Platform Limitations
JavaScriptCore is primarily deployed in MacOS and iOS applications. There is
some experimental support through the Bun runtime, but apps intending to support

@ -25,7 +25,7 @@ The ["Integration Example"](#integration-example) section includes a complete
command-line tool for reading arbitrary workbooks and writing data to XLSB
(Excel 2007+ Binary Format) workbooks.
:::warning Telemetry
:::danger Telemetry
**The `dotnet` command embeds telemetry.**

@ -32,7 +32,7 @@ commit `15b323d`.
:::
:::warning pass
:::danger pass
The main target for Hermes is React Native. At the time of writing, there was
no official documentation for embedding the Hermes engine in C++ programs.

@ -7,7 +7,7 @@ pagination_next: solutions/input
import current from '/version.js';
import CodeBlock from '@theme/CodeBlock';
:::warning pass
:::danger pass
In a production application, it is strongly recommended to use a binding for a
more performant engine like [`v8`](/docs/demos/engines/v8#rust)

@ -7,7 +7,7 @@ pagination_next: solutions/input
import current from '/version.js';
import CodeBlock from '@theme/CodeBlock';
:::warning pass
:::danger pass
In a production application, it is strongly recommended to use a binding for a
C engine like [`JavaScript::Duktape`](/docs/demos/engines/duktape#perl)

@ -41,7 +41,7 @@ The `readFile` method attempts to read a spreadsheet file at the supplied path.
The second `opts` argument is optional. ["Parsing Options"](/docs/api/parse-options)
covers the supported properties and behaviors.
:::warning pass
:::danger pass
Browsers generally do not allow reading files by specifying filename (it is a
security risk), and running `XLSX.readFile` in the browser will throw an error.

@ -142,7 +142,7 @@ worker.addEventListener('message', function(e) {
<details>
<summary><b>SWF workaround for Windows 95+</b> (click to show)</summary>
:::warning pass
:::danger pass
Each moving part in this solution has been deprecated years ago:

@ -652,7 +652,7 @@ strings instead of `Date` objects.
:::
:::warning pass
:::danger pass
JavaScript string to `Date` conversion is "implementation-dependent" and may
misinterpret some date formats. When designing APIs, it is strongly recommended

@ -247,7 +247,7 @@ XLSX documents. A workaround was added in library version 0.18.12.
Tooltips are attached to hyperlink information. There is no way to specify a
tooltip without assigning a cell link.
:::warning pass
:::danger pass
**Excel has an undocumented tooltip length limit of 255 characters.**

@ -35,7 +35,7 @@ outline levels above the grid.
SheetJS worksheet objects store column properties in the `!cols` field. It is
expected to be an array of column metadata objects.
:::warning Excel Bugs
:::danger Excel Bugs
For most common formats (XLSX, XLS), widths are tied to font metrics, which are
tied to Windows Scaling settings. In Windows 11, the Scale factor settings are

@ -244,7 +244,7 @@ Old versions of the library did not automatically detect `ArrayBuffer` objects.
<details>
<summary><b>Workaround</b> (click to show)</summary>
:::warning Legacy workaround
:::danger Legacy workaround
This solution is not recommended for production deployments. Native support
for `ArrayBuffer` was added in library version `0.9.9`.

@ -103,7 +103,7 @@ wsl --install Ubuntu
:::
:::warning pass
:::danger pass
**WSL will not run in a Windows on ARM VM on computers with the M1 CPU**