Neil Jenkins
dd7034501f
Return same node passed in to fixCursor function.
2013-04-10 10:47:42 +10:00
Neil Jenkins
e1bae30a16
Make editor.insertElement support block elements.
2013-04-08 13:48:06 +10:00
Neil Jenkins
af1720282c
Replace Node prototype extensions with normal fns.
...
* Firefox was sometimes not finding the extensions on elements.
* This minifies to a smaller target.
2013-04-08 13:27:06 +10:00
Neil Jenkins
10abc3faf8
Check for null return from Range#getStartBlock.
2013-04-05 15:58:34 +11:00
Neil Jenkins
02d25f0ef5
Catch and log FF error getting selection.
2013-03-27 16:04:57 +11:00
Neil Jenkins
768f4420b9
Correctly check if <br> makes a line break.
...
The previous test was incorrect. A <br> actually introduces a line break if
there is any non-whitespace after it in the block or if there is another <br>
after it in the block. It is irrelevant what comes before it in the block.
2013-03-08 17:14:11 +11:00
Neil Jenkins
a12f6905a5
Always call setSelection after bookmarking.
...
IE and Safari 5 loses the selection during the bookmarking process, so we must
always explicitly reset the selection after recording an undo state (which adds
a bookmark).
2013-03-08 13:25:56 +11:00
Neil Jenkins
6927928a79
If can't split block, wrap inlines instead.
...
When cleaning up <br>s, if it's inside a block we can't split, it's probably a
containing node (like a <blockquote>), so we should wrap the top level inlines
instead.
2013-03-07 18:12:18 +11:00
Neil Jenkins
a340115a87
Preserve background colour on paste.
2013-03-07 16:25:20 +11:00
Neil Jenkins
7d760ce635
Don't strip styles added by tag rewriters.
...
* Should preserve font styles on paste.
2013-03-07 13:52:38 +11:00
Neil Jenkins
5b52e9b4b8
FF: Selection range may not have startContainer.
...
* Odd bug this. From the logs, it seems either it's returning a range with no
startContainer, or the startContainer is not something inheriting from the
Node prototype (which would be very wrong).
2013-02-27 10:49:08 +11:00
Neil Jenkins
a069e8305e
Add accurate check for whether <br> breaks line.
...
When cleaning up <br> elements, we need to accurately determine whether there's
text before and after it in the block to know whether it will introduce a
visible line break.
2013-02-26 10:19:00 +11:00
Neil Jenkins
327b48b9db
Save undo step on delete.
...
* But only if it's deleting whitespace or destroying a block or deleting a
selection. This makes it undo deletion word-by-word rather than
character-by-character.
2013-02-25 13:52:22 +11:00
Neil Jenkins
e3ad6c6b18
Fix allowed block regexp.
...
* Was not correctly matching full string only.
2013-02-25 11:05:26 +11:00
Neil Jenkins
0ba91e627d
Rewrite all <br>s in cleanupBRs fn.
...
Previously, we were just removing <br>s that didn't have siblings on both sides. A better test is whether the containing block has any non-whitespace text content. If it does, the <br> is a line break and we can just split the block. If it doesn't though, we need to leave the <br> as a placeholder, to ensure the block doesn't collapse to 0 height.
2013-02-25 10:39:27 +11:00
Neil Jenkins
ac14985583
Remove empty inline nodes on paste.
2013-02-22 15:06:56 +11:00
Neil Jenkins
7162777a0f
Only remove whitespace nodes if between blocks.
...
* When cleaning the tree we want to remove useless whitespace between block
nodes, but we were being a bit too aggressive and removing all whitespace
nodes. Now checks the context first.
2013-02-21 11:37:20 +11:00
Neil Jenkins
0bb3c142eb
Rewrite <font> tags when cleaning tree.
...
* Converts to <span>.
2013-02-21 11:35:23 +11:00
Neil Jenkins
b35b7d4b35
Fix bug in Range#insertTreeFragment
...
Merging containers could remove the nodeAfterSplit from the tree, which then
caused an error to be thrown if it had no content, as the code would try to
remove it again.
2013-01-30 11:30:11 +11:00
Neil Jenkins
775b72ec88
Make Element#getPath more robust.
...
Won't throw an error if called on a node that is not part of a document, but
will now instead return the path from whatever the root element is down to the
node.
2013-01-30 11:28:36 +11:00
Neil Jenkins
52e517b376
Catch all errors to allow logging.
...
* All errors will be caught and passed to the editor.didError fn. This can be
overridden to do something useful, like logging them to the server.
2013-01-24 11:54:44 +11:00
Neil Jenkins
45711a38a4
Markup links on 'enter' too.
...
* Check for links in the current text node, and add <a> tags if found, when the
enter key is pressed, not just when the spacebar is pressed.
2013-01-24 11:51:51 +11:00
Neil Jenkins
f49d1c190e
Automatically markup <a> links on spacebar press.
...
* When spacebar is pressed, any URL-like text in the current text node will be
wrapped in an <a> tag with the URL as the href.
2013-01-15 10:34:37 +11:00
Neil Jenkins
8b2090c94e
Add <a> for ftp:// links on paste.
2013-01-15 10:34:03 +11:00
Neil Jenkins
bce3e8d208
Ensure IE not in compat-mode on demo page.
2013-01-15 10:32:21 +11:00
Neil Jenkins
8ccc9fad06
Add argument to getHTML to include bookmark.
...
* Selection is then automatically restored when HTML containing a bookmark is
set.
2012-11-21 12:35:50 +11:00
Neil Jenkins
fe6ffb0ed5
Add IE10 compatibility.
...
* All UA detection moved into a separate file.
2012-11-12 18:30:40 +11:00
Neil Jenkins
1d83790a57
Fix Webkit scrolls to top on paste bug.
2012-11-12 11:51:46 +11:00
Neil Jenkins
99c26861c1
Force IE to not be in compatibility mode.
2012-11-05 10:00:21 +11:00
Neil Jenkins
388740c7f8
Fix bug in cut in Safari
...
* Safari 6 modifies the selection when bookmarking it. Ensure it is restored
before the cut takes place.
2012-11-01 18:14:10 +11:00
Neil Jenkins
92645f1c0f
Add extra check to loop.
2012-08-22 13:14:08 +02:00
Neil Jenkins
691058e071
Fix blur() function loses IE browser window focus.
2012-08-09 16:08:21 +10:00
Neil Jenkins
f9974ed7d9
Fix IE returns null for getSelection if never focussed.
2012-08-09 15:08:04 +10:00
Neil Jenkins
52a10d463c
Tidy. Make backspace/delete aware of non-editable blocks
2012-08-08 16:20:28 +10:00
Neil Jenkins
f2090b05d0
Tidy. Ensure trailing new line in all source files
2012-08-07 13:36:05 +10:00
Neil Jenkins
50b7ad1e4e
Treat pasted image as a drag-dropped image file.
2012-08-07 12:20:55 +10:00
Neil Jenkins
a9a0ac6411
Fix bug where image may be duplicated on enter.
...
* Do not move range boundaries inside images; these should always be treated as
leaf nodes.
* Workaround FF bug where it may return range as being inside of image node.
2012-08-01 11:53:37 +10:00
Neil Jenkins
0412ece8ec
Fix blur method.
...
Have to blur the body, not the window.
2012-07-25 17:35:03 +10:00
Neil Jenkins
b87a9c26fe
Add setTextDirection method.
...
Allows setting RTL or LTR text direction on a block level basis.
2012-07-24 15:59:36 +10:00
Neil Jenkins
630a7c4e4f
Tidy IE8 range code.
2012-07-24 15:54:05 +10:00
Neil Jenkins
c964a6a564
Fix bug in removing empty inlines on delete.
2012-07-02 16:44:10 +10:00
Neil Jenkins
e4b5ea6ee8
If all text in inline tag deleted, remove tag.
2012-07-02 14:04:06 +10:00
Neil Jenkins
819ddb296e
Always restore range to textnodes.
...
When restoring a range from a bookmark, always call range.moveBoundariesDownTree
to anchor it to the nearest text node. If you call setSelection with a range not
anchored inside a textnode, Opera may incorrectly set the selection.
2012-06-19 14:43:10 +10:00
Neil Jenkins
ffd6edbaef
Remove redundant -ms-box-sizing CSS.
...
Prefix was only used in IE8 betas. No need to keep it.
2012-04-27 17:52:10 +10:00
Neil Jenkins
c5abcde210
API rename (inc|dec)reaseQuoteLevel
...
Use full words in API method name for consistency with the rest of the API.
2012-04-12 11:42:07 +10:00
Neil Jenkins
98ebe661b2
Allow custom cleaning on paste.
...
A willPaste event is now fired just before pasted content is inserted into the
document, allowing custom, arbitrary modification of the pasted content, or
prevention of the paste event altogether.
2012-04-12 11:38:22 +10:00
Neil Jenkins
b6c659e295
Remove unused variables.
2012-04-12 09:22:58 +10:00
Neil Jenkins
bf8598e060
Fix zero-width space character bug.
...
If the node containing the zero-width space character was merged by a call to
Range#mergeInlines, the character was not being removed, making for odd cursor
movement.
2012-04-10 15:42:47 +10:00
Neil Jenkins
63a97d9b99
Fix IE8 grabs focus on load of editor.
2012-04-04 17:01:28 +10:00
Neil Jenkins
c595fb0bb8
Fix cursor location after Range::_deleteContents
...
Should always collapse to start.
2012-04-04 15:11:27 +10:00
Neil Jenkins
5c9420c7fa
Fix bug in updating path correctly.
2012-04-03 20:35:07 +10:00
Neil Jenkins
9b5512bf98
Tidy up a few bits of code.
2012-04-02 17:38:19 +10:00
Neil Jenkins
543abca022
Workaround WebKit/IE can't focus empty text nodes.
2012-04-02 17:38:01 +10:00
Neil Jenkins
6480739143
Update copyright year.
2012-04-02 15:55:33 +10:00
Neil Jenkins
89eb88ce15
Fix repeating keys don't fire handlers.
...
Holding down a key will trigger it repeatedly; we need to capture all of these
events to override backspace/enter etc.
2012-04-02 15:55:33 +10:00
Neil Jenkins
f0ba6216cc
Add support for IE8.
2012-04-02 15:55:33 +10:00
Neil Jenkins
746e86a3a8
Tidy document.html
2012-03-29 17:55:15 +11:00
Neil Jenkins
cfb08691c2
Don't focus body in non-Gecko.
...
Opera loses selection. Only Gecko seems to need it.
2012-03-29 17:55:15 +11:00
Neil Jenkins
70078355b7
Whitespace fix.
2012-03-08 15:19:43 +11:00
Neil Jenkins
f8273e7d15
Make email addresses into links on paste.
2012-03-08 15:13:32 +11:00
Neil Jenkins
64b8f9affa
Fix focus method not working in Firefox.
2012-02-08 23:23:55 +11:00
Neil Jenkins
e3ee4dad12
Whitespace cleanup.
2012-01-25 11:47:26 +11:00
Neil Jenkins
78e8955be1
Work around iOS bug when setting selection.
2012-01-25 11:37:38 +11:00
Neil Jenkins
d413b1bb85
Automatically wrap URLs in <a> when pasting text.
2012-01-25 11:36:51 +11:00
Neil Jenkins
aa8527fc2c
Fix bug in removing format.
2011-12-09 14:27:37 +11:00
Neil Jenkins
ceed1cfa81
Don't continue link over block break.
2011-12-09 13:53:09 +11:00
Neil Jenkins
cfe9bea8b3
Opera collapses blocks with just spaces for data
2011-12-09 13:30:58 +11:00
Neil Jenkins
14ee0d0ad5
Scroll cursor into view on enter.
2011-12-09 13:15:15 +11:00
Neil Jenkins
43634a3ba4
Add styles via separate API method.
...
<style></style> must not be included text supplied to setHTML call.
2011-11-17 18:37:49 +11:00
Neil Jenkins
a8e6e5b391
Merge adjacent containers on delete/backspace.
...
If you delete the line separating two containers (e.g. a blockquote), the
containers are merged.
2011-11-17 18:36:58 +11:00
Neil Jenkins
f4c5a85379
Don't prevent tabbing out of area.
2011-11-17 18:36:29 +11:00
Neil Jenkins
17cb1e0043
Guard against IE firing beforepaste twice
2011-11-17 18:36:07 +11:00
Neil Jenkins
3ca646a1d1
Make enter break through all levels of blockquoting
2011-11-17 18:33:24 +11:00
Neil Jenkins
09308b729b
Fix bug in hasFormat
...
Must see at least one text node with format to return true.
2011-11-17 18:32:11 +11:00
Neil Jenkins
f1a714a179
<br>s should be added to every block in Webkit/Gecko
2011-11-16 19:24:43 +11:00
Neil Jenkins
3068c496c9
Allow contents of unknown tags in.
...
Clean functions were removing contents of any unknown tag. This was, it turned
out, a bit too strict.
2011-11-15 21:46:47 +11:00
Neil Jenkins
143eea15cb
Fix cursor when deleting range contents
2011-11-15 21:46:11 +11:00
Neil Jenkins
feca3e4d8f
Make forEachBlock method public.
...
And tidy a few bits and pieces.
2011-11-14 17:55:40 +11:00
Neil Jenkins
3f5233c61a
Fix bug in applying styles in Opera/IE.
...
Was removing the crucial empty text node that these browsers use to indicate and
editable line.
2011-11-14 15:18:05 +11:00
Neil Jenkins
d24aba73ad
Stop using DOM mutation events to detect changes.
...
Unreliable in some browsers, and may be deprecated in the future.
2011-11-10 18:44:00 +11:00
Neil Jenkins
a2ef14e218
Add make/remove link sugar.
...
Also:
Add getSelectedText method.
Fix bug in setting HTML after undo/redo in Opera.
2011-11-10 18:31:07 +11:00
Neil Jenkins
d01cc9875f
Add commands for setting text/background colour.
2011-11-09 15:41:46 +11:00
Neil Jenkins
b3d9de6e86
Fix infinite loop bug in key down.
...
Also fix font changes removing all spans.
And fix firing of path change events to occur at the right times.
2011-11-08 16:43:46 +11:00
Neil Jenkins
aa8b4b7ac6
Fix setTextAlignment command
...
And make propagating native events more elegant (only adds observer to document
when first function added).
2011-11-08 13:59:47 +11:00
Neil Jenkins
75109c404e
IE requires handlers on before(cut|paste) events.
2011-11-04 17:53:24 +11:00
Neil Jenkins
3b09cbf703
Improve cleaning of inserted content.
2011-11-04 16:53:12 +11:00
Neil Jenkins
f15a57cba6
Standardise white space in public getHTML method.
...
Add in <br>s where required in Opera and IE.
2011-11-03 17:37:32 +11:00
Neil Jenkins
28c9ab10a9
Fix FF deleting everything on cut.
2011-11-03 17:05:18 +11:00
Neil Jenkins
0bdbef305a
Use <b>, <i> instead of semantic elements
...
As the W3C spec says, only use <strong>, <em> if you're sure of the intended
semantics.
2011-11-03 14:18:00 +11:00
Neil Jenkins
c83688b630
TreeWalker must not try to access parent of root node
2011-11-03 12:45:41 +11:00
Neil Jenkins
183091e4e1
Bias towards adding, not removing format.
...
editor.hasFormat(...) now only returns true if all text in the range has that
format.
2011-11-03 12:44:54 +11:00
Neil Jenkins
0f750d2a0e
Fix Range#get(Start|End)Block.
...
Was still returning the wrong result in certain situations (for example when the
start boundary was just before the end of a block).
2011-11-03 12:10:16 +11:00
Neil Jenkins
1792b66ac3
Normalise text nodes when setting initial HTML.
2011-11-03 12:09:39 +11:00
Neil Jenkins
e8a917f321
Fix Range#containsNode.
...
Not sufficient for node to be adjacent to range; must actually contain range.
2011-11-02 19:12:31 +11:00
Neil Jenkins
953ee3bfc7
Fix bug in FF on enter.
2011-11-02 18:46:45 +11:00
Neil Jenkins
a91df2db4c
Ensure range is valid after Range#_deleteContents.
2011-11-02 18:46:18 +11:00
Neil Jenkins
ae09554883
Don't try to merge <br>s or <img>s etc.
2011-11-02 16:43:42 +11:00
Neil Jenkins
9dcbf45f4a
Fix Range#get(Start|End)Block.
2011-11-02 16:31:46 +11:00
Neil Jenkins
f89490736e
Replace buggy TreeWalker implementations.
2011-11-02 14:02:18 +11:00
Neil Jenkins
7b000293d6
Fix bug in text cursor fixing in IE/Opera.
2011-11-02 11:55:08 +11:00
Neil Jenkins
1d5b841860
Fix bug in deleting all.
2011-11-02 11:54:58 +11:00
Neil Jenkins
110568350b
Bookmarking must not uncollapse a range.
2011-11-02 10:45:33 +11:00
Neil Jenkins
0d706180fe
Refactor cleaning code and merge blockquotes
2011-10-31 15:16:08 +11:00
Neil Jenkins
f245cc0dba
Fix Range#get(Start|End)Block methods.
2011-10-31 13:08:51 +11:00
Neil Jenkins
b8e2b5fb81
Normalise <br>/<#text> on setHTML and paste
...
Make sure all the block level elements have either a <br> or an empty text node
in the right place, as required by the browser.
2011-10-31 13:07:41 +11:00
Neil Jenkins
72141fd670
Initial commit for public release.
2011-10-29 14:15:21 +11:00