activeadmin_trumbowyg 1.0.0 → 1.2.0
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/README.md +8 -5
- data/Rakefile +11 -0
- data/app/assets/fonts/trumbowyg/icons.svg +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/az.js +63 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/az.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ca.js +30 -13
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ca.min.js +8 -5
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/cs.js +11 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/cs.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/da.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/de.js +11 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/de.min.js +3 -3
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/es_ar.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/et.js +7 -7
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fa.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fi.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fr.js +3 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fr.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/he.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/hu.js +3 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/hu.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/id.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/it.js +4 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/it.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/lt.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/mn.js +39 -39
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/{no_nb.js → nb.js} +22 -8
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/nb.min.js +15 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/pl.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/pt.js +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/pt_br.js +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/rs.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/rs_latin.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sl.js +10 -6
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sl.min.js +2 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sq.js +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sv.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sv.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/th.js +33 -33
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/tr.js +5 -3
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/tr.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/zh_cn.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/zh_tw.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/allowtagsfrompaste/trumbowyg.allowtagsfrompaste.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/base64/trumbowyg.base64.js +28 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/base64/trumbowyg.base64.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/trumbowyg.colors.js +39 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/trumbowyg.colors.min.js +10 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss +3 -3
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/trumbowyg.colors.css +45 -40
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/trumbowyg.emoji.js +916 -848
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/trumbowyg.emoji.min.js +9 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/ui/sass/trumbowyg.emoji.scss +3 -3
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/ui/trumbowyg.emoji.css +23 -18
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/ui/trumbowyg.emoji.min.css +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/fontfamily/trumbowyg.fontfamily.js +22 -7
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/fontfamily/trumbowyg.fontfamily.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/fontsize/trumbowyg.fontsize.js +100 -8
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/fontsize/trumbowyg.fontsize.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/giphy/trumbowyg.giphy.js +251 -172
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/giphy/trumbowyg.giphy.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/giphy/ui/sass/trumbowyg.giphy.scss +17 -16
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/giphy/ui/trumbowyg.giphy.css +60 -47
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/giphy/ui/trumbowyg.giphy.min.css +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/highlight/trumbowyg.highlight.js +24 -4
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/highlight/trumbowyg.highlight.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/highlight/ui/sass/trumbowyg.highlight.scss +12 -12
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/highlight/ui/trumbowyg.highlight.css +13 -10
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/highlight/ui/trumbowyg.highlight.min.css +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/history/trumbowyg.history.js +6 -61
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/history/trumbowyg.history.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/indent/trumbowyg.indent.js +31 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/indent/trumbowyg.indent.min.js +9 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.js +18 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/lineheight/trumbowyg.lineheight.js +50 -5
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/lineheight/trumbowyg.lineheight.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mathml/trumbowyg.mathml.js +97 -50
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mathml/trumbowyg.mathml.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mathml/ui/sass/trumbowyg.mathml.scss +31 -26
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mathml/ui/trumbowyg.mathml.css +29 -21
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mathml/ui/trumbowyg.mathml.min.css +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mention/trumbowyg.mention.js +12 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mention/trumbowyg.mention.min.js +10 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mention/ui/sass/trumbowyg.mention.scss +3 -3
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mention/ui/trumbowyg.mention.css +16 -17
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/mention/ui/trumbowyg.mention.min.css +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/noembed/trumbowyg.noembed.js +51 -20
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/noembed/trumbowyg.noembed.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/pasteembed/trumbowyg.pasteembed.js +36 -53
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/pasteembed/trumbowyg.pasteembed.min.js +10 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js +12 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/resizimg/trumbowyg.resizimg.min.js +3 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/ruby/trumbowyg.ruby.js +20 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/ruby/trumbowyg.ruby.min.js +10 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/specialchars/trumbowyg.specialchars.js +18 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/specialchars/trumbowyg.specialchars.min.js +8 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/specialchars/ui/sass/trumbowyg.specialchars.scss +3 -3
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/specialchars/ui/trumbowyg.specialchars.css +25 -19
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/specialchars/ui/trumbowyg.specialchars.min.css +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/speechrecognition/trumbowyg.speechrecognition.js +198 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/speechrecognition/trumbowyg.speechrecognition.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/trumbowyg.table.js +1436 -158
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/trumbowyg.table.min.js +11 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/ui/sass/trumbowyg.table.scss +157 -32
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/ui/trumbowyg.table.css +143 -22
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/ui/trumbowyg.table.min.css +2 -2
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/template/trumbowyg.template.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/template/trumbowyg.template.min.js +1 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/tenor/trumbowyg.tenor.js +319 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/tenor/trumbowyg.tenor.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/tenor/ui/sass/trumbowyg.tenor.scss +124 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/tenor/ui/trumbowyg.tenor.css +119 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/tenor/ui/trumbowyg.tenor.min.css +2 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/upload/trumbowyg.upload.js +119 -76
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/upload/trumbowyg.upload.min.js +13 -1
- data/app/assets/javascripts/activeadmin/trumbowyg/trumbowyg.js +126 -80
- data/app/assets/javascripts/activeadmin/trumbowyg/trumbowyg.min.js +2 -12
- data/app/assets/stylesheets/activeadmin/_trumbowyg_input.scss +3 -1
- data/app/assets/stylesheets/activeadmin/trumbowyg/trumbowyg.css +776 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/trumbowyg.min.css +3 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/trumbowyg.min.css.map +1 -0
- data/lib/activeadmin/trumbowyg/version.rb +1 -1
- data/lib/tasks/trumbowyg.rake +2 -2
- metadata +23 -26
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/no_nb.min.js +0 -10
- data/app/assets/stylesheets/activeadmin/trumbowyg/trumbowyg.scss +0 -836
@@ -1,8 +1,8 @@
|
|
1
1
|
/**
|
2
|
-
* Trumbowyg v2.
|
2
|
+
* Trumbowyg v2.31.0 - A lightweight WYSIWYG editor
|
3
3
|
* Trumbowyg core file
|
4
4
|
* ------------------------
|
5
|
-
* @link
|
5
|
+
* @link https://alex-d.github.io/Trumbowyg/
|
6
6
|
* @license MIT
|
7
7
|
* @author Alexandre Demode (Alex-D)
|
8
8
|
* Twitter : @AlexandreDemode
|
@@ -43,6 +43,9 @@ jQuery.trumbowyg = {
|
|
43
43
|
createLink: 'Insert link',
|
44
44
|
unlink: 'Remove link',
|
45
45
|
|
46
|
+
_self: 'Same tab (default)',
|
47
|
+
_blank: 'New tab',
|
48
|
+
|
46
49
|
justifyLeft: 'Align Left',
|
47
50
|
justifyCenter: 'Align Center',
|
48
51
|
justifyRight: 'Align Right',
|
@@ -126,7 +129,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
126
129
|
|
127
130
|
urlProtocol: false,
|
128
131
|
minimalLinks: false,
|
129
|
-
|
132
|
+
linkTargets: ['_self', '_blank'],
|
130
133
|
|
131
134
|
svgPath: null
|
132
135
|
},
|
@@ -206,7 +209,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
206
209
|
};
|
207
210
|
|
208
211
|
// @param: editorElem is the DOM element
|
209
|
-
var Trumbowyg = function (editorElem, options) {
|
212
|
+
var Trumbowyg = function (editorElem, options) { // jshint ignore:line
|
210
213
|
var t = this,
|
211
214
|
trumbowygIconsId = 'trumbowyg-icons',
|
212
215
|
$trumbowyg = $.trumbowyg;
|
@@ -253,26 +256,27 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
253
256
|
console.warn('You must define svgPath: https://goo.gl/CfTY9U'); // jshint ignore:line
|
254
257
|
} else if (!$trumbowyg.svgAbsoluteUseHref) {
|
255
258
|
var div = t.doc.createElement('div');
|
259
|
+
div.style.width = '0';
|
260
|
+
div.style.height = '0';
|
261
|
+
div.style.overflow = 'hidden';
|
262
|
+
div.style.visibility = 'hidden';
|
256
263
|
div.id = trumbowygIconsId;
|
257
264
|
t.doc.body.insertBefore(div, t.doc.body.childNodes[0]);
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
dataType: 'xml',
|
263
|
-
crossDomain: true,
|
264
|
-
url: svgPathOption,
|
265
|
-
data: null,
|
266
|
-
beforeSend: null,
|
267
|
-
complete: null,
|
268
|
-
success: function (data) {
|
269
|
-
div.innerHTML = new XMLSerializer().serializeToString(data.documentElement);
|
265
|
+
fetch(svgPathOption, {
|
266
|
+
method: 'GET',
|
267
|
+
headers: {
|
268
|
+
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
270
269
|
}
|
270
|
+
}).then((response) => {
|
271
|
+
response.text()
|
272
|
+
.then((svg) => {
|
273
|
+
div.innerHTML = svg;
|
274
|
+
});
|
271
275
|
});
|
272
276
|
}
|
273
277
|
}
|
274
278
|
|
275
|
-
var baseHref = !!t.doc.querySelector('base') ? window.location.href.
|
279
|
+
var baseHref = !!t.doc.querySelector('base') ? window.location.href.replace(window.location.hash, '') : '';
|
276
280
|
t.svgPath = $trumbowyg.svgAbsoluteUseHref ? svgPathOption : baseHref;
|
277
281
|
|
278
282
|
|
@@ -295,7 +299,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
295
299
|
t.btnsDef = {
|
296
300
|
viewHTML: {
|
297
301
|
fn: 'toggle',
|
298
|
-
class: 'trumbowyg-not-disable'
|
302
|
+
class: 'trumbowyg-not-disable'
|
299
303
|
},
|
300
304
|
|
301
305
|
undo: {
|
@@ -482,7 +486,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
482
486
|
|
483
487
|
init: function () {
|
484
488
|
var t = this;
|
485
|
-
t.height = t.$ta.
|
489
|
+
t.height = t.$ta.outerHeight() - 39; // Remove button pane height
|
486
490
|
|
487
491
|
t.initPlugins();
|
488
492
|
|
@@ -533,15 +537,20 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
533
537
|
class: prefix + 'box ' + prefix + 'editor-visible ' + prefix + t.o.lang + ' trumbowyg'
|
534
538
|
});
|
535
539
|
|
540
|
+
t.$edBox = $('<div/>', {
|
541
|
+
class: prefix + 'editor-box'
|
542
|
+
});
|
543
|
+
|
536
544
|
// $ta = Textarea
|
537
545
|
// $ed = Editor
|
538
546
|
t.isTextarea = t.$ta.is('textarea');
|
539
547
|
if (t.isTextarea) {
|
540
548
|
html = t.$ta.val();
|
541
|
-
t.$ed = $('<div/>')
|
549
|
+
t.$ed = $('<div/>')
|
550
|
+
.appendTo(t.$edBox);
|
542
551
|
t.$box
|
543
552
|
.insertAfter(t.$ta)
|
544
|
-
.append(t.$
|
553
|
+
.append(t.$edBox, t.$ta);
|
545
554
|
} else {
|
546
555
|
t.$ed = t.$ta;
|
547
556
|
html = t.$ed.html();
|
@@ -553,7 +562,8 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
553
562
|
|
554
563
|
t.$box
|
555
564
|
.insertAfter(t.$ed)
|
556
|
-
.append(t.$ta, t.$
|
565
|
+
.append(t.$ta, t.$edBox);
|
566
|
+
t.$edBox.append(t.$ed);
|
557
567
|
t.syncCode();
|
558
568
|
}
|
559
569
|
|
@@ -587,13 +597,8 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
587
597
|
t.$ed.addClass(prefix + 'reset-css');
|
588
598
|
}
|
589
599
|
|
590
|
-
if (!t.o.autogrow) {
|
591
|
-
t.$ta.add(t.$ed).css({
|
592
|
-
height: t.height
|
593
|
-
});
|
594
|
-
}
|
595
|
-
|
596
600
|
t.semanticCode();
|
601
|
+
t.applyTagClasses();
|
597
602
|
|
598
603
|
if (t.o.autogrowOnEnter) {
|
599
604
|
t.$ed.addClass(prefix + 'autogrow-on-enter');
|
@@ -658,7 +663,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
658
663
|
if ((e.ctrlKey || e.metaKey) && (keyCode === 89 || keyCode === 90)) {
|
659
664
|
t.semanticCode(false, true);
|
660
665
|
t.$c.trigger('tbwchange');
|
661
|
-
} else if (!ctrl && keyCode !== 17) {
|
666
|
+
} else if (!ctrl && keyCode !== 16 && keyCode !== 17) {
|
662
667
|
var compositionEndIE = t.isIE ? e.type === 'compositionend' : true;
|
663
668
|
t.semanticCode(false, compositionEndIE && keyCode === 13);
|
664
669
|
t.$c.trigger('tbwchange');
|
@@ -670,6 +675,14 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
670
675
|
ctrl = false;
|
671
676
|
}, 50);
|
672
677
|
})
|
678
|
+
.on('input', function (e) {
|
679
|
+
// Trigger change event when spelling fixes applied
|
680
|
+
var event = e.originalEvent;
|
681
|
+
if (typeof event === 'object' && (event.inputType === 'insertReplacementText' ||
|
682
|
+
(event.inputType === 'insertText' && event.data === null))) {
|
683
|
+
t.$c.trigger('tbwchange');
|
684
|
+
}
|
685
|
+
})
|
673
686
|
.on('mouseup keydown keyup', function (e) {
|
674
687
|
if ((!e.ctrlKey && !e.metaKey) || e.altKey) {
|
675
688
|
setTimeout(function () { // "hold on" to the ctrl key for 50ms
|
@@ -694,13 +707,13 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
694
707
|
t.autogrowOnEnterWasFocused = true;
|
695
708
|
t.autogrowEditorOnEnter();
|
696
709
|
} else if (!t.o.autogrow) {
|
697
|
-
t.$
|
710
|
+
t.$edBox.css({height: t.$edBox.css('min-height')});
|
698
711
|
t.$c.trigger('tbwresize');
|
699
712
|
}
|
700
713
|
}
|
701
714
|
})
|
702
715
|
.on('keyup focus', function () {
|
703
|
-
|
716
|
+
if (!t.$ta.val().match(/<.*>/) && !t.$ed.html().match(/<.*>/)) {
|
704
717
|
setTimeout(function () {
|
705
718
|
var block = t.isIE ? '<p>' : 'p';
|
706
719
|
t.doc.execCommand('formatBlock', false, block);
|
@@ -775,13 +788,13 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
775
788
|
var t = this;
|
776
789
|
t.$ed.removeClass('autogrow-on-enter');
|
777
790
|
var oldHeight = t.$ed[0].clientHeight;
|
778
|
-
t.$
|
791
|
+
t.$edBox.height('auto');
|
779
792
|
var totalHeight = t.$ed[0].scrollHeight;
|
780
793
|
t.$ed.addClass('autogrow-on-enter');
|
781
794
|
if (oldHeight !== totalHeight) {
|
782
|
-
t.$
|
795
|
+
t.$edBox.height(oldHeight);
|
783
796
|
setTimeout(function () {
|
784
|
-
t.$
|
797
|
+
t.$edBox.css({height: totalHeight});
|
785
798
|
t.$c.trigger('tbwresize');
|
786
799
|
}, 0);
|
787
800
|
}
|
@@ -798,7 +811,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
798
811
|
});
|
799
812
|
|
800
813
|
$.each(t.o.btns, function (i, btnGrp) {
|
801
|
-
if (
|
814
|
+
if (!Array.isArray(btnGrp)) {
|
802
815
|
btnGrp = [btnGrp];
|
803
816
|
}
|
804
817
|
|
@@ -824,7 +837,8 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
824
837
|
|
825
838
|
|
826
839
|
// Build a button and his action
|
827
|
-
|
840
|
+
// @param btnName The name of the button
|
841
|
+
buildBtn: function (btnName) { // jshint ignore:line
|
828
842
|
var t = this,
|
829
843
|
prefix = t.o.prefix,
|
830
844
|
btn = t.btnsDef[btnName],
|
@@ -1035,7 +1049,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1035
1049
|
);
|
1036
1050
|
} else {
|
1037
1051
|
t.$box.after(
|
1038
|
-
t.$
|
1052
|
+
t.$edBox
|
1039
1053
|
.css({height: ''})
|
1040
1054
|
.removeClass(prefix + 'editor')
|
1041
1055
|
.removeAttr('contenteditable')
|
@@ -1060,6 +1074,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1060
1074
|
|
1061
1075
|
// Empty the editor
|
1062
1076
|
empty: function () {
|
1077
|
+
this.doc.execCommand('insertHTML', false, '');
|
1063
1078
|
this.$ta.val('');
|
1064
1079
|
this.syncCode(true);
|
1065
1080
|
},
|
@@ -1175,17 +1190,17 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1175
1190
|
}
|
1176
1191
|
|
1177
1192
|
if (t.o.autogrow) {
|
1178
|
-
t.height = t.$
|
1193
|
+
t.height = t.$edBox.height();
|
1179
1194
|
if (t.height !== t.$ta.css('height')) {
|
1180
1195
|
t.$ta.css({height: t.height});
|
1181
1196
|
t.$c.trigger('tbwresize');
|
1182
1197
|
}
|
1183
1198
|
}
|
1184
1199
|
if (t.o.autogrowOnEnter) {
|
1185
|
-
t.$
|
1186
|
-
var totalHeight = t.autogrowOnEnterWasFocused ? t.$
|
1200
|
+
t.$edBox.height('auto');
|
1201
|
+
var totalHeight = t.autogrowOnEnterWasFocused ? t.$edBox[0].scrollHeight : t.$edBox.css('min-height');
|
1187
1202
|
if (totalHeight !== t.$ta.css('height')) {
|
1188
|
-
t.$
|
1203
|
+
t.$edBox.css({height: totalHeight});
|
1189
1204
|
t.$c.trigger('tbwresize');
|
1190
1205
|
}
|
1191
1206
|
}
|
@@ -1260,7 +1275,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1260
1275
|
return;
|
1261
1276
|
}
|
1262
1277
|
|
1263
|
-
if(revert) {
|
1278
|
+
if (revert) {
|
1264
1279
|
oldTag = newTag;
|
1265
1280
|
newTag = tmpTag;
|
1266
1281
|
}
|
@@ -1284,7 +1299,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1284
1299
|
}
|
1285
1300
|
$newTag.html($oldTag.html());
|
1286
1301
|
$oldTag.remove();
|
1287
|
-
if(resetRange === true) {
|
1302
|
+
if (resetRange === true) {
|
1288
1303
|
t.range.selectNodeContents($newTag.get(0));
|
1289
1304
|
t.range.collapse(false);
|
1290
1305
|
}
|
@@ -1300,7 +1315,8 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1300
1315
|
text = new XMLSerializer().serializeToString(selectedRange.cloneContents()) || selectedRange + '',
|
1301
1316
|
url,
|
1302
1317
|
title,
|
1303
|
-
target
|
1318
|
+
target,
|
1319
|
+
linkDefaultTarget = t.o.linkTargets[0];
|
1304
1320
|
|
1305
1321
|
while (['A', 'DIV'].indexOf(node.nodeName) < 0) {
|
1306
1322
|
node = node.parentNode;
|
@@ -1312,7 +1328,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1312
1328
|
url = $a.attr('href');
|
1313
1329
|
if (!t.o.minimalLinks) {
|
1314
1330
|
title = $a.attr('title');
|
1315
|
-
target = $a.attr('target') ||
|
1331
|
+
target = $a.attr('target') || linkDefaultTarget;
|
1316
1332
|
}
|
1317
1333
|
var range = t.doc.createRange();
|
1318
1334
|
range.selectNode(node);
|
@@ -1334,6 +1350,12 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1334
1350
|
}
|
1335
1351
|
};
|
1336
1352
|
if (!t.o.minimalLinks) {
|
1353
|
+
var targetOptions = t.o.linkTargets.reduce(function (options, optionValue) {
|
1354
|
+
options[optionValue] = t.lang[optionValue];
|
1355
|
+
|
1356
|
+
return options;
|
1357
|
+
}, {});
|
1358
|
+
|
1337
1359
|
$.extend(options, {
|
1338
1360
|
title: {
|
1339
1361
|
label: t.lang.title,
|
@@ -1341,7 +1363,8 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1341
1363
|
},
|
1342
1364
|
target: {
|
1343
1365
|
label: t.lang.target,
|
1344
|
-
value: target
|
1366
|
+
value: target,
|
1367
|
+
options: targetOptions
|
1345
1368
|
}
|
1346
1369
|
});
|
1347
1370
|
}
|
@@ -1357,8 +1380,8 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1357
1380
|
if (v.title) {
|
1358
1381
|
link.attr('title', v.title);
|
1359
1382
|
}
|
1360
|
-
if (v.target ||
|
1361
|
-
link.attr('target', v.target ||
|
1383
|
+
if (v.target || linkDefaultTarget) {
|
1384
|
+
link.attr('target', v.target || linkDefaultTarget);
|
1362
1385
|
}
|
1363
1386
|
t.range.deleteContents();
|
1364
1387
|
t.range.insertNode(link[0]);
|
@@ -1468,6 +1491,13 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1468
1491
|
t.$c.trigger('tbw' + (isFullscreen ? 'open' : 'close') + 'fullscreen');
|
1469
1492
|
},
|
1470
1493
|
|
1494
|
+
applyTagClasses: function () {
|
1495
|
+
var t = this;
|
1496
|
+
for (const tag of Object.keys(t.o.tagClasses)) {
|
1497
|
+
$(tag, t.$ed).addClass(t.o.tagClasses[tag]);
|
1498
|
+
}
|
1499
|
+
t.syncCode();
|
1500
|
+
},
|
1471
1501
|
|
1472
1502
|
/*
|
1473
1503
|
* Call method of trumbowyg if exist
|
@@ -1482,7 +1512,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1482
1512
|
t.$ed.focus();
|
1483
1513
|
}
|
1484
1514
|
|
1485
|
-
if(cmd === 'strikethrough' && t.o.semantic) {
|
1515
|
+
if (cmd === 'strikethrough' && t.o.semantic) {
|
1486
1516
|
t.semanticTag('strike', t.o.semanticKeepAttributes, true); // browsers cannot undo e.g. <del> as they expect <strike>
|
1487
1517
|
}
|
1488
1518
|
|
@@ -1507,19 +1537,6 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1507
1537
|
|
1508
1538
|
t.syncCode();
|
1509
1539
|
t.semanticCode(false, true);
|
1510
|
-
try {
|
1511
|
-
var listId = window.getSelection().focusNode;
|
1512
|
-
if(!$(window.getSelection().focusNode.parentNode).hasClass('trumbowyg-editor')){
|
1513
|
-
listId = window.getSelection().focusNode.parentNode;
|
1514
|
-
}
|
1515
|
-
var classes = t.o.tagClasses[param];
|
1516
|
-
if (classes) {
|
1517
|
-
$(listId).addClass(classes);
|
1518
|
-
}
|
1519
|
-
} catch (e) {
|
1520
|
-
|
1521
|
-
}
|
1522
|
-
|
1523
1540
|
}
|
1524
1541
|
|
1525
1542
|
if (cmd !== 'dropdown') {
|
@@ -1527,6 +1544,11 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1527
1544
|
t.$c.trigger('tbwchange');
|
1528
1545
|
}
|
1529
1546
|
}
|
1547
|
+
|
1548
|
+
try {
|
1549
|
+
t.applyTagClasses();
|
1550
|
+
} catch (e) {
|
1551
|
+
}
|
1530
1552
|
},
|
1531
1553
|
|
1532
1554
|
|
@@ -1559,6 +1581,11 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1559
1581
|
zIndex: 99999
|
1560
1582
|
}).appendTo($(t.doc.body));
|
1561
1583
|
|
1584
|
+
var darkClass = prefix + 'dark';
|
1585
|
+
if (t.$c.parents('.' + darkClass).length !== 0) {
|
1586
|
+
$modal.addClass(darkClass);
|
1587
|
+
}
|
1588
|
+
|
1562
1589
|
// Click on overlay close modal by cancelling them
|
1563
1590
|
t.$overlay.one('click', function () {
|
1564
1591
|
$modal.trigger(CANCEL_EVENT);
|
@@ -1598,7 +1625,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1598
1625
|
.css({
|
1599
1626
|
top: '-' + t.$btnPane.outerHeight(),
|
1600
1627
|
opacity: 0,
|
1601
|
-
paddingBottom: buildForm ? null : '5%'
|
1628
|
+
paddingBottom: buildForm ? null : '5%'
|
1602
1629
|
})
|
1603
1630
|
.appendTo($modal)
|
1604
1631
|
.animate({
|
@@ -1647,6 +1674,11 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1647
1674
|
var t = this,
|
1648
1675
|
prefix = t.o.prefix;
|
1649
1676
|
|
1677
|
+
// Prevent multiple calls when having multiple editors in the same page
|
1678
|
+
if (!t.$btnPane.hasClass(prefix + 'disable')) {
|
1679
|
+
return;
|
1680
|
+
}
|
1681
|
+
|
1650
1682
|
t.$btnPane.removeClass(prefix + 'disable');
|
1651
1683
|
t.$overlay.off();
|
1652
1684
|
|
@@ -1682,17 +1714,31 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1682
1714
|
}).join(' ');
|
1683
1715
|
|
1684
1716
|
if (typeof field.type === 'function') {
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1717
|
+
if (!field.name) {
|
1718
|
+
field.name = n;
|
1719
|
+
}
|
1720
|
+
|
1721
|
+
html += field.type(field, fieldId, prefix, lg);
|
1722
|
+
|
1723
|
+
return;
|
1724
|
+
}
|
1725
|
+
|
1726
|
+
html += '<div class="' + prefix + 'input-row">';
|
1727
|
+
html += '<div class="' + prefix + 'input-infos"><label for="' + fieldId + '"><span>' + (lg[l] ? lg[l] : l) + '</span></label></div>';
|
1728
|
+
html += '<div class="' + prefix + 'input-html">';
|
1729
|
+
|
1730
|
+
if ($.isPlainObject(field.options)) {
|
1731
|
+
html += '<select id="' + fieldId + '" name="' + n + '">';
|
1732
|
+
html += Object.keys(field.options).map((optionValue) => {
|
1733
|
+
return '<option value="' + optionValue + '" ' + (optionValue === field.value ? 'selected' : '') + '>' + field.options[optionValue] + '</option>';
|
1734
|
+
}).join('');
|
1735
|
+
html += '</select>';
|
1689
1736
|
} else {
|
1690
|
-
|
1691
|
-
|
1692
|
-
'<div class="' + prefix + 'input-html"><input id="' + fieldId + '" type="' + (field.type || 'text') + '" name="' + n + '" ' + attr;
|
1693
|
-
html += (field.type === 'checkbox' && field.value ? ' checked="checked"' : '') + ' value="' + (field.value || '').replace(/"/g, '"') + '"></div>';
|
1694
|
-
html += '</div>';
|
1737
|
+
html += '<input id="' + fieldId + '" type="' + (field.type || 'text') + '" name="' + n + '" ' + attr;
|
1738
|
+
html += (field.type === 'checkbox' && field.value ? ' checked="checked"' : '') + ' value="' + (field.value || '').replace(/"/g, '"') + '">';
|
1695
1739
|
}
|
1740
|
+
|
1741
|
+
html += '</div></div>';
|
1696
1742
|
});
|
1697
1743
|
|
1698
1744
|
return t.openModal(title, html)
|
@@ -1715,7 +1761,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1715
1761
|
values[n] = $field.filter(':checked').val();
|
1716
1762
|
break;
|
1717
1763
|
default:
|
1718
|
-
values[n] =
|
1764
|
+
values[n] = $field.val().trim();
|
1719
1765
|
break;
|
1720
1766
|
}
|
1721
1767
|
// Validate value
|
@@ -1750,13 +1796,11 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1750
1796
|
$row = $field.closest('.' + prefix + 'input-row');
|
1751
1797
|
|
1752
1798
|
$field
|
1753
|
-
.
|
1799
|
+
.one('change keyup', function () {
|
1754
1800
|
$row.removeClass(prefix + 'input-error');
|
1755
|
-
setTimeout(function () {
|
1756
|
-
$row.find('.' + spanErrorClass).remove();
|
1757
|
-
}, 150);
|
1758
1801
|
});
|
1759
1802
|
|
1803
|
+
$row.find('.' + spanErrorClass).remove();
|
1760
1804
|
$row
|
1761
1805
|
.addClass(prefix + 'input-error')
|
1762
1806
|
.find('.' + prefix + 'input-infos label')
|
@@ -1920,7 +1964,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1920
1964
|
prefix = t.o.prefix,
|
1921
1965
|
activeClasses = prefix + 'active-button ' + prefix + 'active',
|
1922
1966
|
originalIconClass = prefix + 'original-icon',
|
1923
|
-
tags = t.getTagsRecursive(t.doc.getSelection().
|
1967
|
+
tags = t.getTagsRecursive(t.doc.getSelection().anchorNode);
|
1924
1968
|
|
1925
1969
|
t.clearButtonPaneStatus();
|
1926
1970
|
|
@@ -1962,7 +2006,9 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1962
2006
|
tags = tags || (element && element.tagName ? [element.tagName] : []);
|
1963
2007
|
|
1964
2008
|
if (element && element.parentNode) {
|
1965
|
-
element
|
2009
|
+
if (element.nodeType !== Node.ELEMENT_NODE) {
|
2010
|
+
element = element.parentNode;
|
2011
|
+
}
|
1966
2012
|
} else {
|
1967
2013
|
return tags;
|
1968
2014
|
}
|
@@ -1981,7 +2027,7 @@ Object.defineProperty(jQuery.trumbowyg, 'defaultOptions', {
|
|
1981
2027
|
|
1982
2028
|
tags.push(tag);
|
1983
2029
|
|
1984
|
-
return t.getTagsRecursive(element, tags).filter(function (tag) {
|
2030
|
+
return t.getTagsRecursive(element.parentNode, tags).filter(function (tag) {
|
1985
2031
|
return tag != null;
|
1986
2032
|
});
|
1987
2033
|
},
|