Commit graph

397 commits

Author SHA1 Message Date
David Baker
78d8d22457 Fix emoji replacement in composer
* Re-scan the slate document tree on each emoji replacement since
   doing a replacement will invalidate all the offsets we have.
 * Reset the emoji regex each time we use it.

Fixes https://github.com/vector-im/riot-web/issues/7550
2018-10-24 16:46:06 +01:00
Aaron Raimist
a66dbccef8
Fix lint errors in MessageComposerInput.js
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-11 22:46:55 -05:00
David Baker
3efc09586b More API changes 2018-10-11 10:47:36 +01:00
David Baker
4d1f2cdfa9 Fix quote post slate update
Missed API update
2018-10-11 10:29:55 +01:00
David Baker
4e1fabd140 Remove spurious ...atributes in the wrong place
We already have it above
2018-10-09 16:05:14 +01:00
David Baker
c1f51a76dd Update to new version of slate
Lots of fixes here as a lot of the API has changed (eg. anchorKey /
offsetKey are now anchor.key and offset.key, and collapseFocusToThing
is moveFocusToThing).

Also changes the ref to a function (sorry for lumping this into the
same PR).

Hopefully will fix https://github.com/vector-im/riot-web/issues/7105
2018-10-09 10:55:55 +01:00
Will Hunt
17915b5082
Merge branch 'develop' into hs/purge-irc-hack 2018-10-03 19:39:14 +01:00
Will Hunt
fe788486b7 Drop (IRC) suffix hacks 2018-10-03 19:34:06 +01:00
David Baker
9e64a22884 s/DidMount/WillMount/ in MessageComposerInput
This fixes the tests that broke with https://github.com/matrix-org/matrix-js-sdk/pull/717

This is because of https://github.com/vector-im/riot-web/blob/master/test/app-tests/joining.js#L63
which prevents the DOM nodes from actually ending up in the DOM, even though the react components
get rendered. This means that WillMount and WillUnmount are called, but not DidMount.

Using WillMount is more symmertrical anyway since the resulting teardown code must be in
WillUnmount (since there is no DidUnmount).
2018-09-06 11:44:13 +01:00
Michael Telatynski
f264075369
null-guard history properly
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-26 17:11:32 +01:00
Michael Telatynski
265e4267b8
remove faulty onBlur/onFocus code which caused selection to rollback
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-26 15:00:43 +01:00
Michael Telatynski
020e714b85
fix focus and too many <p>s after a Event>Quote in RT mode
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-24 15:54:24 +01:00
Michael Telatynski
afa19cd60d
make clicking autocomplete suggestions work again
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-24 13:48:05 +01:00
Michael Telatynski
93abb4b74b
workaround to prevent Slate getting too empty when undoing RT pastes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-20 15:06:27 +01:00
Michael Telatynski
855f8871b8
replace heuristic for the time being as it failed with inlines like pills. Fixes vector-im/riot-web#7059
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 16:50:07 +01:00
Michael Telatynski
88dddb628d
in MD mode forgo any Magic Rich Pasting conversion as its confusing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 11:50:13 +01:00
Michael Telatynski
6bb88c0548
attempt to fix clash of Cmd-M on Mac. Should fix vector-im/riot-web#7047
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 11:28:48 +01:00
Michael Telatynski
3e956514b3
also prevent merge/skip on rich text pastes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 11:00:45 +01:00
Michael Telatynski
1a9de3fabe
fix undo on pasting plaintext content
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 10:58:27 +01:00
Michael Telatynski
f5856270cc
undo removal of stripping <p>s as it breaks HTML /mes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 10:48:54 +01:00
Michael Telatynski
19e5dc5799
do less rewriting for composer quote to prevent breaking pills
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 10:10:42 +01:00
Michael Telatynski
8bb08b1b75
fix focus on new editorState as it didn't have focus so broke when alt tab
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-18 10:10:11 +01:00
Michael Telatynski
720a728278
workaround for placeholder being shown when empty text but block. Fixes vector-im/riot-web#7042
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-17 16:13:33 +01:00
Michael Telatynski
1b467f6ca8
fix pasting of plaintext content (prevent loads of <p>s) Fixes vector-im/riot-web#7043
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-17 16:02:37 +01:00
Michael Telatynski
414908611d
prevent exception if there is no text node at anchor
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-17 13:48:15 +01:00
Michael Telatynski
688776bc10
allow enter to remove current block if its empty useful for lists
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-17 13:29:40 +01:00
Michael Telatynski
ff76b6a981
allow user to break out of blockquote/etc by hitting enter twice
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-17 12:30:22 +01:00
Michael Telatynski
1c24f1fd5a
fix 2nd typo in one PR :(
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 21:34:25 +01:00
Michael Telatynski
547e0ed52c
check if has some completions, not if >=0
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 21:30:04 +01:00
Michael Telatynski
3000099991
add additional checks for hiding autocomplete to prevent text calculation
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 21:27:52 +01:00
Michael Telatynski
bdbc2cbd38
disable spellCheck when the placeholder is shown because "unencrypted"
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 18:32:50 +01:00
Michael Telatynski
c7859fed1a
add heuristic to compare documents to prevent autocomplete flicker
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 18:27:06 +01:00
Michael Telatynski
2f1779751b
make the MessageComposerStore stateless for better performance
and inter-tab composition (by simplifying it. WIN-WIN)

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-16 16:56:08 +01:00
Michael Telatynski
7405c5eff2
specify alternate history storage key to prevent conflicts with draft
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-12 16:35:42 +01:00
Michael Telatynski
b4bc09c335
null-guard savedState since now we're accessing its props
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-11 17:13:33 +01:00
Michael Telatynski
3e05bf19c5
hide autocomplete when moving caret to match existing behaviour
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-11 16:30:45 +01:00
Michael Telatynski
c3aef6e3a0
workaround for tommoor/slate-md-serializer#14
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-11 10:29:14 +01:00
Michael Telatynski
fd4f9679df
convert md<->rt if the stored editorState was in a different state
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-11 09:43:39 +01:00
Michael Telatynski
abbb69dc36
fix fn call, fixes usage of SlashCommands
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-10 17:35:13 +01:00
Michael Telatynski
100ecfe7ce
remove trailing spaces to make linter happy (no-trailing-spaces)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-10 10:29:52 +01:00
Michael Telatynski
58301e5dd4
navigateHistory only when at edges of document, to prevent Firefox bug
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-10 10:28:17 +01:00
Matthew Hodgson
0d0934add7
unbreak modifier+space (e.g. emoji insert on macOS)
(cherry picked from commit c490f87)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:58:04 +01:00
Matthew Hodgson
021409aafe
apply review feedback from @lukebarnard1
(cherry picked from commit 37d4bce)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:54:57 +01:00
Michael Telatynski
5b74c615ae
add missing import
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit 47b6099)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:42:57 +01:00
Michael Telatynski
43204ea177
fix Control-Backspace after select-all
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit 0f32ec0)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:42:10 +01:00
Michael Telatynski
faf17f06c6
remove debugger statement
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit b6f7940)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:40:36 +01:00
Michael Telatynski
483116fb03
add rule to slate-md-serializer: make underlined and removed work for CM
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit b521efd)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:40:29 +01:00
Michael Telatynski
372fa29ad3
take edge into consideration when moving focus region on arrow keys
fixes: >Pressing right when the caret is immediately left of some entity (pill, emojione emoji, etc..) causes the caret to jump to the left of the next entity (or end of the message if there are no more entities)

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit 0982617)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:40:20 +01:00
Michael Telatynski
c6837af398
import-type Change from slate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>

