You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP
Socket
Sign inDemoInstall
Socket

pangu

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pangu - npm Package Compare versions

Comparing version

to
4.0.4

87

dist/browser/pangu.js
/*!
* pangu.js
* --------
* @version: 4.0.3
* @version: 4.0.4
* @homepage: https://github.com/vinta/pangu.js

@@ -137,11 +137,27 @@ * @license: MIT

function debounce(fn, delay, mustRunDelay) {
function once(func) {
var _this = this,
_arguments = arguments;
var executed = false;
return function () {
if (executed) {
return;
}
var self = _this;
executed = true;
func.apply(self, _arguments);
};
}
function debounce(func, delay, mustRunDelay) {
var _this2 = this,
_arguments2 = arguments;
var timer = null;
var startTime = null;
return function () {
var self = _this;
var args = _arguments;
var self = _this2;
var args = _arguments2;
var currentTime = +new Date();

@@ -155,7 +171,7 @@ clearTimeout(timer);

if (currentTime - startTime >= mustRunDelay) {
fn.apply(self, args);
func.apply(self, args);
startTime = currentTime;
} else {
timer = setTimeout(function () {
fn.apply(self, args);
func.apply(self, args);
}, delay);

@@ -170,16 +186,17 @@ }

function BrowserPangu() {
var _this2;
var _this3;
_classCallCheck(this, BrowserPangu);
_this2 = _possibleConstructorReturn(this, _getPrototypeOf(BrowserPangu).call(this));
_this2.punctuation = "\u3001\u3002\uFF01\uFF1B\uFF0C\uFF1A\uFF1B\uFF1F";
_this2.punctuationRegex = new RegExp("[".concat(_this2.punctuation, "]"));
_this2.stopCharRegex = new RegExp("[ \n\t\\(\\)\\[\\]\\\"\\'".concat(_this2.punctuation, "]"));
_this2.blockTags = /^(div|p|h1|h2|h3|h4|h5|h6)$/i;
_this2.ignoredTags = /^(script|code|pre|textarea)$/i;
_this2.presentationalTags = /^(b|code|del|em|i|s|strong)$/i;
_this2.spaceLikeTags = /^(br|hr|i|img|pangu)$/i;
_this2.spaceSensitiveTags = /^(a|del|pre|s|strike|u)$/i;
return _this2;
_this3 = _possibleConstructorReturn(this, _getPrototypeOf(BrowserPangu).call(this));
_this3.punctuation = "\u3001\u3002\uFF01\uFF1B\uFF0C\uFF1A\uFF1B\uFF1F";
_this3.punctuationRegex = new RegExp("[".concat(_this3.punctuation, "]"));
_this3.stopCharRegex = new RegExp("[ \n\t\\(\\)\\[\\]\\\"\\'".concat(_this3.punctuation, "]"));
_this3.blockTags = /^(div|p|h1|h2|h3|h4|h5|h6)$/i;
_this3.ignoredTags = /^(script|code|pre|textarea)$/i;
_this3.presentationalTags = /^(b|code|del|em|i|s|strong)$/i;
_this3.spaceLikeTags = /^(br|hr|i|img|pangu)$/i;
_this3.spaceSensitiveTags = /^(a|del|pre|s|strike|u)$/i;
_this3.isAutoSpacingPageExecuted = false;
return _this3;
}

@@ -436,2 +453,6 @@

value: function autoSpacingPage() {
var pageDelay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1000;
var nodeDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;
var nodeMaxWait = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2000;
if (!(document.body instanceof Node)) {

@@ -441,7 +462,29 @@ return;

if (this.isAutoSpacingPageExecuted) {
return;
}
this.isAutoSpacingPageExecuted = true;
var self = this;
var onceSpacingPage = once(function () {
self.spacingPage();
});
var videos = document.getElementsByTagName('video');
if (videos.length === 0) {
setTimeout(function () {
self.spacingPage();
}, pageDelay);
} else {
for (var i = 0; i < videos.length; i++) {
var video = videos[i];
video.addEventListener('loadeddata', function () {
setTimeout(function () {
onceSpacingPage();
}, 4000);
});
}
}
var queue = [];
setTimeout(function () {
self.spacingPage();
}, 1000);
var debouncedSpacingNodes = debounce(function () {

@@ -455,4 +498,4 @@ while (queue.length) {

}
}, 500, {
'maxWait': 2000
}, nodeDelay, {
'maxWait': nodeMaxWait
});

@@ -459,0 +502,0 @@ var mutationObserver = new MutationObserver(function (mutations, observer) {

/*!
* pangu.js
* --------
* @version: 4.0.3
* @version: 4.0.4
* @homepage: https://github.com/vinta/pangu.js

@@ -9,2 +9,2 @@ * @license: MIT

*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("pangu",[],t):"object"==typeof exports?exports.pangu=t():e.pangu=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){var a,o,r;o=[n(1)],void 0===(r="function"==typeof(a=function(t){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function o(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function r(e){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var c=function(e){function t(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(e=o(this,r(t).call(this))).punctuation="、。!;,:;?",e.punctuationRegex=new RegExp("[".concat(e.punctuation,"]")),e.stopCharRegex=new RegExp("[ \n\t\\(\\)\\[\\]\\\"\\'".concat(e.punctuation,"]")),e.blockTags=/^(div|p|h1|h2|h3|h4|h5|h6)$/i,e.ignoredTags=/^(script|code|pre|textarea)$/i,e.presentationalTags=/^(b|code|del|em|i|s|strong)$/i,e.spaceLikeTags=/^(br|hr|i|img|pangu)$/i,e.spaceSensitiveTags=/^(a|del|pre|s|strike|u)$/i,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(t,e),n=t,(c=[{key:"isContentEditable",value:function(e){return e.isContentEditable||e.getAttribute&&"true"===e.getAttribute("g_editable")}},{key:"isSpecificTag",value:function(e,t){return e&&e.nodeName&&e.nodeName.search(t)>=0}},{key:"isInsideSpecificTag",value:function(e,t){var n=e;if(this.isSpecificTag(n,t))return!0;for(;n.parentNode;)if(n=n.parentNode,this.isSpecificTag(n,t))return!0;return!1}},{key:"canIgnoreNode",value:function(e){var t=e;if(t&&(this.isSpecificTag(t,this.ignoredTags)||this.isContentEditable(t)))return!0;for(;t.parentNode;)if((t=t.parentNode)&&(this.isSpecificTag(t,this.ignoredTags)||this.isContentEditable(t)))return!0;return!1}},{key:"isFirstTextChild",value:function(e,t){for(var n=e.childNodes,a=0;a<n.length;a++){var o=n[a];if(o.nodeType!==Node.COMMENT_NODE&&o.textContent)return o===t}return!1}},{key:"isLastTextChild",value:function(e,t){for(var n=e.childNodes,a=n.length-1;a>-1;a--){var o=n[a];if(o.nodeType!==Node.COMMENT_NODE&&o.textContent)return o===t}return!1}},{key:"spacingNodeByXPath",value:function(e,t){for(var n,a,o=document.evaluate(e,t,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),r=o.snapshotLength-1;r>-1;--r){if(n=o.snapshotItem(r),this.isInsideSpecificTag(n,this.presentationalTags)){var i=n.parentNode;if(-1===n.data.charAt(0).search(this.punctuationRegex)&&i.previousSibling){var c=i.previousSibling;c.nodeType===Node.TEXT_NODE&&-1===c.data.substr(-1).search(this.stopCharRegex)&&(c.data="".concat(c.data," "))}if(-1===n.data.substr(-1).search(this.punctuationRegex)&&i.nextSibling){var s=i.nextSibling;s.nodeType===Node.TEXT_NODE&&-1===s.data.charAt(0).search(this.stopCharRegex)&&(s.data=" ".concat(s.data))}}if(this.canIgnoreNode(n))a=n;else{var u=this.spacing(n.data);if(n.data!==u&&(n.data=u),a){if(n.nextSibling&&n.nextSibling.nodeName.search(this.spaceLikeTags)>=0){a=n;continue}var p=n.data.toString().substr(-1)+a.data.toString().substr(0,1),l=this.spacing(p);if(l!==p){for(var f=a;f.parentNode&&-1===f.nodeName.search(this.spaceSensitiveTags)&&this.isFirstTextChild(f.parentNode,f);)f=f.parentNode;for(var g=n;g.parentNode&&-1===g.nodeName.search(this.spaceSensitiveTags)&&this.isLastTextChild(g.parentNode,g);)g=g.parentNode;if(g.nextSibling&&g.nextSibling.nodeName.search(this.spaceLikeTags)>=0){a=n;continue}if(-1===g.nodeName.search(this.blockTags))if(-1===f.nodeName.search(this.spaceSensitiveTags))-1===f.nodeName.search(this.ignoredTags)&&-1===f.nodeName.search(this.blockTags)&&(a.previousSibling?-1===a.previousSibling.nodeName.search(this.spaceLikeTags)&&(a.data=" ".concat(a.data)):this.canIgnoreNode(a)||(a.data=" ".concat(a.data)));else if(-1===g.nodeName.search(this.spaceSensitiveTags))n.data="".concat(n.data," ");else{var d=document.createElement("pangu");d.innerHTML=" ",f.previousSibling?-1===f.previousSibling.nodeName.search(this.spaceLikeTags)&&f.parentNode.insertBefore(d,f):f.parentNode.insertBefore(d,f),d.previousElementSibling||d.parentNode&&d.parentNode.removeChild(d)}}}a=n}}}},{key:"spacingNode",value:function(e){var t=".//*/text()[normalize-space(.)]";e.children&&0===e.children.length&&(t=".//text()[normalize-space(.)]"),this.spacingNodeByXPath(t,e)}},{key:"spacingElementById",value:function(e){var t='id("'.concat(e,'")//text()');this.spacingNodeByXPath(t,document)}},{key:"spacingElementByClassName",value:function(e){var t='//*[contains(concat(" ", normalize-space(@class), " "), "'.concat(e,'")]//text()');this.spacingNodeByXPath(t,document)}},{key:"spacingElementByTagName",value:function(e){var t="//".concat(e,"//text()");this.spacingNodeByXPath(t,document)}},{key:"spacingPageTitle",value:function(){this.spacingNodeByXPath("/html/head/title/text()",document)}},{key:"spacingPageBody",value:function(){var e="/html/body//*/text()[normalize-space(.)]";["script","style","textarea"].forEach(function(t){e="".concat(e,'[translate(name(..),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")!="').concat(t,'"]')}),this.spacingNodeByXPath(e,document)}},{key:"spacingPage",value:function(){this.spacingPageTitle(),this.spacingPageBody()}},{key:"autoSpacingPage",value:function(){if(document.body instanceof Node){var e=this,t=[];setTimeout(function(){e.spacingPage()},1e3);var n=function(e,t,n){var a=this,o=arguments,r=null,i=null;return function(){var c=a,s=o,u=+new Date;clearTimeout(r),i||(i=u),u-i>=n?(e.apply(c,s),i=u):r=setTimeout(function(){e.apply(c,s)},t)}}(function(){for(;t.length;){var n=t.shift();n&&e.spacingNode(n)}},500,{maxWait:2e3}),a=new MutationObserver(function(e,a){e.forEach(function(e){switch(e.type){case"childList":e.addedNodes.forEach(function(e){e.nodeType===Node.ELEMENT_NODE?t.push(e):e.nodeType===Node.TEXT_NODE&&t.push(e.parentNode)});break;case"characterData":var n=e.target;n.nodeType===Node.TEXT_NODE&&t.push(n.parentNode)}}),n()});a.observe(document.body,{characterData:!0,childList:!0,subtree:!0})}}}])&&a(n.prototype,c),s&&a(n,s),t;var n,c,s}(t.Pangu),s=new c;e.exports=s,e.exports.default=s,e.exports.Pangu=c})?a.apply(t,o):a)||(e.exports=r)},function(e,t,n){var a,o,r;o=[],void 0===(r="function"==typeof(a=function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var a="⺀-⻿⼀-⿟぀-ゟ゠-ヺー-ヿ㄀-ㄯ㈀-㋿㐀-䶿一-鿿豈-﫿",o=new RegExp("[".concat(a,"]")),r=new RegExp("([".concat(a,"])[ ]*([~\\!;\\:,\\?]+|\\.)[ ]*([").concat(a,"])"),"g"),i=new RegExp("([".concat(a,"])([~\\!;\\?]+)([A-Za-z0-9])"),"g"),c=new RegExp("([\\.]{2,}|…)([".concat(a,"])"),"g"),s=new RegExp("([".concat(a,"])\\:([A-Z0-9\\(\\)])"),"g"),u=new RegExp("([".concat(a,'])([`"״])'),"g"),p=new RegExp('([`"״])(['.concat(a,"])"),"g"),l=/([`"\u05f4]+)(\s*)(.+?)(\s*)([`"\u05f4]+)/g,f=new RegExp("([".concat(a,"])('[^s])"),"g"),g=new RegExp("(')([".concat(a,"])"),"g"),d=new RegExp("([".concat(a,"A-Za-z0-9])( )('s)"),"g"),h=new RegExp("([".concat(a,"])(#)([").concat(a,"]+)(#)([").concat(a,"])"),"g"),y=new RegExp("([".concat(a,"])(#([^ ]))"),"g"),v=new RegExp("(([^ ])#)([".concat(a,"])"),"g"),b=new RegExp("([".concat(a,"])([\\+\\-\\*\\/=&\\|<>])([A-Za-z0-9])"),"g"),m=new RegExp("([A-Za-z0-9])([\\+\\-\\*\\/=&\\|<>])([".concat(a,"])"),"g"),x=new RegExp("([\\/])( )([a-z\\-_\\.\\/]+)","g"),N=new RegExp("([\\/\\.])([A-Za-z\\-_\\.\\/]+)( )([\\/])","g"),T=new RegExp("([".concat(a,"])([\\(\\[\\{<>“])"),"g"),E=new RegExp("([\\)\\]\\}<>”])([".concat(a,"])"),"g"),$=/([\(\[\{<\u201c]+)(\s*)(.+?)(\s*)([\)\]\}>\u201d]+)/,S=/([A-Za-z0-9])([\(\[\{])/g,w=/([\)\]\}])([A-Za-z0-9])/g,R=new RegExp("([".concat(a,"])([A-Za-z0-9\\$%\\^&\\*\\-=\\+\\\\|/@¡-ÿ⅐-↏✀—➿])"),"g"),k=new RegExp("([A-Za-z0-9~\\$%\\^&\\*\\-=\\+\\\\|/!;:,\\.\\?¡-ÿ⅐-↏✀—➿])([".concat(a,"])"),"g"),O=/([ ]*)([\u00b7\u2022\u2027])([ ]*)/g,P=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return a=e,(P=[{key:"convertToFullwidth",value:function(e){return e.replace(/~/g,"~").replace(/!/g,"!").replace(/;/g,";").replace(/:/g,":").replace(/,/g,",").replace(/\./g,"。").replace(/\?/g,"?")}},{key:"spacing",value:function(e){if("string"!=typeof e)return console.warn("spacing(text) only accepts string but got ".concat(t(e))),e;if(e.length<=1||!o.test(e))return e;var n=this,a=e;return a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=a.replace(r,function(e,t,a,o){var r=n.convertToFullwidth(a);return"".concat(t).concat(r).concat(o)})).replace(i,function(e,t,a,o){var r=n.convertToFullwidth(a);return"".concat(t).concat(r).concat(o)})).replace(c,"$1 $2")).replace(s,"$1:$2")).replace(u,"$1 $2")).replace(p,"$1 $2")).replace(l,"$1$3$5")).replace(f,"$1 $2")).replace(g,"$1 $2")).replace(d,"$1's")).replace(h,"$1 $2$3$4 $5")).replace(y,"$1 $2")).replace(v,"$1 $3")).replace(b,"$1 $2 $3")).replace(m,"$1 $2 $3")).replace(x,"$1$3")).replace(N,"$1$2$4")).replace(T,"$1 $2")).replace(E,"$1 $2")).replace($,"$1$3$5")).replace(S,"$1 $2")).replace(w,"$1 $2")).replace(R,"$1 $2")).replace(k,"$1 $2")).replace(O,"・")}},{key:"spacingText",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};try{t=this.spacing(e)}catch(e){return void n(e)}n(null,t)}},{key:"spacingTextSync",value:function(e){return this.spacing(e)}}])&&n(a.prototype,P),_&&n(a,_),e;var a,P,_}(),_=new P;e.exports=_,e.exports.default=_,e.exports.Pangu=P})?a.apply(t,o):a)||(e.exports=r)}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("pangu",[],t):"object"==typeof exports?exports.pangu=t():e.pangu=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){var a,o,i;o=[n(1)],void 0===(i="function"==typeof(a=function(t){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function o(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function i(e){return(i=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var c=function(e){function t(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(e=o(this,i(t).call(this))).punctuation="、。!;,:;?",e.punctuationRegex=new RegExp("[".concat(e.punctuation,"]")),e.stopCharRegex=new RegExp("[ \n\t\\(\\)\\[\\]\\\"\\'".concat(e.punctuation,"]")),e.blockTags=/^(div|p|h1|h2|h3|h4|h5|h6)$/i,e.ignoredTags=/^(script|code|pre|textarea)$/i,e.presentationalTags=/^(b|code|del|em|i|s|strong)$/i,e.spaceLikeTags=/^(br|hr|i|img|pangu)$/i,e.spaceSensitiveTags=/^(a|del|pre|s|strike|u)$/i,e.isAutoSpacingPageExecuted=!1,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)}(t,e),n=t,(c=[{key:"isContentEditable",value:function(e){return e.isContentEditable||e.getAttribute&&"true"===e.getAttribute("g_editable")}},{key:"isSpecificTag",value:function(e,t){return e&&e.nodeName&&e.nodeName.search(t)>=0}},{key:"isInsideSpecificTag",value:function(e,t){var n=e;if(this.isSpecificTag(n,t))return!0;for(;n.parentNode;)if(n=n.parentNode,this.isSpecificTag(n,t))return!0;return!1}},{key:"canIgnoreNode",value:function(e){var t=e;if(t&&(this.isSpecificTag(t,this.ignoredTags)||this.isContentEditable(t)))return!0;for(;t.parentNode;)if((t=t.parentNode)&&(this.isSpecificTag(t,this.ignoredTags)||this.isContentEditable(t)))return!0;return!1}},{key:"isFirstTextChild",value:function(e,t){for(var n=e.childNodes,a=0;a<n.length;a++){var o=n[a];if(o.nodeType!==Node.COMMENT_NODE&&o.textContent)return o===t}return!1}},{key:"isLastTextChild",value:function(e,t){for(var n=e.childNodes,a=n.length-1;a>-1;a--){var o=n[a];if(o.nodeType!==Node.COMMENT_NODE&&o.textContent)return o===t}return!1}},{key:"spacingNodeByXPath",value:function(e,t){for(var n,a,o=document.evaluate(e,t,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),i=o.snapshotLength-1;i>-1;--i){if(n=o.snapshotItem(i),this.isInsideSpecificTag(n,this.presentationalTags)){var r=n.parentNode;if(-1===n.data.charAt(0).search(this.punctuationRegex)&&r.previousSibling){var c=r.previousSibling;c.nodeType===Node.TEXT_NODE&&-1===c.data.substr(-1).search(this.stopCharRegex)&&(c.data="".concat(c.data," "))}if(-1===n.data.substr(-1).search(this.punctuationRegex)&&r.nextSibling){var s=r.nextSibling;s.nodeType===Node.TEXT_NODE&&-1===s.data.charAt(0).search(this.stopCharRegex)&&(s.data=" ".concat(s.data))}}if(this.canIgnoreNode(n))a=n;else{var u=this.spacing(n.data);if(n.data!==u&&(n.data=u),a){if(n.nextSibling&&n.nextSibling.nodeName.search(this.spaceLikeTags)>=0){a=n;continue}var p=n.data.toString().substr(-1)+a.data.toString().substr(0,1),l=this.spacing(p);if(l!==p){for(var g=a;g.parentNode&&-1===g.nodeName.search(this.spaceSensitiveTags)&&this.isFirstTextChild(g.parentNode,g);)g=g.parentNode;for(var f=n;f.parentNode&&-1===f.nodeName.search(this.spaceSensitiveTags)&&this.isLastTextChild(f.parentNode,f);)f=f.parentNode;if(f.nextSibling&&f.nextSibling.nodeName.search(this.spaceLikeTags)>=0){a=n;continue}if(-1===f.nodeName.search(this.blockTags))if(-1===g.nodeName.search(this.spaceSensitiveTags))-1===g.nodeName.search(this.ignoredTags)&&-1===g.nodeName.search(this.blockTags)&&(a.previousSibling?-1===a.previousSibling.nodeName.search(this.spaceLikeTags)&&(a.data=" ".concat(a.data)):this.canIgnoreNode(a)||(a.data=" ".concat(a.data)));else if(-1===f.nodeName.search(this.spaceSensitiveTags))n.data="".concat(n.data," ");else{var d=document.createElement("pangu");d.innerHTML=" ",g.previousSibling?-1===g.previousSibling.nodeName.search(this.spaceLikeTags)&&g.parentNode.insertBefore(d,g):g.parentNode.insertBefore(d,g),d.previousElementSibling||d.parentNode&&d.parentNode.removeChild(d)}}}a=n}}}},{key:"spacingNode",value:function(e){var t=".//*/text()[normalize-space(.)]";e.children&&0===e.children.length&&(t=".//text()[normalize-space(.)]"),this.spacingNodeByXPath(t,e)}},{key:"spacingElementById",value:function(e){var t='id("'.concat(e,'")//text()');this.spacingNodeByXPath(t,document)}},{key:"spacingElementByClassName",value:function(e){var t='//*[contains(concat(" ", normalize-space(@class), " "), "'.concat(e,'")]//text()');this.spacingNodeByXPath(t,document)}},{key:"spacingElementByTagName",value:function(e){var t="//".concat(e,"//text()");this.spacingNodeByXPath(t,document)}},{key:"spacingPageTitle",value:function(){this.spacingNodeByXPath("/html/head/title/text()",document)}},{key:"spacingPageBody",value:function(){var e="/html/body//*/text()[normalize-space(.)]";["script","style","textarea"].forEach(function(t){e="".concat(e,'[translate(name(..),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")!="').concat(t,'"]')}),this.spacingNodeByXPath(e,document)}},{key:"spacingPage",value:function(){this.spacingPageTitle(),this.spacingPageBody()}},{key:"autoSpacingPage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e3;if(document.body instanceof Node&&!this.isAutoSpacingPageExecuted){this.isAutoSpacingPageExecuted=!0;var a=this,o=function(e){var t=this,n=arguments,a=!1;return function(){if(!a){var o=t;a=!0,e.apply(o,n)}}}(function(){a.spacingPage()}),i=document.getElementsByTagName("video");if(0===i.length)setTimeout(function(){a.spacingPage()},e);else for(var r=0;r<i.length;r++){var c=i[r];c.addEventListener("loadeddata",function(){setTimeout(function(){o()},4e3)})}var s=[],u=function(e,t,n){var a=this,o=arguments,i=null,r=null;return function(){var c=a,s=o,u=+new Date;clearTimeout(i),r||(r=u),u-r>=n?(e.apply(c,s),r=u):i=setTimeout(function(){e.apply(c,s)},t)}}(function(){for(;s.length;){var e=s.shift();e&&a.spacingNode(e)}},t,{maxWait:n}),p=new MutationObserver(function(e,t){e.forEach(function(e){switch(e.type){case"childList":e.addedNodes.forEach(function(e){e.nodeType===Node.ELEMENT_NODE?s.push(e):e.nodeType===Node.TEXT_NODE&&s.push(e.parentNode)});break;case"characterData":var t=e.target;t.nodeType===Node.TEXT_NODE&&s.push(t.parentNode)}}),u()});p.observe(document.body,{characterData:!0,childList:!0,subtree:!0})}}}])&&a(n.prototype,c),s&&a(n,s),t;var n,c,s}(t.Pangu),s=new c;e.exports=s,e.exports.default=s,e.exports.Pangu=c})?a.apply(t,o):a)||(e.exports=i)},function(e,t,n){var a,o,i;o=[],void 0===(i="function"==typeof(a=function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}var a="⺀-⻿⼀-⿟぀-ゟ゠-ヺー-ヿ㄀-ㄯ㈀-㋿㐀-䶿一-鿿豈-﫿",o=new RegExp("[".concat(a,"]")),i=new RegExp("([".concat(a,"])[ ]*([~\\!;\\:,\\?]+|\\.)[ ]*([").concat(a,"])"),"g"),r=new RegExp("([".concat(a,"])([~\\!;\\?]+)([A-Za-z0-9])"),"g"),c=new RegExp("([\\.]{2,}|…)([".concat(a,"])"),"g"),s=new RegExp("([".concat(a,"])\\:([A-Z0-9\\(\\)])"),"g"),u=new RegExp("([".concat(a,'])([`"״])'),"g"),p=new RegExp('([`"״])(['.concat(a,"])"),"g"),l=/([`"\u05f4]+)(\s*)(.+?)(\s*)([`"\u05f4]+)/g,g=new RegExp("([".concat(a,"])('[^s])"),"g"),f=new RegExp("(')([".concat(a,"])"),"g"),d=new RegExp("([".concat(a,"A-Za-z0-9])( )('s)"),"g"),h=new RegExp("([".concat(a,"])(#)([").concat(a,"]+)(#)([").concat(a,"])"),"g"),y=new RegExp("([".concat(a,"])(#([^ ]))"),"g"),v=new RegExp("(([^ ])#)([".concat(a,"])"),"g"),b=new RegExp("([".concat(a,"])([\\+\\-\\*\\/=&\\|<>])([A-Za-z0-9])"),"g"),m=new RegExp("([A-Za-z0-9])([\\+\\-\\*\\/=&\\|<>])([".concat(a,"])"),"g"),x=new RegExp("([\\/])( )([a-z\\-_\\.\\/]+)","g"),T=new RegExp("([\\/\\.])([A-Za-z\\-_\\.\\/]+)( )([\\/])","g"),N=new RegExp("([".concat(a,"])([\\(\\[\\{<>“])"),"g"),E=new RegExp("([\\)\\]\\}<>”])([".concat(a,"])"),"g"),$=/([\(\[\{<\u201c]+)(\s*)(.+?)(\s*)([\)\]\}>\u201d]+)/,S=/([A-Za-z0-9])([\(\[\{])/g,w=/([\)\]\}])([A-Za-z0-9])/g,P=new RegExp("([".concat(a,"])([A-Za-z0-9\\$%\\^&\\*\\-=\\+\\\\|/@¡-ÿ⅐-↏✀—➿])"),"g"),R=new RegExp("([A-Za-z0-9~\\$%\\^&\\*\\-=\\+\\\\|/!;:,\\.\\?¡-ÿ⅐-↏✀—➿])([".concat(a,"])"),"g"),k=/([ ]*)([\u00b7\u2022\u2027])([ ]*)/g,O=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return a=e,(O=[{key:"convertToFullwidth",value:function(e){return e.replace(/~/g,"~").replace(/!/g,"!").replace(/;/g,";").replace(/:/g,":").replace(/,/g,",").replace(/\./g,"。").replace(/\?/g,"?")}},{key:"spacing",value:function(e){if("string"!=typeof e)return console.warn("spacing(text) only accepts string but got ".concat(t(e))),e;if(e.length<=1||!o.test(e))return e;var n=this,a=e;return a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=a.replace(i,function(e,t,a,o){var i=n.convertToFullwidth(a);return"".concat(t).concat(i).concat(o)})).replace(r,function(e,t,a,o){var i=n.convertToFullwidth(a);return"".concat(t).concat(i).concat(o)})).replace(c,"$1 $2")).replace(s,"$1:$2")).replace(u,"$1 $2")).replace(p,"$1 $2")).replace(l,"$1$3$5")).replace(g,"$1 $2")).replace(f,"$1 $2")).replace(d,"$1's")).replace(h,"$1 $2$3$4 $5")).replace(y,"$1 $2")).replace(v,"$1 $3")).replace(b,"$1 $2 $3")).replace(m,"$1 $2 $3")).replace(x,"$1$3")).replace(T,"$1$2$4")).replace(N,"$1 $2")).replace(E,"$1 $2")).replace($,"$1$3$5")).replace(S,"$1 $2")).replace(w,"$1 $2")).replace(P,"$1 $2")).replace(R,"$1 $2")).replace(k,"・")}},{key:"spacingText",value:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};try{t=this.spacing(e)}catch(e){return void n(e)}n(null,t)}},{key:"spacingTextSync",value:function(e){return this.spacing(e)}}])&&n(a.prototype,O),_&&n(a,_),e;var a,O,_}(),_=new O;e.exports=_,e.exports.default=_,e.exports.Pangu=O})?a.apply(t,o):a)||(e.exports=i)}])});
# History
v4.0.4 / 2019-01-29
-------------------
- 修正 Bilibili 影片會消失的問題
v4.0.3 / 2019-01-29

