0
Fork 0
mirror of https://github.com/fastmail/Squire.git synced 2024-12-22 07:13:08 -05:00
Commit graph

639 commits

Author SHA1 Message Date
Neil Jenkins
752a42d917 Fix Firefox cursor position bug after paste
We merge a faux block with contents from after a split point when
inserting HTML. The merge function presumes this block has already had
fixCursor run on it to ensure we add the <br>s some browsers need to
support correct cursor focusing.

Fixes #451
2023-12-20 14:17:34 +11:00
Neil Jenkins
c0479f3fdf Fix missing assignment in fixCursor
The parent variable was introduced in the Typescript refactor to make
the type checker happy, however we missed assigning the result back to
the `node` variable at the end.

Fixes #449
2023-12-20 10:45:19 +11:00
Chasen Stark
949b5b227e Editor.ts: Update insertText comment to address keyboard 'paste' bug 2023-11-30 13:09:40 -05:00
Neil Jenkins
8bee51683b Release v2.2.5 2023-11-08 09:45:59 +01:00
Neil Jenkins
efdff6c71b Focus editor after undo/redo
This matches the behaviour of all the other commands, and means if you
add toolbar buttons for undo/redo they work as expected.

Fixes #445.
2023-11-08 09:44:16 +01:00
Neil Jenkins
942486e452 Release v2.2.4 2023-10-24 12:47:02 +11:00
Ioan Moldovan
ff7babcdd3 fix: invalid setKeyHandler key parameter type 2023-10-24 12:45:07 +11:00
Neil Jenkins
69e03f4cf5 Release v2.2.3 2023-10-09 11:53:59 +11:00
Neil Jenkins
1ed32e3db7 Squire: Fix crash removing formatting
The fixer node may get removed when merging adjacent inlines, so move
the cleanup to before this. For safety, also properly check for non-null
nodes so we don't crash if it's still elided for some reason.
2023-10-09 11:52:58 +11:00
Neil Jenkins
311b8ee39e Release v2.2.2 2023-10-04 12:29:58 +11:00
Neil Jenkins
57f2d37c1d Work around Chrome bug not rendering text
There seems to be a bug in Chrome where it will sometimes not render
some of the text in the DOM when there are multiple zero-width spaces
around the beginning and ends of inline tags (not sure on the exact
details).

Steps to reproduce (prior to this commit):

1. Turn on bold and underlined text
2. Type something in bold and underlined text
3. Turn off bold and underline
4. Try to type something — it will not show up! That is, until you press
   the enter key and we remove the zero-width spaces.
2023-10-04 12:28:38 +11:00
Neil Jenkins
9cef52d963 Release v2.2.1 2023-10-03 11:14:27 +11:00
Neil Jenkins
cc32c7dd7e Fix empty string on clipboard if plainTextOnly
If extractRangeToClipboard was called with a toPlainText fn and
plainTextOnly=true, and there was a selection that was not just inside
a single text node, it was not actually getting the text to add to the
clipboard.
2023-10-03 11:13:02 +11:00
Neil Jenkins
9f3e2610a6 Release v2.2.0 2023-10-02 13:46:50 +11:00
Neil Jenkins
950e122c5c Improve default plain text cut/copy
Instead of using innerText, this now uses the getTextContentsOfRange
helper fn to work out the white space, so is consistent with the
editor's getSelectedText method and should be higher fidelity.

