jquery-atwho-rails 0.5.1 → 0.5.2
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa2e92f75b0b7581ced18f8eaa51d4258f055f47
|
4
|
+
data.tar.gz: 04c3e54923cc76a80e8df334919e03e0fa985ed6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26541dbb4d524fcf01c31536a102f5da2e36cf05cf0aaf7b8a2a98afc8b7aa7ecf98693733dc8153bf2b918fe7a17f27644bf7db7368fbeb75cbaaa253dc54ba
|
7
|
+
data.tar.gz: 893b3c38c8bed239534725f3f1df1a710e5135967d14f6d36b3d09e028ec3d1e865d1e94260eb0389bca1ded8e598e0cef6643f74f1a4e03f14134a997ad199b
|
data/Rakefile
CHANGED
@@ -27,7 +27,7 @@ task fresh: :sync do
|
|
27
27
|
dist_dir = "lib/assets"
|
28
28
|
|
29
29
|
js_dist_dir = "#{dist_dir}/javascripts/jquery.atwho/"
|
30
|
-
FileUtils.copy "#{bower_dir}/Caret.js/
|
30
|
+
FileUtils.copy "#{bower_dir}/Caret.js/dist/jquery.caret.js", js_dist_dir
|
31
31
|
FileUtils.copy "#{source_dir}/js/jquery.atwho.js", js_dist_dir
|
32
32
|
|
33
33
|
FileUtils.copy "#{source_dir}/css/jquery.atwho.css", "#{dist_dir}/stylesheets/"
|
@@ -1,17 +1,23 @@
|
|
1
|
-
/*! jquery.atwho - v0.5.
|
2
|
-
* Copyright (c) 2014 chord.luo <chord.luo@gmail.com>;
|
3
|
-
* homepage: http://ichord.github.com/At.js
|
1
|
+
/*! jquery.atwho - v0.5.2 %>
|
2
|
+
* Copyright (c) 2014 chord.luo <chord.luo@gmail.com>;
|
3
|
+
* homepage: http://ichord.github.com/At.js
|
4
4
|
* Licensed MIT
|
5
5
|
*/
|
6
|
-
|
7
|
-
(function
|
8
|
-
|
9
|
-
|
10
|
-
return
|
11
|
-
}
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
(function (root, factory) {
|
7
|
+
if (typeof define === 'function' && define.amd) {
|
8
|
+
// AMD. Register as an anonymous module.
|
9
|
+
define(["jquery"], function ($) {
|
10
|
+
return (root.returnExportsGlobal = factory($));
|
11
|
+
});
|
12
|
+
} else if (typeof exports === 'object') {
|
13
|
+
// Node. Does not work with strict CommonJS, but
|
14
|
+
// only CommonJS-like enviroments that support module.exports,
|
15
|
+
// like Node.
|
16
|
+
module.exports = factory(require("jquery"));
|
17
|
+
} else {
|
18
|
+
factory(jQuery);
|
19
|
+
}
|
20
|
+
}(this, function ($) {
|
15
21
|
|
16
22
|
var Api, App, Controller, DEFAULT_CALLBACKS, KEY_CODE, Model, View,
|
17
23
|
__slice = [].slice;
|
@@ -115,8 +121,7 @@ App = (function() {
|
|
115
121
|
};
|
116
122
|
})(this)).on('click.atwhoInner', (function(_this) {
|
117
123
|
return function(e) {
|
118
|
-
|
119
|
-
return (_ref = _this.controller()) != null ? _ref.view.hide(e) : void 0;
|
124
|
+
return _this.dispatch();
|
120
125
|
};
|
121
126
|
})(this));
|
122
127
|
};
|
@@ -300,10 +305,14 @@ Controller = (function() {
|
|
300
305
|
};
|
301
306
|
|
302
307
|
Controller.prototype.content = function() {
|
308
|
+
var range;
|
303
309
|
if (this.$inputor.is('textarea, input')) {
|
304
310
|
return this.$inputor.val();
|
305
311
|
} else {
|
306
|
-
|
312
|
+
if (!(range = this.mark_range())) {
|
313
|
+
return;
|
314
|
+
}
|
315
|
+
return range.startContainer.parentNode.textContent || "";
|
307
316
|
}
|
308
317
|
};
|
309
318
|
|
@@ -344,7 +353,7 @@ Controller = (function() {
|
|
344
353
|
c.left += iframe_offset.left;
|
345
354
|
c.top += iframe_offset.top;
|
346
355
|
}
|
347
|
-
if (this.$inputor.
|
356
|
+
if (this.$inputor.is('[contentEditable]')) {
|
348
357
|
c = this.cur_rect || (this.cur_rect = c);
|
349
358
|
}
|
350
359
|
scale_bottom = this.app.document.selection ? 0 : 2;
|
@@ -356,19 +365,20 @@ Controller = (function() {
|
|
356
365
|
};
|
357
366
|
|
358
367
|
Controller.prototype.reset_rect = function() {
|
359
|
-
if (this.$inputor.
|
368
|
+
if (this.$inputor.is('[contentEditable]')) {
|
360
369
|
return this.cur_rect = null;
|
361
370
|
}
|
362
371
|
};
|
363
372
|
|
364
373
|
Controller.prototype.mark_range = function() {
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
374
|
+
var sel;
|
375
|
+
if (!this.$inputor.is('[contentEditable]')) {
|
376
|
+
return;
|
377
|
+
}
|
378
|
+
if (this.app.window.getSelection && (sel = this.app.window.getSelection()).rangeCount > 0) {
|
379
|
+
return this.range = sel.getRangeAt(0);
|
380
|
+
} else if (this.app.document.selection) {
|
381
|
+
return this.ie8_range = this.app.document.selection.createRange();
|
372
382
|
}
|
373
383
|
};
|
374
384
|
|
@@ -387,15 +397,15 @@ Controller = (function() {
|
|
387
397
|
};
|
388
398
|
|
389
399
|
Controller.prototype.insert = function(content, $li) {
|
390
|
-
var $inputor,
|
400
|
+
var $inputor, node, pos, range, sel, source, start_str, text, wrapped_contents, _i, _len, _ref;
|
391
401
|
$inputor = this.$inputor;
|
392
|
-
|
402
|
+
wrapped_contents = this.callbacks('inserting_wrapper').call(this, $inputor, content, this.get_opt("suffix"));
|
393
403
|
if ($inputor.is('textarea, input')) {
|
394
404
|
source = $inputor.val();
|
395
405
|
start_str = source.slice(0, Math.max(this.query.head_pos - this.at.length, 0));
|
396
|
-
text = "" + start_str +
|
406
|
+
text = "" + start_str + wrapped_contents + (source.slice(this.query['end_pos'] || 0));
|
397
407
|
$inputor.val(text);
|
398
|
-
$inputor.caret('pos', start_str.length +
|
408
|
+
$inputor.caret('pos', start_str.length + wrapped_contents.length, {
|
399
409
|
iframe: this.app.iframe
|
400
410
|
});
|
401
411
|
} else if (range = this.range) {
|
@@ -403,16 +413,19 @@ Controller = (function() {
|
|
403
413
|
range.setStart(range.endContainer, Math.max(pos, 0));
|
404
414
|
range.setEnd(range.endContainer, range.endOffset);
|
405
415
|
range.deleteContents();
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
416
|
+
_ref = $(wrapped_contents, this.app.document);
|
417
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
418
|
+
node = _ref[_i];
|
419
|
+
range.insertNode(node);
|
420
|
+
range.setEndAfter(node);
|
421
|
+
range.collapse(false);
|
422
|
+
}
|
410
423
|
sel = this.app.window.getSelection();
|
411
424
|
sel.removeAllRanges();
|
412
425
|
sel.addRange(range);
|
413
426
|
} else if (range = this.ie8_range) {
|
414
427
|
range.moveStart('character', this.query.end_pos - this.query.head_pos - this.at.length);
|
415
|
-
range.pasteHTML(
|
428
|
+
range.pasteHTML(wrapped_contents);
|
416
429
|
range.collapse(false);
|
417
430
|
range.select();
|
418
431
|
}
|
@@ -540,8 +553,10 @@ View = (function() {
|
|
540
553
|
return $menu.on('mouseenter.atwho-view', 'li', function(e) {
|
541
554
|
$menu.find('.cur').removeClass('cur');
|
542
555
|
return $(e.currentTarget).addClass('cur');
|
543
|
-
}).on('click', (function(_this) {
|
556
|
+
}).on('click.atwho-view', 'li', (function(_this) {
|
544
557
|
return function(e) {
|
558
|
+
$menu.find('.cur').removeClass('cur');
|
559
|
+
$(e.currentTarget).addClass('cur');
|
545
560
|
_this.choose(e);
|
546
561
|
return e.preventDefault();
|
547
562
|
};
|
@@ -592,7 +607,10 @@ View = (function() {
|
|
592
607
|
if (!next.length) {
|
593
608
|
next = this.$el.find('li:first');
|
594
609
|
}
|
595
|
-
|
610
|
+
next.addClass('cur');
|
611
|
+
return this.$el.animate({
|
612
|
+
scrollTop: Math.max(0, cur.innerHeight() * (next.index() + 2) - this.$el.height())
|
613
|
+
}, 150);
|
596
614
|
};
|
597
615
|
|
598
616
|
View.prototype.prev = function() {
|
@@ -602,7 +620,10 @@ View = (function() {
|
|
602
620
|
if (!prev.length) {
|
603
621
|
prev = this.$el.find('li:last');
|
604
622
|
}
|
605
|
-
|
623
|
+
prev.addClass('cur');
|
624
|
+
return this.$el.animate({
|
625
|
+
scrollTop: Math.max(0, cur.innerHeight() * (prev.index() + 2) - this.$el.height())
|
626
|
+
}, 150);
|
606
627
|
};
|
607
628
|
|
608
629
|
View.prototype.show = function() {
|
@@ -614,6 +635,7 @@ View = (function() {
|
|
614
635
|
this.context.mark_range();
|
615
636
|
if (!this.visible()) {
|
616
637
|
this.$el.show();
|
638
|
+
this.$el.scrollTop(0);
|
617
639
|
this.context.trigger('shown');
|
618
640
|
}
|
619
641
|
if (rect = this.context.rect()) {
|
@@ -701,12 +723,14 @@ DEFAULT_CALLBACKS = {
|
|
701
723
|
return _results;
|
702
724
|
},
|
703
725
|
matcher: function(flag, subtext, should_start_with_space) {
|
704
|
-
var match, regexp;
|
726
|
+
var match, regexp, _a, _y;
|
705
727
|
flag = flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
|
706
728
|
if (should_start_with_space) {
|
707
729
|
flag = '(?:^|\\s)' + flag;
|
708
730
|
}
|
709
|
-
|
731
|
+
_a = decodeURI("%C3%80");
|
732
|
+
_y = decodeURI("%C3%BF");
|
733
|
+
regexp = new RegExp("" + flag + "([A-Za-z" + _a + "-" + _y + "0-9_\+\-]*)$|" + flag + "([^\\x00-\\xff]*)$", 'gi');
|
710
734
|
match = regexp.exec(subtext);
|
711
735
|
if (match) {
|
712
736
|
return match[2] || match[1];
|
@@ -768,22 +792,22 @@ DEFAULT_CALLBACKS = {
|
|
768
792
|
return value;
|
769
793
|
},
|
770
794
|
inserting_wrapper: function($inputor, content, suffix) {
|
771
|
-
var
|
772
|
-
|
795
|
+
var wrapped_content;
|
796
|
+
suffix = suffix === "" ? suffix : suffix || " ";
|
773
797
|
if ($inputor.is('textarea, input')) {
|
774
|
-
return '' + content +
|
798
|
+
return '' + content + suffix;
|
775
799
|
} else if ($inputor.attr('contentEditable') === 'true') {
|
776
|
-
|
800
|
+
suffix = suffix === " " ? " " : suffix;
|
777
801
|
if (/firefox/i.test(navigator.userAgent)) {
|
778
|
-
wrapped_content = "<span>" + content +
|
802
|
+
wrapped_content = "<span>" + content + suffix + "</span>";
|
779
803
|
} else {
|
780
|
-
suffix = "<span contenteditable='false'>" +
|
804
|
+
suffix = "<span contenteditable='false'>" + suffix + "</span>";
|
781
805
|
wrapped_content = "<span contenteditable='false'>" + content + suffix + "</span>";
|
782
806
|
}
|
783
807
|
if (this.app.document.selection) {
|
784
808
|
wrapped_content = "<span contenteditable='true'>" + content + "</span>";
|
785
809
|
}
|
786
|
-
return wrapped_content;
|
810
|
+
return wrapped_content + "<span></span>";
|
787
811
|
}
|
788
812
|
}
|
789
813
|
};
|
@@ -846,5 +870,6 @@ $.fn.atwho["default"] = {
|
|
846
870
|
delay: null
|
847
871
|
};
|
848
872
|
|
849
|
-
|
850
|
-
|
873
|
+
|
874
|
+
|
875
|
+
}));
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery-atwho-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ichord
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
85
|
version: '0'
|
86
86
|
requirements: []
|
87
87
|
rubyforge_project: jquery-atwho-rails
|
88
|
-
rubygems_version: 2.
|
88
|
+
rubygems_version: 2.4.2
|
89
89
|
signing_key:
|
90
90
|
specification_version: 4
|
91
91
|
summary: 'jquery plugin: @mentions'
|