diff --git a/Makefile b/Makefile
index 9dee755..2bb285a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
.PHONY: build
build:
- cp formats.png docz/docs/img/formats.png
+ cp formats.png docz/static/formats.png
cd docz; npx -y pnpm build; cd ..
rm -rf docs
mv docz/build/ docs
diff --git a/docz/docs/02-getting-started/01-installation/01-standalone.mdx b/docz/docs/02-getting-started/01-installation/01-standalone.mdx
index 6482eb5..a0c63c4 100644
--- a/docz/docs/02-getting-started/01-installation/01-standalone.mdx
+++ b/docz/docs/02-getting-started/01-installation/01-standalone.mdx
@@ -106,7 +106,7 @@ importScripts("https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.mi
This section refers to imports using `script type="module"`. For imports in
modern projects using Webpack or React or Angular or VueJS, the installation is
-described [in the next section](./frameworks).
+described [in the next section](/docs/getting-started/installation/frameworks).
:::
@@ -150,7 +150,7 @@ xport.addEventListener("click", async() => {
`}
-Web Worker support is noted in [the demo](../../demos/worker#installation)
+Web Worker support is noted in [the demo](/docs/demos/worker#installation)
## Bower
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 a60c2e3..0718e76 100644
--- a/docz/docs/02-getting-started/01-installation/02-frameworks.md
+++ b/docz/docs/02-getting-started/01-installation/02-frameworks.md
@@ -41,7 +41,7 @@ Once installed, the library can be imported under the name `xlsx`:
import { read, writeFileXLSX } from "xlsx";
```
-The ["Bundlers" demo](../../demos/bundler) includes examples for specific
+The ["Bundlers" demo](/docs/demos/bundler) includes examples for specific
bundler tools.
:::warning
diff --git a/docz/docs/02-getting-started/01-installation/04-amd.md b/docz/docs/02-getting-started/01-installation/04-amd.md
index 5790def..22e5100 100644
--- a/docz/docs/02-getting-started/01-installation/04-amd.md
+++ b/docz/docs/02-getting-started/01-installation/04-amd.md
@@ -36,7 +36,7 @@ define(['N/file', './xlsx.full.min'], function(file, XLSX) {
})
```
-As explained in the [NetSuite demo](../../demos/netsuite), module
+As explained in the [NetSuite demo](/docs/demos/netsuite), module
aliases are created in config files referenced via `@NAmdConfig` comments.
## SAP UI5
@@ -95,7 +95,7 @@ require(['xlsx'], function(XLSX) {
Dojo has changed module loading strategies over the years. These examples were
tested with Dojo `1.10.4` and are not guaranteed to work with other versions.
-Live demos are included in ["Dojo Toolkit"](../../demos/legacy#dojo-toolkit)
+Live demos are included in ["Dojo Toolkit"](/docs/demos/legacy#dojo-toolkit)
:::caution
diff --git a/docz/docs/02-getting-started/02-example.mdx b/docz/docs/02-getting-started/02-example.mdx
index 95b6174..ff66e08 100644
--- a/docz/docs/02-getting-started/02-example.mdx
+++ b/docz/docs/02-getting-started/02-example.mdx
@@ -99,7 +99,7 @@ XLSX.utils.book_append_sheet(workbook, worksheet, "Dates");
The data is in the workbook and can be exported.
-![Rough export](./img/rough.png)
+![Rough export](pathname:///example/rough.png)
There are multiple opportunities for improvement: the headers can be renamed and
the column widths can be adjusted. [SheetJS Pro](https://sheetjs.com/pro) offers
@@ -160,7 +160,7 @@ support other common export formats like `.xls` or `.xlsb` or `.csv`.
XLSX.writeFile(workbook, "Presidents.xlsx", { compression: true });
```
-![Final export](./img/final.png)
+![Final export](pathname:///example/final.png)
## Live Demo
diff --git a/docz/docs/02-getting-started/03-roadmap.md b/docz/docs/02-getting-started/03-roadmap.md
index e4605bf..3011b5e 100644
--- a/docz/docs/02-getting-started/03-roadmap.md
+++ b/docz/docs/02-getting-started/03-roadmap.md
@@ -54,14 +54,14 @@ Utility functions help with step 3.
## Highlights
-["Data Import"](../solutions/input) describes solutions for common data import
+["Data Import"](/docs/solutions/input) describes solutions for common data import
scenarios.
-["Data Export"](../solutions/output) describes solutions for common data export
+["Data Export"](/docs/solutions/output) describes solutions for common data export
scenarios.
-["Data Processing"](../solutions/processing) describes solutions for common
+["Data Processing"](/docs/solutions/processing) describes solutions for common
workbook processing and manipulation scenarios.
-["Utility Functions"](../api/utilities) details utility functions for
+["Utility Functions"](/docs/api/utilities) details utility functions for
translating JSON Arrays and other common JS structures into worksheet objects.
diff --git a/docz/docs/02-getting-started/04-zen.md b/docz/docs/02-getting-started/04-zen.md
index 40bc92c..259c64d 100644
--- a/docz/docs/02-getting-started/04-zen.md
+++ b/docz/docs/02-getting-started/04-zen.md
@@ -15,14 +15,14 @@ Web Workers and future APIs.
### JavaScript is a powerful language for data processing
-The ["Common Spreadsheet Format"](../csf/general) is a simple object
+The ["Common Spreadsheet Format"](/docs/csf/general) is a simple object
representation of the core concepts of a workbook. The various functions in the
library provide low-level tools for working with the object.
For friendly JS processing, there are utility functions for converting parts of
-a worksheet to/from an Array of Arrays. The [Complete example](./02-example.mdx)
+a worksheet to/from an Array of Arrays. The [Tutorial](/docs/getting-started/example)
combines powerful JS Array methods with a network request library to download
-data, select the information we want and create a workbook file:
+data, select the information we want and create a workbook file.
### File formats are implementation details
diff --git a/docz/docs/02-getting-started/index.md b/docz/docs/02-getting-started/index.md
index 0325819..d8705a5 100644
--- a/docz/docs/02-getting-started/index.md
+++ b/docz/docs/02-getting-started/index.md
@@ -5,8 +5,8 @@ pagination_next: getting-started/example
# Getting Started
-["Tutorial"](./02-example.mdx) is a live example that covers general data
-munging and data export to spreadsheets.
+["Tutorial"](/docs/getting-started/example) is a live example that covers
+general data munging and data export to spreadsheets.
## Installation
diff --git a/docz/docs/03-demos/01-salesforce.md b/docz/docs/03-demos/01-salesforce.md
index 9ac253c..1d14421 100644
--- a/docz/docs/03-demos/01-salesforce.md
+++ b/docz/docs/03-demos/01-salesforce.md
@@ -109,7 +109,7 @@ should see a page like
## Adding the Standalone Script
-The [standalone script](../getting-started/installation/standalone) can be downloaded and
+The [standalone script](/docs/getting-started/installation/standalone) can be downloaded and
added as a static resource. Due to Salesforce naming restrictions, it will have
to be renamed to `sheetjs.js` when adding the static resource.
diff --git a/docz/docs/03-demos/02-mobile.md b/docz/docs/03-demos/02-mobile.md
index fc46745..4e41096 100644
--- a/docz/docs/03-demos/02-mobile.md
+++ b/docz/docs/03-demos/02-mobile.md
@@ -22,7 +22,7 @@ Each demo section will mention test dates and platform versions.
:::
-The ["JavaScript Engines"](./engines) section includes samples for JavaScript
+The ["JavaScript Engines"](/docs/demos/engines) section includes samples for JavaScript
engines used in the mobile app frameworks. SheetJS libraries have been tested
in the relevant engines and should "just work" with some caveats.
diff --git a/docz/docs/03-demos/03-desktop.md b/docz/docs/03-demos/03-desktop.md
index 10e3636..0e02c7b 100644
--- a/docz/docs/03-demos/03-desktop.md
+++ b/docz/docs/03-demos/03-desktop.md
@@ -11,7 +11,7 @@ windowing framework. SheetJS is compatible with many app frameworks.
## NW.js
-The [Standalone scripts](../getting-started/installation/standalone) can be
+The [Standalone scripts](/docs/getting-started/installation/standalone) can be
referenced in a `SCRIPT` tag from the entry point HTML page.
This demo was tested against NW.js 0.66.0.
@@ -68,7 +68,7 @@ This will generate the standalone app in the `build\sheetjs-nwjs\` folder.
The standard HTML5 `FileReader` techniques from the browser apply to NW.js!
NW.js handles the OS minutiae for dragging files into app windows. The
-[drag and drop snippet](../solutions/input#example-user-submissions) apply
+[drag and drop snippet](/docs/solutions/input#example-user-submissions) apply
to DIV elements on the page.
Similarly, file input elements automatically map to standard Web APIs.
@@ -131,7 +131,7 @@ input.click();
## Electron
-The [NodeJS Module](../getting-started/installation/nodejs) can be imported
+The [NodeJS Module](/docs/getting-started/installation/nodejs) can be imported
from the main or the renderer thread.
Electron presents a `fs` module. The `require('xlsx')` call loads the CommonJS
@@ -188,7 +188,7 @@ For a recent Intel Mac, the path will be `out/sheetjs-electron-darwin-x64/`
### Writing Files
-[`XLSX.writeFile`](../api/write-options) writes workbooks to the file system.
+[`XLSX.writeFile`](/docs/api/write-options) writes workbooks to the file system.
`showSaveDialog` shows a Save As dialog and returns the selected file name:
```js
@@ -256,7 +256,7 @@ document.getElementById("xlf").addEventListener("change", handleFile, false);
**Drag and Drop**
-The [drag and drop snippet](../solutions/input#example-user-submissions)
+The [drag and drop snippet](/docs/solutions/input#example-user-submissions)
applies to DIV elements on the page.
For example, assuming a DIV on the page:
@@ -284,7 +284,7 @@ document.getElementById("drop").addEventListener("drop", handleDrop, false);
**Electron API**
-[`XLSX.readFile`](../api/parse-options) reads workbooks from the file system.
+[`XLSX.readFile`](/docs/api/parse-options) reads workbooks from the file system.
`showOpenDialog` shows a Save As dialog and returns the selected file name.
Unlike the Web APIs, the `showOpenDialog` flow can be initiated by app code:
@@ -351,7 +351,7 @@ call is required to enable Developer Tools in the window.
## Tauri
-The [NodeJS Module](../getting-started/installation/nodejs) can be imported
+The [NodeJS Module](/docs/getting-started/installation/nodejs) can be imported
from JavaScript code.
This demo was tested against Tauri 1.0.5 on 2022 August 13.
@@ -555,7 +555,7 @@ async function saveFile(wb) {
## Wails
-The [NodeJS Module](../getting-started/installation/nodejs) can be imported
+The [NodeJS Module](/docs/getting-started/installation/nodejs) can be imported
from JavaScript code.
This demo was tested against Wails `v2.0.0-beta.44.2` on 2022 August 31 using
@@ -767,7 +767,7 @@ async function exportFile(wb) {
## NeutralinoJS
-The [Standalone build](../getting-started/installation/standalone) can be added
+The [Standalone build](/docs/getting-started/installation/standalone) can be added
to the entry `index.html`
This demo was tested against "binaries" `4.7.0` and "client" `3.6.0`
@@ -1003,7 +1003,7 @@ async function saveFile(wb) {
## React Native Windows
-The [NodeJS Module](../getting-started/installation/nodejs) can be imported
+The [NodeJS Module](/docs/getting-started/installation/nodejs) can be imported
from the main app script. File operations must be written in native code.
This demo was tested against `v0.69.6` on 2022 September 07 in Windows 10.
@@ -1360,7 +1360,7 @@ async() => {
## React Native MacOS
-The [NodeJS Module](../getting-started/installation/nodejs) can be imported
+The [NodeJS Module](/docs/getting-started/installation/nodejs) can be imported
from the main app script. File operations must be written in native code.
This demo was tested against `v0.64.30` on 2022 September 10 in MacOS 12.4
diff --git a/docz/docs/03-demos/04-grid.md b/docz/docs/03-demos/04-grid.md
index e65f544..8df043c 100644
--- a/docz/docs/03-demos/04-grid.md
+++ b/docz/docs/03-demos/04-grid.md
@@ -213,7 +213,7 @@ through a special Export button. It handles the SheetJS operations internally.
This UI Grid is for AngularJS, not the modern Angular. New projects should not
use AngularJS. This demo is included for legacy applications.
-The [AngularJS demo](./legacy#angularjs) covers more general strategies.
+The [AngularJS demo](/docs/demos/legacy#angularjs) covers more general strategies.
:::
diff --git a/docz/docs/03-demos/05-database.md b/docz/docs/03-demos/05-database.md
index 05b1120..b053e48 100644
--- a/docz/docs/03-demos/05-database.md
+++ b/docz/docs/03-demos/05-database.md
@@ -16,7 +16,7 @@ database systems. The examples are merely intended to demonstrate very basic
functionality.
Key-value stores, unstructured use of Document Databases, and other schema-less
-databases are covered in the [NoSQL demo](./nosql).
+databases are covered in the [NoSQL demo](/docs/demos/nosql).
## Structured Tables
diff --git a/docz/docs/03-demos/06-content.md b/docz/docs/03-demos/06-content.md
index 459d99b..fc3d928 100644
--- a/docz/docs/03-demos/06-content.md
+++ b/docz/docs/03-demos/06-content.md
@@ -106,7 +106,7 @@ in the parsing logic, issues should then be raised with the SheetJS project.
:::note
-Library integration in ViteJS is covered in ["Bundlers" demo](./bundler#vite)
+Library integration in ViteJS is covered in ["Bundlers" demo](/docs/demos/bundler#vite)
:::
diff --git a/docz/docs/03-demos/07-worker.md b/docz/docs/03-demos/07-worker.md
index 96611aa..d7c7439 100644
--- a/docz/docs/03-demos/07-worker.md
+++ b/docz/docs/03-demos/07-worker.md
@@ -17,7 +17,7 @@ added later. Feature testing is highly recommended.
## Installation
-In all cases, `importScripts` can load the [Standalone scripts](../getting-started/installation/standalone)
+In all cases, `importScripts` can load the [Standalone scripts](/docs/getting-started/installation/standalone)
```js
importScripts("https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js");
diff --git a/docz/docs/03-demos/11-angular.md b/docz/docs/03-demos/11-angular.md
index 77d02e2..c4ee60a 100644
--- a/docz/docs/03-demos/11-angular.md
+++ b/docz/docs/03-demos/11-angular.md
@@ -14,8 +14,8 @@ and TypeScript familiarity is assumed.
Other demos cover general Angular deployments, including:
-- [iOS and Android applications powered by NativeScript](./mobile#nativescript)
-- [iOS and Android applications powered by Ionic](./mobile#ionic)
+- [iOS and Android applications powered by NativeScript](/docs/demos/mobile#nativescript)
+- [iOS and Android applications powered by Ionic](/docs/demos/mobile#ionic)
:::warning
@@ -28,7 +28,7 @@ should be directed to the Angular project.
## Installation
-[The "Frameworks" section](../getting-started/installation/frameworks) covers
+[The "Frameworks" section](/docs/getting-started/installation/frameworks) covers
installation with `pnpm` and other package managers.
The library can be imported directly from JS or TS code with:
@@ -324,7 +324,7 @@ In the component, `aoa_to_sheet` is used to generate the worksheet:
The default angular-cli configuration requires no additional configuration.
Some deployments use the SystemJS loader, which does require configuration.
-[The SystemJS demo](./bundler#systemjs) describe the required settings.
+[The SystemJS demo](/docs/demos/bundler#systemjs) describe the required settings.
### Legacy Demo
diff --git a/docz/docs/03-demos/12-react.md b/docz/docs/03-demos/12-react.md
index f6103c9..0293b54 100644
--- a/docz/docs/03-demos/12-react.md
+++ b/docz/docs/03-demos/12-react.md
@@ -9,15 +9,15 @@ familiarity is assumed.
Other demos cover general React deployments, including:
-- [Static Site Generation powered by NextJS](./content#nextjs)
-- [iOS and Android applications powered by React Native](./mobile#react-native)
-- [Desktop application powered by React-Native-Windows](./desktop#react-native-windows)
-- [React Data Grid UI component](./grid#react-data-grid)
+- [Static Site Generation powered by NextJS](/docs/demos/content#nextjs)
+- [iOS and Android applications powered by React Native](/docs/demos/mobile#react-native)
+- [Desktop application powered by React-Native-Windows](/docs/demos/desktop#react-native-windows)
+- [React Data Grid UI component](/docs/demos/grid#react-data-grid)
## Installation
-[The "Frameworks" section](../getting-started/installation/frameworks) covers
+[The "Frameworks" section](/docs/getting-started/installation/frameworks) covers
installation with Yarn and other package managers.
The library can be imported directly from JS or JSX code with:
@@ -171,7 +171,7 @@ generate column headings and for indexing into the row objects.
The safest approach is to use an array of arrays for state and to generate
column objects that map to A1-Style column headers.
-The [React Data Grid demo](./grid#rows-and-columns-state) uses this approach
+The [React Data Grid demo](/docs/demos/grid#rows-and-columns-state) uses this approach
with the following column and row structure:
```js
@@ -195,7 +195,7 @@ const columns = Array.from({ length: range.e.c + 1 }, (_, i) => ({
## Legacy Deployments
-[The Standalone Scripts](../getting-started/installation/standalone) play nice
+[The Standalone Scripts](/docs/getting-started/installation/standalone) play nice
with legacy deployments that do not use a bundler.
[The legacy demo](pathname:///react/index.html) shows a simple React component
diff --git a/docz/docs/03-demos/13-vue.md b/docz/docs/03-demos/13-vue.md
index b5237eb..25e672f 100644
--- a/docz/docs/03-demos/13-vue.md
+++ b/docz/docs/03-demos/13-vue.md
@@ -9,15 +9,15 @@ Components (SFC) and VueJS familiarity is assumed.
Other demos cover general VueJS deployments, including:
-- [Static Site Generation powered by NuxtJS](./content#nuxtjs)
-- [iOS and Android applications powered by Quasar](./mobile#quasar)
-- [Desktop application powered by Tauri](./desktop#tauri)
-- [`vue3-table-lite` UI component](./grid#vue3-table-lite)
+- [Static Site Generation powered by NuxtJS](/docs/demos/content#nuxtjs)
+- [iOS and Android applications powered by Quasar](/docs/demos/mobile#quasar)
+- [Desktop application powered by Tauri](/docs/demos/desktop#tauri)
+- [`vue3-table-lite` UI component](/docs/demos/grid#vue3-table-lite)
## Installation
-[The "Frameworks" section](../getting-started/installation/frameworks) covers
+[The "Frameworks" section](/docs/getting-started/installation/frameworks) covers
installation with Yarn and other package managers.
The library can be imported directly from JS or JSX code with:
@@ -163,7 +163,7 @@ generate column headings and for indexing into the row objects.
The safest approach is to use an array of arrays for state and to generate
column objects that map to A1-Style column headers.
-The [`vue3-table-lite` demo](./grid#rows-and-columns-bindings) generates rows
+The [`vue3-table-lite` demo](/docs/demos/grid#rows-and-columns-bindings) generates rows
and columns objects with the following structure:
```js
@@ -183,7 +183,7 @@ columns.value = Array.from({ length: range.e.c + 1 }, (_, i) => ({
## Legacy Deployments
-[The Standalone Scripts](../getting-started/installation/standalone) play nice
+[The Standalone Scripts](/docs/getting-started/installation/standalone) play nice
with legacy deployments that do not use a bundler.
The legacy demos show a simple VueJS component. It is written in ES5 syntax.
diff --git a/docz/docs/03-demos/14-svelte.md b/docz/docs/03-demos/14-svelte.md
index 14b5b90..155bc8e 100644
--- a/docz/docs/03-demos/14-svelte.md
+++ b/docz/docs/03-demos/14-svelte.md
@@ -9,13 +9,13 @@ familiarity is assumed.
Other demos cover general Svelte deployments, including:
-- [iOS applications powered by CapacitorJS](./mobile#capacitorjs)
-- [Desktop application powered by Wails](./desktop#wails)
+- [iOS applications powered by CapacitorJS](/docs/demos/mobile#capacitorjs)
+- [Desktop application powered by Wails](/docs/demos/desktop#wails)
## Installation
-[The "Frameworks" section](../getting-started/installation/frameworks) covers
+[The "Frameworks" section](/docs/getting-started/installation/frameworks) covers
installation with Yarn and other package managers.
The library can be imported directly from Svelte files with:
diff --git a/docz/docs/03-demos/19-bundler.md b/docz/docs/03-demos/19-bundler.md
index 62e9429..83fefa5 100644
--- a/docz/docs/03-demos/19-bundler.md
+++ b/docz/docs/03-demos/19-bundler.md
@@ -29,7 +29,7 @@ var XLSX = require("xlsx");
// ... use XLSX ...
```
-[After installing the module](../getting-started/installation/nodejs), bundling is easy:
+[After installing the module](/docs/getting-started/installation/nodejs), bundling is easy:
```bash
browserify app.js > browserify.js
@@ -170,9 +170,9 @@ bun bun.js
## Dojo
-Integration details are included [in the "AMD" installation](../getting-started/installation/amd#dojo-toolkit)
+Integration details are included [in the "AMD" installation](/docs/getting-started/installation/amd#dojo-toolkit)
-Complete Examples are included [in the "Dojo" demo](./legacy#dojo-toolkit)
+Complete Examples are included [in the "Dojo" demo](/docs/demos/legacy#dojo-toolkit)
## esbuild
@@ -356,7 +356,7 @@ bug. Upgrade to Parcel version 1.5.0 or later.
Complete Example (click to show)
-This demo follows the [Presidents Example](../getting-started/example).
+This demo follows the [Presidents Example](/docs/getting-started/example).
1) Save the following to `index.html`:
@@ -438,7 +438,7 @@ click the "Click to Export!" button to generate a file.
## RequireJS
-[Standalone scripts](../getting-started/installation/standalone) comply with AMD `define`
+[Standalone scripts](/docs/getting-started/installation/standalone) comply with AMD `define`
semantics, enabling use in RequireJS out of the box.
To enable use of the alias `xlsx`, the RequireJS config should set an alias in
@@ -1061,7 +1061,7 @@ Access http://localhost:8080 in your web browser.
:::note
-The [Vite section of the Content demo](./content#vitejs) covers SheetJS-powered
+The [Vite section of the Content demo](/docs/demos/content#vitejs) covers SheetJS-powered
asset loaders, suitable for static sites pulling data from fixed spreadsheets.
:::
@@ -1079,7 +1079,7 @@ Webpack bundled the CommonJS build in older versions of the library. Version
`0.18.1` changed the NodeJS module package so that Webpack uses the ESM build.
The ESM build does not include the codepage support library for XLS reading.
-[As described in the installation instructions](../getting-started/installation/frameworks),
+[As described in the installation instructions](/docs/getting-started/installation/frameworks),
the codepage dependency should be imported explicitly:
```js
diff --git a/docz/docs/03-demos/24-extendscript.md b/docz/docs/03-demos/24-extendscript.md
index cf29135..3eb623d 100644
--- a/docz/docs/03-demos/24-extendscript.md
+++ b/docz/docs/03-demos/24-extendscript.md
@@ -21,7 +21,7 @@ extension development is assumed.
## ExtendScript Scripts
-[Installation is straightforward:](../getting-started/installation/extendscript) download a
+[Installation is straightforward:](/docs/getting-started/installation/extendscript) download a
script and move it to your project directory.
### Reading Files
@@ -177,12 +177,12 @@ and place in the scripts directory. For CS6 Windows 10 the path is typically
## CEP
-[The standalone scripts](../getting-started/installation/standalone) can be added to CEP
+[The standalone scripts](/docs/getting-started/installation/standalone) can be added to CEP
extension HTML
## UXP
UXP officially recommends `require` and NodeJS Modules for third party support.
-[Use the "Frameworks" instructions to download.](../getting-started/installation/frameworks)
+[Use the "Frameworks" instructions to download.](/docs/getting-started/installation/frameworks)
diff --git a/docz/docs/03-demos/26-excelapi.md b/docz/docs/03-demos/26-excelapi.md
index 8949739..9720fe0 100644
--- a/docz/docs/03-demos/26-excelapi.md
+++ b/docz/docs/03-demos/26-excelapi.md
@@ -125,7 +125,7 @@ This indicates that the SheetJS library has been loaded.
## Dynamic Arrays and SheetJS Array of Arrays
-The [`sheet_to_json`](../api/utilities#json) helper function can generate
+The [`sheet_to_json`](/docs/api/utilities#json) helper function can generate
arrays of arrays of values based on the worksheet data. Excel custom functions
transparently treat these as Dynamic Arrays.
@@ -165,7 +165,7 @@ var wb = XLSX.read(ab); // parse workbook
For the purposes of this demo, a Base64-encoded file will be used. The
workaround involves fetching that Base64 file, getting the text, and parsing
-with the [`base64` type:](../api/parse-options#input-type)
+with the [`base64` type:](/docs/api/parse-options#input-type)
```js
async function extern() {
diff --git a/docz/docs/03-demos/33-localfile.md b/docz/docs/03-demos/33-localfile.md
index 6f7004f..1a4759c 100644
--- a/docz/docs/03-demos/33-localfile.md
+++ b/docz/docs/03-demos/33-localfile.md
@@ -15,8 +15,8 @@ like mobile apps are covered in their respective demos.
Some snippets are also available in the "Common Use Cases" section:
-- [Data Import](../solutions/input)
-- [Data Export](../solutions/output)
+- [Data Import](/docs/solutions/input)
+- [Data Export](/docs/solutions/output)
:::
@@ -70,7 +70,7 @@ self.addEventListener('message', (e) => {
});
```
-["User-Submitted File" example](./worker#user-submitted-file) has a live demo.
+["User-Submitted File" example](/docs/demos/worker#user-submitted-file) has a live demo.
@@ -130,7 +130,7 @@ XLSX.writeFile(wb, "SheetJS.xlsx");
The workaround is to generate the file data from the Worker (using `XLSX.write`)
and send the data back to the main context for the actual download action.
-["Creating a Local File" includes a live demo](./worker#creating-a-local-file).
+["Creating a Local File" includes a live demo](/docs/demos/worker#creating-a-local-file).
:::
@@ -358,7 +358,7 @@ var wb = XLSX.readFile("sheetjs.numbers");
XLSX.writeFile(wb, "sheetjs.xls");
```
-[Installation](../getting-started/installation/nodejs) has a special note for
+[Installation](/docs/getting-started/installation/nodejs) has a special note for
use with NodeJS ECMAScript Modules:
```js
@@ -419,6 +419,6 @@ writeFile(wb, "sheetjs.xlsx");
Desktop and mobile apps have their own specific APIs covered in separate demos:
-- [Electron and other desktop apps](./desktop)
-- [React Native and other mobile apps](./mobile)
+- [Electron and other desktop apps](/docs/demos/desktop)
+- [React Native and other mobile apps](/docs/demos/mobile)
diff --git a/docz/docs/03-demos/41-nosql.md b/docz/docs/03-demos/41-nosql.md
index 7d64227..ae96701 100644
--- a/docz/docs/03-demos/41-nosql.md
+++ b/docz/docs/03-demos/41-nosql.md
@@ -11,7 +11,7 @@ entries in the database. K/V stores and Objects add additional restrictions.
:::note
These data stores are capable of storing structured data. Those use cases are
-covered in the [Database demo](./database).
+covered in the [Database demo](/docs/demos/database).
:::
@@ -212,7 +212,7 @@ Open `SheetJSRedis.xlsx` and verify the columns have the correct data
`Database#allDocs` is the standard approach for bulk data export. The generated
row objects have additional `_id` and `_rev` keys that should be removed.
-Nested objects must be flattened. The ["Tutorial"](../getting-started/example)
+Nested objects must be flattened. The ["Tutorial"](/docs/getting-started/example)
includes an example of constructing a simple array.
```js
diff --git a/docz/docs/03-demos/42-headless.md b/docz/docs/03-demos/42-headless.md
index 94d3a2b..9c99450 100644
--- a/docz/docs/03-demos/42-headless.md
+++ b/docz/docs/03-demos/42-headless.md
@@ -9,7 +9,7 @@ Headless automation involves controlling "headless browsers" to access websites
and submit or download data. It is also possible to automate browsers using
custom browser extensions.
-The [SheetJS standalone script](../getting-started/installation/standalone) can be added to
+The [SheetJS standalone script](/docs/getting-started/installation/standalone) can be added to
any website by inserting a `SCRIPT` tag. Headless browsers usually provide
utility functions for running custom snippets in the browser and passing data
back to the automation script.
diff --git a/docz/docs/03-demos/44-legacy.md b/docz/docs/03-demos/44-legacy.md
index 78b53a8..b1789e2 100644
--- a/docz/docs/03-demos/44-legacy.md
+++ b/docz/docs/03-demos/44-legacy.md
@@ -13,7 +13,7 @@ SheetJS libraries strive to maintain broad browser and JS engine compatibility.
## Integration
-The ["Standalone Browser Scripts"](../getting-started/installation/standalone) section has
+The ["Standalone Browser Scripts"](/docs/getting-started/installation/standalone) section has
instructions for obtaining or referencing the standalone scripts. These are
designed to be referenced with `