jquery-atwho-rails 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
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'
|