jquery-ellipsis
Version:
ellipsis text depending on number of lines or number of chars
1 lines • 3.61 kB
JavaScript
function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();!function(t,e,i,n){"use strict";var s="ellipsis",o={type:"lines",count:3},r={namespace:"ellispsis",initialize:"initialize.ellipsis",initialized:"initialized.ellipsis",update:"update.ellipsis",updated:"updated.ellipsis",excerpt:"excerpt.ellipsis",excerpted:"excerpted.ellipsis"},l=function(){function i(e){var s=arguments.length>1&&arguments[1]!==n?arguments[1]:{};_classCallCheck(this,i),this.element=t(e),this.options=Object.assign({},i.DEFAULTS,s),this.text=this.element.text(),this._resizeTimeout=null,this._resizeHandler=this._updateOnResize.bind(this),this.init()}return _createClass(i,[{key:"init",value:function(){this.element.trigger(r.initialize),this.element.trigger(r.excerpt),"lines"===this.options.type?this._excerptLines(this.options.count):this._excerptChars(this.options.count),"lines"===this.options.type&&t(e).on("resize",this.element.selector,this._resizeHandler),this.element.trigger(r.initialized)}},{key:"update",value:function(){return this.element.trigger(r.update),"lines"===this.options.type?this._excerptLines(this.options.count):this._excerptChars(this.options.count),this.element.trigger(r.updated),!0}},{key:"reset",value:function(t){t.text&&(this.text=t.text),t.type&&(this.options.type=t.type),t.count&&(this.options.count=t.count),Object.keys(t).length>0&&(this.element.text(this.text),this.update())}},{key:"destroy",value:function(){t(e).off("resize",this._resizeHandler),this.element.text(this.text),this.element.off(r.namespace)}},{key:"_excerptChars",value:function(t){return t<=0?new Error("Number of chars to be shown is equal to or less than zero !!"):t>=this.text.length?null:(this.element.html(this.text.slice(0,t)+"..."),this.element.trigger(r.excerpted),!0)}},{key:"_excerptLines",value:function(t){var e=void 0,i=this.element.text(this.text).height(),n=void 0,s=0,o=this.text.length-1,l=void 0;if(e=this.element.text("w").height(),n=e*t,i<=n)return this.element.text(this.text),!1;for(;s<=o;)l=Math.floor((s+o)/2),this.element.text(this.text.slice(0,l)),this.element.height()<=n?s=l+1:o=l-1;return this.element.text(this.text.slice(0,l-3)+"..."),this.element.trigger(r.excerpted),!0}},{key:"_updateOnResize",value:function(){var t=this;clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(function(){t.update()},300)}}],[{key:"DEFAULTS",get:function(){return Object.freeze(o)}}]),i}();t.fn[s]=function(e){var i=arguments;if(e===n||"object"===("undefined"==typeof e?"undefined":_typeof(e)))return this.each(function(){t.data(this,"plugin_"+s)||t.data(this,"plugin_"+s,new l(this,e))});if("string"==typeof e&&"_"!==e[0]&&"init"!==e){var o;return this.each(function(){var n=t.data(this,"plugin_"+s);n instanceof l&&"function"==typeof n[e]&&(o=n[e].apply(n,Array.prototype.slice.call(i,1))),"destroy"===e&&t.data(this,"plugin_"+s,null)}),o!==n?o:this}},t(i).ready(function(){var e=t('[data-toggle="ellipsis"]');e.each(function(e,i){var s=t(i),o={};s.data("type")!==n&&(o.type=s.data("type")),s.data("count")!==n&&(o.count=s.data("count")),s.ellipsis(o)})})}(jQuery,window,document);