0
Fork 0
mirror of https://github.com/fastmail/Squire.git synced 2024-12-22 23:40:35 -05:00
Commit graph

296 commits

Author SHA1 Message Date
Limon Monte
c045ec0df5 allow leading tabs when pasting 2021-10-25 21:35:34 +11:00
Neil Jenkins
108ff8f475 Use sanitizeToDOMFragment fn for undo/redo
The content should be safe anyway as it will already have been sanitised,
however mXSS attacks are still a slight risk so safer to always run it through
the sanitiser.
2021-02-05 14:26:38 +11:00
djmaze
724611477d Bugfix: decreaseBlockQuoteLevel removed all levels 2020-09-09 16:29:34 +10:00
Neil Jenkins
19f73d162f Fix Android Chromium 85 closes keyboard on selection change
The previous workaround no longer works. You still can't use removeAllRanges
(that closes the keyboard too), but we can use the setBaseAndExtent API instead.
2020-09-02 15:39:29 +10:00
Neil Jenkins
73f18523a2 Remove unused variables 2020-07-14 12:12:45 +10:00
Nicholas Wylie
bb3cd05c64 Move cursor outside of <a> when inserting HTML
When links are pasted into the editor the cursor ends up at the
end of the text node inside the parent <a> element. Any text
entered is then appended to the end of the link text. Chrome
automatically moves the cursor after the end of <a> elements when
additional text is inserted, so this change enforces the same
behaviour in other browsers.

Resolves LP 55607264
https://app.liquidplanner.com/space/14822/projects/show/55607264
2020-06-04 15:02:03 +10:00
Neil Jenkins
db4179cc39 Fix disabling Grammarly
How this underscore got there I don't know, *sigh*.
2020-04-29 12:18:35 +10:00
Neil Jenkins
1d03266b05 Disable Grammarly extension
The extension does not handle rich text inputs well at all and causes various
broken behaviour, such as weird line breaks.
2020-04-27 16:19:20 +10:00
Neil Jenkins
07b459db3b Remove support for IE<11 2020-03-11 14:48:48 +11:00
Neil Jenkins
58321e5504 Remove support for pre-Chromium Opera 2020-03-11 14:47:14 +11:00
Neil Jenkins
2d307ba54a Fix first line of plain text paste not HTML escaped 2020-03-10 18:46:40 +11:00
Neil Jenkins
f6d6ac8ca0 Pasting plain text on a blank line should keep line's formatting 2020-03-02 10:23:24 +11:00
Neil Jenkins
ede1991931 Fix typo and whitespace issues 2020-03-02 10:21:23 +11:00
Neil Jenkins
9916a4c300 Improve link detection regexp.
Fixes the pathological handling of unmatched brackets, which could hang the
browser. Adds support for mailto: query params. Removes support for nested
parentheses in URLs, as these are rare. Adds comment with formatted version of
regex to make it easier to modify in future.
2020-02-24 14:48:46 +11:00
Limon Monte
1850e2cdae Add config.addLinks 2019-12-30 13:14:33 +11:00
Neil Jenkins
3dc4f201d9 Don't autoscroll on focus
If the rich text view is inside an overflow:scroll, every time you add a link
or do something else that requires we programatically focus the editor it would
jump the scroll back to the top; very annoying.
2019-09-25 20:49:56 -04:00
Neil Jenkins
892986b17c Don't crash removing list if no <li> inside 2018-10-19 11:54:05 +11:00
Neil Jenkins
79e65240bd Make detect-link regular expression customisable
Resolves #313
2018-10-05 17:00:09 +10:00
Neil Jenkins
625d10139e Add support for <pre>/<code> formatting 2018-07-27 10:47:38 +10:00
Neil Jenkins
2d5114c669 Make TreeWalker filter argument optional 2018-07-27 09:22:06 +10:00
Neil Jenkins
e3e7c17315 Add config.willCutCopy option
Is an optional function that transforms the HTML being cut/copied before
placing it on the clipboard.
2018-07-12 15:40:01 +10:00
Neil Jenkins
f0594091c5 Allow class names to be configured 2018-07-12 15:22:18 +10:00
Neil Jenkins
7a24d6c505 Make check for link protocol case-insensitive
Resolves #308.
2018-06-23 14:39:59 +10:00
Neil Jenkins
35a25e6d44 Simplify regex for matching link query params 2018-06-23 14:35:16 +10:00
dhoko
10bf787651 Parse url and create anchor with queryparams 2018-06-23 14:21:46 +10:00
Neil Jenkins
db005b379b Make createRange method public 2018-05-09 17:43:11 +10:00
Neil Jenkins
306230d0df Better handling of <pre>
* Pasting <pre> should not attempt to merge with block.
* Hitting enter should produce a new <pre>, otherwise all new lines after the
  break are lost.
