Gert K. Sønderby
94f5a56255
Added getFontInfo() function, which extracts font-family and font-size styles.
2015-09-03 11:48:47 +01:00
xfra35
702991c2c6
Allow FIGCAPTION block tags
2015-08-31 16:41:29 +02:00
Neil Jenkins
02df8f9ed4
Merge pull request #127 from gertsonderby/remove-all-cleans-inputs
2015-08-27 11:16:20 +01:00
Gert K. Sønderby
8238b7a8e4
Removing all formatting also removes INPUT elements.
2015-08-26 15:42:01 +02:00
Gert K. Sønderby
5a46d51671
Lone IMG tags in a range will be accepted by _addFormat, so that they can be made into links.
2015-08-26 15:07:58 +02:00
Neil Jenkins
900e43cca8
Fix prefix white-space trimmed on paste of plain text.
2015-07-25 18:11:56 -07:00
Neil Jenkins
c190fab9fd
Fix deletion of range when start or end is at edge of block.
...
If the selection starts and ends in the middle of blocks, we need to merge
these after extracting the range. But we need to be careful not to merge if
the selection ends at a block, as we end up merging into a block that wasn't
selected.
2015-07-25 18:03:51 -07:00
Neil Jenkins
715166b95d
Let browser handle paste of images in FF/Safari.
2015-07-16 10:47:56 -07:00
Neil Jenkins
fdcef5fc8e
Workaround clipboard having blank text/html version.
2015-07-14 12:59:27 -07:00
Je
aac169f764
Add support for the AMD
2015-07-14 00:33:38 +08:00
Je
3f13435182
Add support for AMD
2015-07-14 00:16:16 +08:00
Neil Jenkins
8d764f6638
Fix Chrome may replace <div> with <br> if you delete all content.
...
Fixes #108 .
2015-07-13 06:39:07 -07:00
Neil Jenkins
a8fcd55cf4
Make event.preventDefault() cancel default key actions.
...
Fixes #107
2015-07-13 09:25:44 +07:00
Neil Jenkins
579cad7ff9
Fix pasting plain text in Safari.
2015-07-11 19:22:46 +07:00
Neil Jenkins
522a481dd3
Require <html data-squireinit="true"> to auto-instantiate.
...
Explicit opt-in to autoinstantiation (included in the default document.html)
means Squire may be loaded in sites that themselves are loaded in iframes,
without unexpected consequences.
Resolves #104 .
2015-07-06 12:19:21 +07:00
Neil Jenkins
4f010a5de0
Override page up/down to match expected platform behaviour.
2015-06-25 11:02:56 +07:00
Neil Jenkins
de7d7011a7
Merge pull request #103 from shiawuen/top
...
fix bug on Browserify component when embed in multi layers of iframe
2015-06-23 15:16:08 +07:00
Neil Jenkins
2a8fb93cd9
Fix erroneous white-space removal when pasting inline fragment.
2015-06-23 09:46:15 +07:00
Neil Jenkins
def56193d4
Fix dummy paste area should be removed after paste completes
2015-06-22 09:32:47 +07:00
Neil Jenkins
7fc3ab55c3
Better cleanTree fn.
...
- Better checks to precisely trim white space only at beginning and end of block
- Don't keep the contents of <head> or <style> tags if inserted into body.
- Always keep styles to preserve fidelity on paste.
Fixes #95 .
2015-06-19 14:20:19 +07:00
Neil Jenkins
926f40d033
Tidy Clean.js file layout
2015-06-19 14:20:01 +07:00
Neil Jenkins
c3701ba026
Move addLinks fn into Editor.js
...
It's only used by insertHTML, and isn't really about cleaning.
2015-06-19 14:19:49 +07:00
Neil Jenkins
680c0fbbb7
Don't use old clipboard API.
...
Safari very rarely has a text/html version (even if you copy from within
Safari!) so you end up always pasting plain text. Better to use the fallback
method to grab the data.
2015-06-19 14:19:37 +07:00
Neil Jenkins
bc523f83e8
Better paste handling
...
Get paste data directly from browser when supported. Funnel all pastes through
the insertHTML method for consistent results.
2015-06-19 14:19:21 +07:00
Neil Jenkins
395a5825e9
Split cleaning fns and clipboard handlers into separate file.
2015-06-19 14:18:32 +07:00
Neil Jenkins
e90f18dba9
Fix inserting partial inlines in insertTreeFragmentIntoRange
...
Needs to account for browser "<br>"s inside blocks.
2015-06-19 14:18:07 +07:00
shiawuen
ff21cb37e6
fix bug on Browserify component when embed on another window replacing containing window content
2015-06-19 12:12:37 +08:00
Neil Jenkins
a1ff33da9f
Squire#removeAllFormatting fixes.
...
* Update the path after making the changes, so UI buttons can update correctly.
* Focus the editor on completion, to match the behaviour of other commands.
* Merge all the gathered text nodes if they're adjacent, so we have a normalised
result.
2015-06-17 19:07:29 +07:00
Neil Jenkins
09167c73e4
Make it possible to delete an <img> with display other than inline
...
Based on pull request #85 from dryoma.
2015-06-17 17:18:34 +07:00
Neil Jenkins
345159b4c4
Better algorithm for remove all formatting action.
...
1. Keeps all leaf nodes not just text nodes, so images etc. are not removed.
2. If the selection is not within a single block, it is expanded to the edges
of the blocks rather than splitting the blocks; this is unlikely to have
been what the user wanted.
3. More efficient tree traversal and manipulation; no duplication of nodes.
4. Records undo state before performing the action.
2015-06-17 15:43:27 +07:00
Neil Jenkins
d9872fb4b2
More efficient forEachChildInRange fn.
...
No need for a tree walker, and we don't waste time iterating into children
that can never match the filter function.
2015-06-17 15:43:27 +07:00
Neil Jenkins
8b112b7615
Ensure removeAllFormatting always returns self.
2015-06-17 15:43:27 +07:00
Neil Jenkins
36432d45bd
Fix whitespace.
2015-06-17 15:43:27 +07:00
Gert Sønderby
90660e8e4f
Updated README, aligned return value with other API functions.
2015-06-17 15:43:26 +07:00
Gert Sønderby
6aba099388
Tests run in latest Chrome, FF, Safari + IE10 and 11.
2015-06-17 15:43:26 +07:00
Gert K. Sønderby
654706f15f
Squire#removeAllFormatting() implemented, replaces range contents with style-sanitized version.
2015-06-17 15:43:26 +07:00
Gert K. Sønderby
d16de00a23
Added option to persist splits in inline nodes when fetching range from bookmark.
2015-06-17 15:43:26 +07:00
Neil Jenkins
42139c8399
Fix error thrown inserting tree fragment at start/end of document.
2015-06-17 15:43:26 +07:00
Neil Jenkins
c29a8c639b
Wrap rather than split to replace <br>s.
...
Fixes #81 .
2015-06-13 11:44:32 +07:00
Neil Jenkins
27b1532ca6
Add Squire#moveCursorTo(Start|End) methods.
...
I've got 99 GitHub issues, but #99 ain't one (any more).
2015-06-13 11:20:07 +07:00
Neil Jenkins
e59e6418af
Improve merging edges of inserted tree fragment.
...
Fixes #87 .
2015-06-12 17:48:06 +07:00
Neil Jenkins
f6cddb4626
Remove some old IE8-specific code.
2015-06-11 15:53:12 +07:00
Neil Jenkins
ae7d93a8fe
Position paste area further off screen to hide IE handlebars
...
Fixes #84 .
2015-06-09 16:38:16 +07:00
Neil Jenkins
60169dce6b
Handle browser splitting paste area.
...
Fixes #88 .
2015-06-09 16:32:20 +07:00
Neil Jenkins
884f352846
Set focus after element inserted with Squire#insertElement
...
Fixes #90 .
2015-06-02 21:15:14 +07:00
Neil Jenkins
c524772a63
Merge branch 'npm' of https://github.com/shiawuen/Squire into shiawuen-npm
2015-05-09 17:29:50 +07:00
Neil Jenkins
a2ca4a3864
Allow setting default attributes for ul/ol/li/blockquote.
...
Merges #83 , with fixes, tidying and squashing.
2015-05-09 17:22:54 +07:00
shiawuen
619a3abc5d
fix module check getting undefined for Firefox
2015-05-07 23:40:49 +08:00
shiawuen
3f643b5718
export Squire
2015-05-07 10:52:52 +08:00
Neil Jenkins
c48e9b73f5
Code style/naming convention cleanups
2015-05-07 09:08:58 +07:00
crossjs
8d8798a673
add parameter for override default properties; initialize editor document now run after instance saved.
2015-05-05 20:28:30 +08:00
Neil Jenkins
73641ad899
Fix white-space and naming convention errors.
2015-05-03 13:18:00 +07:00
Misha Koryak
3da7b19404
fix isDefaultPrevented
method ;)
2015-05-01 14:10:48 -04:00
Misha Koryak
ed10b03b9f
make it possible to replace the reference to e.fragment
in willPaste
event, also add isDefaultPrevented
method to that event
2015-05-01 14:07:28 -04:00
Neil Jenkins
223060ecf9
Add method to set key handlers.
...
Resolves #70
2015-04-29 11:16:11 +07:00
Umer Farooq
c249e3bc19
Document that if the current selection is not collapsed, that it will
...
be deleted and replaced by the html. Make style and consistency changes.
2015-04-15 16:23:36 +10:00
Umer Farooq
6fdb288e00
Add the ability to insert an HTML fragment at the cursor location.
2015-04-15 16:23:36 +10:00
Neil Jenkins
73ca65edb5
Fix pasting multiple lines into a blockquote.
...
Pasting is hard to get right in the general case, not least because the
browsers give so little control over the process, leaving you to resort to
crappy hacks. But we can special case the pasting to a blockquote case fairly
easily, and I can't see any particular regression it should cause.
Fixes #59 .
2015-04-09 20:16:04 +07:00
Neil Jenkins
7db0ae059a
Fix cleanup empty <a> on enter in WebKit/Blink
...
Need to consider zero-width space equivalent to no content.
Also cleanup empty inline nodes in general when cleaning up zero-width spaces
inside them.
Fixes #58
2015-04-08 18:02:23 +07:00
Neil Jenkins
1c0fa1a50f
Rewrite getSelectedText method.
...
Fixes #57 .
* Fixes bug where it could return text outside selection
* Inserts new line between blocks.
2015-04-08 17:13:21 +07:00
Neil Jenkins
e6ae25b589
Fix formatting commands when selection has no text nodes
...
Fixes #60
2015-04-08 15:33:27 +07:00
Neil Jenkins
1b9606452e
Check for redundant WS when ensuring bottom line.
...
Fixes #55 .
2015-03-29 18:56:32 +11:00
Neil Jenkins
4c63ad696e
Only maintain LI numbering when splitting OL if in BLOCKQUOTE.
...
Fixes #53
2015-03-29 18:39:50 +11:00
Neil Jenkins
3c8eaa1fcc
Use default block settings when fixCursor called on body
2015-03-29 18:36:58 +11:00
Allen Heavey
eced74244d
fix typo: ndoes -> nodes
2015-03-19 14:55:45 +08:00
Neil Jenkins
1362383aea
Fire "select" event whenever selected range is not collapsed
...
Fixes #50 .
2015-03-18 18:19:15 +08:00
masonicboom
eba853a0f7
allow "audio" elements
...
http://www.w3.org/wiki/HTML/Elements/audio
2015-03-05 16:57:33 -08:00
Neil Jenkins
ed0ebdae49
Merge adjacent text nodes after extracting range.
2015-03-04 14:50:44 +08:00
Neil Jenkins
5865eb032a
Maintain li numbering when splitting OL
2015-02-06 14:19:06 +07:00
Neil Jenkins
5b8e348232
Fix invalid caching of selection nodes in paste handler.
...
Fixes error thrown when pasting text twice in succession (or more generally,
when pasting it into non-normalised text nodes).
2015-02-06 14:18:38 +07:00
Neil Jenkins
dfed911833
Add .jshintrc file so JSHint checks it correctly.
...
Resolves #25 .
2015-01-08 12:25:54 +07:00
Neil Jenkins
8e8874b554
Don't fire an input event on setHTML call.
2014-12-30 10:22:39 +07:00
Neil Jenkins
249ea93c13
Allow defaultBlockTag to be configured
...
Resolves #23
2014-12-27 15:02:26 +07:00
Neil Jenkins
b69a1635de
Use mutation observers where possible to detect change
...
We need to know when the document is modified in order to fire an "input" event
and set the undo/redo state correctly. Observing keyup is imprecise, as it's
hard to tell whether the key press actually modified anything. Newer browsers
support mutation observers, which tell you precisely when something has changed.
For IE9/10, Opera 12 and other older browsers, we fall back to observing keyup
again.
Fixes #26 .
2014-12-27 13:48:15 +07:00
Neil Jenkins
5b5d65f684
Record undo checkpoint before deleting any selection.
2014-12-26 20:04:42 +07:00
Neil Jenkins
797dbf46fb
Fix selection lost on action in Presto
2014-12-26 20:01:36 +07:00
Neil Jenkins
54b428aaa6
Fix deleting selection across block boundary.
2014-12-26 14:48:13 +07:00
Neil Jenkins
a46dc2ef02
Take over selection deletion in more cases.
...
Never really want to let the browser delete a selection; it always makes a mess
of it. This now covers the case when an English letter key or number key is
pressed when a selection exists. Handling this completely (to include all keys
that produce a symbol) is tricky due to cross-browser key event compatibility
issues.
2014-12-26 14:27:19 +07:00
Neil Jenkins
4a264a52c7
Replace feature test w/ UA sniff for buggy splitText. *sigh*
...
The feature test is sometimes passing in IE9, but then the buggy behaviour
still appears later. FFS IE.
2014-12-26 14:26:29 +07:00
Neil Jenkins
805f3cffff
Remove last remnants of IE8 support.
2014-12-26 14:24:22 +07:00
Neil Jenkins
90623a51a2
Clean up empty inlines when deleting selection.
...
Fixes #6
2014-12-25 15:09:46 +07:00
Neil Jenkins
5b52467815
Fix inserting line break at start of link
...
Before, hitting enter at the start of the link would result in the link text
being removed from an <a> on the new line, and an empty <a> tag on the previous
line. Now the link remains on the new line as expected, and no empty <a> tag is
produced.
in the preceding block.
2014-12-25 11:39:07 +07:00
Neil Jenkins
f781e07b23
Ensure space is inserted after link if cursor at end of <a> tag
...
If your cursor is at the end of a link, ensure pressing space always inserts
the space outside of the <a> tag.
2014-12-24 14:24:25 +07:00
Neil Jenkins
824a3b0a3b
Resolves #22 .
2014-12-20 17:07:11 +11:00
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