json-joy
json-joy copied to clipboard
Peritext laundry list
High-level tasks:
- [ ] https://github.com/streamich/json-joy/issues/857
- [ ] https://github.com/streamich/json-joy/issues/858
- [ ] https://github.com/streamich/json-joy/issues/859
- [ ] https://github.com/streamich/json-joy/issues/860
- [ ] https://github.com/streamich/json-joy/issues/861
- [ ] https://github.com/streamich/json-joy/issues/862
- [ ] https://github.com/streamich/json-joy/issues/863
- [ ] https://github.com/streamich/json-joy/issues/864
- [ ] https://github.com/streamich/json-joy/issues/865
- [ ] https://github.com/streamich/json-joy/issues/866
- [ ] https://github.com/streamich/json-joy/issues/867
- [ ] https://github.com/streamich/json-joy/issues/868
- [ ] https://github.com/streamich/json-joy/issues/869
- [ ] https://github.com/streamich/json-joy/issues/870
- [ ] https://github.com/streamich/json-joy/issues/871
- [ ] https://github.com/streamich/json-joy/issues/872
- [ ] https://github.com/streamich/json-joy/issues/873
- [ ] https://github.com/streamich/json-joy/issues/874
Pile of tasks:
- [ ] In plugins, consider replacing
{children}by<Slot/>
- [ ] Gracefully handle
RESETevent. - [ ] Add ability to blur the editor and to remove all cursors.
- [ ] BUG: support
inputevent composition when done through keyboard. - [ ] Use
contentvisibilityautostatechangeevent to not re-render invisible blocks. - [ ] Make the editor tabbable, add
tabIndex={0}. - [ ] Formatting
- [ ] API to allow crawling of the URL and rendering its title.
- [ ] Ability to "reselect". UI stores the action to be performed, and presents it to the user again once user selects a new selection.
- [ ] Highlight selection green when configuration is in progress.
- [x] After marker insert, move the cursor in from of the marker.
- [x] APIs for removing markers.
- [x] APIs for changing marker attributes.
- [x] Delete markers on
Backspaceclicks. - [x] On
blurgrey out the cursors. - [x] On
focusmake cursors active. - [x] Create standartized slice annotations for:
- [x] bold
- [x] italic
- [x] etc.
- [x] Do not process
mousemoveevents if coordinates don't change. - [x] Setting cursor position to the current position, should not change block hashes.
- [x] Bug: add ability to set caret using mouse at to the very start or very end of text.
- [x] Block layer performance
- ~Re-use old
BlockandLeafBlockinstances~. - [x] Re-use old
Inlineinstances. - [x] Lazy compute
ChunkSlices, only when necessary. (And cache?) - [x] When rending
Inline, memoize it based on hash.- [x] Do not memoize on
.textcontents. - [x] For the same hash, do not re-render all the renderers.
- [x] Do not memoize on
- ~Re-use old
- [x] Inline formatting
- [x] When adding slice, expand selection as per Peritext paper (next char anchor).
- [x] Ability to remove formatting.
- [x] Ability to insert formatting into only a caret selection.
- [x] Block formatting
- [x] Support
Enterparagraph splitting using the right DOM events. - [x] Support line break insertion using
Ctrl + Enter. - [x] Support block splits, for all blocks, when not in paragraph block.
- [x] Support block deletion/merge.
- [x] Support block type change.
- [x] Support
- [x] In
cursorevents, operate in the native CRDT coordinates. - [x] Support rendering ABS start and end cursors.
- [x] BUG: cursor at ABS and is not included into block layer.
- [x] Support soft line detection in rendering layer.
- [x] Rendering surface
- [x] Implement some very basic defaults, such that, when no renderers are provided, the caret and selection are still visible.
- [x] Add support for soft lines in events
- [x] Events
- [x] Insert events
- [x] Insert from clipboard
- [x] Insert rich-text from clipboard
- [x] Insert Peritext rich-text
- [x] Delete events
- [x] Selection
- [x] Selection across slice boundaries
- [x] Selection across block boundaries
- [x] Delete backwards/forwards
- [x] Delete unit: (1) char; (2) word; (3) line
- [x] Cursor events
- [x] Clipboard events
- [x] Inline slice events
- [x] Block marker events
- [x] History events
- [x] Imperative APIs
- [x] Insert events
- [x] Improve how renderers surround the root block element. React tree should not change because of the renderer changes.
- [x] Inside coloured text, split the caret vertically in half and color top part in the color of the text and color the lower part in some color that matches the background.
- [x] On multiple quick consecutive clicks extend selection in the following order: (1) word; (2) soft line; (3) hard line?; (4) block (what if it is the same as hard line?); (5) block and two adjacent blocks; (6) the whole document.
- [x] Separate context and
<Editor>into their very own components, create state container. So that toolbar can be rendered in a very different place. - [x] Selection menu move into viewport
Caret
- [x] Ability to change caret color
- [x] Keep track and render fast typing score