first
This commit is contained in:
293
plugins/linkifyjs/2.1.8/linkify-jquery.js
Normal file
293
plugins/linkifyjs/2.1.8/linkify-jquery.js
Normal file
@@ -0,0 +1,293 @@
|
||||
'use strict';
|
||||
|
||||
;(function (window, linkify, $) {
|
||||
var linkifyJquery = function (linkify) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
Linkify a HTML DOM node
|
||||
*/
|
||||
|
||||
var tokenize = linkify.tokenize,
|
||||
options = linkify.options;
|
||||
var Options = options.Options;
|
||||
|
||||
|
||||
var TEXT_TOKEN = linkify.parser.TOKENS.TEXT;
|
||||
|
||||
var HTML_NODE = 1;
|
||||
var TXT_NODE = 3;
|
||||
|
||||
/**
|
||||
Given a parent element and child node that the parent contains, replaces
|
||||
that child with the given array of new children
|
||||
*/
|
||||
function replaceChildWithChildren(parent, oldChild, newChildren) {
|
||||
var lastNewChild = newChildren[newChildren.length - 1];
|
||||
parent.replaceChild(lastNewChild, oldChild);
|
||||
for (var i = newChildren.length - 2; i >= 0; i--) {
|
||||
parent.insertBefore(newChildren[i], lastNewChild);
|
||||
lastNewChild = newChildren[i];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Given an array of MultiTokens, return an array of Nodes that are either
|
||||
(a) Plain Text nodes (node type 3)
|
||||
(b) Anchor tag nodes (usually, unless tag name is overridden in the options)
|
||||
|
||||
Takes the same options as linkifyElement and an optional doc element
|
||||
(this should be passed in by linkifyElement)
|
||||
*/
|
||||
function tokensToNodes(tokens, opts, doc) {
|
||||
var result = [];
|
||||
|
||||
for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
||||
var _ref;
|
||||
|
||||
if (_isArray) {
|
||||
if (_i >= _iterator.length) break;
|
||||
_ref = _iterator[_i++];
|
||||
} else {
|
||||
_i = _iterator.next();
|
||||
if (_i.done) break;
|
||||
_ref = _i.value;
|
||||
}
|
||||
|
||||
var token = _ref;
|
||||
|
||||
if (token.type === 'nl' && opts.nl2br) {
|
||||
result.push(doc.createElement('br'));
|
||||
continue;
|
||||
} else if (!token.isLink || !opts.check(token)) {
|
||||
result.push(doc.createTextNode(token.toString()));
|
||||
continue;
|
||||
}
|
||||
|
||||
var _opts$resolve = opts.resolve(token),
|
||||
formatted = _opts$resolve.formatted,
|
||||
formattedHref = _opts$resolve.formattedHref,
|
||||
tagName = _opts$resolve.tagName,
|
||||
className = _opts$resolve.className,
|
||||
target = _opts$resolve.target,
|
||||
events = _opts$resolve.events,
|
||||
attributes = _opts$resolve.attributes;
|
||||
|
||||
// Build the link
|
||||
|
||||
|
||||
var link = doc.createElement(tagName);
|
||||
link.setAttribute('href', formattedHref);
|
||||
|
||||
if (className) {
|
||||
link.setAttribute('class', className);
|
||||
}
|
||||
|
||||
if (target) {
|
||||
link.setAttribute('target', target);
|
||||
}
|
||||
|
||||
// Build up additional attributes
|
||||
if (attributes) {
|
||||
for (var attr in attributes) {
|
||||
link.setAttribute(attr, attributes[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
if (events) {
|
||||
for (var event in events) {
|
||||
if (link.addEventListener) {
|
||||
link.addEventListener(event, events[event]);
|
||||
} else if (link.attachEvent) {
|
||||
link.attachEvent('on' + event, events[event]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
link.appendChild(doc.createTextNode(formatted));
|
||||
result.push(link);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Requires document.createElement
|
||||
function linkifyElementHelper(element, opts, doc) {
|
||||
|
||||
// Can the element be linkified?
|
||||
if (!element || element.nodeType !== HTML_NODE) {
|
||||
throw new Error('Cannot linkify ' + element + ' - Invalid DOM Node type');
|
||||
}
|
||||
|
||||
var ignoreTags = opts.ignoreTags;
|
||||
|
||||
// Is this element already a link?
|
||||
if (element.tagName === 'A' || options.contains(ignoreTags, element.tagName)) {
|
||||
// No need to linkify
|
||||
return element;
|
||||
}
|
||||
|
||||
var childElement = element.firstChild;
|
||||
|
||||
while (childElement) {
|
||||
var str = void 0,
|
||||
tokens = void 0,
|
||||
nodes = void 0;
|
||||
|
||||
switch (childElement.nodeType) {
|
||||
case HTML_NODE:
|
||||
linkifyElementHelper(childElement, opts, doc);
|
||||
break;
|
||||
case TXT_NODE:
|
||||
{
|
||||
str = childElement.nodeValue;
|
||||
tokens = tokenize(str);
|
||||
|
||||
if (tokens.length === 0 || tokens.length === 1 && tokens[0] instanceof TEXT_TOKEN) {
|
||||
// No node replacement required
|
||||
break;
|
||||
}
|
||||
|
||||
nodes = tokensToNodes(tokens, opts, doc);
|
||||
|
||||
// Swap out the current child for the set of nodes
|
||||
replaceChildWithChildren(element, childElement, nodes);
|
||||
|
||||
// so that the correct sibling is selected next
|
||||
childElement = nodes[nodes.length - 1];
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
childElement = childElement.nextSibling;
|
||||
}
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
function linkifyElement(element, opts) {
|
||||
var doc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
|
||||
|
||||
try {
|
||||
doc = doc || document || window && window.document || global && global.document;
|
||||
} catch (e) {/* do nothing for now */}
|
||||
|
||||
if (!doc) {
|
||||
throw new Error('Cannot find document implementation. ' + 'If you are in a non-browser environment like Node.js, ' + 'pass the document implementation as the third argument to linkifyElement.');
|
||||
}
|
||||
|
||||
opts = new Options(opts);
|
||||
return linkifyElementHelper(element, opts, doc);
|
||||
}
|
||||
|
||||
// Maintain reference to the recursive helper to cache option-normalization
|
||||
linkifyElement.helper = linkifyElementHelper;
|
||||
linkifyElement.normalize = function (opts) {
|
||||
return new Options(opts);
|
||||
};
|
||||
|
||||
// Applies the plugin to jQuery
|
||||
function apply($) {
|
||||
var doc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
||||
|
||||
|
||||
$.fn = $.fn || {};
|
||||
|
||||
try {
|
||||
doc = doc || document || window && window.document || global && global.document;
|
||||
} catch (e) {/* do nothing for now */}
|
||||
|
||||
if (!doc) {
|
||||
throw new Error('Cannot find document implementation. ' + 'If you are in a non-browser environment like Node.js, ' + 'pass the document implementation as the second argument to linkify/jquery');
|
||||
}
|
||||
|
||||
if (typeof $.fn.linkify === 'function') {
|
||||
// Already applied
|
||||
return;
|
||||
}
|
||||
|
||||
function jqLinkify(opts) {
|
||||
opts = linkifyElement.normalize(opts);
|
||||
return this.each(function () {
|
||||
linkifyElement.helper(this, opts, doc);
|
||||
});
|
||||
}
|
||||
|
||||
$.fn.linkify = jqLinkify;
|
||||
|
||||
$(doc).ready(function () {
|
||||
$('[data-linkify]').each(function () {
|
||||
var $this = $(this);
|
||||
var data = $this.data();
|
||||
var target = data.linkify;
|
||||
var nl2br = data.linkifyNlbr;
|
||||
|
||||
var options = {
|
||||
nl2br: !!nl2br && nl2br !== 0 && nl2br !== 'false'
|
||||
};
|
||||
|
||||
if ('linkifyAttributes' in data) {
|
||||
options.attributes = data.linkifyAttributes;
|
||||
}
|
||||
|
||||
if ('linkifyDefaultProtocol' in data) {
|
||||
options.defaultProtocol = data.linkifyDefaultProtocol;
|
||||
}
|
||||
|
||||
if ('linkifyEvents' in data) {
|
||||
options.events = data.linkifyEvents;
|
||||
}
|
||||
|
||||
if ('linkifyFormat' in data) {
|
||||
options.format = data.linkifyFormat;
|
||||
}
|
||||
|
||||
if ('linkifyFormatHref' in data) {
|
||||
options.formatHref = data.linkifyFormatHref;
|
||||
}
|
||||
|
||||
if ('linkifyTagname' in data) {
|
||||
options.tagName = data.linkifyTagname;
|
||||
}
|
||||
|
||||
if ('linkifyTarget' in data) {
|
||||
options.target = data.linkifyTarget;
|
||||
}
|
||||
|
||||
if ('linkifyValidate' in data) {
|
||||
options.validate = data.linkifyValidate;
|
||||
}
|
||||
|
||||
if ('linkifyIgnoreTags' in data) {
|
||||
options.ignoreTags = data.linkifyIgnoreTags;
|
||||
}
|
||||
|
||||
if ('linkifyClassName' in data) {
|
||||
options.className = data.linkifyClassName;
|
||||
} else if ('linkifyLinkclass' in data) {
|
||||
// linkClass is deprecated
|
||||
options.className = data.linkifyLinkclass;
|
||||
}
|
||||
|
||||
options = linkifyElement.normalize(options);
|
||||
|
||||
var $target = target === 'this' ? $this : $this.find(target);
|
||||
$target.linkify(options);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Try assigning linkifyElement to the browser scope
|
||||
try {
|
||||
!undefined.define && (window.linkifyElement = linkifyElement);
|
||||
} catch (e) {/**/}
|
||||
|
||||
return apply;
|
||||
}(linkify);
|
||||
|
||||
if (typeof $.fn.linkify !== 'function') {
|
||||
linkifyJquery($);
|
||||
}
|
||||
})(window, linkify, jQuery);
|
||||
1
plugins/linkifyjs/2.1.8/linkify-jquery.min.js
vendored
Normal file
1
plugins/linkifyjs/2.1.8/linkify-jquery.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";!function(e,n,t){var i=function(n){function t(e,n,t){var i=t[t.length-1];e.replaceChild(i,n);for(var a=t.length-2;a>=0;a--)e.insertBefore(t[a],i),i=t[a]}function i(e,n,t){for(var i=[],a=e,r=Array.isArray(a),o=0,a=r?a:a[Symbol.iterator]();;){var l;if(r){if(o>=a.length)break;l=a[o++]}else{if(o=a.next(),o.done)break;l=o.value}var f=l;if("nl"===f.type&&n.nl2br)i.push(t.createElement("br"));else if(f.isLink&&n.check(f)){var s=n.resolve(f),c=s.formatted,u=s.formattedHref,y=s.tagName,d=s.className,m=s.target,k=s.events,h=s.attributes,v=t.createElement(y);if(v.setAttribute("href",u),d&&v.setAttribute("class",d),m&&v.setAttribute("target",m),h)for(var g in h)v.setAttribute(g,h[g]);if(k)for(var b in k)v.addEventListener?v.addEventListener(b,k[b]):v.attachEvent&&v.attachEvent("on"+b,k[b]);v.appendChild(t.createTextNode(c)),i.push(v)}else i.push(t.createTextNode(f.toString()))}return i}function a(e,n,r){if(!e||e.nodeType!==u)throw new Error("Cannot linkify "+e+" - Invalid DOM Node type");var o=n.ignoreTags;if("A"===e.tagName||f.contains(o,e.tagName))return e;for(var s=e.firstChild;s;){var d=void 0,m=void 0,k=void 0;switch(s.nodeType){case u:a(s,n,r);break;case y:if(d=s.nodeValue,m=l(d),0===m.length||1===m.length&&m[0]instanceof c)break;k=i(m,n,r),t(e,s,k),s=k[k.length-1]}s=s.nextSibling}return e}function r(n,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{i=i||document||e&&e.document||global&&global.document}catch(r){}if(!i)throw new Error("Cannot find document implementation. If you are in a non-browser environment like Node.js, pass the document implementation as the third argument to linkifyElement.");return t=new s(t),a(n,t,i)}function o(n){function t(e){return e=r.normalize(e),this.each(function(){r.helper(this,e,i)})}var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];n.fn=n.fn||{};try{i=i||document||e&&e.document||global&&global.document}catch(a){}if(!i)throw new Error("Cannot find document implementation. If you are in a non-browser environment like Node.js, pass the document implementation as the second argument to linkify/jquery");"function"!=typeof n.fn.linkify&&(n.fn.linkify=t,n(i).ready(function(){n("[data-linkify]").each(function(){var e=n(this),t=e.data(),i=t.linkify,a=t.linkifyNlbr,o={nl2br:!!a&&0!==a&&"false"!==a};"linkifyAttributes"in t&&(o.attributes=t.linkifyAttributes),"linkifyDefaultProtocol"in t&&(o.defaultProtocol=t.linkifyDefaultProtocol),"linkifyEvents"in t&&(o.events=t.linkifyEvents),"linkifyFormat"in t&&(o.format=t.linkifyFormat),"linkifyFormatHref"in t&&(o.formatHref=t.linkifyFormatHref),"linkifyTagname"in t&&(o.tagName=t.linkifyTagname),"linkifyTarget"in t&&(o.target=t.linkifyTarget),"linkifyValidate"in t&&(o.validate=t.linkifyValidate),"linkifyIgnoreTags"in t&&(o.ignoreTags=t.linkifyIgnoreTags),"linkifyClassName"in t?o.className=t.linkifyClassName:"linkifyLinkclass"in t&&(o.className=t.linkifyLinkclass),o=r.normalize(o);var l="this"===i?e:e.find(i);l.linkify(o)})}))}var l=n.tokenize,f=n.options,s=f.Options,c=n.parser.TOKENS.TEXT,u=1,y=3;r.helper=a,r.normalize=function(e){return new s(e)};try{!(void 0).define&&(e.linkifyElement=r)}catch(d){}return o}(n);"function"!=typeof t.fn.linkify&&i(t)}(window,linkify,jQuery);
|
||||
109
plugins/linkifyjs/2.1.8/linkify-string.js
Normal file
109
plugins/linkifyjs/2.1.8/linkify-string.js
Normal file
@@ -0,0 +1,109 @@
|
||||
'use strict';
|
||||
|
||||
;(function (window, linkify) {
|
||||
var linkifyString = function (linkify) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
Convert strings of text into linkable HTML text
|
||||
*/
|
||||
|
||||
var tokenize = linkify.tokenize,
|
||||
options = linkify.options;
|
||||
var Options = options.Options;
|
||||
|
||||
|
||||
function escapeText(text) {
|
||||
return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||
}
|
||||
|
||||
function escapeAttr(href) {
|
||||
return href.replace(/"/g, '"');
|
||||
}
|
||||
|
||||
function attributesToString(attributes) {
|
||||
if (!attributes) {
|
||||
return '';
|
||||
}
|
||||
var result = [];
|
||||
|
||||
for (var attr in attributes) {
|
||||
var val = attributes[attr] + '';
|
||||
result.push(attr + '="' + escapeAttr(val) + '"');
|
||||
}
|
||||
return result.join(' ');
|
||||
}
|
||||
|
||||
function linkifyStr(str) {
|
||||
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
opts = new Options(opts);
|
||||
|
||||
var tokens = tokenize(str);
|
||||
var result = [];
|
||||
|
||||
for (var i = 0; i < tokens.length; i++) {
|
||||
var token = tokens[i];
|
||||
|
||||
if (token.type === 'nl' && opts.nl2br) {
|
||||
result.push('<br>\n');
|
||||
continue;
|
||||
} else if (!token.isLink || !opts.check(token)) {
|
||||
result.push(escapeText(token.toString()));
|
||||
continue;
|
||||
}
|
||||
|
||||
var _opts$resolve = opts.resolve(token),
|
||||
formatted = _opts$resolve.formatted,
|
||||
formattedHref = _opts$resolve.formattedHref,
|
||||
tagName = _opts$resolve.tagName,
|
||||
className = _opts$resolve.className,
|
||||
target = _opts$resolve.target,
|
||||
attributes = _opts$resolve.attributes;
|
||||
|
||||
var link = '<' + tagName + ' href="' + escapeAttr(formattedHref) + '"';
|
||||
|
||||
if (className) {
|
||||
link += ' class="' + escapeAttr(className) + '"';
|
||||
}
|
||||
|
||||
if (target) {
|
||||
link += ' target="' + escapeAttr(target) + '"';
|
||||
}
|
||||
|
||||
if (attributes) {
|
||||
link += ' ' + attributesToString(attributes);
|
||||
}
|
||||
|
||||
link += '>' + escapeText(formatted) + '</' + tagName + '>';
|
||||
result.push(link);
|
||||
}
|
||||
|
||||
return result.join('');
|
||||
}
|
||||
|
||||
if (!String.prototype.linkify) {
|
||||
try {
|
||||
Object.defineProperty(String.prototype, 'linkify', {
|
||||
set: function set() {},
|
||||
get: function get() {
|
||||
return function linkify$$1(opts) {
|
||||
return linkifyStr(this, opts);
|
||||
};
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
// IE 8 doesn't like Object.defineProperty on non-DOM objects
|
||||
if (!String.prototype.linkify) {
|
||||
String.prototype.linkify = function (opts) {
|
||||
return linkifyStr(this, opts);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return linkifyStr;
|
||||
}(linkify);
|
||||
|
||||
window.linkifyStr = linkifyString;
|
||||
})(window, linkify);
|
||||
1
plugins/linkifyjs/2.1.8/linkify-string.min.js
vendored
Normal file
1
plugins/linkifyjs/2.1.8/linkify-string.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";!function(t,r){var n=function(t){function r(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function n(t){return t.replace(/"/g,""")}function e(t){if(!t)return"";var r=[];for(var e in t){var i=t[e]+"";r.push(e+'="'+n(i)+'"')}return r.join(" ")}function i(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i=new a(i);for(var f=o(t),u=[],c=0;c<f.length;c++){var p=f[c];if("nl"===p.type&&i.nl2br)u.push("<br>\n");else if(p.isLink&&i.check(p)){var l=i.resolve(p),s=l.formatted,g=l.formattedHref,y=l.tagName,h=l.className,v=l.target,k=l.attributes,S="<"+y+' href="'+n(g)+'"';h&&(S+=' class="'+n(h)+'"'),v&&(S+=' target="'+n(v)+'"'),k&&(S+=" "+e(k)),S+=">"+r(s)+"</"+y+">",u.push(S)}else u.push(r(p.toString()))}return u.join("")}var o=t.tokenize,f=t.options,a=f.Options;if(!String.prototype.linkify)try{Object.defineProperty(String.prototype,"linkify",{a:function(){},get:function(){return function(t){return i(this,t)}}})}catch(u){String.prototype.linkify||(String.prototype.linkify=function(t){return i(this,t)})}return i}(r);t.linkifyStr=n}(window,linkify);
|
||||
1286
plugins/linkifyjs/2.1.8/linkify.js
Normal file
1286
plugins/linkifyjs/2.1.8/linkify.js
Normal file
File diff suppressed because one or more lines are too long
1
plugins/linkifyjs/2.1.8/linkify.min.js
vendored
Normal file
1
plugins/linkifyjs/2.1.8/linkify.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user