hlw-cqass-web/static/resources/common/jquery.ellipsis.min.js

29 lines
1.5 KiB
JavaScript

/*! jQuery ellipsis - v1.1.1 - 2014-02-23
* https://github.com/STAR-ZERO/jquery-ellipsis
* Copyright (c) 2014 Kenji Abe; Licensed MIT */
!function (a) {
a.fn.ellipsis = function (b) {
var c = {
row: 1, onlyFullWords: !1, 'char': '...', callback: function () {
}, position: 'tail'
};
return b = a.extend (c, b), this.each (function () {
var c = a (this), d = c.html (), e = d, f = e.length, g = c.height ();
c.html ('a');
var h = parseFloat (c.css ('lineHeight'), 10), i = c.height (), j = h > i ? h - i : 0,
k = j * (b.row - 1) + i * b.row;
if (k >= g) return c.html (d), void b.callback.call (this);
var l = 1, m = 0, n = d.length;
if ('tail' === b.position) {
for (; n > l;) m = Math.ceil ((l + n) / 2), c.html (d.slice (0, m) + b['char']), c.height () <= k ? l = m : n = m - 1;
d = d.slice (0, l), b.onlyFullWords && (d = d.replace (/[\u00AD\w\uac00-\ud7af]+$/, '')), d += b['char']
} else if ('middle' === b.position) {
for (var o = 0; n > l;) m = Math.ceil ((l + n) / 2), o = Math.max (f - m, 0), c.html (e.slice (0, Math.floor ((f - o) / 2)) + b['char'] + e.slice (Math.floor ((f + o) / 2), f)), c.height () <= k ? l = m : n = m - 1;
o = Math.max (f - l, 0);
var p = e.slice (0, Math.floor ((f - o) / 2)), q = e.slice (Math.floor ((f + o) / 2), f);
b.onlyFullWords && (p = p.replace (/[\u00AD\w\uac00-\ud7af]+$/, '')), d = p + b['char'] + q
}
c.html (d), b.callback.call (this)
}), this
}
} (jQuery);