(function(n,t){typeof define=="function"&&define.amd?define(["jquery"],t):typeof exports=="object"?module.exports=t(require("jquery")):n.jquery_dotdotdot_js=t(n.jQuery)})(this,function(n){return!function(n){"use strict";function e(){f=n(window);t={};u={};r={};n.each([t,u,r],function(n,t){t.add=function(n){n=n.split(" ");for(var i=0,r=n.length;i<r;i++)t[n[i]]=t.ddd(n[i])}});t.ddd=function(n){return"ddd-"+n};t.add("truncated keep text");u.ddd=function(n){return"ddd-"+n};u.add("text");r.ddd=function(n){return n+".ddd"};r.add("resize");e=function(){}}var i="dotdotdot",o="3.0.3",t,u,r,f;n[i]&&n[i].version>o||(n[i]=function(n,t){this.$dot=n;this.api=["getInstance","truncate","restore","destroy","watch","unwatch"];this.opts=t;var r=this.$dot.data(i);return r&&r.destroy(),this.init(),this.truncate(),this.opts.watch&&this.watch(),this},n[i].version=o,n[i].uniqueId=0,n[i].defaults={ellipsis:"… ",truncate:"word",tolerance:0,keep:null,watch:"window"},n[i].prototype={init:function(){this.watchTimeout=null;this.watchInterval=null;this.uniqueId=n[i].uniqueId++;this.originalContent=this.$dot.contents();this.originalStyle=this.$dot.attr("style")||"";this.maxHeight=this._getMaxHeight()+this.opts.tolerance;"break-word"!==this.$dot.css("word-wrap")&&this.$dot.css("word-wrap","break-word");"nowrap"===this.$dot.css("white-space")&&this.$dot.css("white-space","normal")},getInstance:function(){return this},truncate:function(){var r=this,i;return this.$inner=this.$dot.wrapInner("<div />").children().css({display:"block",height:"auto",width:"auto",border:"none",padding:0,margin:0}),this.$inner.contents().detach().end().append(this.originalContent.clone(!0)),this.$inner.find("script, style").addClass(t.keep),this.opts.keep&&this.$inner.find(this.opts.keep).addClass(t.keep),this.$inner.find("*").add(this.$inner).not("."+t.keep).contents().each(function(){var u=this,i=n(this),f;if(3==u.nodeType){if(i.prev().is("table, thead, tfoot, tr, th, td, dl, dt, dd, ul, ol, li, video"))return void i.remove();i.parent().contents().length>1&&(f=n('<span class="'+t.text+'">'+r.__getTextContent(u)+"<\/span>").css({display:"inline",height:"auto",width:"auto",border:"none",padding:0,margin:0}),i.replaceWith(f))}else 8==u.nodeType&&i.remove()}),i=this._truncateNode(this.$inner),this.$dot[i?"addClass":"removeClass"](t.truncated),this.$inner.find("*").add(this.$inner).filter("."+t.text).each(function(){n(this).replaceWith(n(this).contents())}),this.$inner.find("*").add(this.$inner).filter("."+t.keep).removeClass(t.keep),this.$inner.replaceWith(this.$inner.contents()),this.$inner=null,i},restore:function(){this.unwatch();this.$dot.contents().detach().end().append(this.originalContent).attr("style",this.originalStyle).removeClass(t.truncated)},destroy:function(){this.restore();this.$dot.data(i,null)},watch:function(){var n=this,t;this.unwatch();t={};"window"==this.opts.watch?f.on(r.resize+n.uniqueId,function(){n.watchTimeout&&clearTimeout(n.watchTimeout);n.watchTimeout=setTimeout(function(){t=n._watchSizes(t,f,"width","height")},100)}):this.watchInterval=setInterval(function(){t=n._watchSizes(t,n.$dot,"innerWidth","innerHeight")},500)},unwatch:function(){f.off(r.resize+this.uniqueId);this.watchInterval&&clearInterval(this.watchInterval);this.watchTimeout&&clearTimeout(this.watchTimeout)},_api:function(){var i=this,t={};return n.each(this.api,function(){var n=this;t[n]=function(){var r=i[n].apply(i,arguments);return"undefined"==typeof r?t:r}}),t},_truncateNode:function(i){var r=this,u=!1,f=!1;return n(i.children().get().reverse()).not("."+t.keep).each(function(){var i=(n(this).contents()[0],n(this)),e;if(!u&&!i.hasClass(t.keep)){if(i.children().length)u=r._truncateNode(i);else if(!r._fits()||f)if(e=n("<span>").css("display","none"),i.replaceWith(e),i.detach(),r._fits()){if("node"==r.opts.truncate)return!0;e.replaceWith(i);u=r._truncateWord(i);u||(f=!0,i.detach())}else e.remove();i.contents().length||i.remove()}}),u},_truncateWord:function(n){var i=n.contents()[0];if(!i)return!1;for(var t=this,o=this.__getTextContent(i),u=o.indexOf(" ")!==-1?" ":"　",f=o.split(u),e="",r=f.length;r>=0;r--){if(e=f.slice(0,r).join(u),0==r)return"letter"==t.opts.truncate&&(t.__setTextContent(i,f.slice(0,r+1).join(u)),t._truncateLetter(i));if(e.length&&(t.__setTextContent(i,t._addEllipsis(e)),t._fits()))return"letter"!=t.opts.truncate||(t.__setTextContent(i,f.slice(0,r+1).join(u)),t._truncateLetter(i))}return!1},_truncateLetter:function(n){for(var t=this,f=this.__getTextContent(n),u=f.split(""),i="",r=u.length;r>=0;r--)if(i=u.slice(0,r).join(""),i.length&&(t.__setTextContent(n,t._addEllipsis(i)),t._fits()))return!0;return!1},_fits:function(){return this.$inner.innerHeight()<=this.maxHeight},_addEllipsis:function(t){for(var i=[" ","　",",",";",".","!","?"];n.inArray(t.slice(-1),i)>-1;)t=t.slice(0,-1);return t+this.opts.ellipsis},_getMaxHeight:function(){for(var t,u,i=["height","maxHeight"],r=0,n=0;n<i.length;n++)t=window.getComputedStyle(this.$dot[0])[i[n]],"px"==t.slice(-2)&&(t=parseInt(t,10),r=r?Math.min(r,t):t);switch(this.$dot.css("boxSizing")){case"padding-box":case"border-box":for(i=["paddingTop","paddingBottom"],n=0;n<i.length;n++)u=window.getComputedStyle(this.$dot[0])[i[n]],"px"==u.slice(-2)&&(r-=parseInt(u,10))}return Math.max(r,0)},_watchSizes:function(n,t,i,r){if(this.$dot.is(":visible")){var u={width:t[i](),height:t[r]()};return n.width==u.width&&n.height==u.height||this.truncate(),u}},__getTextContent:function(n){for(var i=["nodeValue","textContent","innerText"],t=0;t<i.length;t++)if("string"==typeof n[i[t]])return n[i[t]];return""},__setTextContent:function(n,t){for(var r=["nodeValue","textContent","innerText"],i=0;i<r.length;i++)n[r[i]]=t}},n.fn[i]=function(t){return e(),t=n.extend(!0,{},n[i].defaults,t),this.each(function(){n(this).data(i,new n[i](n(this),t)._api())})})}(n),!0})