Note, you can still override the behaviour by supplying a toPlainText
fn in the editor config (such as the one you can find at
https://github.com/fastmail/overture/blob/master/source/html/toPlainText.js)
2023-10-02 13:27:19 +11:00
Neil Jenkins
96e4bf2e98 Replace nbsp with regular sp when extracting text
The nbsp are used by the browser to stop HTML white space collapsing
from applying, but we don't want them in the plain text version.
2023-10-02 13:23:12 +11:00
Neil Jenkins
3937c10b55 Extract getTextContentsOfRange helper fn 2023-10-02 13:12:51 +11:00
Neil Jenkins
9aa62781d0 Add toPlainText config option
This allows you to customise how HTML you cut/copy in the editor is
converted into plain text.
2023-10-02 13:01:16 +11:00
Neil Jenkins
e324748f0f Remove obsolete execCommand calls
Firefox removed the need for this in v64.

Resolves #439.
2023-10-02 12:41:55 +11:00
Neil Jenkins
fc38e8affb Release v2.1.1 2023-09-27 14:58:41 +10:00
Neil Jenkins
9f5df9e5c0 Fix format intent lost after pressing Space
On Chrome, if you made an inline formatting change, this would insert a
new <span> with a ZWS inside so we could focus it. Pressing Space would
remove this ZWS resulting in the focus ending up outside and so the
formatting would be lost. We were removing the ZWS so we could check
if we were at a block boundary correctly; instead, I've made it so the
boundary check can handle trailing or leading ZWS (see previous commit).
2023-09-27 14:56:00 +10:00
Neil Jenkins
2d37608aac Ignore ZWS when determining if at block boundary
These are just added to allow Chrome to focus an empty text node, but
they should not be considered "real" content.
2023-09-27 14:51:26 +10:00
Neil Jenkins
ee01d36a0f Update npm packages to latest versions 2023-09-20 09:00:36 +08:00
Neil Jenkins
befb652039 Release v2.1.0 2023-09-19 14:45:15 +08:00
Neil Jenkins
edde44a924 Auto-format list if starting line with * or 1. 2023-09-19 14:45:15 +08:00
Neil Jenkins
02cc7baacc Fix error in readme 2023-09-19 14:34:46 +08:00
Callum Skeet
8ee145ede6 Remove usage of private fields/methods in spec 2023-08-01 12:41:48 +10:00
Callum Skeet
e9ffde9a65 Bundle types with build 2023-07-31 12:55:53 +10:00
Callum Skeet
c9f10b297b Make isPaste optional for Squire.insertHTML
This aligns the interface with the spec
2023-07-31 12:49:55 +10:00
Callum Skeet
39b759de1c Fix variable shadowing in spec 2023-07-31 12:49:38 +10:00
Callum Skeet
3dcd940a20 Type editor in spec
This makes it easier to catch inconsistencies between the spec and
interface for Squire.
2023-07-31 12:49:31 +10:00
Callum Skeet
54914dd5d5 Add non-null assertions to element queries in spec 2023-07-31 12:49:20 +10:00
Callum Skeet
a74ec739b9 Add autocomplete to config in Squire constructor 2023-07-31 12:49:15 +10:00
Callum Skeet
f1657acbc4 Export SquireConfig as type 2023-07-31 12:48:27 +10:00
Neil Jenkins
00f6a4fb8d Release v2.0.3 2023-04-20 11:05:35 +10:00
Neil Jenkins
cbde45311a Fix crash linkifying text in middle of node
We were looking at the selection properties after we had mutated the DOM, and
trying to manipulate them based on some numbers cached from before mutating
the DOM, which could result in trying to set a negative index for the selection
offset. Instead, calculate all our values before we do any mutations.

Fixes #430
2023-04-20 10:57:05 +10:00
Seth Falco
a8cd95a688 Release v2.0.2 2023-03-20 20:32:50 +11:00
Seth Falco
c84f48e480 docs: add pasteImage to demo and document the event 2023-03-20 20:31:39 +11:00
Neil Jenkins
8304fd3e04 Let ArrowRight key always break out of <code> 2023-02-22 16:01:23 +11:00
Neil Jenkins
cf30a69b89 Fix backspace can delete two characters
If we're handling the backspace completely ourselves, must prevent
default to stop the browser also having a go.
2023-02-22 11:27:16 +11:00
Neil Jenkins
137c8f0b17 Consistently focus after removeAllFormatting 2023-02-22 11:14:16 +11:00
Neil Jenkins
474847872c Use Array.from for older browser support 2023-02-22 11:13:38 +11:00
Neil Jenkins
4306cecb6e Remove multiple adjacent empty text nodes
Fix the loop condition so this will remove multiple adjacent empty
text nodes if necessary.
2023-02-20 10:17:56 +11:00
Neil Jenkins
9f258f2561 Code style fix 2023-02-20 09:46:56 +11:00
djmaze
cdb57ebda0 Don't use live NodeList 2023-02-20 09:34:59 +11:00
Neil Jenkins
27f19c4782 Release v2.0.1 2023-02-14 15:17:01 +11:00
Neil Jenkins
1904405ab8 Auto delink if backspacing inside auto-linked URL
This means if you make a mistake and backspace, you don't end up
accidentally fixing the text but leaving the link to the wrong URL.
2023-02-01 14:20:53 +11:00
Neil Jenkins
b85754ca50 Handle empty nodes in moveRangeBoundariesDownTree
Empty text nodes next to another text node can always be safely
eliminated.
2023-02-01 14:19:52 +11:00
Neil Jenkins
e4ae7c2b81 Remove redundant <span> after replacing styles
It no CSS left after replacing with semantic equivalent, remove the
whole span.
2023-02-01 13:52:53 +11:00
Neil Jenkins
168033d25d Fix duplicate CSS created when replacing styles
When extracting the <span> CSS, a bug in refactoring meant we were not
removing it from the original node.
2023-02-01 13:52:11 +11:00