2017-09-05 11:42:54 +10:00
Neil Jenkins
c5be1b79dc Fix broken variable reference 2017-08-17 14:12:29 +10:00
Neil Jenkins
833d7dfdbd New (increase|decrease)ListLevel algorithms
Fixes #287
2017-08-15 11:11:48 +10:00
Neil Jenkins
6842cb94eb Fix undo does not always restore cursor position.
If the content hasn't changed before an undo point is requested we ignore the
request, but the cursor position may have changed and users expect undo to
restore the cursor position immediately before the requested change was made.

So in this instance we now still record an undo state, but replace the previous
one if the content is unchanged.
2017-07-19 14:29:36 +02:00
Neil Jenkins
48fabd491a Improved algorithm for inserting tree into range
Fixes #283
2017-07-19 14:29:16 +02:00
Neil Jenkins
239b7d19e9 Ignore saved selection if not in document
The browser will rewrite the range if the nodes it refers to are removed from
the document, so check that it's still in the document before returning.
2017-07-07 11:48:42 +10:00
Neil Jenkins
0ae8322d04 Code tidying 2017-07-07 11:32:37 +10:00
Neil Jenkins
0b59a746f7 Ignore selectionchange events outside of editor
The selectionchange event handler can only be registered on the document
but we are not interested in changes of focus/selection that happen
outside of the editor, so check we have focus before firing the update
path event.
2017-07-07 11:32:18 +10:00
Neil Jenkins
a8f07d9adb Default to allowing URIs with unknown protocols 2017-06-28 16:03:31 +10:00
Neil Jenkins
601043f020 Fire a 'cursor' event so selection end can be monitored 2017-06-21 17:03:14 +10:00
Neil Jenkins
283a7d1d85 Don't consider editor focused if sub-element focused
Fixes #267
2017-05-10 14:22:56 +10:00
Neil Jenkins
632aae016b Code style fixup 2017-05-10 14:00:28 +10:00
kyuwoo.choi
9eacfb7b22 fix: handle insert table by CF_HTML
ms html clipboard format CF_HTML handles table like below if we copy part of table.
it makes problem when copying table from ms product such as ie, excel, powerpoint then pasting to squire.

<TABLE BORDER>
<!--StartFragment-->
<TR><TD>Item 6</TD><TD>Item 7</TD></TR><TR><TD>Item 10</TD><TD>Item 11</TD></TR>
<!--EndFragment-->
</TABLE>

and

<TABLE BORDER><TR>
<!--StartFragment-->
<TD>Item</TD>
<!--EndFragment-->
</TR></TABLE>

https://msdn.microsoft.com/en-us/library/windows/desktop/ms649015(v=vs.85).aspx
#274
2017-05-10 13:59:30 +10:00
Neil Jenkins
70a2b48333 Return cached selection if not focused
If an action modifies the selection while the editor is not focused, we cannot
immediately set it in the DOM as this triggers focus. So instead we cache it and
restore on focus. If getSelection is called before the editor is next focused,
we need to return this new selection, not the current DOM selection.

Fixes #259
2017-02-11 09:40:56 -08:00
Neil Jenkins
9596f4ecf8 Ensure moving boundaries up tree never passes root 2017-01-13 15:15:59 +11:00
Neil Jenkins
6f83f23881 Fix delete behaviour
1. Fixes cursor position when deleting starting with a selection at beginning
   of block.
2. Fixes block disappears when whole inline contents is deleted.
2017-01-10 10:06:28 +11:00
Neil Jenkins
e645489f5f Fix empty lines missing when copying plain text 2017-01-10 10:05:35 +11:00
Neil Jenkins
e35ad32c09 Fix potential null deref when sanitizing html 2016-12-13 12:15:35 +11:00
Neil Jenkins
c1c63478f0 Check for queued events before disconnecting mutation observer
Fixes #252
2016-12-12 10:35:14 +11:00
Steven Allen
fcb8a4a63c
Use class constants 2016-12-08 21:03:50 -08:00
Steven Allen
9dcac8c94e Never pass null as root. 2016-12-08 13:11:52 -08:00
Neil Jenkins
65a621abcf null arg to setText(Alignment|Direction) should reset value
Resolves #247
2016-12-07 19:22:28 +11:00
Neil Jenkins
a899c001eb Fix null deref in insertHTML 2016-12-07 19:08:52 +11:00
Neil Jenkins
504b40c857 Add pointer from root node to Squire instance.
Resolves #253
2016-12-07 17:54:13 +11:00