# SheetJS CE Docs Hosted URL: ## Development The site source code is in the `docz` folder. `make` builds the static site and moves the generated pages and scripts to the `docs` folder. `docz/version.js` exports a version number for use in docs pages. ### Build Commands ```bash $ make init # install dependencies $ make # build static site $ make serve # serve static site $ make dev # run dev server $ make spell # spell check (.spelling custom dictionary) $ make graph # build format graph and legend ``` ### Engine Compatibility Tables `docz/src/data/engines.xls` is an XLML workbook that controls the compatibility tables in . The component script `docz/src/data/engines.js` parses the file and generates content. ### Formats Graph The formats graph and legend are written in the DOT language. Rebuilding the graphs will require Graphviz (`brew install graphviz` on macOS) ## Live Demos is loaded on each page, making the `XLSX` variable available to live blocks. ### Page-Specific Scripts **Imports do not work from live codeblocks!** Docusaurus does not have an official recommendation for this workflow. Specific pages can load scripts using the `head` component: ```html ``` **Adding scripts through `head` is known to be brittle!** Live codeblocks that use external libraries in `useEffect` hooks should check before using variables. For example, the Dropbox live demo tests if `Dropbox` is defined before proceeding. If it is not defined, a message is displayed. ```jsx function SheetJSTestDropbox() { const [msg, setMsg] = React.useState("Dropbox is defined"); React.useEffect(() => { if(typeof Dropbox == "undefined") return setMsg("Dropbox is not defined"); }, []); return ( {msg} ); } ``` ## Other Notes `src/theme/Admonition` was swizzled from 2.4.1 to enable `pass` for hiding header text. See Docusaurus issue 8568 for more details. `src/theme/prism-include-languages.js` was swizzled from 2.4.1 to support the Liquid language. See Docusaurus issue 6872 for more details.