rust powered markdown parsing working
This commit is contained in:
parent
49deafd8a2
commit
05519bad5b
10 changed files with 3099 additions and 4 deletions
|
|
@ -1,3 +1,44 @@
|
|||
<script lang="ts">
|
||||
|
||||
import { exists, BaseDirectory } from '@tauri-apps/plugin-fs';
|
||||
import { marked } from 'marked';
|
||||
import asyncDerivedStream from '../stream.js'
|
||||
import { writable } from 'svelte/store'
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
|
||||
let text = writable(`Some words are *italic*, some are **bold**
|
||||
|
||||

|
||||
|
||||
`);
|
||||
|
||||
function randomSleep () {
|
||||
const timeout = Math.floor(Math.random() * 2000)
|
||||
return new Promise(resolve => setTimeout(resolve, timeout))
|
||||
}
|
||||
|
||||
async function parse_markdown(document){
|
||||
return await invoke("parse_markdown", { document });
|
||||
}
|
||||
|
||||
let parsed_text = asyncDerivedStream(text, parse_markdown)
|
||||
|
||||
</script>
|
||||
|
||||
<textarea bind:value={$text}></textarea>
|
||||
|
||||
|
||||
{@html $parsed_text}
|
||||
|
||||
<style>
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!--
|
||||
<script lang="ts">
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
|
|
@ -154,3 +195,4 @@ button {
|
|||
}
|
||||
|
||||
</style>
|
||||
-->
|
||||
|
|
|
|||
16
src/stream.js
Normal file
16
src/stream.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { derived } from 'svelte/store'
|
||||
|
||||
export default function (stores, callback, initial_value) {
|
||||
let previous = 0
|
||||
|
||||
return derived(stores, ($stores, set) => {
|
||||
const start = Date.now()
|
||||
Promise.resolve(callback($stores)).then(value => {
|
||||
if (start > previous) {
|
||||
previous = start
|
||||
set(value)
|
||||
}
|
||||
})
|
||||
}, initial_value)
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue