steamdeck

This commit is contained in:
SheetJS 2022-11-12 04:16:51 -05:00
parent 6729a25013
commit a55b6f4b04
3 changed files with 100 additions and 30 deletions

@ -55,9 +55,6 @@ sap.ui.define([
:::warning
The [SAP Website has a note about including third-party JS libraries.](https://blogs.sap.com/2017/04/30/how-to-include-third-party-libraries-modules-in-sapui5/)
It recommends copying and pasting JavaScript code.
**Copy and pasting code does not work** for SheetJS scripts as they contain
Unicode characters that may be mangled. The standalone script should be
downloaded and manually uploaded to the project.

@ -152,7 +152,7 @@ given that every related vendor stopped providing support for their software.
`XLSX.writeFile` techniques work for most modern browsers as well as older IE.
For much older browsers, there are workarounds implemented by wrapper libraries.
[`Downloadify`](https://github.com/dcneiner/downloadify) uses a Flash SWF button
[`Downloadify`](/docs/demos/legacy#download-strategies) uses a Flash SWF button
to generate local files, suitable for environments where ActiveX is unavailable:
```js
@ -544,13 +544,15 @@ Node 17.5 and 18.0 have native support for fetch:
```js
const XLSX = require("xlsx");
const buf = XLSX.write(workbook, { bookType: "xlsx", type: "buffer" });
var blob = new Blob([buf], {type:"application/octet-stream"});
var formdata = new FormData();
formdata.append("file", blob, "test.xlsx");
async function upload_wb(workbook, url, name="test.xlsx", field="file") {
const buf = XLSX.write(workbook, { bookType: "xlsx", type: "buffer" });
const blob = new Blob([buf], {type:"application/octet-stream"});
const body = new FormData();
body.append(field, blob, name);
/* perform POST request */
fetch("https://thisis.a.test/upload", { method: 'POST', body: formdata });
/* perform POST request */
return fetch(url, { method: 'POST', body });
}
```
</TabItem>
@ -597,17 +599,15 @@ With the `header: 1` option, the function exports an array of arrays of values.
<Tabs>
<TabItem value="js" label="Vanilla JS">
[`x-spreadsheet`](https://github.com/myliang/x-spreadsheet) is an interactive
data grid for previewing and modifying structured data in the web browser. The
[demo](/docs/demos/grid#x-spreadsheet) includes a sample script and live demo.
[`x-spreadsheet`](/docs/demos/grid#x-spreadsheet) is an interactive data grid
for previewing and modifying structured data in the web browser.
</TabItem>
<TabItem value="react" label="React">
[`react-data-grid`](https://adazzle.github.io/react-data-grid) is a data grid
built for React. It uses two properties: `rows` of data objects and `columns`
which describe the columns. For the purposes of massaging the data to fit the
`react-data-grid` API it is easiest to start from an array of arrays.
[`react-data-grid`](/docs/demos/grid#react-data-grid) is a data grid built for
React. It uses two properties: `rows` of data objects and `columns` which
describe the columns. The grid API can play nice with an array of arrays.
This demo starts by fetching a remote file and using `XLSX.read` to extract:
@ -642,8 +642,7 @@ export default function App() {
</TabItem>
<TabItem value="vue" label="VueJS">
[`vue3-table-lite`](https://vue3-lite-table.vercel.app/) is a simple VueJS 3
data table. It is featured in the [dedicated demo](/docs/demos/grid#vue3-table-lite).
[`vue3-table-lite`](/docs/demos/grid#vue3-table-lite) is a VueJS 3 data table.
</TabItem>
</Tabs>

@ -81,19 +81,92 @@ Initial setup:
0) Ensure mercurial, subversion, and NodeJS are installed. The WSL instructions
will have installed these dependencies, so WSL users can skip to step 1.
On Linux:
:::note
[The official NodeJS site](https://nodejs.org/en/download/) provides installers
for "LTS" and "Current" releases. The "LTS" version should be installed.
:::
Mercurial and Subversion:
<Tabs>
<TabItem value="l" label="Linux">
On Linux, install using the system package manager. Debian and Ubuntu use `apt`:
```bash
sudo apt-get install mercurial subversion
```
On MacOS, install using Homebrew:
Other Linux distributions may use other package managers.
<details><summary><b>Steam Deck</b> (click to show)</summary>
Desktop Mode on the Steam Deck uses `pacman`. It also requires a few steps.
0) Switch to Desktop mode and open `Konsole`
1) Set a password for the user by running `passwd` and following instructions.
2) Disable read-only mode:
```bash
sudo steamos-readonly disable
```
(When prompted, enter the password assigned in step 1)
3) Configure keyring:
```bash
echo "keyserver hkps://keyserver.ubuntu.com" >> /etc/pacman.d/gnupg/gpg.conf
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman-key --refresh-keys
```
4) Install dependencies:
```bash
yay -S base-devel mercurial subversion
```
</details>
</TabItem>
<TabItem value="m" label="MacOS">
On MacOS, install using Homebrew.
0) Open a terminal window and install Homebrew:
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
1) Close the window, open a new terminal window, and disable analytics:
```bash
brew analytics off
```
To confirm analytics are disabled, run
```bash
brew analytics state
```
It should print `Analytics are disabled.`
2) Install Mercurial and Subversion:
```bash
brew install mercurial subversion
```
NodeJS installers can be found at the project homepage.
</TabItem>
</Tabs>
1) Install NodeJS modules for building the scripts
@ -105,6 +178,15 @@ npm install
sudo npm i -g mocha@2.5.3 voc @sheetjs/uglify-js
```
:::note Older Versions of Dependencies
Some of the dependencies are wildly out of date. While SheetJS aims to run in
older versions of NodeJS and browsers, some libraries have chosen to break
backwards compatibility. The specific versions are used because they are known
to work and known to produce consistent results.
:::
2) Initialize the test files:
```bash
@ -149,14 +231,6 @@ to produce the scripts.
To produce the dist files, run `make dist`. The dist files are updated in each
version release and *should not be committed between versions*.
**A note on Older Versions**
Some of the dependencies are wildly out of date. While SheetJS aims to run in
older versions of NodeJS and browsers, some libraries have chosen to break
backwards compatibility. The specific versions are used because they are known
to work and known to produce consistent results.
## Tests
The `test_misc` target runs the targeted feature tests. It should take 5-10