HyperMD icon indicating copy to clipboard operation
HyperMD copied to clipboard

Markdown AST, Improve UX and refactor ?

Open laobubu opened this issue 6 years ago • 9 comments

First of all, thank 圆伞科技 for sponsoring HyperMD! I have some plan to make HyperMD much better:

Markdown AST

  • [ ] Parse content and get AST (via CodeMirror Mode? or other libs like marked ?)
  • [ ] AST APIs for HyperMD users
    • [ ] Read
    • [ ] ~~Write~~
  • [ ] Use AST to improve hide-token, shortkeys' performance and user experience, also for #43

Separated Packges

  • [ ] Separate PowerPacks into NPM Packages.
  • [ ] A toolchain (or project boilerplate), for the separated npm packages.

Style / Theme

  • [ ] By default, hide line numbers, or make them less eye-catching
    • [ ] Move [Go back] button of addon/click to somewhere else.
  • [ ] Rewrite the theme .scss, make it more configurable (eg. dark mode?)
    • [ ] Add more color schemes.
    • [ ] Add themes for wide screens ( eg. #28 )
  • [ ] Find a better way to deal with external resources. (web fonts and icon images)
  • [ ] Remove all require("xxx.css") from source, so that we can make HyperMD less opinioned?

Marketing

  • [ ] Better doc and README
  • [ ] SEO? some articles? no idea yet.

UX Improving

  • hide-token shall
    • [ ] NOT hide tokens that are inside a selection.
    • [ ] NOT hide link address while editing an image/link.

However, for now, I'm too busy to maintain HyperMD. The plan also need further discussion. Feel free to leave comments. I think this can start in late October.

laobubu avatar Sep 29 '18 06:09 laobubu

CodeMirror 6 is coming with lots of changes. The new DOM structure of editor is clean and good, but it will be fully incompatible with HyperMD (v0.3.x)

laobubu avatar Oct 01 '18 17:10 laobubu

感觉目前的styling不是特别configurable 希望将来可以有一个更好的构架. Either way, 非常感谢制作跟维护这个项目!

ycai2 avatar Oct 03 '18 23:10 ycai2

To make both HyperMD and related npm packages (basically, powerpacks) friendly to plain browser env, a build-tool is extracted from HyperMD project.

And, the first separated package hypermd-katex is now online!

  • GitHub: https://github.com/HyperMD/hypermd-katex
  • Homepage: https://hypermd.github.io/hypermd-katex/
  • NPM: https://www.npmjs.com/package/hypermd-katex

I'm going to remove all powerpacks from current HyperMD project, then provide them as npm packages. hypermd-katex already shows the promising possibility.

Maybe not ~~powerpack~~. Let's call them addon?

https://github.com/search?q=topic%3Ahypermd-addon&type=Repositories

laobubu avatar Oct 09 '18 05:10 laobubu

hypermd-mathjax is now online! Also don't miss the wiki page

laobubu avatar Oct 09 '18 16:10 laobubu

How about plugins? This is the term used by tools like Draft.js and Eslint. Either way, I think it's a great idea and the name shouldn't have too much effect.

michaelgmcd avatar Oct 10 '18 17:10 michaelgmcd

Working on the theme and style

See https://github.com/laobubu/HyperMD/tree/refractor-separate-core/theme

  1. Writing an instruction for theme designers: https://github.com/laobubu/HyperMD/blob/refractor-separate-core/docs/theme-n-style.md
  2. Try making a dark theme... (unfinished)
  3. A "playground" page designed to test themes and addons.

default

laobubu avatar Oct 16 '18 13:10 laobubu

Has this made any progress? I love this project, but theming it is a nightmare currently (Unless you have some tips, the 800+ lines of css is quite demotivating)

CoreParadox avatar Feb 28 '19 04:02 CoreParadox

@CoreParadox

Has this made any progress? I love this project, but theming it is a nightmare currently (Unless you have some tips, the 800+ lines of css is quite demotivating)

Check this out: dark theme and light theme. Maybe this is the best trade-off between readable code and HyperMD's mess.

HyperMD uses lots of tricky methods to make CodeMirror WYSIWYG, which make is almost impossible to write clean css for themes.

Maybe getting rid of CodeMirror is the only solution. Meanwhile, a brand new CodeMirror is coming, and it will make almost all HyperMD tricks broken. That makes me feel demotivating.

laobubu avatar Mar 01 '19 11:03 laobubu

Are you thinking of making an API for adding things like inline audio/video. and other things such as iframe embeds etc.

And what about allowing native HTML like <br/> inside normal markdown that are just rendered as HTML?

ilse-langnar avatar Sep 26 '21 21:09 ilse-langnar