Compare commits
20 Commits
feature/se
...
master
Author | SHA1 | Date |
---|---|---|
|
862b386c44 | 1 year ago |
|
6b60e02ba1 | 1 year ago |
|
6461d432f2 | 1 year ago |
|
c8e2f4636b | 1 year ago |
|
b29a8ed78a | 1 year ago |
|
6073710de5 | 1 year ago |
|
3c3b81c585 | 1 year ago |
|
22b1617afe | 2 years ago |
|
df6fdbcdf8 | 2 years ago |
|
14c8849c25 | 2 years ago |
|
f2afaf3257 | 2 years ago |
|
96bb12b411 | 2 years ago |
|
ef8a1b0c0d | 2 years ago |
|
f26603df3a | 2 years ago |
|
3379d13168 | 2 years ago |
|
fb9c7b3c3e | 2 years ago |
|
f29069c3d6 | 2 years ago |
|
d74650e32e | 3 years ago |
|
9b8da8be9e | 3 years ago |
|
38cb3e3295 | 3 years ago |
24 changed files with 25848 additions and 3545 deletions
@ -1,2 +1,66 @@ |
|||||||
# ation |
# ation |
||||||
– a simple keynote software for Markdown files – written in `electron` |
– a simple keynote software for markdown files – written using `electron` |
||||||
|
|
||||||
|
 |
||||||
|
|
||||||
|
## Usage |
||||||
|
After opening any markdown file you can press <kbd>Tab</kbd> to show all |
||||||
|
available keybindings. The keybindings are chosen, so they work with commont |
||||||
|
presenters like the *"Logitech R400"*. |
||||||
|
|
||||||
|
### Markdown |
||||||
|
`ation` tries to make a presentation out of any ordinary markdown file. It |
||||||
|
considers `H1` titles to be a standalone slide and `H2` titles to start a new |
||||||
|
slide. There also is a special template for a "cover slide", which is |
||||||
|
provisioned by meta data at the top of your markdown file. |
||||||
|
|
||||||
|
### Meta data |
||||||
|
To keep compatibility with other markdown parsers, `ation` does not implement a |
||||||
|
`YAML` front matter or similar, but tries to parse the first `HTML` comment in |
||||||
|
your markdown file as meta data. The meta data is specified as simple key-value |
||||||
|
pairs, one pair per line, a color (`:`) seperating the key from the value. |
||||||
|
|
||||||
|
**Possible values** |
||||||
|
|
||||||
|
| Key | Type | Example Value | |
||||||
|
| ---------------- | ------------------- | ---------------------------- | |
||||||
|
| title | string | My Keynote | |
||||||
|
| subtitle | string | an introduction into `ation` | |
||||||
|
| author | string | MikO, Massive Dynamic | |
||||||
|
| email | email address | miko@mail.tld | |
||||||
|
| icon | path *(relative)* | ./my_logo.svg | |
||||||
|
| color_highlight | CSS color value | #4994DA | |
||||||
|
| color_background | CSS color value | #1A1A1A | |
||||||
|
| color_text | CSS color value | #DDDDDD | |
||||||
|
| font | CSS font identifier | Iosevka | |
||||||
|
|
||||||
|
**Example** |
||||||
|
```html |
||||||
|
<!-- |
||||||
|
title : My Keynote |
||||||
|
subtitle : an introduction into `ation` |
||||||
|
author : MikO, Massive Dynamic |
||||||
|
email : miko@mail.tld |
||||||
|
icon : ./my_logo.svg |
||||||
|
color_highlight : #4994DA |
||||||
|
color_background : #1A1A1A |
||||||
|
color_text : #DDDDDD |
||||||
|
font : Iosevka |
||||||
|
--> |
||||||
|
``` |
||||||
|
|
||||||
|
The color values override the ones that have been set in `ation`'s settings on a |
||||||
|
per slideshow basis. |
||||||
|
|
||||||
|
## Installation |
||||||
|
Either choose a pre-built release from the [releases page][release] or build |
||||||
|
`ation` yourself running |
||||||
|
|
||||||
|
```bash |
||||||
|
npm i |
||||||
|
npm run dist |
||||||
|
``` |
||||||
|
|
||||||
|
Releases are currently only available for `macOS` and `Windows`. |
||||||
|
|
||||||
|
[release]: releases |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,36 @@ |
|||||||
|
import React from "react"; |
||||||
|
import Monaco from "@monaco-editor/react"; |
||||||
|
|
||||||
|
const Editor = ({show, source}) => { |
||||||
|
|
||||||
|
const editorMount = (instance, monaco) => { |
||||||
|
// NOTE: I have no idea, why we have to re-add these ourselves, but this
|
||||||
|
// code works, so be it. --MikO
|
||||||
|
instance.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyC, () => instance.trigger("source","editor.action.clipboardCopyAction")); |
||||||
|
instance.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyV, () => instance.trigger("source","editor.action.clipboardPasteAction")); |
||||||
|
instance.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyX, () => instance.trigger("source","editor.action.clipboardCutAction")); |
||||||
|
instance.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, () => window.api.saveFile(instance.getValue())); |
||||||
|
} |
||||||
|
|
||||||
|
if (!show) |
||||||
|
return <></>; |
||||||
|
|
||||||
|
return ( |
||||||
|
<> |
||||||
|
<Monaco
|
||||||
|
defaultLanguage="markdown" |
||||||
|
height="100%" |
||||||
|
options={{ |
||||||
|
minimap : { |
||||||
|
enabled : false |
||||||
|
} |
||||||
|
}} |
||||||
|
onMount={editorMount} |
||||||
|
keepCurrentModel={true} |
||||||
|
defaultValue={source} |
||||||
|
theme="vs-dark" /> |
||||||
|
</> |
||||||
|
); |
||||||
|
}; |
||||||
|
|
||||||
|
export default Editor; |
@ -1,7 +1,8 @@ |
|||||||
const Mode = Object.freeze({ |
const Mode = Object.freeze({ |
||||||
NORMAL : 1, |
NORMAL : 1, |
||||||
PRESENT : 2, |
PRESENT : 2, |
||||||
BLACKOUT : 3 |
BLACKOUT : 3, |
||||||
|
EDIT : 4 |
||||||
}); |
}); |
||||||
|
|
||||||
export default Mode; |
export default Mode; |
Loading…
Reference in new issue