(cherry picked from commit 85ed499)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-07-09 19:40:00 +01:00
Matthew Hodgson
efdc5430d7 merge develop 2018-07-09 17:50:07 +01:00
Michael Telatynski
e1ba6949d0
expand composer input focus region and apply cursor:text to it
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-23 16:40:53 +01:00
David Baker
a6d9c25b70
Merge pull request #1988 from matrix-org/t3chguy/refactor_slashcommands
refactor, consolidate and improve SlashCommands
2018-06-20 13:56:29 +01:00
David Baker
e67dae704a Take replies out of labs! 2018-06-20 09:57:11 +01:00
Michael Telatynski
85ddc0651b
consolidate the two locations commands are defined, as it was a MESS
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-06-18 19:34:40 +01:00
Luke Barnard
bea52eccf8 Remove unused import, constant 2018-06-18 17:40:48 +01:00
David Baker
666d469222
Revert "Fix exception when opening dev tools" 2018-06-14 10:52:39 +01:00
David Baker
b81e12e4cc Fix exception when opening dev tools
Apparently draft sometimes gets unhappy when you try to move to the
end of an empty state, so only move to the end if we actually
created a non-empty state.

This will be irrelevant once https://github.com/matrix-org/matrix-react-sdk/pull/1890
is merged, but I have the fix now, and this is probably otherwise
going to annoy me now I'm doing things where devtools is very useful.