@@ -4,0 +9,0 @@ -------------------

@@ -18,3 +18,3 @@ {

],
"version": "4.0.3",
"version": "4.0.4",
"author": {

@@ -21,0 +21,0 @@ "name": "Vinta Chen",

@@ -74,7 +74,7 @@ # 為什麼你們就是不能加個空格呢?

```html
<script src="https://cdn.jsdelivr.net/npm/pangu@4.0.3/dist/browser/pangu.js"></script>
<script src="https://cdn.jsdelivr.net/npm/pangu@4.0.3/dist/browser/pangu.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/pangu@4.0.4/dist/browser/pangu.js"></script>
<script src="https://cdn.jsdelivr.net/npm/pangu@4.0.4/dist/browser/pangu.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pangu/4.0.3/pangu.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pangu/4.0.3/pangu.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pangu/4.0.4/pangu.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pangu/4.0.4/pangu.min.js"></script>
```

@@ -81,0 +81,0 @@

import { Pangu } from '../shared/core';
function debounce(fn, delay, mustRunDelay) {
function once(func) {
let executed = false;
return () => {
if (executed) {
return;
}
const self = this;
executed = true;
func.apply(self, arguments);
};
}
function debounce(func, delay, mustRunDelay) {
let timer = null;

@@ -18,7 +30,7 @@ let startTime = null;

if (currentTime - startTime >= mustRunDelay) {
fn.apply(self, args);
func.apply(self, args);
startTime = currentTime;
} else {
timer = setTimeout(() => {
fn.apply(self, args);
func.apply(self, args);
}, delay);

@@ -45,2 +57,4 @@ }

this.isAutoSpacingPageExecuted = false;
// TODO

@@ -320,3 +334,3 @@ // this.ignoredTags adds iframe|pangu

autoSpacingPage() {
autoSpacingPage(pageDelay = 1000, nodeDelay = 500, nodeMaxWait = 2000) {
if (!(document.body instanceof Node)) {

@@ -326,9 +340,33 @@ return;

if (this.isAutoSpacingPageExecuted) {
return;
}
this.isAutoSpacingPageExecuted = true;
const self = this;
const queue = [];
setTimeout(() => {
const onceSpacingPage = once(() => {
self.spacingPage();
}, 1000);
});
// TODO
// this is a dirty hack for https://github.com/vinta/pangu.js/issues/117
const videos = document.getElementsByTagName('video');
if (videos.length === 0) {
setTimeout(() => {
self.spacingPage();
}, pageDelay);
} else {
for (let i = 0; i < videos.length; i++) {
const video = videos[i];
video.addEventListener('loadeddata', () => {
setTimeout(() => {
onceSpacingPage();
}, 4000);
});
}
}
const queue = [];
// it's possible that multiple workers process the queue at the same time

@@ -343,3 +381,3 @@ const debouncedSpacingNodes = debounce(() => {

}
}, 500, {'maxWait': 2000});
}, nodeDelay, {'maxWait': nodeMaxWait});

@@ -346,0 +384,0 @@ // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver