Neil Jenkins
25f78ff31d
Fix cursor no longer appears on focus in Chrome.
2014-12-07 14:33:43 +07:00
Neil Jenkins
ae38caba31
Remove IE8 support.
...
It was always a bit buggy, and realistically there's no point in putting in the
time to fix it up.
2014-11-29 20:08:53 +07:00
Neil Jenkins
cb9292721c
Let the browser handle shift-delete.
...
Apparently it's "cut" on Windows. Who knew.
2014-11-20 12:45:36 +07:00
Neil Jenkins
3296e7576e
Register for events on capture rather than bubble phase.
...
Allows "load" events to be triggered for images in the document.
2014-11-18 12:02:36 +07:00
Neil Jenkins
73c4146e27
Fix range error in addFormat if start == end container.
2014-10-03 16:38:20 +07:00
Neil Jenkins
b944eb3b3b
Fix ZWS removal when Squire script not in iframe.
2014-10-02 16:36:39 +07:00
Neil Jenkins
e7cef49818
Rename isOpera -> isPresto.
...
Opera now uses WebKit, but these tweaks are only for the Presto version.
2014-10-02 16:23:30 +07:00
Neil Jenkins
a408fcaca6
Fix range construction in addFormat method.
2014-10-02 16:00:35 +07:00
Neil Jenkins
6080cbf819
Add Squire#destroy method.
...
Unbinds all event handlers to ensure no memory leaks.
2014-10-02 12:06:17 +07:00
Neil Jenkins
d21ae23215
Record undo checkpoint before paste or delete.
2014-10-01 10:12:58 +07:00
Neil Jenkins
c0e33843fb
Use helper fn to get start block in paste handler.
...
Neater and deals with the edge cases.
2014-09-24 16:36:14 +07:00
Neil Jenkins
597024eecb
Remove FILTER_(ACCEPT|SKIP) constants.
...
Just return a boolean for the TreeWalker filter fn. This diverges from the spec,
but since the goal of this implementation is not to fully implement the spec
and we're never going to use a native implementation, this doesn't matter and
the code is easier to read when the function is just returning a boolean like
any normal filter function.
2014-09-04 17:24:31 +07:00
Neil Jenkins
a280cb4946
Improve detection of range at begin/end of block.
2014-09-03 11:17:14 +07:00
Neil Jenkins
4a8152d280
Remove zws in key handlers they could affect.
2014-09-03 09:21:16 +07:00
Neil Jenkins
d5e8ef1381
Preserve inline styles on enter in WebKit.
2014-08-28 08:17:07 +07:00
Neil Jenkins
da49316876
Better positioning of paste area to prevent auto-scrolling.
2014-08-06 14:42:57 +02:00
Neil Jenkins
afd3e9807c
Be more careful about splitting nodes to remove <br>s.
...
Can't split an <li> to remove a <br>.
2014-08-05 13:44:41 +01:00
Neil Jenkins
1fac17b514
Don't strip WS between two inline nodes.
2014-08-05 10:58:22 +01:00
Neil Jenkins
3b95f7b864
Better parsing of links and emails into links.
...
* Be more liberal in tld, as there are now a billion new ones, of every length.
* Fix bug where if the URL contains an @ it would add it as a mailto link
instead.
2014-07-03 14:16:20 +01:00
Neil Jenkins
bbf765bee7
Ensure there is always a selection.
...
Many functions rely on there being a selection; if the browser doesn't return
one, make one up (collapsed, at beginning of document).
2014-06-30 15:10:30 +01:00
Neil Jenkins
c09c5e98f7
Fix Firefox cursor disappears after calling modifyBlocks
...
Workaround for an old Firefox bug was causing it. Happily, that seems to no
longer be needed, so can just remove it and we're all good. :)
2014-06-26 16:13:54 +01:00
Neil Jenkins
eed472b5ef
Don't change encoding of URL in Squire#makeLink.
...
Presume the URL is already valid, otherwise we could end up double encoding.
2014-06-06 14:00:31 +10:00
Neil Jenkins
e108c18c38
Ensure there is always a normal block at the bottom of the page.
2014-06-02 13:41:59 +10:00
Neil Jenkins
f0bd5138e1
Add support for defaultBlockProperties.
...
Set the defaultBlockProperties property on a squire instance to an object and
it will use these properties when it has to create a new default block element.
2014-06-02 10:22:52 +10:00
Neil Jenkins
aa9afdfaf6
Code format tidying.
...
* Use upper-case for all tag names.
* Tidy document reference.
2014-06-02 10:17:54 +10:00
Neil Jenkins
34d3839ceb
Don't trim whitespace if inside another inline node.
2014-05-27 12:24:31 +10:00
Neil Jenkins
aca8fd4fab
Better fix up of mixed inline/block content.
2014-05-27 11:31:06 +10:00
Neil Jenkins
46706db889
Wrap LI contents when merging.
2014-05-23 15:33:00 +10:00
Neil Jenkins
ca5c08e4d0
Cleanup nbsp-only text nodes.
2014-05-20 17:47:02 +10:00
Neil Jenkins
f9cb71a666
Remove Firefox's native table controls.
2014-05-20 13:55:11 +10:00
Neil Jenkins
85c458b2d2
Drop all formatting when breaking block quote.
...
We don't want the same formatting as the quote in the unquoted section.
2014-05-20 13:49:55 +10:00
Neil Jenkins
76b482b41f
Fix off-by-one error trimming white space.
2014-04-30 15:15:54 +10:00
Neil Jenkins
996a0dd672
Trim meaningless white space from text nodes in cleanTree fn.
...
If a text node at the beinning of a block began with white-space, it would mean
some situations where we should be doing all the transformations for
enter/delete/backspace were being left to the browser.
2014-04-26 11:58:58 +10:00
Neil Jenkins
0d5398868f
Better, simpler cleanup of zero-width space placeholders.
...
Fixes issue applying multiple inline formats at the same time with a collapsed
selection in WebKit. Much more robust than previous method.
2014-04-16 18:07:46 +10:00
Neil Jenkins
712104cd99
Add kb shortcuts for making lists and +/- quote level.
2014-04-07 14:44:44 +10:00
Neil Jenkins
6b754d423c
Add support mult-level lists.
...
* Hit tab to increase list depth, or call increaseListLevel method.
* Hit enter on a blank item to decrease list depth, or call decreaseListLevel method.
2014-04-07 13:05:44 +10:00
Neil Jenkins
bee49bef40
Use <S> to markup strike through, not <STRIKE>.
...
The <strike> tab has been obsoleted in HTML5.
2014-02-03 18:20:03 +11:00
Neil Jenkins
a875d20f12
Rewrite <s> to <strike> in cleanTree fn.
2014-02-03 17:58:11 +11:00
Neil Jenkins
db82ba1217
Fixup colour attribute in <font> tags.
...
In the markup cleanup function, extract the "color" attribute from font tags
as well as the size and font-face.
2014-01-28 17:37:31 +11:00
Neil Jenkins
88ced455f9
Add subscript/superscript/strikethrough helper methods.
...
* And keyboard shortcuts. (Ctrl-Shift-5/6/7 respectively).
2014-01-13 14:32:24 +11:00
Neil Jenkins
08cc8172a8
Stop treating a non-breaking space as white-space.
...
Its effect is that of a normal character in HTML, that just happens to render
as a space.
2013-11-04 18:21:57 +11:00
Neil Jenkins
0b3df54b6e
IE11 Compatibility
2013-10-08 16:44:08 +11:00
Neil Jenkins
5d30a85aa8
Fix broken this
reference in afterCut handler.
2013-07-18 15:49:21 +10:00
Neil Jenkins
f918a0106b
Fix method call names in _onCut handler.
2013-07-17 17:13:04 +10:00
Neil Jenkins
731a1da910
Fix wrong method name & invalid this
.
2013-07-17 16:13:29 +10:00
Neil Jenkins
02a647c574
Fix reference to old range method.
...
Now a function instead.
2013-07-17 11:35:34 +10:00
Neil Jenkins
d2e9d2214b
Fix broken references to this
.
...
The clean functions used a `this` reference to call createElement, but are
called as functions not methods so `this` is undefined. Instead, we'll get the
ownerDocument off the nodes passed in, then call the createElement function
directly.
2013-07-17 11:13:49 +10:00
Neil Jenkins
fefa32b744
Fix reference to setPlaceholderTextNode
...
This is now an instance method, whereas before it was global. Annoyingly, we
need to access this from from within fixCursor which has no reference to the
RTE instance itself (and it would be a pain to pass one down). For now, just
referring to the global `editor` variable if it exists (i.e. if the script
loaded in an iframe). Need a better solution longer term though.
2013-07-16 20:36:24 +10:00
Neil Jenkins
6b4dda816e
Make into a JS class for multiple instantiation.
...
* If you load the squire.js script into a top-level page rather than an iframe,
it will add a Squire constructor to the global scope.
* The Squire constructor can be used to instantiate multiple instances on the
same page without having to load/parse/execute the full code every time.
* For each instance, create a new iframe, then call `new Squire( document )`,
with the document node for each iframe.
2013-06-20 23:15:18 +10:00
Neil Jenkins
7812b8db23
Turn Range prototype extensions into functions.
...
A step towards being able to share code between multiple concurrent instances of
the editor. Also reduces minified size slightly.
2013-06-20 21:03:01 +10:00