dante-editor 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +14 -0
- data/app/assets/javascripts/dante/editor.js.coffee +45 -15
- data/app/assets/javascripts/dante/tooltip_widgets/uploader.js.coffee +23 -0
- data/bower.json +1 -1
- data/dist/js/dante-editor.js +82 -18
- data/lib/dante-editor/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eba2467b8be034552237cb54293358466332638c
|
4
|
+
data.tar.gz: 0dae2099d83d79aaf498b58e6b9e28c8b2f4acde
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a54f3a0c8308f70be7bd76404878dff6d61407f1100c859f4aca0564819dcb0b37c788c287f3d53bf7a584ce419050aedd1cd067d61ce8b8a0921f5738cacc4f
|
7
|
+
data.tar.gz: bdba4aa9e98ac3e9b4480ed039f56772663ff6e5111dde4cc548bf4472a924bb1d0957f069b22ebd6082f9aca26dabf962766669c36284b81a1b883ff2e4f7c7
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -75,12 +75,26 @@ Until now I´ve been able to implement the following features:
|
|
75
75
|
+ **default_loading_placeholder:** image placeholder to show when uploaded/pasted images are loading , defaults to a grey background
|
76
76
|
+ **disable_title** default: false, will hide the initial heading placeholder for initial text
|
77
77
|
+ **title_placeholder** default: 'Title'
|
78
|
+
+ **title** default: none, pass a pre-existing title to the editor here
|
78
79
|
+ **body_placeholder** default: 'Tell your story…'
|
79
80
|
+ **embed_placeholder** default: 'Paste a YouTube, Vine, Vimeo, or other video link, and press Enter'
|
80
81
|
+ **extract_placeholder** default: 'Paste a link to embed content from another site (e.g. Twitter) and press Enter'
|
81
82
|
+ **base_widgets:** default: ["uploader", "embed", "embed-extract"],
|
82
83
|
+ **extra_tooltip_widgets:** and array of new Dante.TooltipWidget instances.
|
83
84
|
|
85
|
+
### Initialization
|
86
|
+
|
87
|
+
#### title
|
88
|
+
Use the title option in the initializer to pass a title to Dante.
|
89
|
+
|
90
|
+
#### body
|
91
|
+
Use the following code to get your text into the Dante editor's body:
|
92
|
+
```html
|
93
|
+
|
94
|
+
<div id="editor editable" > <%= clean_dante_post( @post.excerpt ).try(:html_safe) %> </div>
|
95
|
+
|
96
|
+
```
|
97
|
+
|
84
98
|
### Rails / AssetPippeline
|
85
99
|
|
86
100
|
in Gemfile
|
@@ -3,6 +3,16 @@ utils = Dante.utils
|
|
3
3
|
|
4
4
|
class Dante.Editor extends Dante.View
|
5
5
|
|
6
|
+
#Named constants for javascript key codes
|
7
|
+
BACKSPACE = 8
|
8
|
+
TAB = 9
|
9
|
+
ENTER = 13
|
10
|
+
SPACEBAR = 32
|
11
|
+
LEFTARROW = 37
|
12
|
+
UPARROW = 38
|
13
|
+
RIGHTARROW = 39
|
14
|
+
DOWNARROW = 40
|
15
|
+
|
6
16
|
events:
|
7
17
|
"mouseup" : "handleMouseUp"
|
8
18
|
"keydown" : "handleKeyDown"
|
@@ -56,6 +66,8 @@ class Dante.Editor extends Dante.View
|
|
56
66
|
|
57
67
|
titleplaceholder = opts.title_placeholder || 'Title'
|
58
68
|
@title_placeholder = "<span class='defaultValue defaultValue--root'>#{titleplaceholder}</span><br>"
|
69
|
+
title = opts.title || ''
|
70
|
+
@title = title
|
59
71
|
bodyplaceholder = opts.body_placeholder || 'Tell your story…'
|
60
72
|
@body_placeholder = "<span class='defaultValue defaultValue--root'>#{bodyplaceholder}</span><br>"
|
61
73
|
embedplaceholder = opts.embed_placeholder || 'Paste a YouTube, Vine, Vimeo, or other video link, and press Enter'
|
@@ -70,6 +82,7 @@ class Dante.Editor extends Dante.View
|
|
70
82
|
#TODO: this could be a hash to access widgets without var
|
71
83
|
#Base widgets
|
72
84
|
base_widgets = opts.base_widgets
|
85
|
+
self = @
|
73
86
|
|
74
87
|
if base_widgets.indexOf("uploader") >= 0
|
75
88
|
@uploader_widget = new Dante.View.TooltipWidget.Uploader(current_editor: @)
|
@@ -86,6 +99,8 @@ class Dante.Editor extends Dante.View
|
|
86
99
|
#add extra widgets
|
87
100
|
if opts.extra_tooltip_widgets
|
88
101
|
_.each opts.extra_tooltip_widgets, (w)=>
|
102
|
+
if !w.current_editor
|
103
|
+
w.current_editor = self
|
89
104
|
@widgets.push w
|
90
105
|
|
91
106
|
store: ()->
|
@@ -117,7 +132,7 @@ class Dante.Editor extends Dante.View
|
|
117
132
|
$(@el).find(".section-inner").html()
|
118
133
|
|
119
134
|
renderTitle: ()->
|
120
|
-
"<h3 class='graf graf--h3'>#{@title_placeholder}
|
135
|
+
"<h3 class='graf graf--h3'>#{if @title.length > 0 then @title else @title_placeholder}</h3>"
|
121
136
|
|
122
137
|
template: ()=>
|
123
138
|
"<section class='section--first section--last'>
|
@@ -646,12 +661,12 @@ class Dante.Editor extends Dante.View
|
|
646
661
|
|
647
662
|
@markAsSelected( anchor_node ) if anchor_node
|
648
663
|
|
649
|
-
if e.which is
|
664
|
+
if e.which is TAB
|
650
665
|
|
651
666
|
@handleTab(anchor_node)
|
652
667
|
return false
|
653
668
|
|
654
|
-
if e.which ==
|
669
|
+
if e.which == ENTER
|
655
670
|
|
656
671
|
#removes previous selected nodes
|
657
672
|
$(@el).find(".is-selected").removeClass("is-selected")
|
@@ -718,7 +733,8 @@ class Dante.Editor extends Dante.View
|
|
718
733
|
, 2
|
719
734
|
|
720
735
|
#delete key
|
721
|
-
if (e.which ==
|
736
|
+
if (e.which == BACKSPACE)
|
737
|
+
eventHandled = false;
|
722
738
|
@tooltip_view.hide()
|
723
739
|
utils.log("removing from down")
|
724
740
|
utils.log "REACHED TOP" if @reachedTop
|
@@ -728,9 +744,29 @@ class Dante.Editor extends Dante.View
|
|
728
744
|
anchor_node = @getNode()
|
729
745
|
utils_anchor_node = utils.getNode()
|
730
746
|
|
747
|
+
utils.log(anchor_node);
|
748
|
+
utils.log(utils_anchor_node);
|
749
|
+
|
750
|
+
#check if any of the widgets can handle a backspace keydown
|
751
|
+
utils.log("HANDLING WIDGET BACKSPACES");
|
752
|
+
_.each @widgets, (w)=>
|
753
|
+
if w.handleBackspaceKey && !handled
|
754
|
+
handled = w.handleBackspaceKey(e, anchor_node);
|
755
|
+
|
756
|
+
if (eventHandled)
|
757
|
+
e.preventDefault();
|
758
|
+
return false;
|
759
|
+
|
731
760
|
if(parent.hasClass("graf--li") and @getCharacterPrecedingCaret().length is 0)
|
732
761
|
return this.handleListBackspace(parent, e);
|
733
762
|
|
763
|
+
#select an image if backspacing into it from a paragraph
|
764
|
+
if($(anchor_node).hasClass("graf--p") && @isFirstChar)
|
765
|
+
if($(anchor_node).prev().hasClass("graf--figure"))
|
766
|
+
e.preventDefault();
|
767
|
+
$(anchor_node).prev().find("img").click();
|
768
|
+
utils.log("Focus on the previous image")
|
769
|
+
|
734
770
|
if $(utils_anchor_node).hasClass("section-content") || $(utils_anchor_node).hasClass("graf--first")
|
735
771
|
utils.log "SECTION DETECTED FROM KEYDOWN #{_.isEmpty($(utils_anchor_node).text())}"
|
736
772
|
return false if _.isEmpty($(utils_anchor_node).text())
|
@@ -752,21 +788,15 @@ class Dante.Editor extends Dante.View
|
|
752
788
|
if $(anchor_node).prev().hasClass("graf--mixtapeEmbed")
|
753
789
|
return false if @isFirstChar() && !_.isEmpty( $(anchor_node).text().trim() )
|
754
790
|
|
755
|
-
#remove graf figure is is selected but not in range (not focus on caption)
|
756
|
-
if $(".is-selected").hasClass("graf--figure") && !anchor_node?
|
757
|
-
@replaceWith("p", $(".is-selected"))
|
758
|
-
@setRangeAt($(".is-selected")[0])
|
759
|
-
return false
|
760
|
-
|
761
791
|
#spacebar
|
762
|
-
if (e.which ==
|
792
|
+
if (e.which == SPACEBAR)
|
763
793
|
utils.log("SPACEBAR")
|
764
794
|
if (parent.hasClass("graf--p"))
|
765
795
|
@handleSmartList(parent, e)
|
766
796
|
#arrows key
|
767
797
|
#if _.contains([37,38,39,40], e.which)
|
768
798
|
#up & down
|
769
|
-
if _.contains([
|
799
|
+
if _.contains([UPARROW, DOWNARROW], e.which)
|
770
800
|
utils.log e.which
|
771
801
|
@handleArrowForKeyDown(e)
|
772
802
|
#return false
|
@@ -800,11 +830,11 @@ class Dante.Editor extends Dante.View
|
|
800
830
|
|
801
831
|
@handleTextSelection(anchor_node)
|
802
832
|
|
803
|
-
if (_.contains([
|
833
|
+
if (_.contains([BACKSPACE, SPACEBAR, ENTER], e.which))
|
804
834
|
if $(anchor_node).hasClass("graf--li")
|
805
835
|
@removeSpanTag($(anchor_node));
|
806
836
|
|
807
|
-
if (e.which ==
|
837
|
+
if (e.which == BACKSPACE)
|
808
838
|
|
809
839
|
#if detect all text deleted , re render
|
810
840
|
if $(utils_anchor_node).hasClass("postField--body")
|
@@ -846,7 +876,7 @@ class Dante.Editor extends Dante.View
|
|
846
876
|
|
847
877
|
|
848
878
|
#arrows key
|
849
|
-
if _.contains([
|
879
|
+
if _.contains([LEFTARROW, UPARROW, RIGHTARROW, DOWNARROW], e.which)
|
850
880
|
@handleArrow(e)
|
851
881
|
#return false
|
852
882
|
|
@@ -222,3 +222,26 @@ class Dante.View.TooltipWidget.Uploader extends Dante.View.TooltipWidget
|
|
222
222
|
uploadCompleted: (url, node)=>
|
223
223
|
node.find("img").attr("src", url)
|
224
224
|
#return false
|
225
|
+
|
226
|
+
###
|
227
|
+
# Handles the behavior of deleting images when using the backspace key
|
228
|
+
#
|
229
|
+
# @param {Event} e - The backspace event that is being handled
|
230
|
+
# @param {Node} node - The node the backspace was used in, assumed to be from te editor's getNode() function
|
231
|
+
#
|
232
|
+
# @return {Boolean} true if this function handled the backspace event, otherwise false
|
233
|
+
###
|
234
|
+
handleBackspaceKey: (e, node) =>
|
235
|
+
|
236
|
+
#remove graf figure is is selected but not in range (not focus on caption)
|
237
|
+
if $(".is-selected").hasClass("graf--figure") && !anchor_node?
|
238
|
+
utils.log("Replacing selected node")
|
239
|
+
@current_editor.replaceWith("p", $(".is-selected"))
|
240
|
+
|
241
|
+
e.preventDefault() #without this line, the browser may interpret the backspace as a "go pack a page" command
|
242
|
+
|
243
|
+
@current_editor.setRangeAt($(".is-selected")[0])
|
244
|
+
return true
|
245
|
+
|
246
|
+
return false
|
247
|
+
|
data/bower.json
CHANGED
data/dist/js/dante-editor.js
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
defaults: {
|
9
9
|
image_placeholder: '../images/dante/media-loading-placeholder.png'
|
10
10
|
},
|
11
|
-
version: "0.0.
|
11
|
+
version: "0.0.13"
|
12
12
|
};
|
13
13
|
|
14
14
|
}).call(this);
|
@@ -432,6 +432,8 @@
|
|
432
432
|
utils = Dante.utils;
|
433
433
|
|
434
434
|
Dante.Editor = (function(_super) {
|
435
|
+
var BACKSPACE, DOWNARROW, ENTER, LEFTARROW, RIGHTARROW, SPACEBAR, TAB, UPARROW;
|
436
|
+
|
435
437
|
__extends(Editor, _super);
|
436
438
|
|
437
439
|
function Editor() {
|
@@ -452,6 +454,22 @@
|
|
452
454
|
return Editor.__super__.constructor.apply(this, arguments);
|
453
455
|
}
|
454
456
|
|
457
|
+
BACKSPACE = 8;
|
458
|
+
|
459
|
+
TAB = 9;
|
460
|
+
|
461
|
+
ENTER = 13;
|
462
|
+
|
463
|
+
SPACEBAR = 32;
|
464
|
+
|
465
|
+
LEFTARROW = 37;
|
466
|
+
|
467
|
+
UPARROW = 38;
|
468
|
+
|
469
|
+
RIGHTARROW = 39;
|
470
|
+
|
471
|
+
DOWNARROW = 40;
|
472
|
+
|
455
473
|
Editor.prototype.events = {
|
456
474
|
"mouseup": "handleMouseUp",
|
457
475
|
"keydown": "handleKeyDown",
|
@@ -470,7 +488,7 @@
|
|
470
488
|
};
|
471
489
|
|
472
490
|
Editor.prototype.initialize = function(opts) {
|
473
|
-
var bodyplaceholder, embedplaceholder, extractplaceholder, titleplaceholder;
|
491
|
+
var bodyplaceholder, embedplaceholder, extractplaceholder, title, titleplaceholder;
|
474
492
|
if (opts == null) {
|
475
493
|
opts = {};
|
476
494
|
}
|
@@ -503,6 +521,8 @@
|
|
503
521
|
this.store();
|
504
522
|
titleplaceholder = opts.title_placeholder || 'Title';
|
505
523
|
this.title_placeholder = "<span class='defaultValue defaultValue--root'>" + titleplaceholder + "</span><br>";
|
524
|
+
title = opts.title || '';
|
525
|
+
this.title = title;
|
506
526
|
bodyplaceholder = opts.body_placeholder || 'Tell your story…';
|
507
527
|
this.body_placeholder = "<span class='defaultValue defaultValue--root'>" + bodyplaceholder + "</span><br>";
|
508
528
|
embedplaceholder = opts.embed_placeholder || 'Paste a YouTube, Vine, Vimeo, or other video link, and press Enter';
|
@@ -513,8 +533,9 @@
|
|
513
533
|
};
|
514
534
|
|
515
535
|
Editor.prototype.initializeWidgets = function(opts) {
|
516
|
-
var base_widgets;
|
536
|
+
var base_widgets, self;
|
517
537
|
base_widgets = opts.base_widgets;
|
538
|
+
self = this;
|
518
539
|
if (base_widgets.indexOf("uploader") >= 0) {
|
519
540
|
this.uploader_widget = new Dante.View.TooltipWidget.Uploader({
|
520
541
|
current_editor: this
|
@@ -536,6 +557,9 @@
|
|
536
557
|
if (opts.extra_tooltip_widgets) {
|
537
558
|
return _.each(opts.extra_tooltip_widgets, (function(_this) {
|
538
559
|
return function(w) {
|
560
|
+
if (!w.current_editor) {
|
561
|
+
w.current_editor = self;
|
562
|
+
}
|
539
563
|
return _this.widgets.push(w);
|
540
564
|
};
|
541
565
|
})(this));
|
@@ -584,7 +608,7 @@
|
|
584
608
|
};
|
585
609
|
|
586
610
|
Editor.prototype.renderTitle = function() {
|
587
|
-
return "<h3 class='graf graf--h3'>" + this.title_placeholder + "
|
611
|
+
return "<h3 class='graf graf--h3'>" + (this.title.length > 0 ? this.title : this.title_placeholder) + "</h3>";
|
588
612
|
};
|
589
613
|
|
590
614
|
Editor.prototype.template = function() {
|
@@ -1185,18 +1209,18 @@
|
|
1185
1209
|
};
|
1186
1210
|
|
1187
1211
|
Editor.prototype.handleKeyDown = function(e) {
|
1188
|
-
var anchor_node, li, parent, utils_anchor_node;
|
1212
|
+
var anchor_node, eventHandled, li, parent, utils_anchor_node;
|
1189
1213
|
utils.log("KEYDOWN");
|
1190
1214
|
anchor_node = this.getNode();
|
1191
1215
|
parent = $(anchor_node);
|
1192
1216
|
if (anchor_node) {
|
1193
1217
|
this.markAsSelected(anchor_node);
|
1194
1218
|
}
|
1195
|
-
if (e.which ===
|
1219
|
+
if (e.which === TAB) {
|
1196
1220
|
this.handleTab(anchor_node);
|
1197
1221
|
return false;
|
1198
1222
|
}
|
1199
|
-
if (e.which ===
|
1223
|
+
if (e.which === ENTER) {
|
1200
1224
|
$(this.el).find(".is-selected").removeClass("is-selected");
|
1201
1225
|
utils.log(this.isLastChar());
|
1202
1226
|
if (parent.hasClass("graf--p")) {
|
@@ -1262,7 +1286,8 @@
|
|
1262
1286
|
};
|
1263
1287
|
})(this), 2);
|
1264
1288
|
}
|
1265
|
-
if (e.which ===
|
1289
|
+
if (e.which === BACKSPACE) {
|
1290
|
+
eventHandled = false;
|
1266
1291
|
this.tooltip_view.hide();
|
1267
1292
|
utils.log("removing from down");
|
1268
1293
|
if (this.reachedTop) {
|
@@ -1274,9 +1299,31 @@
|
|
1274
1299
|
utils.log("pass initial validations");
|
1275
1300
|
anchor_node = this.getNode();
|
1276
1301
|
utils_anchor_node = utils.getNode();
|
1302
|
+
utils.log(anchor_node);
|
1303
|
+
utils.log(utils_anchor_node);
|
1304
|
+
utils.log("HANDLING WIDGET BACKSPACES");
|
1305
|
+
_.each(this.widgets, (function(_this) {
|
1306
|
+
return function(w) {
|
1307
|
+
var handled;
|
1308
|
+
if (w.handleBackspaceKey && !handled) {
|
1309
|
+
return handled = w.handleBackspaceKey(e, anchor_node);
|
1310
|
+
}
|
1311
|
+
};
|
1312
|
+
})(this));
|
1313
|
+
if (eventHandled) {
|
1314
|
+
e.preventDefault();
|
1315
|
+
return false;
|
1316
|
+
}
|
1277
1317
|
if (parent.hasClass("graf--li") && this.getCharacterPrecedingCaret().length === 0) {
|
1278
1318
|
return this.handleListBackspace(parent, e);
|
1279
1319
|
}
|
1320
|
+
if ($(anchor_node).hasClass("graf--p") && this.isFirstChar) {
|
1321
|
+
if ($(anchor_node).prev().hasClass("graf--figure")) {
|
1322
|
+
e.preventDefault();
|
1323
|
+
$(anchor_node).prev().find("img").click();
|
1324
|
+
utils.log("Focus on the previous image");
|
1325
|
+
}
|
1326
|
+
}
|
1280
1327
|
if ($(utils_anchor_node).hasClass("section-content") || $(utils_anchor_node).hasClass("graf--first")) {
|
1281
1328
|
utils.log("SECTION DETECTED FROM KEYDOWN " + (_.isEmpty($(utils_anchor_node).text())));
|
1282
1329
|
if (_.isEmpty($(utils_anchor_node).text())) {
|
@@ -1301,19 +1348,14 @@
|
|
1301
1348
|
return false;
|
1302
1349
|
}
|
1303
1350
|
}
|
1304
|
-
if ($(".is-selected").hasClass("graf--figure") && (anchor_node == null)) {
|
1305
|
-
this.replaceWith("p", $(".is-selected"));
|
1306
|
-
this.setRangeAt($(".is-selected")[0]);
|
1307
|
-
return false;
|
1308
|
-
}
|
1309
1351
|
}
|
1310
|
-
if (e.which ===
|
1352
|
+
if (e.which === SPACEBAR) {
|
1311
1353
|
utils.log("SPACEBAR");
|
1312
1354
|
if (parent.hasClass("graf--p")) {
|
1313
1355
|
this.handleSmartList(parent, e);
|
1314
1356
|
}
|
1315
1357
|
}
|
1316
|
-
if (_.contains([
|
1358
|
+
if (_.contains([UPARROW, DOWNARROW], e.which)) {
|
1317
1359
|
utils.log(e.which);
|
1318
1360
|
this.handleArrowForKeyDown(e);
|
1319
1361
|
}
|
@@ -1343,12 +1385,12 @@
|
|
1343
1385
|
anchor_node = this.getNode();
|
1344
1386
|
utils_anchor_node = utils.getNode();
|
1345
1387
|
this.handleTextSelection(anchor_node);
|
1346
|
-
if (_.contains([
|
1388
|
+
if (_.contains([BACKSPACE, SPACEBAR, ENTER], e.which)) {
|
1347
1389
|
if ($(anchor_node).hasClass("graf--li")) {
|
1348
1390
|
this.removeSpanTag($(anchor_node));
|
1349
1391
|
}
|
1350
1392
|
}
|
1351
|
-
if (e.which ===
|
1393
|
+
if (e.which === BACKSPACE) {
|
1352
1394
|
if ($(utils_anchor_node).hasClass("postField--body")) {
|
1353
1395
|
utils.log("ALL GONE from UP");
|
1354
1396
|
this.handleCompleteDeletion($(this.el));
|
@@ -1384,7 +1426,7 @@
|
|
1384
1426
|
false;
|
1385
1427
|
}
|
1386
1428
|
}
|
1387
|
-
if (_.contains([
|
1429
|
+
if (_.contains([LEFTARROW, UPARROW, RIGHTARROW, DOWNARROW], e.which)) {
|
1388
1430
|
return this.handleArrow(e);
|
1389
1431
|
}
|
1390
1432
|
};
|
@@ -1861,6 +1903,7 @@
|
|
1861
1903
|
__extends(Uploader, _super);
|
1862
1904
|
|
1863
1905
|
function Uploader() {
|
1906
|
+
this.handleBackspaceKey = __bind(this.handleBackspaceKey, this);
|
1864
1907
|
this.uploadCompleted = __bind(this.uploadCompleted, this);
|
1865
1908
|
this.updateProgressBar = __bind(this.updateProgressBar, this);
|
1866
1909
|
this.uploadFile = __bind(this.uploadFile, this);
|
@@ -2113,6 +2156,27 @@
|
|
2113
2156
|
return node.find("img").attr("src", url);
|
2114
2157
|
};
|
2115
2158
|
|
2159
|
+
|
2160
|
+
/*
|
2161
|
+
* Handles the behavior of deleting images when using the backspace key
|
2162
|
+
*
|
2163
|
+
* @param {Event} e - The backspace event that is being handled
|
2164
|
+
* @param {Node} node - The node the backspace was used in, assumed to be from te editor's getNode() function
|
2165
|
+
*
|
2166
|
+
* @return {Boolean} true if this function handled the backspace event, otherwise false
|
2167
|
+
*/
|
2168
|
+
|
2169
|
+
Uploader.prototype.handleBackspaceKey = function(e, node) {
|
2170
|
+
if ($(".is-selected").hasClass("graf--figure") && (typeof anchor_node === "undefined" || anchor_node === null)) {
|
2171
|
+
utils.log("Replacing selected node");
|
2172
|
+
this.current_editor.replaceWith("p", $(".is-selected"));
|
2173
|
+
e.preventDefault();
|
2174
|
+
this.current_editor.setRangeAt($(".is-selected")[0]);
|
2175
|
+
return true;
|
2176
|
+
}
|
2177
|
+
return false;
|
2178
|
+
};
|
2179
|
+
|
2116
2180
|
return Uploader;
|
2117
2181
|
|
2118
2182
|
})(Dante.View.TooltipWidget);
|
data/lib/dante-editor/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dante-editor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Michelson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: dante-editor yet another Medium editor clone.
|
15
15
|
email:
|