Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <diosmosis@users.noreply.github.com>2020-06-26 12:33:41 +0300
committerGitHub <noreply@github.com>2020-06-26 12:33:41 +0300
commitb12946909ff323ea2f7e7af04e4435d2dd503023 (patch)
tree90ae60f7755336e80a7bc6a1d538ae02c24493af /node_modules/jquery.dotdotdot
parent714503751b76436daf6533331f24e3400eb06ad1 (diff)
run npm update and include node_modules (#16079)
* update npm packages to latest * fix javascript path location * update screenshots * Add node_modules for users that do not have npm insalled but use git to deploy. * fix release checklist test * Add old chroma-js + some files missing from node_module. * remove npm install * fix .travis.yml * update expected screenshots * update submodule Co-authored-by: sgiehl <stefan@matomo.org>
Diffstat (limited to 'node_modules/jquery.dotdotdot')
-rwxr-xr-xnode_modules/jquery.dotdotdot/.npmignore9
-rw-r--r--node_modules/jquery.dotdotdot/CONTRIBUTING.md47
-rw-r--r--node_modules/jquery.dotdotdot/LICENSE.txt2
-rw-r--r--node_modules/jquery.dotdotdot/README.md25
-rw-r--r--node_modules/jquery.dotdotdot/bower.json22
-rw-r--r--node_modules/jquery.dotdotdot/composer.json18
-rw-r--r--node_modules/jquery.dotdotdot/dist/jquery.dotdotdot.js24
-rwxr-xr-xnode_modules/jquery.dotdotdot/dotdotdot.jquery.json18
-rw-r--r--node_modules/jquery.dotdotdot/gulpfile.js51
-rw-r--r--node_modules/jquery.dotdotdot/index.html249
-rw-r--r--node_modules/jquery.dotdotdot/package.json66
-rw-r--r--node_modules/jquery.dotdotdot/src/jquery.dotdotdot.js653
-rwxr-xr-xnode_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.js13
-rwxr-xr-xnode_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.umd.js24
14 files changed, 1221 insertions, 0 deletions
diff --git a/node_modules/jquery.dotdotdot/.npmignore b/node_modules/jquery.dotdotdot/.npmignore
new file mode 100755
index 0000000000..6defad6e28
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/.npmignore
@@ -0,0 +1,9 @@
+# Ignore Mac system files.
+._*
+
+# Ignore sass-cache files.
+*.sass-cache*
+*.scssc
+
+# Ignore Gulp modules
+node_modules \ No newline at end of file
diff --git a/node_modules/jquery.dotdotdot/CONTRIBUTING.md b/node_modules/jquery.dotdotdot/CONTRIBUTING.md
new file mode 100644
index 0000000000..dfeec2cfa9
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/CONTRIBUTING.md
@@ -0,0 +1,47 @@
+# Contributing to this project
+
+Please take a moment to review this document in order to make the contribution
+process easy and effective for everyone involved.
+
+
+## Using the issue tracker
+
+The issue tracker is the preferred channel for [bug reports](#bugs) and
+[features requests](#features), but please respect the following restrictions:
+
+* Please **do not** use the issue tracker for personal support requests.
+
+* Please keep the discussion **on topic** and respect the opinions of others.
+
+
+<a name="bugs"></a>
+## Bug reports
+
+A bug is a _demonstrable problem_ that is caused by the code in the repository.
+Good bug reports are extremely helpful - thank you!
+
+Guidelines for bug reports:
+
+1. **Use the GitHub issue search** &mdash; check if the issue has already been
+ reported.
+
+2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
+ latest branch in the repository.
+
+3. **Isolate the problem** &mdash; create a [reduced test
+ case](http://css-tricks.com/reduced-test-cases/) and a live example.
+
+A good bug report shouldn't leave others needing to chase you up for more
+information. Please try to be as detailed as possible in your report. What is
+your environment? What steps will reproduce the issue? What browser(s) and OS
+experience the problem? What would you expect to be the outcome? All these
+details will help people to fix any potential bugs.
+
+
+<a name="features"></a>
+## Feature requests
+
+Feature requests are welcome. But take a moment to find out whether your idea
+fits with the scope and aims of the project. It's up to *you* to make a strong
+case to convince the project's developers of the merits of this feature. Please
+provide as much detail and context as possible. \ No newline at end of file
diff --git a/node_modules/jquery.dotdotdot/LICENSE.txt b/node_modules/jquery.dotdotdot/LICENSE.txt
new file mode 100644
index 0000000000..973ccc8c1b
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/LICENSE.txt
@@ -0,0 +1,2 @@
+This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License.
+To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. \ No newline at end of file
diff --git a/node_modules/jquery.dotdotdot/README.md b/node_modules/jquery.dotdotdot/README.md
new file mode 100644
index 0000000000..c2e561fb80
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/README.md
@@ -0,0 +1,25 @@
+jQuery.dotdotdot
+================
+
+Dotdotdot is a jQuery plugin for truncating multiple line content on a webpage.
+It uses an ellipsis to indicate that there is more text than currently visible.
+Optionally, the plugin can keep a "read more" anchor visible at the end of the content, after the ellipsis.
+
+When using the jQuery.dotdotdot plugin, you don't need to worry about your HTML markup, the plugin knows its way around most elements.
+It's responsive, so when resizing the browser, the ellipsis will update on the fly.
+
+Need help? Have a look at [the documentation](http://dotdotdot.frebsite.nl).
+
+<img src="http://dotdotdot.frebsite.nl/preview.png" width="100%" border="0" />
+
+### Licence
+The jQuery.dotdotdot plugin is licensed under the [CC-BY-NC-4.0 license](http://creativecommons.org/licenses/by-nc/4.0/).<br />
+You can [purchase a license](http://dotdotdot.frebsite.nl#download) if you want to use it in a commercial project.
+
+### Dependencies
++ jQuery 1.7 or higher
+
+### Development
+This project uses [Gulp](http://gulpjs.com/) to minify the JS file.
+If you are unfamiliar with Gulp, check [this tutorial](https://travismaynard.com/writing/getting-started-with-gulp) on how to get started.<br />
+Run `gulp watch` in the command-line to put a watch on the files and run all scripts immediately after saving your changes.
diff --git a/node_modules/jquery.dotdotdot/bower.json b/node_modules/jquery.dotdotdot/bower.json
new file mode 100644
index 0000000000..4c20af9606
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/bower.json
@@ -0,0 +1,22 @@
+{
+ "name" : "jQuery.dotdotdot",
+ "version" : "3.2.3",
+ "main" : "dist/jquery.dotdotdot.js",
+ "authors" : "Fred Heusschen <info@frebsite.nl>",
+ "license" : "CC-BY-NC-4.0",
+ "description" : "Dotdotdot is an advanced jQuery plugin for truncating multiple line content with an ellipsis.",
+ "keywords" : [
+ "truncate",
+ "truncating",
+ "ellipsis",
+ "dotdotdot",
+ "multiline",
+ "text",
+ "text-overflow",
+ "overflow",
+ "dots"
+ ],
+ "dependencies" : {
+ "jquery": ">= 1.7.0"
+ }
+} \ No newline at end of file
diff --git a/node_modules/jquery.dotdotdot/composer.json b/node_modules/jquery.dotdotdot/composer.json
new file mode 100644
index 0000000000..0a2e944e46
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/composer.json
@@ -0,0 +1,18 @@
+{
+ "name" : "jQuery.dotdotdot",
+ "version" : "3.2.3",
+ "authors" : "Fred Heusschen <info@frebsite.nl>",
+ "license" : "CC-BY-NC-4.0",
+ "description" : "Dotdotdot is an advanced jQuery plugin for truncating multiple line content with an ellipsis.",
+ "keywords" : [
+ "truncate",
+ "truncating",
+ "ellipsis",
+ "dotdotdot",
+ "multiline",
+ "text",
+ "text-overflow",
+ "overflow",
+ "dots"
+ ]
+} \ No newline at end of file
diff --git a/node_modules/jquery.dotdotdot/dist/jquery.dotdotdot.js b/node_modules/jquery.dotdotdot/dist/jquery.dotdotdot.js
new file mode 100644
index 0000000000..5c5b2961bc
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/dist/jquery.dotdotdot.js
@@ -0,0 +1,24 @@
+;(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], factory);
+ } else if (typeof exports === 'object') {
+ module.exports = factory(require('jquery'));
+ } else {
+ root.jquery_dotdotdot_js = factory(root.jQuery);
+ }
+}(this, function(jQuery) {
+/*
+ * jQuery dotdotdot 3.2.3
+ * @requires jQuery 1.7.0 or later
+ *
+ * dotdotdot.frebsite.nl
+ *
+ * Copyright (c) Fred Heusschen
+ * www.frebsite.nl
+ *
+ * License: CC-BY-NC-4.0
+ * http://creativecommons.org/licenses/by-nc/4.0/
+ */
+!function(a){"use strict";var d,t,n,s,o="dotdotdot",e="3.2.3";a[o]&&a[o].version>e||(a[o]=function(t,e){this.$dot=t,this.api=["getInstance","truncate","restore","destroy","watch","unwatch"],this.opts=e;var i=this.$dot.data(o);return i&&i.destroy(),this.init(),this.truncate(),this.opts.watch&&this.watch(),this},a[o].version=e,a[o].uniqueId=0,a[o].defaults={ellipsis:"… ",callback:function(t){},truncate:"word",tolerance:0,keep:null,watch:"window",height:null},a[o].prototype={init:function(){this.watchTimeout=null,this.watchInterval=null,this.uniqueId=a[o].uniqueId++,this.originalStyle=this.$dot.attr("style")||"",this.originalContent=this._getOriginalContent(),"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"),null===this.opts.height&&(this.opts.height=this._getMaxHeight()),"string"==typeof this.opts.ellipsis&&(this.opts.ellipsis=document.createTextNode(this.opts.ellipsis))},getInstance:function(){return this},truncate:function(){this.$inner=this.$dot.wrapInner("<div />").children().css({display:"block",height:"auto",width:"auto",border:"none",padding:0,margin:0}),this.$inner.empty().append(this.originalContent.clone(!0)),this.maxHeight=this._getMaxHeight();var t=!1;return this._fits()||(t=!0,this._truncateToNode(this.$inner[0])),this.$dot[t?"addClass":"removeClass"](d.truncated),this.$inner.replaceWith(this.$inner.contents()),this.$inner=null,this.opts.callback.call(this.$dot[0],t),t},restore:function(){this.unwatch(),this.$dot.empty().append(this.originalContent).attr("style",this.originalStyle).removeClass(d.truncated)},destroy:function(){this.restore(),this.$dot.data(o,null)},watch:function(){var e=this;this.unwatch();var i={};"window"==this.opts.watch?s.on(n.resize+e.uniqueId,function(t){e.watchTimeout&&clearTimeout(e.watchTimeout),e.watchTimeout=setTimeout(function(){i=e._watchSizes(i,s,"width","height")},100)}):this.watchInterval=setInterval(function(){i=e._watchSizes(i,e.$dot,"innerWidth","innerHeight")},500)},unwatch:function(){s.off(n.resize+this.uniqueId),this.watchInterval&&clearInterval(this.watchInterval),this.watchTimeout&&clearTimeout(this.watchTimeout)},_api:function(){var i=this,n={};return a.each(this.api,function(t){var e=this;n[e]=function(){var t=i[e].apply(i,arguments);return void 0===t?n:t}}),n},_truncateToNode:function(t){var i=[],n=[];if(a(t).contents().each(function(){var t=a(this);if(!t.hasClass(d.keep)){var e=document.createComment("");t.replaceWith(e),n.push(this),i.push(e)}}),n.length){for(var e=0;e<n.length;e++){a(i[e]).replaceWith(n[e]),a(n[e]).append(this.opts.ellipsis);var s=this._fits();if(a(this.opts.ellipsis,n[e]).remove(),!s){if("node"==this.opts.truncate&&1<e)return void a(n[e-2]).remove();break}}for(var o=e;o<i.length;o++)a(i[o]).remove();var r=n[Math.max(0,Math.min(e,n.length-1))];if(1==r.nodeType){var h=a("<"+r.nodeName+" />");h.append(this.opts.ellipsis),a(r).replaceWith(h),this._fits()?h.replaceWith(r):(h.remove(),r=n[Math.max(0,e-1)])}1==r.nodeType?this._truncateToNode(r):this._truncateToWord(r)}},_truncateToWord:function(t){for(var e=t,i=this,n=this.__getTextContent(e),s=-1!==n.indexOf(" ")?" ":" ",o=n.split(s),r="",h=o.length;0<=h;h--)if(r=o.slice(0,h).join(s),i.__setTextContent(e,i._addEllipsis(r)),i._fits()){"letter"==i.opts.truncate&&(i.__setTextContent(e,o.slice(0,h+1).join(s)),i._truncateToLetter(e));break}},_truncateToLetter:function(t){for(var e=this,i=this.__getTextContent(t).split(""),n="",s=i.length;0<=s&&(!(n=i.slice(0,s).join("")).length||(e.__setTextContent(t,e._addEllipsis(n)),!e._fits()));s--);},_fits:function(){return this.$inner.innerHeight()<=this.maxHeight+this.opts.tolerance},_addEllipsis:function(t){for(var e=[" "," ",",",";",".","!","?"];-1<a.inArray(t.slice(-1),e);)t=t.slice(0,-1);return t+=this.__getTextContent(this.opts.ellipsis)},_getOriginalContent:function(){var i=this;return this.$dot.find("script, style").addClass(d.keep),this.opts.keep&&this.$dot.find(this.opts.keep).addClass(d.keep),this.$dot.find("*").not("."+d.keep).add(this.$dot).contents().each(function(){var t=this,e=a(this);if(3==t.nodeType){if(""==a.trim(i.__getTextContent(t))){if(e.parent().is("table, thead, tbody, tfoot, tr, dl, ul, ol, video"))return void e.remove();if(e.prev().is("div, p, table, td, td, dt, dd, li"))return void e.remove();if(e.next().is("div, p, table, td, td, dt, dd, li"))return void e.remove();if(!e.prev().length)return void e.remove();if(!e.next().length)return void e.remove()}}else 8==t.nodeType&&e.remove()}),this.$dot.contents()},_getMaxHeight:function(){if("number"==typeof this.opts.height)return this.opts.height;for(var t=["maxHeight","height"],e=0,i=0;i<t.length;i++)if("px"==(e=window.getComputedStyle(this.$dot[0])[t[i]]).slice(-2)){e=parseFloat(e);break}t=[];switch(this.$dot.css("boxSizing")){case"border-box":t.push("borderTopWidth"),t.push("borderBottomWidth");case"padding-box":t.push("paddingTop"),t.push("paddingBottom")}for(i=0;i<t.length;i++){var n=window.getComputedStyle(this.$dot[0])[t[i]];"px"==n.slice(-2)&&(e-=parseFloat(n))}return Math.max(e,0)},_watchSizes:function(t,e,i,n){if(this.$dot.is(":visible")){var s={width:e[i](),height:e[n]()};return t.width==s.width&&t.height==s.height||this.truncate(),s}return t},__getTextContent:function(t){for(var e=["nodeValue","textContent","innerText"],i=0;i<e.length;i++)if("string"==typeof t[e[i]])return t[e[i]];return""},__setTextContent:function(t,e){for(var i=["nodeValue","textContent","innerText"],n=0;n<i.length;n++)t[i[n]]=e}},a.fn[o]=function(t){return i(),t=a.extend(!0,{},a[o].defaults,t),this.each(function(){a(this).data(o,new a[o](a(this),t)._api())})});function i(){s=a(window),d={},t={},n={},a.each([d,t,n],function(t,n){n.add=function(t){for(var e=0,i=(t=t.split(" ")).length;e<i;e++)n[t[e]]=n.ddd(t[e])}}),d.ddd=function(t){return"ddd-"+t},d.add("truncated keep"),t.ddd=function(t){return"ddd-"+t},n.ddd=function(t){return t+".ddd"},n.add("resize"),i=function(){}}}(jQuery);
+return true;
+}));
diff --git a/node_modules/jquery.dotdotdot/dotdotdot.jquery.json b/node_modules/jquery.dotdotdot/dotdotdot.jquery.json
new file mode 100755
index 0000000000..f3b46de7aa
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/dotdotdot.jquery.json
@@ -0,0 +1,18 @@
+{
+ "name": "dotdotdot",
+ "version": "1.8.3",
+ "title": "jQuery dotdotdot",
+ "description": "A jQuery plugin for advanced cross-browser ellipsis on multiple line content.",
+ "homepage": "http://dotdotdot.frebsite.nl",
+ "author": {
+ "name": "Fred Heusschen",
+ "url": "http://www.frebsite.nl"
+ },
+ "licenses": [{
+ "type": "MIT",
+ "url": "http://opensource.org/licenses/MIT"
+ }],
+ "dependencies": {
+ "jquery": ">= 1.4.3"
+ }
+}
diff --git a/node_modules/jquery.dotdotdot/gulpfile.js b/node_modules/jquery.dotdotdot/gulpfile.js
new file mode 100644
index 0000000000..5e784f0438
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/gulpfile.js
@@ -0,0 +1,51 @@
+// npm install
+
+var gulp = require( 'gulp' ),
+ uglify = require( 'gulp-uglify' ),
+ umd = require( 'gulp-umd' );
+
+
+
+// Default task 'gulp': Runs JS tasks
+gulp.task( 'default', function(){
+ return runJSTasks();
+});
+
+
+
+// Watch task 'gulp watch': Starts a watch on JS tasks
+gulp.task( 'watch', function() {
+ gulp.watch( 'src/*.js', [ 'js' ] );
+});
+
+
+
+// JS task 'gulp js': Runs all JS tasks
+gulp.task( 'js', function() {
+ return runJSTasks();
+});
+
+function runJSTasks(){
+ return gulp.src( 'src/jquery.dotdotdot.js' )
+ .pipe( uglify({ output : {
+ comments: '/License/'
+ }
+ }) )
+ .pipe( umd({
+ dependencies: function() { return [ {
+ name : 'jquery',
+ global : 'jQuery',
+ param : 'jQuery'
+ } ]; },
+ exports: function() { return true; },
+ namespace: sanitizeNamespaceForUmd
+ }))
+ .pipe( gulp.dest( 'dist' ) );
+}
+
+function sanitizeNamespaceForUmd( file ) {
+ path = file.path.split( '\\' ).join( '/' ).split( '/' );
+ path = path[ path.length - 1 ];
+ return path.split( '.' ).join( '_' );
+}
+
diff --git a/node_modules/jquery.dotdotdot/index.html b/node_modules/jquery.dotdotdot/index.html
new file mode 100644
index 0000000000..65665f49f9
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/index.html
@@ -0,0 +1,249 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta charset="utf-8" />
+ <meta name="author" content="www.frebsite.nl" />
+
+ <title>dotdotdot, jQuery plugin for multiple line content ellipsis.</title>
+ <style type="text/css" media="all">
+ html,
+ body {
+ padding: 0;
+ margin: 0;
+ }
+
+ body {
+ background-color: #eed;
+ font-family: Arial, Helvetica, Verdana;
+ line-height: 20px;
+ color: #222538;
+ padding: 50px;
+
+ -webkit-text-size-adjust: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+ }
+
+ :first-child {
+ margin-top: 0;
+ }
+ :last-child {
+ margin-bottom: 0;
+ }
+
+ p {
+ margin: 10px 0;
+ }
+
+
+ a {
+ color: inherit;
+ text-decoration: underline;
+ }
+
+ .wrapper {
+ box-sizing: border-box;
+ width: 80%;
+ max-width: 600px;
+ min-width: 220px;
+ margin: 0 auto;
+ }
+
+ .example {
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3);
+ background: #222538;
+ background: -webkit-linear-gradient(bottom left,#222538,#46454d);
+ background: linear-gradient(to top right,#222538,#46454d);
+
+ color: #eed;
+ font-size: 20px;
+ line-height: 30px;
+ padding: 50px;
+ margin: 50px -50px;
+ overflow: hidden;
+ }
+ .example > div {
+ max-height: 250px;
+ }
+
+ /* readable pathnames */
+ .example ul,
+ .example ol,
+ .example li {
+ display: block;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ }
+ .example li {
+ height: 35px;
+ padding: 7px 0;
+ }
+ .example li + li {
+ border-top: 1px solid rgba( 255, 255, 255, 0.2 );
+ }
+
+ /* toggle full story */
+ .example > .full-story {
+ max-height: initial;
+ }
+ .example .toggle:before {
+ content: 'Show more';
+ }
+ .example > .full-story .toggle:before {
+ content: 'Show less';
+ }
+ }
+ </style>
+</head>
+
+<body>
+ <br />
+ <br />
+ <div class="wrapper">
+ <div>
+ <h1>jQuery.dotdotdot</h1>
+ <p>jQuery plugin for truncating multiple line content on a webpage.<br />
+ Resize your browser to see the examples below in action.</p>
+ <p>Documentation: <a href="http://dotdotdot.frebsite.nl" target="_blank">dotdotdot.frebsite.nl</a></p>
+ </div>
+
+ <div class="example">
+ <div id="xmpl-1">
+ <h3>Truncate multiple line content</h3>
+ <p><em>Lorem Ipsum</em> is simply <strong>dummy text</strong> of the printing and typesetting industry.
+ It has been the industry's standard dummy text ever <strong>since the 1500s</strong>, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
+ <em>Lorem Ipsum</em> has survived not only <strong>five centuries</strong>, but also the leap into <strong>electronic typesetting</strong>, remaining essentially unchanged.
+ <a href="#/" class="read-more">Read more &raquo;</a></p>
+ </div>
+ </div>
+
+ <div class="example">
+ <div id="xmpl-2">
+ <h3>Truncate to readable pathnames</h3>
+ <ol>
+ <li>file:///users/your-name/desktop/project/website/htdocs/index.html</li>
+ <li>file:///users/your-name/desktop/project/website/htdocs/css/style.css</li>
+ <li>file:///users/your-name/desktop/project/website/htdocs/css/layout.css</li>
+ </ol>
+ </div>
+ </div>
+
+ <div class="example">
+ <div id="xmpl-3">
+ <h3>Toggle full story</h3>
+ <p><em>Lorem Ipsum</em> is simply <strong>dummy text</strong> of the printing and typesetting industry.
+ It has been the industry's standard dummy text ever <strong>since the 1500s</strong>, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
+ <em>Lorem Ipsum</em> has survived not only <strong>five centuries</strong>, but also the leap into <strong>electronic typesetting</strong>, remaining essentially unchanged.</p>
+ <a class="toggle" href="#"></a>
+ </div>
+ </div>
+
+ </div>
+
+
+ <script src="http://code.jquery.com/jquery-3.2.1.js"></script>
+ <script src="dist/jquery.dotdotdot.js"></script>
+ <script>
+ $(function() {
+
+ /*
+ Basic example
+ */
+ $('#xmpl-1').dotdotdot({
+
+ // Prevents the <a class="read-more" /> from being removed
+ keep: '.read-more'
+ });
+
+
+
+ /*
+ Truncate to readable pathnames example
+ */
+ $('#xmpl-2')
+ .find( 'li' )
+ .each(
+ function()
+ {
+ var $t = $(this);
+
+ // Wrap each folder in a <span />
+ $t.html( '<span>' + $t.html().split( '/' ).join( '</span><span>/' ) + '</span>' );
+
+ // Add the class "file" to the last <span />
+ $t.children().last().addClass( 'file' );
+
+ $t.dotdotdot({
+
+ // Add a slash before the ellipsis
+ ellipsis: '/\u2026',
+
+ // Prevents the <span class="file" /> from being removed
+ keep: '.file'
+ });
+ }
+ );
+
+
+
+ /*
+ Toggle full story example
+ */
+ var $xmpl = $('#xmpl-3');
+ $xmpl.dotdotdot({
+
+ // Prevents the <a class="toggle" /> from being removed
+ keep: '.toggle'
+
+ })
+
+ // Get the dotdotdot API
+ var api = $xmpl.data( 'dotdotdot' );
+
+ $xmpl.on(
+ 'click',
+ '.toggle',
+ function( e )
+ {
+ e.preventDefault();
+
+ // When truncated, restore
+ if ( $xmpl.hasClass( 'ddd-truncated' ) )
+ {
+ api.restore();
+ $xmpl.addClass( 'full-story' );
+ }
+
+ // Not truncated, truncate
+ else
+ {
+ $xmpl.removeClass( 'full-story' );
+ api.truncate();
+ api.watch();
+ }
+ }
+ );
+
+
+
+ /*
+ For the demos
+ */
+ $('body').on(
+ 'click',
+ 'a[href^="#/"]',
+ function( e )
+ {
+ alert( 'Thank you for clicking, but that\'s a demo link.' );
+ return;
+ }
+ );
+
+
+ });
+ </script>
+</body>
+
+</html>
diff --git a/node_modules/jquery.dotdotdot/package.json b/node_modules/jquery.dotdotdot/package.json
new file mode 100644
index 0000000000..858ae7087d
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/package.json
@@ -0,0 +1,66 @@
+{
+ "_args": [
+ [
+ "jquery.dotdotdot@3.2.3",
+ "/Users/benakamoorthi/Projects/matomo"
+ ]
+ ],
+ "_from": "jquery.dotdotdot@3.2.3",
+ "_id": "jquery.dotdotdot@3.2.3",
+ "_inBundle": false,
+ "_integrity": "sha512-VjsZftD2iyEErvkXMfkj3elPv1rAwFioUK/mHiur8zZTRr8dMv2eDluQjFmk+qOHVDLaqgeSHQR7ipq74f4MeA==",
+ "_location": "/jquery.dotdotdot",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "jquery.dotdotdot@3.2.3",
+ "name": "jquery.dotdotdot",
+ "escapedName": "jquery.dotdotdot",
+ "rawSpec": "3.2.3",
+ "saveSpec": null,
+ "fetchSpec": "3.2.3"
+ },
+ "_requiredBy": [
+ "/"
+ ],
+ "_resolved": "https://registry.npmjs.org/jquery.dotdotdot/-/jquery.dotdotdot-3.2.3.tgz",
+ "_spec": "3.2.3",
+ "_where": "/Users/benakamoorthi/Projects/matomo",
+ "author": {
+ "name": "Fred Heusschen",
+ "email": "info@frebsite.nl"
+ },
+ "bugs": {
+ "url": "https://github.com/FrDH/jQuery.dotdotdot/issues"
+ },
+ "description": "Dotdotdot is an advanced jQuery plugin for truncating multiple line content with an ellipsis.",
+ "devDependencies": {
+ "gulp": "^4.0.0",
+ "gulp-uglify": "^3.0.1",
+ "gulp-umd": "^2.0.0"
+ },
+ "homepage": "https://github.com/FrDH/jQuery.dotdotdot#readme",
+ "keywords": [
+ "truncate",
+ "truncating",
+ "ellipsis",
+ "dotdotdot",
+ "multiline",
+ "text",
+ "text-overflow",
+ "overflow",
+ "dots"
+ ],
+ "license": "CC-BY-NC-4.0",
+ "main": "dist/jquery.dotdotdot.js",
+ "name": "jquery.dotdotdot",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/FrDH/jQuery.dotdotdot.git"
+ },
+ "scripts": {
+ "build": "gulp default"
+ },
+ "version": "3.2.3"
+}
diff --git a/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.js b/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.js
new file mode 100644
index 0000000000..86eb5e4946
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.js
@@ -0,0 +1,653 @@
+/*
+ * jQuery dotdotdot 3.2.3
+ * @requires jQuery 1.7.0 or later
+ *
+ * dotdotdot.frebsite.nl
+ *
+ * Copyright (c) Fred Heusschen
+ * www.frebsite.nl
+ *
+ * License: CC-BY-NC-4.0
+ * http://creativecommons.org/licenses/by-nc/4.0/
+ */
+
+(function( $ ) {
+ 'use strict';
+
+ var _PLUGIN_ = 'dotdotdot';
+ var _VERSION_ = '3.2.3';
+
+ if ( $[ _PLUGIN_ ] && $[ _PLUGIN_ ].version > _VERSION_ )
+ {
+ return;
+ }
+
+
+
+ /*
+ The class
+ */
+ $[ _PLUGIN_ ] = function( $container, opts )
+ {
+ this.$dot = $container;
+ this.api = [ 'getInstance', 'truncate', 'restore', 'destroy', 'watch', 'unwatch' ];
+ this.opts = opts;
+
+ var oldAPI = this.$dot.data( _PLUGIN_ );
+ if ( oldAPI )
+ {
+ oldAPI.destroy();
+ }
+
+ this.init();
+ this.truncate();
+
+ if ( this.opts.watch )
+ {
+ this.watch();
+ }
+
+ return this;
+ };
+
+ $[ _PLUGIN_ ].version = _VERSION_;
+ $[ _PLUGIN_ ].uniqueId = 0;
+
+ $[ _PLUGIN_ ].defaults = {
+ ellipsis : '\u2026 ',
+ callback : function( isTruncated ) {},
+ truncate : 'word',
+ tolerance : 0,
+ keep : null,
+ watch : 'window',
+ height : null
+ };
+
+
+ $[ _PLUGIN_ ].prototype = {
+
+ init: function()
+ {
+ this.watchTimeout = null;
+ this.watchInterval = null;
+ this.uniqueId = $[ _PLUGIN_ ].uniqueId++;
+ this.originalStyle = this.$dot.attr( 'style' ) || '';
+ this.originalContent = this._getOriginalContent();
+
+ if ( this.$dot.css( 'word-wrap' ) !== 'break-word' )
+ {
+ this.$dot.css( 'word-wrap', 'break-word' );
+ }
+ if ( this.$dot.css( 'white-space' ) === 'nowrap' )
+ {
+ this.$dot.css( 'white-space', 'normal' );
+ }
+
+ if ( this.opts.height === null )
+ {
+ this.opts.height = this._getMaxHeight();
+ }
+
+ if ( typeof this.opts.ellipsis == 'string' )
+ {
+ this.opts.ellipsis = document.createTextNode( this.opts.ellipsis );
+ }
+ },
+
+ getInstance: function()
+ {
+ return this;
+ },
+
+ truncate: function()
+ {
+ var that = this;
+
+
+ // Add inner node for measuring the height
+ this.$inner = this.$dot
+ .wrapInner( '<div />' )
+ .children()
+ .css({
+ 'display' : 'block',
+ 'height' : 'auto',
+ 'width' : 'auto',
+ 'border' : 'none',
+ 'padding' : 0,
+ 'margin' : 0
+ });
+
+
+ // Set original content
+ this.$inner
+ .empty()
+ .append( this.originalContent.clone( true ) );
+
+
+ // Get max height
+ this.maxHeight = this._getMaxHeight();
+
+
+ // Truncate the text
+ var isTruncated = false;
+ if ( !this._fits() )
+ {
+ isTruncated = true;
+ this._truncateToNode( this.$inner[ 0 ] );
+ }
+
+ this.$dot[ isTruncated ? 'addClass' : 'removeClass' ]( _c.truncated );
+
+
+ // Remove inner node
+ this.$inner.replaceWith( this.$inner.contents() );
+ this.$inner = null;
+
+
+ // Callback
+ this.opts.callback.call( this.$dot[ 0 ], isTruncated );
+
+ return isTruncated;
+ },
+
+ restore: function()
+ {
+ this.unwatch();
+
+ this.$dot
+ .empty()
+ .append( this.originalContent )
+ .attr( 'style', this.originalStyle )
+ .removeClass( _c.truncated );
+ },
+
+ destroy: function()
+ {
+ this.restore();
+ this.$dot.data( _PLUGIN_, null );
+ },
+
+ watch: function()
+ {
+ var that = this;
+
+ this.unwatch();
+
+ var oldSizes = {};
+
+ if ( this.opts.watch == 'window' )
+ {
+ $wndw.on(
+ _e.resize + that.uniqueId,
+ function( e )
+ {
+ if ( that.watchTimeout )
+ {
+ clearTimeout( that.watchTimeout );
+ }
+ that.watchTimeout = setTimeout(
+ function() {
+
+ oldSizes = that._watchSizes( oldSizes, $wndw, 'width', 'height' );
+
+ }, 100
+ );
+ }
+ );
+
+ }
+ else
+ {
+ this.watchInterval = setInterval(
+ function()
+ {
+ oldSizes = that._watchSizes( oldSizes, that.$dot, 'innerWidth', 'innerHeight' );
+
+ }, 500
+ );
+ }
+ },
+
+ unwatch: function()
+ {
+ $wndw.off( _e.resize + this.uniqueId );
+
+ if ( this.watchInterval )
+ {
+ clearInterval( this.watchInterval );
+ }
+
+ if ( this.watchTimeout )
+ {
+ clearTimeout( this.watchTimeout );
+ }
+ },
+
+ _api: function()
+ {
+ var that = this,
+ api = {};
+
+ $.each( this.api,
+ function( i )
+ {
+ var fn = this;
+ api[ fn ] = function()
+ {
+ var re = that[ fn ].apply( that, arguments );
+ return ( typeof re == 'undefined' ) ? api : re;
+ };
+ }
+ );
+ return api;
+ },
+
+ _truncateToNode: function( _elem )
+ {
+
+ var that = this;
+
+ var _coms = [],
+ _elms = [];
+
+ // Empty the node
+ // -> replace all contents with comments
+ $(_elem)
+ .contents()
+ .each(
+ function()
+ {
+ var $e = $(this);
+ if ( !$e.hasClass( _c.keep ) )
+ {
+ var c = document.createComment( '' );
+ $e.replaceWith( c );
+
+ _elms.push( this );
+ _coms.push( c );
+ }
+ }
+ );
+
+ if ( !_elms.length )
+ {
+ return;
+ }
+
+ // Re-fill the node
+ // -> replace comments with contents until it doesn't fit anymore
+ for ( var e = 0; e < _elms.length; e++ )
+ {
+
+ $(_coms[ e ]).replaceWith( _elms[ e ] );
+
+ $(_elms[ e ]).append( this.opts.ellipsis );
+ var fits = this._fits();
+ $(this.opts.ellipsis, _elms[ e ]).remove();
+
+ if ( !fits )
+ {
+ if ( this.opts.truncate == 'node' && e > 1 )
+ {
+ $(_elms[ e - 2 ]).remove();
+ return;
+ }
+ break;
+ }
+ }
+
+ // Remove left over comments
+ for ( var c = e; c < _coms.length; c++ )
+ {
+ $(_coms[ c ]).remove();
+ }
+
+ // Get last node
+ // -> the node that overflows
+
+ var _last = _elms[ Math.max( 0, Math.min( e, _elms.length - 1 ) ) ];
+
+ // Border case
+ // -> the last node with only an ellipsis in it...
+ if ( _last.nodeType == 1 )
+ {
+
+ var $e = $('<' + _last.nodeName + ' />');
+ $e.append( this.opts.ellipsis );
+
+ $(_last).replaceWith( $e );
+
+ // ... fits
+ // -> Restore the full last node
+ if ( this._fits() )
+ {
+ $e.replaceWith( _last );
+ }
+
+ // ... doesn't fit
+ // -> remove it and go back one node
+ else
+ {
+ $e.remove();
+ _last = _elms[ Math.max( 0, e - 1 ) ];
+ }
+ }
+
+ // Proceed inside last node
+ if ( _last.nodeType == 1 )
+ {
+ this._truncateToNode( _last );
+ }
+ else
+ {
+ this._truncateToWord( _last );
+ }
+ },
+
+ _truncateToWord: function( _elem )
+ {
+
+ var e = _elem;
+
+ var that = this;
+
+ var txt = this.__getTextContent( e ),
+ sep = ( txt.indexOf( ' ' ) !== -1 ) ? ' ' : '\u3000',
+ arr = txt.split( sep ),
+ str = '';
+
+ for ( var a = arr.length; a >= 0; a-- )
+ {
+ str = arr.slice( 0, a ).join( sep );
+
+ that.__setTextContent( e, that._addEllipsis( str ) );
+
+ if ( that._fits() )
+ {
+ if ( that.opts.truncate == 'letter' )
+ {
+ that.__setTextContent( e, arr.slice( 0, a + 1 ).join( sep ) );
+ that._truncateToLetter( e );
+ }
+ break;
+ }
+ }
+ },
+
+ _truncateToLetter: function( e )
+ {
+ var that = this;
+
+ var txt = this.__getTextContent( e ),
+ arr = txt.split( '' ),
+ str = '';
+
+ for ( var a = arr.length; a >= 0; a-- )
+ {
+ str = arr.slice( 0, a ).join( '' );
+
+ if ( !str.length )
+ {
+ continue;
+ }
+
+ that.__setTextContent( e, that._addEllipsis( str ) );
+
+ if ( that._fits() )
+ {
+ break;
+ }
+ }
+ },
+
+ _fits: function()
+ {
+ return ( this.$inner.innerHeight() <= this.maxHeight + this.opts.tolerance );
+ },
+
+ _addEllipsis: function( txt )
+ {
+ var remove = [' ', '\u3000', ',', ';', '.', '!', '?'];
+
+ while ( $.inArray( txt.slice( -1 ), remove ) > -1 )
+ {
+ txt = txt.slice( 0, -1 );
+ }
+ txt += this.__getTextContent( this.opts.ellipsis );
+
+ return txt;
+ },
+
+ _getOriginalContent: function()
+ {
+ var that = this;
+
+ // Add "keep" class to nodes to keep
+ this.$dot
+ .find( 'script, style' )
+ .addClass( _c.keep );
+
+ if ( this.opts.keep )
+ {
+ this.$dot
+ .find( this.opts.keep )
+ .addClass( _c.keep );
+ }
+
+ // Filter out unneeded whitespace
+ this.$dot
+ .find( '*' )
+ .not( '.' + _c.keep )
+ .add( this.$dot )
+ .contents()
+ .each(
+ function()
+ {
+
+ var e = this,
+ $e = $(this);
+
+ // Text nodes
+ if ( e.nodeType == 3 )
+ {
+
+ // Remove whitespace where it does not take up space in the DOM
+ if ( $.trim( that.__getTextContent( e ) ) == '' )
+ {
+ if ( $e.parent().is( 'table, thead, tbody, tfoot, tr, dl, ul, ol, video' ) )
+ {
+ $e.remove();
+ return;
+ }
+ if ( $e.prev().is( 'div, p, table, td, td, dt, dd, li' ) )
+ {
+ $e.remove();
+ return;
+ }
+ if ( $e.next().is( 'div, p, table, td, td, dt, dd, li' ) )
+ {
+ $e.remove();
+ return;
+ }
+ if ( !$e.prev().length )
+ {
+ $e.remove();
+ return;
+ }
+ if ( !$e.next().length )
+ {
+ $e.remove();
+ return;
+ }
+ }
+ }
+
+ // Comment nodes
+ else if ( e.nodeType == 8 )
+ {
+ $e.remove();
+ }
+
+ }
+ );
+
+ return this.$dot.contents();
+ },
+
+ _getMaxHeight: function()
+ {
+ if ( typeof this.opts.height == 'number' )
+ {
+ return this.opts.height;
+ }
+
+ // Find smallest CSS height
+ var arr = [ 'maxHeight', 'height' ],
+ hgh = 0;
+
+ for ( var a = 0; a < arr.length; a++ )
+ {
+ hgh = window.getComputedStyle( this.$dot[ 0 ] )[ arr[ a ] ];
+ if ( hgh.slice( -2 ) == 'px' )
+ {
+ hgh = parseFloat( hgh );
+ break;
+ }
+ }
+
+ // Remove padding-top/bottom when needed.
+ var arr = [];
+ switch ( this.$dot.css( 'boxSizing' ) )
+ {
+ case 'border-box':
+ arr.push( 'borderTopWidth' );
+ arr.push( 'borderBottomWidth' );
+ // no break -> padding needs to be added too
+
+ case 'padding-box':
+ arr.push( 'paddingTop' );
+ arr.push( 'paddingBottom' );
+ break;
+ }
+ for ( var a = 0; a < arr.length; a++ )
+ {
+ var p = window.getComputedStyle( this.$dot[ 0 ] )[ arr[ a ] ];
+ if ( p.slice( -2 ) == 'px' )
+ {
+ hgh -= parseFloat( p );
+ }
+ }
+
+ // Sanitize
+ return Math.max( hgh, 0 );
+ },
+
+ _watchSizes: function( oldSizes, $elem, width, height )
+ {
+ if ( this.$dot.is( ':visible' ) )
+ {
+ var newSizes = {
+ 'width' : $elem[ width ](),
+ 'height' : $elem[ height ]()
+ };
+
+ if ( oldSizes.width != newSizes.width || oldSizes.height != newSizes.height )
+ {
+ this.truncate();
+ }
+
+ return newSizes;
+ }
+ return oldSizes;
+ },
+
+ __getTextContent: function( elem )
+ {
+ var arr = [ 'nodeValue', 'textContent', 'innerText' ];
+ for ( var a = 0; a < arr.length; a++ )
+ {
+ if ( typeof elem[ arr[ a ] ] == 'string' )
+ {
+ return elem[ arr[ a ] ];
+ }
+ }
+ return '';
+ },
+ __setTextContent: function( elem, content )
+ {
+ var arr = [ 'nodeValue', 'textContent', 'innerText' ];
+ for ( var a = 0; a < arr.length; a++ )
+ {
+ elem[ arr[ a ] ] = content;
+ }
+ }
+ };
+
+
+
+ /*
+ The jQuery plugin
+ */
+ $.fn[ _PLUGIN_ ] = function( opts )
+ {
+ initPlugin();
+
+ opts = $.extend( true, {}, $[ _PLUGIN_ ].defaults, opts );
+
+ return this.each(
+ function()
+ {
+ $(this).data( _PLUGIN_, new $[ _PLUGIN_ ]( $(this), opts )._api() );
+ }
+ );
+ };
+
+
+
+ /*
+ Global variables
+ */
+ var _c, _d, _e, $wndw;
+
+ function initPlugin()
+ {
+ $wndw = $(window);
+
+ // Classnames, Datanames, Eventnames
+ _c = {};
+ _d = {};
+ _e = {};
+
+ $.each( [ _c, _d, _e ],
+ function( i, o )
+ {
+ o.add = function( a )
+ {
+ a = a.split( ' ' );
+ for ( var b = 0, l = a.length; b < l; b++ )
+ {
+ o[ a[ b ] ] = o.ddd( a[ b ] );
+ }
+ };
+ }
+ );
+
+ // Classnames
+ _c.ddd = function( c ) { return 'ddd-' + c; };
+ _c.add( 'truncated keep' );
+
+ // Datanames
+ _d.ddd = function( d ) { return 'ddd-' + d; };
+
+ // Eventnames
+ _e.ddd = function( e ) { return e + '.ddd'; };
+ _e.add( 'resize' );
+
+
+ // Only once
+ initPlugin = function() {};
+
+ }
+
+
+})( jQuery );
diff --git a/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.js b/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.js
new file mode 100755
index 0000000000..69f4838622
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.js
@@ -0,0 +1,13 @@
+/*
+ * jQuery dotdotdot 1.8.3
+ *
+ * Copyright (c) Fred Heusschen
+ * www.frebsite.nl
+ *
+ * Plugin website:
+ * dotdotdot.frebsite.nl
+ *
+ * Licensed under the MIT license.
+ * http://en.wikipedia.org/wiki/MIT_License
+ */
+!function(t,e){function n(t,e,n){var r=t.children(),o=!1;t.empty();for(var i=0,d=r.length;d>i;i++){var l=r.eq(i);if(t.append(l),n&&t.append(n),a(t,e)){l.remove(),o=!0;break}n&&n.detach()}return o}function r(e,n,i,d,l){var s=!1,c="a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style",u="script, .dotdotdot-keep";return e.contents().detach().each(function(){var h=this,f=t(h);if("undefined"==typeof h)return!0;if(f.is(u))e.append(f);else{if(s)return!0;e.append(f),!l||f.is(d.after)||f.find(d.after).length||e[e.is(c)?"after":"append"](l),a(i,d)&&(s=3==h.nodeType?o(f,n,i,d,l):r(f,n,i,d,l)),s||l&&l.detach()}}),n.addClass("is-truncated"),s}function o(e,n,r,o,d){var c=e[0];if(!c)return!1;var h=s(c),f=-1!==h.indexOf(" ")?" ":" ",p="letter"==o.wrap?"":f,g=h.split(p),v=-1,w=-1,b=0,m=g.length-1;for(o.fallbackToLetter&&0==b&&0==m&&(p="",g=h.split(p),m=g.length-1);m>=b&&(0!=b||0!=m);){var y=Math.floor((b+m)/2);if(y==w)break;w=y,l(c,g.slice(0,w+1).join(p)+o.ellipsis),r.children().each(function(){t(this).toggle().toggle()}),a(r,o)?(m=w,o.fallbackToLetter&&0==b&&0==m&&(p="",g=g[0].split(p),v=-1,w=-1,b=0,m=g.length-1)):(v=w,b=w)}if(-1==v||1==g.length&&0==g[0].length){var x=e.parent();e.detach();var C=d&&d.closest(x).length?d.length:0;if(x.contents().length>C?c=u(x.contents().eq(-1-C),n):(c=u(x,n,!0),C||x.detach()),c&&(h=i(s(c),o),l(c,h),C&&d)){var T=d.parent();t(c).parent().append(d),t.trim(T.html())||T.remove()}}else h=i(g.slice(0,v+1).join(p),o),l(c,h);return!0}function a(t,e){return t.innerHeight()>e.maxHeight}function i(e,n){for(;t.inArray(e.slice(-1),n.lastCharacter.remove)>-1;)e=e.slice(0,-1);return t.inArray(e.slice(-1),n.lastCharacter.noEllipsis)<0&&(e+=n.ellipsis),e}function d(t){return{width:t.innerWidth(),height:t.innerHeight()}}function l(t,e){t.innerText?t.innerText=e:t.nodeValue?t.nodeValue=e:t.textContent&&(t.textContent=e)}function s(t){return t.innerText?t.innerText:t.nodeValue?t.nodeValue:t.textContent?t.textContent:""}function c(t){do t=t.previousSibling;while(t&&1!==t.nodeType&&3!==t.nodeType);return t}function u(e,n,r){var o,a=e&&e[0];if(a){if(!r){if(3===a.nodeType)return a;if(t.trim(e.text()))return u(e.contents().last(),n)}for(o=c(a);!o;){if(e=e.parent(),e.is(n)||!e.length)return!1;o=c(e[0])}if(o)return u(t(o),n)}return!1}function h(e,n){return e?"string"==typeof e?(e=t(e,n),e.length?e:!1):e.jquery?e:!1:!1}function f(t){for(var e=t.innerHeight(),n=["paddingTop","paddingBottom"],r=0,o=n.length;o>r;r++){var a=parseInt(t.css(n[r]),10);isNaN(a)&&(a=0),e-=a}return e}if(!t.fn.dotdotdot){t.fn.dotdotdot=function(e){if(0==this.length)return t.fn.dotdotdot.debug('No element found for "'+this.selector+'".'),this;if(this.length>1)return this.each(function(){t(this).dotdotdot(e)});var o=this,i=o.contents();o.data("dotdotdot")&&o.trigger("destroy.dot"),o.data("dotdotdot-style",o.attr("style")||""),o.css("word-wrap","break-word"),"nowrap"===o.css("white-space")&&o.css("white-space","normal"),o.bind_events=function(){return o.bind("update.dot",function(e,d){switch(o.removeClass("is-truncated"),e.preventDefault(),e.stopPropagation(),typeof l.height){case"number":l.maxHeight=l.height;break;case"function":l.maxHeight=l.height.call(o[0]);break;default:l.maxHeight=f(o)}l.maxHeight+=l.tolerance,"undefined"!=typeof d&&(("string"==typeof d||"nodeType"in d&&1===d.nodeType)&&(d=t("<div />").append(d).contents()),d instanceof t&&(i=d)),g=o.wrapInner('<div class="dotdotdot" />').children(),g.contents().detach().end().append(i.clone(!0)).find("br").replaceWith(" <br /> ").end().css({height:"auto",width:"auto",border:"none",padding:0,margin:0});var c=!1,u=!1;return s.afterElement&&(c=s.afterElement.clone(!0),c.show(),s.afterElement.detach()),a(g,l)&&(u="children"==l.wrap?n(g,l,c):r(g,o,g,l,c)),g.replaceWith(g.contents()),g=null,t.isFunction(l.callback)&&l.callback.call(o[0],u,i),s.isTruncated=u,u}).bind("isTruncated.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],s.isTruncated),s.isTruncated}).bind("originalContent.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],i),i}).bind("destroy.dot",function(t){t.preventDefault(),t.stopPropagation(),o.unwatch().unbind_events().contents().detach().end().append(i).attr("style",o.data("dotdotdot-style")||"").removeClass("is-truncated").data("dotdotdot",!1)}),o},o.unbind_events=function(){return o.unbind(".dot"),o},o.watch=function(){if(o.unwatch(),"window"==l.watch){var e=t(window),n=e.width(),r=e.height();e.bind("resize.dot"+s.dotId,function(){n==e.width()&&r==e.height()&&l.windowResizeFix||(n=e.width(),r=e.height(),u&&clearInterval(u),u=setTimeout(function(){o.trigger("update.dot")},100))})}else c=d(o),u=setInterval(function(){if(o.is(":visible")){var t=d(o);c.width==t.width&&c.height==t.height||(o.trigger("update.dot"),c=t)}},500);return o},o.unwatch=function(){return t(window).unbind("resize.dot"+s.dotId),u&&clearInterval(u),o};var l=t.extend(!0,{},t.fn.dotdotdot.defaults,e),s={},c={},u=null,g=null;return l.lastCharacter.remove instanceof Array||(l.lastCharacter.remove=t.fn.dotdotdot.defaultArrays.lastCharacter.remove),l.lastCharacter.noEllipsis instanceof Array||(l.lastCharacter.noEllipsis=t.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis),s.afterElement=h(l.after,o),s.isTruncated=!1,s.dotId=p++,o.data("dotdotdot",!0).bind_events().trigger("update.dot"),l.watch&&o.watch(),o},t.fn.dotdotdot.defaults={ellipsis:"... ",wrap:"word",fallbackToLetter:!0,lastCharacter:{},tolerance:0,callback:null,after:null,height:null,watch:!1,windowResizeFix:!0},t.fn.dotdotdot.defaultArrays={lastCharacter:{remove:[" "," ",",",";",".","!","?"],noEllipsis:[]}},t.fn.dotdotdot.debug=function(t){};var p=1,g=t.fn.html;t.fn.html=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?this.trigger("update",[n]):g.apply(this,arguments)};var v=t.fn.text;t.fn.text=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?(n=t("<div />").text(n).html(),this.trigger("update",[n])):v.apply(this,arguments)}}}(jQuery),jQuery(document).ready(function(t){t(".dot-ellipsis").each(function(){var e=t(this).hasClass("dot-resize-update"),n=t(this).hasClass("dot-timer-update"),r=0,o=t(this).attr("class").split(/\s+/);t.each(o,function(t,e){var n=e.match(/^dot-height-(\d+)$/);null!==n&&(r=Number(n[1]))});var a=new Object;n&&(a.watch=!0),e&&(a.watch="window"),r>0&&(a.height=r),t(this).dotdotdot(a)})}),jQuery(window).on("load",function(){jQuery(".dot-ellipsis.dot-load-update").trigger("update.dot")}); \ No newline at end of file
diff --git a/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.umd.js b/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.umd.js
new file mode 100755
index 0000000000..83b6ba3583
--- /dev/null
+++ b/node_modules/jquery.dotdotdot/src/jquery.dotdotdot.min.umd.js
@@ -0,0 +1,24 @@
+;(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jQuery'], factory);
+ } else if (typeof exports === 'object') {
+ module.exports = factory(require('jQuery'));
+ } else {
+ root.jquery_dotdotdot_min_js = factory(root.jQuery);
+ }
+}(this, function(jQuery) {
+/*
+ * jQuery dotdotdot 1.8.3
+ *
+ * Copyright (c) Fred Heusschen
+ * www.frebsite.nl
+ *
+ * Plugin website:
+ * dotdotdot.frebsite.nl
+ *
+ * Licensed under the MIT license.
+ * http://en.wikipedia.org/wiki/MIT_License
+ */
+!function(t,e){function n(t,e,n){var r=t.children(),o=!1;t.empty();for(var i=0,d=r.length;d>i;i++){var l=r.eq(i);if(t.append(l),n&&t.append(n),a(t,e)){l.remove(),o=!0;break}n&&n.detach()}return o}function r(e,n,i,d,l){var s=!1,c="a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style",u="script, .dotdotdot-keep";return e.contents().detach().each(function(){var h=this,f=t(h);if("undefined"==typeof h)return!0;if(f.is(u))e.append(f);else{if(s)return!0;e.append(f),!l||f.is(d.after)||f.find(d.after).length||e[e.is(c)?"after":"append"](l),a(i,d)&&(s=3==h.nodeType?o(f,n,i,d,l):r(f,n,i,d,l)),s||l&&l.detach()}}),n.addClass("is-truncated"),s}function o(e,n,r,o,d){var c=e[0];if(!c)return!1;var h=s(c),f=-1!==h.indexOf(" ")?" ":" ",p="letter"==o.wrap?"":f,g=h.split(p),v=-1,w=-1,b=0,m=g.length-1;for(o.fallbackToLetter&&0==b&&0==m&&(p="",g=h.split(p),m=g.length-1);m>=b&&(0!=b||0!=m);){var y=Math.floor((b+m)/2);if(y==w)break;w=y,l(c,g.slice(0,w+1).join(p)+o.ellipsis),r.children().each(function(){t(this).toggle().toggle()}),a(r,o)?(m=w,o.fallbackToLetter&&0==b&&0==m&&(p="",g=g[0].split(p),v=-1,w=-1,b=0,m=g.length-1)):(v=w,b=w)}if(-1==v||1==g.length&&0==g[0].length){var x=e.parent();e.detach();var C=d&&d.closest(x).length?d.length:0;if(x.contents().length>C?c=u(x.contents().eq(-1-C),n):(c=u(x,n,!0),C||x.detach()),c&&(h=i(s(c),o),l(c,h),C&&d)){var T=d.parent();t(c).parent().append(d),t.trim(T.html())||T.remove()}}else h=i(g.slice(0,v+1).join(p),o),l(c,h);return!0}function a(t,e){return t.innerHeight()>e.maxHeight}function i(e,n){for(;t.inArray(e.slice(-1),n.lastCharacter.remove)>-1;)e=e.slice(0,-1);return t.inArray(e.slice(-1),n.lastCharacter.noEllipsis)<0&&(e+=n.ellipsis),e}function d(t){return{width:t.innerWidth(),height:t.innerHeight()}}function l(t,e){t.innerText?t.innerText=e:t.nodeValue?t.nodeValue=e:t.textContent&&(t.textContent=e)}function s(t){return t.innerText?t.innerText:t.nodeValue?t.nodeValue:t.textContent?t.textContent:""}function c(t){do t=t.previousSibling;while(t&&1!==t.nodeType&&3!==t.nodeType);return t}function u(e,n,r){var o,a=e&&e[0];if(a){if(!r){if(3===a.nodeType)return a;if(t.trim(e.text()))return u(e.contents().last(),n)}for(o=c(a);!o;){if(e=e.parent(),e.is(n)||!e.length)return!1;o=c(e[0])}if(o)return u(t(o),n)}return!1}function h(e,n){return e?"string"==typeof e?(e=t(e,n),e.length?e:!1):e.jquery?e:!1:!1}function f(t){for(var e=t.innerHeight(),n=["paddingTop","paddingBottom"],r=0,o=n.length;o>r;r++){var a=parseInt(t.css(n[r]),10);isNaN(a)&&(a=0),e-=a}return e}if(!t.fn.dotdotdot){t.fn.dotdotdot=function(e){if(0==this.length)return t.fn.dotdotdot.debug('No element found for "'+this.selector+'".'),this;if(this.length>1)return this.each(function(){t(this).dotdotdot(e)});var o=this,i=o.contents();o.data("dotdotdot")&&o.trigger("destroy.dot"),o.data("dotdotdot-style",o.attr("style")||""),o.css("word-wrap","break-word"),"nowrap"===o.css("white-space")&&o.css("white-space","normal"),o.bind_events=function(){return o.bind("update.dot",function(e,d){switch(o.removeClass("is-truncated"),e.preventDefault(),e.stopPropagation(),typeof l.height){case"number":l.maxHeight=l.height;break;case"function":l.maxHeight=l.height.call(o[0]);break;default:l.maxHeight=f(o)}l.maxHeight+=l.tolerance,"undefined"!=typeof d&&(("string"==typeof d||"nodeType"in d&&1===d.nodeType)&&(d=t("<div />").append(d).contents()),d instanceof t&&(i=d)),g=o.wrapInner('<div class="dotdotdot" />').children(),g.contents().detach().end().append(i.clone(!0)).find("br").replaceWith(" <br /> ").end().css({height:"auto",width:"auto",border:"none",padding:0,margin:0});var c=!1,u=!1;return s.afterElement&&(c=s.afterElement.clone(!0),c.show(),s.afterElement.detach()),a(g,l)&&(u="children"==l.wrap?n(g,l,c):r(g,o,g,l,c)),g.replaceWith(g.contents()),g=null,t.isFunction(l.callback)&&l.callback.call(o[0],u,i),s.isTruncated=u,u}).bind("isTruncated.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],s.isTruncated),s.isTruncated}).bind("originalContent.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],i),i}).bind("destroy.dot",function(t){t.preventDefault(),t.stopPropagation(),o.unwatch().unbind_events().contents().detach().end().append(i).attr("style",o.data("dotdotdot-style")||"").removeClass("is-truncated").data("dotdotdot",!1)}),o},o.unbind_events=function(){return o.unbind(".dot"),o},o.watch=function(){if(o.unwatch(),"window"==l.watch){var e=t(window),n=e.width(),r=e.height();e.bind("resize.dot"+s.dotId,function(){n==e.width()&&r==e.height()&&l.windowResizeFix||(n=e.width(),r=e.height(),u&&clearInterval(u),u=setTimeout(function(){o.trigger("update.dot")},100))})}else c=d(o),u=setInterval(function(){if(o.is(":visible")){var t=d(o);c.width==t.width&&c.height==t.height||(o.trigger("update.dot"),c=t)}},500);return o},o.unwatch=function(){return t(window).unbind("resize.dot"+s.dotId),u&&clearInterval(u),o};var l=t.extend(!0,{},t.fn.dotdotdot.defaults,e),s={},c={},u=null,g=null;return l.lastCharacter.remove instanceof Array||(l.lastCharacter.remove=t.fn.dotdotdot.defaultArrays.lastCharacter.remove),l.lastCharacter.noEllipsis instanceof Array||(l.lastCharacter.noEllipsis=t.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis),s.afterElement=h(l.after,o),s.isTruncated=!1,s.dotId=p++,o.data("dotdotdot",!0).bind_events().trigger("update.dot"),l.watch&&o.watch(),o},t.fn.dotdotdot.defaults={ellipsis:"... ",wrap:"word",fallbackToLetter:!0,lastCharacter:{},tolerance:0,callback:null,after:null,height:null,watch:!1,windowResizeFix:!0},t.fn.dotdotdot.defaultArrays={lastCharacter:{remove:[" "," ",",",";",".","!","?"],noEllipsis:[]}},t.fn.dotdotdot.debug=function(t){};var p=1,g=t.fn.html;t.fn.html=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?this.trigger("update",[n]):g.apply(this,arguments)};var v=t.fn.text;t.fn.text=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?(n=t("<div />").text(n).html(),this.trigger("update",[n])):v.apply(this,arguments)}}}(jQuery),jQuery(document).ready(function(t){t(".dot-ellipsis").each(function(){var e=t(this).hasClass("dot-resize-update"),n=t(this).hasClass("dot-timer-update"),r=0,o=t(this).attr("class").split(/\s+/);t.each(o,function(t,e){var n=e.match(/^dot-height-(\d+)$/);null!==n&&(r=Number(n[1]))});var a=new Object;n&&(a.watch=!0),e&&(a.watch="window"),r>0&&(a.height=r),t(this).dotdotdot(a)})}),jQuery(window).on("load",function(){jQuery(".dot-ellipsis.dot-load-update").trigger("update.dot")});
+return true;
+}));