Fixes https://github.com/vector-im/riot-web/issues/6436
2018-06-13 16:55:16 +01:00
Matthew Hodgson
6299e188a4 unbreak keyboard shortcuts & ctrl-backspace 2018-05-26 02:11:20 +01:00
Matthew Hodgson
ab41212258 fix double-nested code blocks & bump md-serializer 2018-05-26 00:37:21 +01:00
Matthew Hodgson
864a33f978 switch to using 'code' for both blocks & marks to match md-serializer 2018-05-23 20:12:13 +01:00
Matthew Hodgson
b0ff61f7ef switch code schema to match slate-md-serializer 2018-05-23 14:12:08 +01:00
Matthew Hodgson
fc1c4996fc slate-md-serializer 3.1.0 now escapes correctly 2018-05-23 02:15:34 +01:00
Matthew Hodgson
6fba8311f9 escape blockquotes correctly
and fix NPE
2018-05-23 02:09:37 +01:00
Matthew Hodgson
794a60b9f8 refocus editor immediately after executing commands
and persist selections correctly across blur/focus
2018-05-23 01:36:21 +01:00
Matthew Hodgson
e7a4ffaf45 fix emojioneifying autoconverted emoji 2018-05-23 00:52:00 +01:00
Matthew Hodgson
cace5e8bfc fix bug where selection breaks after inserting emoji 2018-05-23 00:41:46 +01:00
Matthew Hodgson
11cea61661 refocus editor after clicking on autocompletes 2018-05-21 12:28:08 +01:00
Matthew Hodgson
7de45f8b7b make quoting work 2018-05-21 03:48:59 +01:00
Matthew Hodgson
b616fd025e comment out all the tests for now 2018-05-20 23:34:06 +01:00
Matthew Hodgson
e460cf35e0 hide formatting bar for MD editor 2018-05-20 22:48:40 +01:00
Matthew Hodgson
f981d7b729 unify buttons on the node type names, and make them work 2018-05-20 22:39:40 +01:00
Matthew Hodgson
d799b7e424 refactor roundtripping into a single place
and fix isRichTextEnabled to be correctly camelCased everywhere...
2018-05-20 16:30:39 +01:00
Matthew Hodgson
aac6866779 switch back to using commonmark for serialising MD when roundtripping
and escape MD correctly when serialising via slate-md-serializer
2018-05-20 14:33:14 +01:00
Matthew Hodgson
e9cabf0e85 add pill and emoji serialisation to Md 2018-05-20 03:17:51 +01:00
Matthew Hodgson
a0d88a829d support sending inlines from the RTE.
includes a horrific hack for sending emoji until
https://github.com/ianstormtaylor/slate/pull/1854 is merged
or otherwise solved
2018-05-20 02:53:32 +01:00
Matthew Hodgson
d76a2aba9b use <p/> as our root node everywhere and fix blank roundtrip bug 2018-05-20 01:07:25 +01:00
Matthew Hodgson
c3a6a41e5d support links in RTE 2018-05-20 00:49:29 +01:00
Matthew Hodgson
f2116943c8 switch schema to match the MD serializer 2018-05-20 00:17:11 +01:00
Matthew Hodgson
65f0b05719 fix typo 2018-05-19 23:40:22 +01:00
Matthew Hodgson
572a31334f add h4, h5 and h6 2018-05-19 23:34:30 +01:00
Matthew Hodgson
1f05aea884 make HTML pasting work 2018-05-19 23:33:07 +01:00
Matthew Hodgson
1536ab433a make file pasting work again 2018-05-19 22:05:31 +01:00
Matthew Hodgson
d426c3474f fix strikethough & code, improve shift-return & backspace 2018-05-19 21:36:22 +01:00
Matthew Hodgson
58670cc3e5 exit list more sanely on backspace 2018-05-19 21:14:39 +01:00
Matthew Hodgson
a4d9338cf0 let backspace delete list nodes in RTE 2018-05-19 20:38:07 +01:00
Matthew Hodgson
167742d900 make RTE sending work 2018-05-19 20:28:38 +01:00
Matthew Hodgson
089ac337f4 remove unused html serializer 2018-05-18 15:22:24 +01:00
Matthew Hodgson
e51554c626 actually hook up RTE 2018-05-17 02:13:17 +01:00
Matthew Hodgson
ae208da805 nudge towards supporting formatting buttons in MD 2018-05-17 00:01:23 +01:00
Matthew Hodgson
4eb6942211 let onChange set originalEditorState 2018-05-15 01:16:06 +01:00
Matthew Hodgson
12a56e8b8e remove spurious comment 2018-05-15 00:59:55 +01:00
Matthew Hodgson
c1000a7cd5 emojioneify the composer
and also fix up the selectedness CSS for pills and emoji
2018-05-14 03:02:12 +01:00
Matthew Hodgson
7ecb4e3b18 remove dead removeMDLinks code 2018-05-13 23:35:39 +01:00
Matthew Hodgson
7405b49b44 unify setState() and onChange()
also make emoji autocomplete work again
also remove the onInputContentChanged prop
also slateify the onInputStateChanged prop
2018-05-13 23:34:00 +01:00
Matthew Hodgson
a247ea2f77 delete duplicate propTypes(!!!) 2018-05-13 22:43:20 +01:00
Matthew Hodgson
ddfe0691c4 fix insert_mention 2018-05-13 22:41:39 +01:00
Matthew Hodgson
dd0726f068 fix navigating history downwards on tall messages; remove obsolete code 2018-05-13 21:17:43 +01:00
Matthew Hodgson
79f7c5d6ab remove // support, as it never worked
if you want to escape a /, do it with \/ or just precede with a space
2018-05-13 03:29:56 +01:00
Matthew Hodgson
4c3588d260 don't lose focus after a / command 2018-05-13 03:26:22 +01:00
Matthew Hodgson
5605439e76 autocomplete polishing
* suppress autocomplete when navigating through history
* only search for slashcommands if in the first block of the editor
* handle suffix returns from providers correctly
* fix bugs when pressing ctrl-a, typing and then tab to complete a replacement by collapsing selection to anchor when inserting a completion in the editor
2018-05-13 03:17:14 +01:00