diff --git a/examples/cra/package.json b/examples/cra/package.json index 76d55ff8..e1f76cca 100644 --- a/examples/cra/package.json +++ b/examples/cra/package.json @@ -10,7 +10,7 @@ "@types/node": "^16.11.21", "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", - "automerge-wasm": "file:../automerge-wasm-v0.1.0.tgz", + "automerge-wasm": "file:../../automerge-wasm/automerge-wasm-v0.1.0.tgz", "react": "^17.0.2", "react-dom": "^17.0.2", "react-scripts": "5.0.0", diff --git a/examples/cra/src/App.tsx b/examples/cra/src/App.tsx index f2d2172e..c876ef4a 100644 --- a/examples/cra/src/App.tsx +++ b/examples/cra/src/App.tsx @@ -1,40 +1,41 @@ import React, { useEffect, useState } from 'react'; -import logo from './logo.svg'; import './App.css'; -import init from "automerge-wasm" -import { create, loadDoc, encodeChange, decodeChange, - initSyncState, encodeSyncState, decodeSyncState, - encodeSyncMessage, decodeSyncMessage, - LIST, MAP, TEXT } from "automerge-wasm" +import * as Automerge from "automerge-wasm" function App() { + const [ doc, ] = useState(Automerge.create()) + const [ edits, ] = useState(doc.set("_root", "edits", Automerge.TEXT) || "") const [ val, setVal ] = useState(""); useEffect(() => { - init().then(() => { - let doc = create() - let edits = doc.set("_root", "edits", TEXT) || "" doc.splice(edits, 0, 0, "the quick fox jumps over the lazy dog") - doc.splice(edits, 10, 3, "sloth") let result = doc.text(edits) - setVal(JSON.stringify(result)) - }) + setVal(result) }, []) + + function updateTextarea(e: any) { + e.preventDefault() + let event: InputEvent = e.nativeEvent + console.log(edits, e.target.selectionEnd) + switch (event.inputType) { + case 'insertText': + //@ts-ignore + doc.splice(edits, e.target.selectionEnd - 1, 0, e.nativeEvent.data) + break; + case 'deleteContentBackward': + //@ts-ignore + doc.splice(edits, e.target.selectionEnd, 1) + break; + case 'insertLineBreak': + //@ts-ignore + doc.splice(edits, e.target.selectionEnd - 1, '\n') + break; + } + setVal(doc.text(edits)) + } return (
- Edit src/App.tsx
and save to reload.
-
edits = {val}
+