chakra-linux
This commit is contained in:
parent
74ac713193
commit
c541c81a16
19
Makefile
19
Makefile
@ -23,19 +23,6 @@ serve:
|
||||
spell:
|
||||
npx spellchecker-cli -q -d .spelling -f 'docz/**/*.md*' --no-suggestions
|
||||
|
||||
.PHONY: index
|
||||
index: readme ## Rebuild site
|
||||
sed -i .bak 's/](d/](https:\/\/github.com\/SheetJS\/SheetJS\/tree\/master\/d/g' README.md
|
||||
grip --title "SheetJS Community Edition" --export README.md
|
||||
mv README.html index.html
|
||||
git add README.md index.html *.png
|
||||
#mv js-xlsx/README.md .
|
||||
#git add README.md
|
||||
|
||||
.PHONY: readme
|
||||
readme: README.md
|
||||
markdown-toc -i README.md
|
||||
|
||||
.PHONY: graph
|
||||
graph: formats.png legend.png ## Rebuild format conversion graph
|
||||
misc/formats.svg: misc/formats.dot
|
||||
@ -46,12 +33,8 @@ formats.png legend.png: %.png: misc/%.svg
|
||||
node misc/coarsify.js misc/$*.svg misc/$*.svg.svg
|
||||
npx svgexport misc/$*.svg.svg $@ 0.5x
|
||||
|
||||
MDLINT=README.md $(wildcard docz/*.md*) $(wildcard docz/docs/*.md*) $(wildcard docz/docs/*/*.md*)
|
||||
MDLINT=README.md $(wildcard docz/*.md*) $(wildcard docz/docs/*.md*) $(wildcard docz/docs/*/*.md*) $(wildcard docz/docs/*/*/*.md*)
|
||||
.PHONY: mdlint
|
||||
mdlint: $(MDLINT) ## Check markdown documents
|
||||
npx alex $^
|
||||
npx --package markdown-spellcheck -- mdspell -a -n -x -r --en-us $^
|
||||
|
||||
READEPS=$(sort $(wildcard docbits/*.md))
|
||||
README.md: $(READEPS)
|
||||
awk 'FNR==1{p=0}/#/{p=1}p' $^ | tr -d '\15\32' > $@
|
||||
|
@ -122,8 +122,8 @@ require(["xlsx"], function(
|
||||
|
||||
#### Synchronous Loading
|
||||
|
||||
When `async` is disabled, the scripts can be referenced directly in `require`
|
||||
calls.
|
||||
When `async` is set to `false` or `0`, the scripts can be directly referenced in
|
||||
`require` calls.
|
||||
|
||||
<CodeBlock language="html">{`\
|
||||
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" data-dojo-config="isDebug:1, async:0"></script>
|
||||
|
@ -77,7 +77,7 @@ The official Deno registry is out of date. This is a registry bug.
|
||||
:::
|
||||
|
||||
Applications using the Deno registry can migrate by changing the URLs. After
|
||||
migrating, it is easy to update by changing the version number.
|
||||
migrating, scripts can be updated by changing the version number.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="v" label="URL with version">
|
||||
|
@ -1,21 +1,31 @@
|
||||
---
|
||||
title: ReactJS
|
||||
sidebar_label: ReactJS
|
||||
description: Build interactive websites with ReactJS. Seamlessly integrate spreadsheets into your app using SheetJS. Bring Excel-powered workflows and data to the modern web.
|
||||
pagination_prev: demos/index
|
||||
pagination_next: demos/grid/index
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Sheets in ReactJS Sites
|
||||
|
||||
import current from '/version.js';
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import CodeBlock from '@theme/CodeBlock';
|
||||
|
||||
ReactJS is a JS library for building user interfaces.
|
||||
[ReactJS](https://react.dev/) is a JavaScript library for building user interfaces.
|
||||
|
||||
This demo tries to cover common React data flow ideas and strategies. React
|
||||
familiarity is assumed.
|
||||
[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
|
||||
data from spreadsheets.
|
||||
|
||||
Other demos cover general React deployments, including:
|
||||
This demo uses ReactJS and SheetJS to process and generate spreadsheets. We'll
|
||||
explore how to load SheetJS in a ReactJS site and compare common state models
|
||||
and data flow strategies.
|
||||
|
||||
:::note pass
|
||||
|
||||
This demo focuses on ReactJS concepts. Other demos cover general deployments:
|
||||
|
||||
- [Static Site Generation powered by NextJS](/docs/demos/static/nextjs)
|
||||
- [iOS and Android applications powered by React Native](/docs/demos/mobile/reactnative)
|
||||
@ -23,6 +33,7 @@ Other demos cover general React deployments, including:
|
||||
- [React Data Grid UI component](/docs/demos/grid/rdg)
|
||||
- [Glide Data Grid UI component](/docs/demos/grid/gdg)
|
||||
|
||||
:::
|
||||
|
||||
## Installation
|
||||
|
||||
@ -70,7 +81,7 @@ each row, using the values in the first rows as keys:
|
||||
|
||||
</td></tr></tbody></table>
|
||||
|
||||
The React `useState` hook can configure the state:
|
||||
The ReactJS `useState` hook can configure the state:
|
||||
|
||||
<Tabs groupId="lang">
|
||||
<TabItem name="JS" value="JavaScript">
|
||||
@ -144,7 +155,7 @@ flowchart LR
|
||||
<Tabs groupId="lang">
|
||||
<TabItem name="JS" value="JavaScript">
|
||||
|
||||
```ts
|
||||
```js
|
||||
import { useEffect } from 'react';
|
||||
import { read, utils } from 'xlsx';
|
||||
|
||||
@ -298,12 +309,16 @@ export default function SheetJSReactAoO() {
|
||||
|
||||
:::note
|
||||
|
||||
This demo was last run on 2023 February 28 using `create-react-app@5.0.1` and
|
||||
This demo was last run on 2023 July 03 using `create-react-app@5.0.1` and
|
||||
`react-scripts@5.0.1`.
|
||||
|
||||
:::
|
||||
|
||||
1) Run `npx create-react-app@5.0.1 --scripts-version=5.0.1 sheetjs-react`.
|
||||
1) Create a new site:
|
||||
|
||||
```bash
|
||||
npx -y create-react-app@5.0.1 --scripts-version=5.0.1 sheetjs-react
|
||||
```
|
||||
|
||||
2) Install the SheetJS dependency and start the dev server:
|
||||
|
||||
@ -333,7 +348,7 @@ of the columns. For more general use, passing around an Array of Arrays works.
|
||||
However, this does not handle merge cells well!
|
||||
|
||||
The `sheet_to_html` function generates HTML that is aware of merges and other
|
||||
worksheet features. React `dangerouslySetInnerHTML` attribute allows code to
|
||||
worksheet features. ReactJS `dangerouslySetInnerHTML` attribute allows code to
|
||||
set the `innerHTML` attribute, effectively inserting the code into the page.
|
||||
|
||||
In this example, the component attaches a `ref` to the `DIV` container. During
|
||||
@ -382,12 +397,16 @@ export default function SheetJSReactHTML() {
|
||||
|
||||
:::note
|
||||
|
||||
This demo was last run on 2023 February 28 using `create-react-app@5.0.1` and
|
||||
This demo was last run on 2023 July 03 using `create-react-app@5.0.1` and
|
||||
`react-scripts@5.0.1`.
|
||||
|
||||
:::
|
||||
|
||||
1) Run `npx create-react-app@5.0.1 --scripts-version=5.0.1 sheetjs-react`.
|
||||
1) Create a new site:
|
||||
|
||||
```bash
|
||||
npx -y create-react-app@5.0.1 --scripts-version=5.0.1 sheetjs-react
|
||||
```
|
||||
|
||||
2) Install the SheetJS dependency and start the dev server:
|
||||
|
||||
@ -446,5 +465,5 @@ const columns = Array.from({ length: range.e.c + 1 }, (_, i) => ({
|
||||
[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
|
||||
[The legacy demo](pathname:///react/index.html) shows a simple ReactJS component
|
||||
transpiled in the browser using Babel standalone library.
|
@ -312,7 +312,7 @@ Google and the Angular team.
|
||||
|
||||
:::caution
|
||||
|
||||
The Angular tooling provides no easy way to switch between versions!
|
||||
The Angular tooling does not provide a command to switch between versions!
|
||||
|
||||
This is a known Angular problem.
|
||||
|
||||
|
@ -35,7 +35,8 @@ var XLSX = require("xlsx");
|
||||
// ... use XLSX ...
|
||||
```
|
||||
|
||||
[After installing the module](/docs/getting-started/installation/nodejs), bundling is easy:
|
||||
[After installing the NodeJS module](/docs/getting-started/installation/nodejs),
|
||||
bundling is straightforward:
|
||||
|
||||
```bash
|
||||
browserify app.js > browserify.js
|
||||
|
@ -160,8 +160,8 @@ function muidg_to_ws(rows: Row[]): WorkSheet {
|
||||
|
||||
**Editing Cells**
|
||||
|
||||
The `processRowUpdate` prop receives the new row data, allowing for easy
|
||||
state mutation:
|
||||
The `processRowUpdate` callback prop receives the new row data. An event handler
|
||||
can mutate state:
|
||||
|
||||
```tsx
|
||||
import { GridRowModel } from "@mui/x-data-grid";
|
||||
|
@ -27,7 +27,7 @@ plugin and compare a few different data loading strategies.
|
||||
The ["Complete Demo"](#complete-demo) section includes a complete website powered
|
||||
by an XLSX spreadsheet.
|
||||
|
||||
:::note
|
||||
:::note pass
|
||||
|
||||
This demo covers static asset imports. For processing files in the browser, the
|
||||
["Bundlers" demo](/docs/demos/frontend/bundler#vite) includes an example.
|
||||
@ -186,7 +186,7 @@ document.querySelector('#app').innerHTML = `<table>
|
||||
|
||||
:::note
|
||||
|
||||
This demo was tested on 2023 June 06 against `vite v4.3.9`.
|
||||
This demo was tested on 2023 July 03 with `vite v4.3.9` and `vue-ts` template.
|
||||
|
||||
:::
|
||||
|
||||
@ -284,8 +284,8 @@ npm run build
|
||||
npx http-server dist/
|
||||
```
|
||||
|
||||
The terminal will display a url like `http://127.0.0.1:8080` . Access that page
|
||||
with a web browser.
|
||||
The terminal will display a URL, typically `http://127.0.0.1:8080` . Access
|
||||
that page with a web browser.
|
||||
|
||||
7) To confirm that only the raw data is present in the page, view the page
|
||||
source. The code will reference some script like `/assets/index-HASH.js`.
|
||||
|
@ -52,6 +52,7 @@ This demo was tested in the following environments:
|
||||
| Windows 10 | x64 | `v0.70.10` | 2023-01-04 |
|
||||
| Windows 11 | x64 | `v0.71.11` | 2023-05-11 |
|
||||
| MacOS 12.4 | x64 | `v0.64.30` | 2023-01-04 |
|
||||
| MacOS 13.4 | arm | `v0.71.18` | 2023-07-06 |
|
||||
|
||||
:::
|
||||
|
||||
@ -391,17 +392,10 @@ file picker to select the `pres.xlsx` file and the app will show the data.
|
||||
0) Follow the [React Native](https://reactnative.dev/docs/environment-setup)
|
||||
guide for React Native CLI on MacOS.
|
||||
|
||||
:::caution
|
||||
|
||||
At the time of testing, NodeJS `v16` was required. A tool like
|
||||
[`n`](https://github.com/tj/n/) should be used to switch the NodeJS version.
|
||||
|
||||
:::
|
||||
|
||||
1) Create a new project using React Native `0.64`:
|
||||
1) Create a new project using React Native `0.71`:
|
||||
|
||||
```bash
|
||||
npx react-native init SheetJSmacOS --template react-native@^0.64.0
|
||||
npx react-native init SheetJSmacOS --template react-native@^0.71.0
|
||||
cd SheetJSmacOS
|
||||
```
|
||||
|
||||
@ -576,9 +570,9 @@ highlighted lines:
|
||||
13B07FAE1A68108700A75B9A /* SheetJSmacOS-iOS */,
|
||||
```
|
||||
|
||||
4) Replace `App.js` with the following:
|
||||
4) Replace `App.tsx` with the following:
|
||||
|
||||
```tsx title="App.js"
|
||||
```tsx title="App.tsx"
|
||||
import React, { useState, type Node } from 'react';
|
||||
import { SafeAreaView, ScrollView, StyleSheet, Text, TouchableHighlight, View } from 'react-native';
|
||||
import { read, utils, version } from 'xlsx';
|
||||
|
@ -120,17 +120,40 @@ This demo was tested in the following deployments:
|
||||
|
||||
| Architecture | Git Commit | Date |
|
||||
|:-------------|:-----------|:-----------|
|
||||
| `darwin-x64` | `c3ead3f` | 2023-04-09 |
|
||||
| `darwin-arm` | `c3ead3f` | 2023-06-05 |
|
||||
| `darwin-x64` | `c3ead3f` | 2023-07-05 |
|
||||
| `darwin-arm` | `c3ead3f` | 2023-07-05 |
|
||||
| `linux-x64` | `c3ead3f` | 2023-07-05 |
|
||||
|
||||
:::
|
||||
|
||||
0) Install `icu` and `cmake` dependencies. On macOS:
|
||||
0) Install `icu` and `cmake` dependencies.
|
||||
|
||||
<Tabs groupId="triple">
|
||||
<TabItem value="darwin-x64" label="Intel Mac">
|
||||
|
||||
```bash
|
||||
brew install icu4c cmake
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="darwin-arm" label="Apple Silicon">
|
||||
|
||||
```bash
|
||||
brew install icu4c cmake
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="linux-x64" label="Linux">
|
||||
|
||||
On Arch Linux / HoloOS:
|
||||
|
||||
```bash
|
||||
sudo pacman -S cmake clang
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
1) Download ChakraCore:
|
||||
|
||||
```bash
|
||||
@ -151,27 +174,9 @@ cd ChakraCore
|
||||
cd ..
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="darwin-arm" label="Apple Silicon">
|
||||
|
||||
:::info
|
||||
|
||||
When the demo was last tested, ChakraCore JIT was not supported.
|
||||
|
||||
:::
|
||||
|
||||
```bash
|
||||
cd ChakraCore
|
||||
./build.sh --static --icu=/usr/local/opt/icu4c/include --test-build -j=8 --no-jit
|
||||
cd ..
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
:::caution
|
||||
|
||||
When this demo was last tested on macOS, the build failed with the message:
|
||||
When this demo was last tested, the build failed with the message:
|
||||
|
||||
```
|
||||
!!! couldn't find ICU ...
|
||||
@ -188,6 +193,59 @@ cd ..
|
||||
|
||||
:::
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="darwin-arm" label="Apple Silicon">
|
||||
|
||||
:::info
|
||||
|
||||
When the demo was last tested, ChakraCore JIT was not supported.
|
||||
|
||||
:::
|
||||
|
||||
```bash
|
||||
cd ChakraCore
|
||||
./build.sh --static --icu=/usr/local/opt/icu4c/include --test-build -j=8 --no-jit
|
||||
cd ..
|
||||
```
|
||||
|
||||
|
||||
:::caution
|
||||
|
||||
When this demo was last tested, the build failed with the message:
|
||||
|
||||
```
|
||||
!!! couldn't find ICU ...
|
||||
```
|
||||
|
||||
This was fixed with a local symlink to the `icu4c` folder before the build step:
|
||||
|
||||
```bash
|
||||
cd ChakraCore
|
||||
mkdir -p usr/local/opt
|
||||
ln -s /opt/homebrew/opt/icu4c usr/local/opt/icu4c
|
||||
cd ..
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="linux-x64" label="Linux">
|
||||
|
||||
:::caution
|
||||
|
||||
When the demo was last tested, ChakraCore JIT was not supported.
|
||||
|
||||
:::
|
||||
|
||||
```bash
|
||||
cd ChakraCore
|
||||
./build.sh --static --embed-icu --test-build -j=8 --no-jit
|
||||
cd ..
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
3) Download the source file and `Makefile`:
|
||||
|
||||
- [`sheetjs.ch.cpp`](pathname:///chakra/sheetjs.ch.cpp)
|
||||
|
@ -115,16 +115,17 @@ This demo was tested in the following deployments:
|
||||
|
||||
| Architecture | Date |
|
||||
|:-------------|:-----------|
|
||||
| `darwin-x64` | 2023-06-05 |
|
||||
| `darwin-arm` | 2023-06-05 |
|
||||
| `darwin-x64` | 2023-07-05 |
|
||||
| `darwin-arm` | 2023-07-05 |
|
||||
| `linux-x64` | 2023-07-05 |
|
||||
|
||||
:::
|
||||
|
||||
1) Create a new project:
|
||||
|
||||
```bash
|
||||
cargo new sheetjs-rs
|
||||
cd sheetjs-rs
|
||||
cargo new sheetjs-boa
|
||||
cd sheetjs-boa
|
||||
cargo run
|
||||
```
|
||||
|
||||
|
@ -1,13 +1,26 @@
|
||||
CC=g++
|
||||
CHAKRALIB=ChakraCore/out/Test/lib/libChakraCoreStatic.a
|
||||
ICU4C=/usr/local/opt/icu4c/lib
|
||||
ICULIB=$(ICU4C)/libicudata.a $(ICU4C)/libicuuc.a $(ICU4C)/libicui18n.a
|
||||
|
||||
CFLAGS=-lstdc++ -std=c++11 -IChakraCore/lib/Jsrt
|
||||
|
||||
UNAME__S := $(shell uname -s)
|
||||
ifeq ($(UNAME__S),Linux)
|
||||
ICU4C=ChakraCore/deps/thirdparty/icu/lib
|
||||
ICULIB=$(ICU4C)/libicui18n.a $(ICU4C)/libicuuc.a $(ICU4C)/libicudata.a
|
||||
|
||||
sheetjs.ch: sheetjs.ch.cpp
|
||||
clang++ $< $(CFLAGS) $(CHAKRALIB) $(ICULIB) -lm -ldl -Wno-c++11-compat-deprecated-writable-strings -Wno-deprecated-declarations -Wno-unknown-warning-option -o $@
|
||||
|
||||
endif
|
||||
ifeq ($(UNAME__S),Darwin)
|
||||
ICU4C=/usr/local/opt/icu4c/lib
|
||||
ICULIB=$(ICU4C)/libicudata.a $(ICU4C)/libicuuc.a $(ICU4C)/libicui18n.a
|
||||
|
||||
sheetjs.ch: sheetjs.ch.cpp
|
||||
g++ $< $(CFLAGS) -Wl,-force_load $(CHAKRALIB) $(ICULIB) -framework CoreFoundation -framework Security -lm -ldl -Wno-c++11-compat-deprecated-writable-strings -Wno-deprecated-declarations -Wno-unknown-warning-option -o $@
|
||||
|
||||
endif
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm sheetjs.ch
|
||||
|
@ -2,6 +2,8 @@
|
||||
"private": true,
|
||||
"alex": {
|
||||
"allow": [
|
||||
"host-hostess",
|
||||
"hook", "hooks",
|
||||
"chinese",
|
||||
"special",
|
||||
"simple",
|
||||
|
Loading…
Reference in New Issue
Block a user