diff --git a/package-lock.json b/package-lock.json
index 0ef3398..26d17f2 100755
--- a/package-lock.json
+++ b/package-lock.json
@@ -5245,6 +5245,15 @@
"resolved": "https://npm.hibas123.de/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
+ "sass": {
+ "version": "1.29.0",
+ "resolved": "https://npm.hibas123.de/sass/-/sass-1.29.0.tgz",
+ "integrity": "sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==",
+ "dev": true,
+ "requires": {
+ "chokidar": ">=2.0.0 <4.0.0"
+ }
+ },
"sax": {
"version": "1.2.4",
"resolved": "https://npm.hibas123.de/sax/-/sax-1.2.4.tgz",
diff --git a/package.json b/package.json
index e5619fa..bafd199 100755
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
"@types/codemirror": "0.0.99",
"@types/lodash.clonedeep": "^4.5.6",
"@types/uuid": "^8.3.0",
+ "sass": "^1.29.0",
"typescript": "^4.1.2"
}
}
diff --git a/src/components/routes/settings/Settings.tsx b/src/components/routes/settings/Settings.tsx
index 1c725bc..c42882f 100644
--- a/src/components/routes/settings/Settings.tsx
+++ b/src/components/routes/settings/Settings.tsx
@@ -15,16 +15,10 @@ export default class SettingsPage extends Page<
return (
diff --git a/src/components/routes/vault/Entry copy.tsx b/src/components/routes/vault/Entry copy.tsx
deleted file mode 100644
index 35ece4c..0000000
--- a/src/components/routes/vault/Entry copy.tsx
+++ /dev/null
@@ -1,209 +0,0 @@
-import { h, Component } from "preact";
-import { IVault, ViewNote } from "../../../notes";
-import { Trash2 as Trash, X, Save } from "preact-feather";
-
-import Navigation from "../../../navigation";
-import { YesNoModal } from "../../modals/YesNoModal";
-import Notifications, { MessageType } from "../../../notifications";
-
-const minRows = 3;
-export default class EntryComponent extends Component<
- { vault: Promise
; id: string | undefined; note: string | undefined },
- { title: string; changed: boolean }
-> {
- private text: string = "";
- private vault: IVault;
- // private lineHeight: number = 24;
- private note: ViewNote;
-
- private rows: number = minRows;
-
- private skip_save: boolean = false;
-
- private inputElm: HTMLInputElement;
-
- constructor(props) {
- super(props);
- this.state = { changed: false, title: "" };
- this.textAreaChange = this.textAreaChange.bind(this);
- this.textAreaKeyPress = this.textAreaKeyPress.bind(this);
- }
-
- private toVault() {
- history.back();
- }
-
- componentDidMount() {
- this.inputElm.focus();
- }
-
- async componentWillMount() {
- this.text = "";
- this.vault = undefined;
- this.note = undefined;
- this.rows = minRows;
- this.skip_save = false;
- this.setState({ changed: false, title: "" });
- try {
- this.skip_save = false;
-
- this.vault = await this.props.vault;
- let note: ViewNote;
- let changed = false;
- if (this.props.id) note = await this.vault.getNote(this.props.id);
- else {
- note = this.vault.newNote();
- if (this.props.note) {
- note.__value = this.props.note;
- changed = true;
- }
- }
-
- if (!note) {
- Notifications.sendNotification(
- "Note not found!",
- MessageType.ERROR
- );
- } else {
- this.note = note;
- this.text = note.__value;
- let rows = this.getRows(this.text);
- if (rows !== this.rows) {
- this.rows = rows;
- }
- let [title] = this.text.split("\n", 1);
- this.setState({ title, changed });
- }
- } catch (err) {
- Notifications.sendError(err);
- }
- }
-
- private async save() {
- try {
- if (this.state.changed) {
- this.note.__value = this.text;
- await this.vault.saveNote(this.note);
- this.setState({ changed: false });
- }
- } catch (err) {
- Notifications.sendError(err);
- }
- }
-
- componentWillUnmount() {
- if (!this.skip_save) this.save();
- }
-
- strToNr(value: string) {
- let match = value.match(/\d/g);
- return Number(match.join(""));
- }
-
- getRows(value: string) {
- const lines = (value.match(/\r?\n/g) || "").length + 1;
- return Math.max(lines + 1, minRows);
- }
-
- textAreaChange(evt: KeyboardEvent) {
- if (evt.keyCode === 17 || evt.keyCode === 27) return; //No character, so not relevant for this function
- if (!this.state.changed && this.textAreaKeyPress(evt))
- this.setState({ changed: true });
-
- let target = evt.target as HTMLTextAreaElement;
- let value = target.value;
-
- this.text = value;
-
- let [title] = value.split("\n", 1);
- if (title !== this.state.title) this.setState({ title });
-
- let rows = this.getRows(value);
- if (rows !== this.rows) {
- target.rows = rows;
- this.rows = rows;
- }
- }
-
- async exitHandler() {
- if (this.state.changed) {
- let modal = new YesNoModal("Really want to quit?");
- let res = await modal.getResult();
- if (res === true) {
- this.skip_save = true;
- this.toVault();
- }
- } else this.toVault();
- }
-
- textAreaKeyPress(evt: KeyboardEvent) {
- console.log(evt);
- if ((evt.keyCode === 83 || evt.keyCode === 13) && evt.ctrlKey) {
- evt.preventDefault();
- this.save();
- return false;
- } else if (evt.keyCode === 27) {
- evt.preventDefault();
- this.exitHandler();
- return false;
- }
- return true;
- }
-
- render() {
- const save_handler = async () => {
- await this.save();
- Navigation.setPage(
- "/vault",
- { id: this.vault.id },
- { entry: "false" },
- true
- );
- this.toVault();
- };
-
- const delete_handler = async () => {
- await this.vault.deleteNote(this.props.id);
- this.toVault();
- };
-
- console.log("Rerender");
-
- return (
-
- );
- }
-}
diff --git a/src/components/routes/vault/Entry.tsx b/src/components/routes/vault/Entry.tsx
index 253689e..f264483 100755
--- a/src/components/routes/vault/Entry.tsx
+++ b/src/components/routes/vault/Entry.tsx
@@ -96,24 +96,22 @@ export default function Entry(props: IEntryProps) {
return (
)}
-
-