ecology9-src4js-tools
Version:
src4js-tools
142 lines (133 loc) • 37 kB
JavaScript
class HtmlWebpackHandleCssInjectPlugin {
constructor(options = {}) {
this.options = options;
}
apply(compiler) {
let themeCss = [];
let mainJs = [];
// const reg = /\/theme-.+\.(\w|\d){8}\.css$/;
const reg = /\/theme-[^\.]+\.css\?v=(\w|\d){8}$/;
const handleHtmlWebpackPluginBeforeHtmlGeneration = (data,cb) => {
// 过滤主题 css
mainJs = [].concat(data.assets.js);
const newCss = [];
const css = data.assets.css;
css.forEach((c) => {
if(reg.test(c)) {
themeCss.push(c);
} else {
newCss.push(c);
}
});
data.assets.css = newCss;
data.assets.js = [];
// 过滤主题 css in json
const newAssetJson = [];
const assetJson = JSON.parse(data.plugin.assetJson);
assetJson.forEach(a => {
if (!reg.test(a)) {
newAssetJson.push(a);
}
});
data.plugin.assetJson = JSON.stringify(newAssetJson);
cb(null,data);
};
const camelCase = name => name.replace(/-(\w)/g, (m, n) => n.toUpperCase());
const handleHtmlWebpackPluginAfterHtmlProcessing = (data,cb) => {
let themes = [];
let themesObj = {};
let themeStr = '';
const { themelessVarsToJs, isDev } = this.options;
themeCss.forEach((t, i) => {
let strs = t.match(reg);
// const name = strs[0].replace(/(\/)|(\.(\w|\d){8}\.css$)/g, '');
const name = strs[0].replace(/(\/)|(\.css\?v=(\w|\d){8}$)/g, '');
let obj = {
name: name,
url: t,
};
themesObj[name] = t;
themes.push(obj);
});
let appendMainJs = '';
let devMainJs = '';
let preMainJs = '';
mainJs.sort((a, b) => {
let result = 0;
if (a < b) {
result = 1;
} else if (a > b) {
result = -1;
}
return result;
}).forEach((m, i) => {
devMainJs += `<script type="text/javascript" src="${m}"></script>`;
if (/\/static\/js\/(main|dev)\.js/.test(m)) {
let onload = `window.wm_test_main_js_loaded=new Date().getTime()`;
if (/\/static\/js\/dev\.js/.test(m)) {
onload = `typeof window.onWeaverMobileLoad==='function'&&window.onWeaverMobileLoad();`;
}
appendMainJs += `var script${i}=document.createElement('script');script${i}.src='${m}';script${i}.type="text/javascript";script${i}.onload=function(){${onload}};document.body.appendChild(script${i});`;
} else {
preMainJs += `<script type="text/javascript" src="${m}"></script>`;
}
});
const getLoadingSetting = `<script type="text/javascript">(function(){window.sso_callApi({url:"/api/system/info/getOSinfo",method:"GET",params:{}}).then(function(res){if(res.status){var loading=res.loading;var uploadSuffixLimit=res.uploadSuffixLimit;var prohibitDownload=res.prohibitDownload;if(typeof loading==='string'&&loading!==''){window.localStorage.setItem("initLoadingUrl",loading)}else{window.localStorage.removeItem("initLoadingUrl")};if(typeof uploadSuffixLimit==='string'&&uploadSuffixLimit!==''){window.localStorage.setItem("uploadSuffixLimit",uploadSuffixLimit)}else{window.localStorage.removeItem("uploadSuffixLimit")};if(typeof prohibitDownload==='string'&&prohibitDownload!==''){window.localStorage.setItem("prohibitDownload",prohibitDownload)}else{window.localStorage.removeItem("prohibitDownload")}}}).catch(function(){})})()</script>`;
// const ua = `(function(){"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var UserAgent=function(){function UserAgent(userAgent){var _this=this;_classCallCheck(this,UserAgent);this.navigator=typeof window.navigator!=="undefined"?window.navigator:{};this.userAgent=window.navigator.userAgent||"";this.constants={engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi","DingTalk","EMobile"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet"]};this.device="PC";this.engine="";this.browser="";this.os="";this.init=function(){Object.keys(_this.constants).forEach(function(key){_this.constants[key].forEach(function(constant){if(_this.match()[constant]){_this[key]=constant}})});if(_this.browser==="Edge"){_this.engine="EdgeHTML"}else if(_this.browser==="Chrome"&&parseInt(_this.version)>27){_this.engine="Blink"}else if(_this.browser==="Opera"&&parseInt(_this.version)>12){_this.engine="Blink"}else if(_this.browser==="Yandex"){_this.engine="Blink"}};this.mime=function(option,value){var mimeTypes=_this.navigator.mimeTypes;for(var mt in mimeTypes){if(mimeTypes[mt][option]===value){return true}}return false};this.match=function(){var u=_this.userAgent;var m={Trident:u.indexOf("Trident")>-1||u.indexOf("NET CLR")>-1,Presto:u.indexOf("Presto")>-1,WebKit:u.indexOf("AppleWebKit")>-1,Gecko:u.indexOf("Gecko/")>-1,Safari:u.indexOf("Safari")>-1,Chrome:u.indexOf("Chrome")>-1||u.indexOf("CriOS")>-1,IE:u.indexOf("MSIE")>-1||u.indexOf("Trident")>-1,Edge:u.indexOf("Edge")>-1,Firefox:u.indexOf("Firefox")>-1||u.indexOf("FxiOS")>-1,"Firefox Focus":u.indexOf("Focus")>-1,Chromium:u.indexOf("Chromium")>-1,Opera:u.indexOf("Opera")>-1||u.indexOf("OPR")>-1,Vivaldi:u.indexOf("Vivaldi")>-1,Yandex:u.indexOf("YaBrowser")>-1,Arora:u.indexOf("Arora")>-1,Lunascape:u.indexOf("Lunascape")>-1,QupZilla:u.indexOf("QupZilla")>-1,"Coc Coc":u.indexOf("coc_coc_browser")>-1,Kindle:u.indexOf("Kindle")>-1||u.indexOf("Silk/")>-1,Iceweasel:u.indexOf("Iceweasel")>-1,Konqueror:u.indexOf("Konqueror")>-1,Iceape:u.indexOf("Iceape")>-1,SeaMonkey:u.indexOf("SeaMonkey")>-1,Epiphany:u.indexOf("Epiphany")>-1,360:u.indexOf("QihooBrowser")>-1||u.indexOf("QHBrowser")>-1,"360EE":u.indexOf("360EE")>-1,"360SE":u.indexOf("360SE")>-1,UC:u.indexOf("UC")>-1||u.indexOf(" UBrowser")>-1,QQBrowser:u.indexOf("QQBrowser")>-1,QQ:u.indexOf("QQ/")>-1,Baidu:u.indexOf("Baidu")>-1||u.indexOf("BIDUBrowser")>-1,Maxthon:u.indexOf("Maxthon")>-1,Sogou:u.indexOf("MetaSr")>-1||u.indexOf("Sogou")>-1,LBBROWSER:u.indexOf("LBBROWSER")>-1,"2345Explorer":u.indexOf("2345Explorer")>-1,TheWorld:u.indexOf("TheWorld")>-1,XiaoMi:u.indexOf("MiuiBrowser")>-1,Quark:u.indexOf("Quark")>-1,Qiyu:u.indexOf("Qiyu")>-1,Taobao:u.indexOf("AliApp(TB")>-1,Alipay:u.indexOf("AliApp(AP")>-1,Wechat:u.indexOf("MicroMessenger")>-1,DingTalk:u.indexOf("AliApp(DingTalk")>-1,EMobile:u.indexOf("E-Mobile")>-1,Weibo:u.indexOf("Weibo")>-1,Douban:u.indexOf("com.douban.frodo")>-1,Suning:u.indexOf("SNEBUY-APP")>-1,iQiYi:u.indexOf("IqiyiApp")>-1,Windows:u.indexOf("Windows")>-1,Linux:u.indexOf("Linux")>-1||u.indexOf("X11")>-1,"Mac OS":u.indexOf("Macintosh")>-1,Android:u.indexOf("Android")>-1||u.indexOf("Adr")>-1,Ubuntu:u.indexOf("Ubuntu")>-1,FreeBSD:u.indexOf("FreeBSD")>-1,Debian:u.indexOf("Debian")>-1,"Windows Phone":u.indexOf("IEMobile")>-1||u.indexOf("Windows Phone")>-1,BlackBerry:u.indexOf("BlackBerry")>-1||u.indexOf("RIM")>-1,MeeGo:u.indexOf("MeeGo")>-1,Symbian:u.indexOf("Symbian")>-1,iOS:u.indexOf("like Mac OS X")>-1,"Chrome OS":u.indexOf("CrOS")>-1,WebOS:u.indexOf("hpwOS")>-1,Mobile:u.indexOf("Mobi")>-1||u.indexOf("iPh")>-1||u.indexOf("480")>-1,Tablet:u.indexOf("Tablet")>-1||u.indexOf("Pad")>-1||u.indexOf("Nexus 7")>-1};var is360=false;if(window.chrome){var chromeVision=u.replace(/^.*Chrome\\/([\\d]+).*$/,"$1");if(chromeVision>36&&window.showModalDialog){is360=true}else if(chromeVision>45){is360=_this.mime("type","application/vnd.chromium.remoting-viewer")}}if(m["Mobile"]){m["Mobile"]=!(u.indexOf("iPad")>-1)}else if(is360){if(_this.mime("type","application/gameplugin")){m["360SE"]=true}else if(_this.navigator&&typeof _this.navigator["connection"]["saveData"]==="undefined"){m["360SE"]=true}else{m["360EE"]=true}}if(m["IE"]||m["Edge"]){var navigatorTop=window.screenTop-window.screenY;switch(navigatorTop){case 71:case 99:case 102:m["360EE"]=true;break;case 75:case 74:case 105:case 104:m["360SE"]=true;break}}if(m["Baidu"]&&m["Opera"]){m["Baidu"]=false}return m};if(userAgent){this.userAgent=userAgent}this.init()}_createClass(UserAgent,[{key:"language",get:function get(){var g=this.navigator.browserLanguage||this.navigator.language;var arr=g.split("-");if(arr[1]){arr[1]=arr[1].toUpperCase()}return arr.join("_")}},{key:"version",get:function get(){var u=this.userAgent;var map={Safari:function Safari(){return u.replace(/^.*Version\\/([\\d.]+).*$/,"$1")},Chrome:function Chrome(){return u.replace(/^.*Chrome\\/([\\d.]+).*$/,"$1").replace(/^.*CriOS\\/([\\d.]+).*$/,"$1")},IE:function IE(){return u.replace(/^.*MSIE ([\\d.]+).*$/,"$1").replace(/^.*rv:([\\d.]+).*$/,"$1")},Edge:function Edge(){return u.replace(/^.*Edge\\/([\\d.]+).*$/,"$1")},Firefox:function Firefox(){return u.replace(/^.*Firefox\\/([\\d.]+).*$/,"$1").replace(/^.*FxiOS\\/([\\d.]+).*$/,"$1")},"Firefox Focus":function FirefoxFocus(){return u.replace(/^.*Focus\\/([\\d.]+).*$/,"$1")},Chromium:function Chromium(){return u.replace(/^.*Chromium\\/([\\d.]+).*$/,"$1")},Opera:function Opera(){return u.replace(/^.*Opera\\/([\\d.]+).*$/,"$1").replace(/^.*OPR\\/([\\d.]+).*$/,"$1")},Vivaldi:function Vivaldi(){return u.replace(/^.*Vivaldi\\/([\\d.]+).*$/,"$1")},Yandex:function Yandex(){return u.replace(/^.*YaBrowser\\/([\\d.]+).*$/,"$1")},Arora:function Arora(){return u.replace(/^.*Arora\\/([\\d.]+).*$/,"$1")},Lunascape:function Lunascape(){return u.replace(/^.*Lunascape[/\\s]([\\d.]+).*$/,"$1")},QupZilla:function QupZilla(){return u.replace(/^.*QupZilla[/\\s]([\\d.]+).*$/,"$1")},"Coc Coc":function CocCoc(){return u.replace(/^.*coc_coc_browser\\/([\\d.]+).*$/,"$1")},Kindle:function Kindle(){return u.replace(/^.*Version\\/([\\d.]+).*$/,"$1")},Iceweasel:function Iceweasel(){return u.replace(/^.*Iceweasel\\/([\\d.]+).*$/,"$1")},Konqueror:function Konqueror(){return u.replace(/^.*Konqueror\\/([\\d.]+).*$/,"$1")},Iceape:function Iceape(){return u.replace(/^.*Iceape\\/([\\d.]+).*$/,"$1")},SeaMonkey:function SeaMonkey(){return u.replace(/^.*SeaMonkey\\/([\\d.]+).*$/,"$1")},Epiphany:function Epiphany(){return u.replace(/^.*Epiphany\\/([\\d.]+).*$/,"$1")},360:function _(){return u.replace(/^.*QihooBrowser\\/([\\d.]+).*$/,"$1")},"360SE":function SE(){var hash={63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"};var chromeVision=u.replace(/^.*Chrome\\/([\\d]+).*$/,"$1");return hash[chromeVision]||""},"360EE":function EE(){var hash={69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"};var chromeVision=u.replace(/^.*Chrome\\/([\\d]+).*$/,"$1");return hash[chromeVision]||""},Maxthon:function Maxthon(){return u.replace(/^.*Maxthon\\/([\\d.]+).*$/,"$1")},QQBrowser:function QQBrowser(){return u.replace(/^.*QQBrowser\\/([\\d.]+).*$/,"$1")},QQ:function QQ(){return u.replace(/^.*QQ\\/([\\d.]+).*$/,"$1")},Baidu:function Baidu(){return u.replace(/^.*BIDUBrowser[\\s/]([\\d.]+).*$/,"$1")},UC:function UC(){return u.replace(/^.*UC?Browser\\/([\\d.]+).*$/,"$1")},Sogou:function Sogou(){return u.replace(/^.*SE ([\\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\\/([\\d.]+).*$/,"$1")},LBBROWSER:function LBBROWSER(){var hash={57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"};var chromeVision=navigator.userAgent.replace(/^.*Chrome\\/([\\d]+).*$/,"$1");return hash[chromeVision]||""},"2345Explorer":function Explorer(){return u.replace(/^.*2345Explorer\\/([\\d.]+).*$/,"$1")},TheWorld:function TheWorld(){return u.replace(/^.*TheWorld ([\\d.]+).*$/,"$1")},XiaoMi:function XiaoMi(){return u.replace(/^.*MiuiBrowser\\/([\\d.]+).*$/,"$1")},Quark:function Quark(){return u.replace(/^.*Quark\\/([\\d.]+).*$/,"$1")},Qiyu:function Qiyu(){return u.replace(/^.*Qiyu\\/([\\d.]+).*$/,"$1")},Wechat:function Wechat(){return u.replace(/^.*MicroMessenger\\/([\\d.]+).*$/,"$1")},DingTalk:function DingTalk(){return u.replace(/^.*AliApp\\(DingTalk\\/([\\d.]+).*$/,"$1")},EMobile:function EMobile(){return u.replace(/^.*E-Mobile\\d+\\/([\\d.]+).*$/,"$1")},Taobao:function Taobao(){return u.replace(/^.*AliApp\\(TB\\/([\\d.]+).*$/,"$1")},Alipay:function Alipay(){return u.replace(/^.*AliApp\\(AP\\/([\\d.]+).*$/,"$1")},Weibo:function Weibo(){return u.replace(/^.*weibo__([\\d.]+).*$/,"$1")},Douban:function Douban(){return u.replace(/^.*com.douban.frodo\\/([\\d.]+).*$/,"$1")},Suning:function Suning(){return u.replace(/^.*SNEBUY-APP([\\d.]+).*$/,"$1")},iQiYi:function iQiYi(){return u.replace(/^.*IqiyiVersion\\/([\\d.]+).*$/,"$1")}};var version=map[this.browser]();return version===u?"":version}},{key:"osVersion",get:function get(){var u=this.userAgent;var map={Windows:function Windows(){var v=u.replace(/^.*Windows NT ([\\d.]+);.*$/,"$1");var hash={6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000"};return hash[v]||v},Android:function Android(){return u.replace(/^.*Android ([\\d.]+);.*$/,"$1")},iOS:function iOS(){return u.replace(/^.*OS ([\\d_]+) like.*$/,"$1").replace(/_/g,".")},Debian:function Debian(){return u.replace(/^.*Debian\\/([\\d.]+).*$/,"$1")},"Windows Phone":function WindowsPhone(){return u.replace(/^.*Windows Phone( OS)? ([\\d.]+);.*$/,"$2")},"Mac OS":function MacOS(){return u.replace(/^.*Mac OS X ([\\d_]+).*$/,"$1").replace(/_/g,".")},WebOS:function WebOS(){return u.replace(/^.*hpwOS\\/([\\d.]+);.*$/,"$1")}};var osVersion=map[this.os]();return osVersion===u?"":osVersion}}]);return UserAgent}();UserAgent.version="1.0.0";var ua=new UserAgent;window.ua={device:ua.device,engine:ua.engine,browser:ua.browser,os:ua.os,osVersion:ua.osVersion,version:ua.version,language:ua.language};})()`;
const resetColor = 'function resetColor(){window.changeStyle.request(themeUrl).then(function(){if(!isDefaultThemeColor){window.changeStyle.replace([{reg:defaultThemeColorReg,to:themeColor},{reg:/(#|%23)3998(e|E)2/g,to:themeColor}])}});}';
themeStr += `${resetColor}var themeUrls=${JSON.stringify(themesObj)};var themeUrl=themeUrls[target]||themeUrls["theme-default"];if(themeUrl){window.loadjs("css!"+themeUrl,{success:function(){resetColor()}});window.onload=function(){window.loadjs("css!"+themeUrl,{success:function(){resetColor()}})}}`;
const changeColor = `var themeColor=window.localStorage['theme-color'];var isDefaultThemeColor=true;var defaultThemeColorReg=/(#|%23)55(b|B)1(f|F)9/g;if(themeColor&&colorReg.test(themeColor)&&!defaultThemeColorReg.test(themeColor)){isDefaultThemeColor=false}`;
const changeStyle = `(function(){'use strict';var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}var ChangeStyle=function(){function ChangeStyle(options){var _this=this;_classCallCheck(this,ChangeStyle);this.checkRequested=function(checkUrl){var url=checkUrl||_this.cssUrl;return url&&_this.cssUrls.some(function(u){return u===url})};this.request=function(url){return new Promise(function(resolve,reject){if(_this.checkRequested(url)){_this.cssUrl=url;resolve()}else{var xhr=new XMLHttpRequest();xhr.open("GET",url);xhr.onload=function(){if(xhr.status<200||xhr.status>=300){reject()}else{var text=xhr.responseText;_this.cssUrl=url;_this.cssList.push({url:url,text:text});resolve()}};xhr.send()}})};this.replace=function(){var setting=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];if(_this.cssText&&setting.length>0){var style=document.getElementById('__WM_CHANGE_STYLE__');if(style){document.head.removeChild(style)}style=document.createElement('style');style.id='__WM_CHANGE_STYLE__';document.head.appendChild(style);var result=_this.cssText;setting.forEach(function(s){if(s.reg&&s.to){result=result.replace(s.reg,s.to)}});style.innerHTML=result}};this.cssList=[];this.cssUrl=''}_createClass(ChangeStyle,[{key:'cssUrls',get:function get(){return this.cssList.map(function(css){return css.url})}},{key:'cssText',get:function get(){var _this2=this;var css=this.cssList.filter(function(c){return c.url===_this2.cssUrl});if(css.length>0)return css[0].text;return''}}]);window.ChangeStyle=ChangeStyle;return ChangeStyle}();})();window.changeStyle=new ChangeStyle();`;
const waterMark = `(function(){"use strict";var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var instance=null;var WaterMark=function WaterMark(options){_classCallCheck(this,WaterMark);_initialiseProps.call(this);this.setOptions(options);this.update()};var _initialiseProps=function _initialiseProps(){var _this=this;this.doc=window.top.document;this.type="text";this.len=0;this.html="";this.timer=null;this.options={text:"WATERMARK",fontStyle:"font-size:18px;color:#000;",src:"",width:200,height:150,rotate:-15,alpha:.15,interval:2e3,intervalCheck:true,clickCheck:true};this.handleClick=function(){if(_this.checkChange()){_this.update()}};this.des=function(){clearInterval(_this.timer);window.top.onresize=undefined;_this.doc.removeEventListener("click",_this.handleClick);var wmWrap=_this.doc.getElementById("wea_watremark_wrap");if(wmWrap){_this.doc.body.removeChild(wmWrap)}};this.checkChange=function(){var wrap=_this.doc.getElementById("wea_watremark_wrap");return!wrap||wrap.innerHTML!==_this.html};this.setOptions=function(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_this.options=_extends({},_this.options,options);var _options=_this.options,intervalCheck=_options.intervalCheck,interval=_options.interval,clickCheck=_options.clickCheck;if(_this.timer){clearInterval(_this.timer)}if(intervalCheck){_this.timer=setInterval(function(){return _this.handleClick()},interval)}if(clickCheck){_this.doc.addEventListener("click",_this.handleClick)}else{_this.doc.removeEventListener("click",_this.handleClick)}window.top.onresize=function(){_this.update(options)}};this.isUpdate=function(marks){var _options2=_this.options,alpha=_options2.alpha,rotate=_options2.rotate;if(!marks||marks.length===0){return true}else if(marks.length!=_this.len){return true}else if(marks[0].style.transform!=="rotate("+rotate+"deg)"){return true}else if(marks[0].style.opacity!==alpha){return true}return false};this.update=function(type){var _options3=_this.options,src=_options3.src,alpha=_options3.alpha,rotate=_options3.rotate,text=_options3.text,fontStyle=_options3.fontStyle;var _options4=_this.options,width=_options4.width,height=_options4.height;width=width>0?width:200;height=height>0?height:150;var wrap=_this.doc.getElementById("wea_watremark_wrap");if(!wrap){wrap=_this.doc.createElement("div");wrap.id="wea_watremark_wrap";_this.doc.body.appendChild(wrap)}var bg=_this.doc.getElementById("wea_watremark");if(!bg){bg=_this.doc.createElement("div");bg.id="wea_watremark";bg.style.display="block";bg.style.pointerEvents="none";bg.style.position="fixed";bg.style.width="100%";bg.style.height="100%";bg.style.zIndex=99999;bg.style.top=0;bg.style.left=0;bg.style.textAlign="center";wrap.appendChild(bg)}if(src&&type!=="text"){_this.type="img";var img=_this.doc.getElementById("wea_watremark_img_test");if(!img){img=_this.doc.createElement("img");img.id="wea_watremark_img_test";img.style.display="none";img.onerror=function(){_this.type="text";_this.update(_this.type)};_this.doc.body.appendChild(img)}img.src=src}else{_this.type="text"}var w=_this.doc.documentElement.clientWidth;var h=_this.doc.documentElement.clientHeight;var x=Math.ceil(w/width);var y=Math.ceil(h/height);_this.len=x*y+2;var marks=_this.doc.querySelectorAll(".wea-watremark-mark");if(_this.isUpdate(marks)){bg.innerHTML="";for(var i=0;i<_this.len;i++){var mark=_this.doc.createElement("div");mark.className="wea-watremark-mark";mark.style.width=width+"px";mark.style.height=height+"px";mark.style.pointerEvents="none";mark.style.zIndex=-1;mark.style.float="left";mark.style.overflow="visible";mark.style.opacity=alpha;mark.style.transform="rotate("+rotate+"deg)";mark.style["-ms-transform"]="rotate("+rotate+"deg)";mark.style.position="relative";bg.appendChild(mark)}marks=_this.doc.querySelectorAll(".wea-watremark-mark")}Array.prototype.forEach.call(marks,function(m,i){if(x!==1&&(i+1)%x===0){m.style.marginRight="-"+width+"px"}else{m.style.marginRight="0"}if(_this.type==="text"){m.innerHTML='<div style="width:100%;position:absolute;top:50%;transform:translateY(-50%);"><p style="pointer-events:none;'+fontStyle+'">'+text+"</p></div>"}else{m.innerHTML='<img alt="" src="'+src+'" style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;max-width:100%;max-height:100%;"></img>'}});_this.html=wrap.innerHTML}};var WM=function WM(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(instance){instance.setOptions(options);instance.update()}else{instance=new WaterMark(options)}};WM.destory=function(){if(instance){instance.des();instance=null}};function formatContent(options){var text=options.wmcontent||"";var fontStyle="font-family:"+(options.familyname||"微软雅黑")+";font-size:"+(options.fontsize||14)+"px;color:"+(options.color||"#000")+";text-align:"+(options.align||"left");var lines="";text.split("\\n").forEach(function(line){return lines+='<p style="'+fontStyle+'">'+line+"</p>"});text=lines;return text}var handleWMSetting=function handleWMSetting(){var wmSetting=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var params=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var rotate=-Number(wmSetting.rotate);var alpha=Number(wmSetting.opacity)/100;var options={src:wmSetting.watermarktype=="2"?"/weaver/weaver.file.FileDownload?fileid="+wmSetting.imageid:"",text:wmSetting.watermarktype=="1"?params&¶ms.document?formatContent(wmSetting):wmSetting.wmcontent:"",width:wmSetting.wmwidth>0?wmSetting.wmwidth:200,height:wmSetting.wmheight>0?wmSetting.wmheight:150,rotate:rotate,alpha:alpha};return options};var handleSettingByHash=function handleSettingByHash(wmSetting){var pathname=window.location.pathname||"";var hash=window.location.hash||"";var index=hash.indexOf("?");index=index!==-1?index:hash.length-1;var href=pathname+hash.substring(0,index);if(wmSetting){var isopen=wmSetting.isopen,mobileisopen=wmSetting.mobileisopen,whitelist=wmSetting.whitelist,blacklist=wmSetting.blacklist;var open=Number(isopen)===1&&Number(mobileisopen)===1;var list=open?blacklist:whitelist;var match=(list||[]).findIndex(function(value){return new RegExp(value).test(href)});if(match!==-1){open?WM.destory():WM(handleWMSetting(wmSetting))}else{open?WM(handleWMSetting(wmSetting)):WM.destory()}}};WM.getSystemSetting=function(){var params=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var cb=arguments[1];window.sso_callApi({url:"/api/doc/console/wmsystemsetting/getwmsetting?isconvert=1",method:"GET",params:params}).then(cb&&typeof cb==="function"?cb:function(res){var wmSetting=res.wmSetting;WM.wmSetting=wmSetting;handleSettingByHash(wmSetting)}).catch(function(){})};var handleHashChange=function handleHashChange(){handleSettingByHash(WM.wmSetting)};if("onhashchange"in window){if(window.addEventListener){window.removeEventListener("hashchange",handleHashChange);window.addEventListener("hashchange",handleHashChange)}else if(window.attachEvent){window.detachEvent("onhashchange",handleHashChange);window.attachEvent("onhashchange",handleHashChange)}else{window.onhashchange=handleHashChange}}WM.handleHashChange=handleHashChange;window.waterMark=WM;})()`;
const openWaterMark = `window.waterMark.getSystemSetting();`;
const devThemejs = isDev ? `name='theme-default';` : '';
const ispwa = `if(window.navigator.serviceWorker&&window.navigator.serviceWorker.controller&&window.navigator.serviceWorker.controller.state==="activated"){window.wm_test_em_ispwa=true};`;
const orientation = `if(window.em&&typeof window.em.checkJsApi==="function"&&window.em.checkJsApi("changeOrientation")){var orientation=0;if(window.e9mobileConfig&&window.e9mobileConfig.orientation){orientation=window.e9mobileConfig.orientation}window.em.changeOrientation({orientation:orientation,success:function(){}})}`;
const testCode = `<script>(function(){${ispwa}var accesspageUrl=window.location.pathname;window.wm_test_accesspage=function(){if(window.wm_test_accesspage_did)return;var end=new Date().getTime();var endType='setTimeout5000';if(window.wm_test_main_js_loaded){end=window.wm_test_main_js_loaded;endType='mainJsLoaded'}if(window.wm_test_getlocal_end){end=window.wm_test_getlocal_end;endType='getlocal'};var params={endType:endType,head:window.wm_test_body_js_start-window.wm_test_head_start,js:window.wm_test_ssoinit_start-window.wm_test_body_js_start,ssoInit:window.wm_test_ssoinit_end?window.wm_test_ssoinit_end-window.wm_test_ssoinit_start:0,sso_api:window.wm_test_sso_api_end?window.wm_test_sso_api_end-window.wm_test_ssoinit_start:0,sso_config:window.wm_test_sso_config_loaded_end?window.wm_test_sso_config_loaded_end-window.wm_test_sso_api_end:0,sso_em:window.wm_test_sso_em_loaded_end?window.wm_test_sso_em_loaded_end-window.wm_test_sso_config_loaded_end:0,getClientInfo:window.wm_test_em_getClientInfo_end?window.wm_test_em_getClientInfo_end-window.wm_test_ssoinit_end:0,mainJsLoaded:window.wm_test_main_js_loaded?window.wm_test_main_js_loaded-(window.wm_test_em_getClientInfo_end||window.wm_test_ssoinit_end):0,getLabel:window.wm_test_getlocal_end?window.wm_test_getlocal_end-window.wm_test_getlocal_start:0,};window.wm_test_time_params=params;window.sso_callApi({url:'/api/ec/dev/util/accesspage',method:'POST',params:{ua:(window.wm_test_em_ispwa?'__ispwa__':'')+window.navigator.userAgent,url:accesspageUrl,accesstime:end-window.wm_test_head_start,params:JSON.stringify(params),wm_test_accesskey:window.wm_test_accesskey}});window.wm_test_accesspage_did=true}})();</script>`;
const themejs = themelessVarsToJs ? `window.theme=${JSON.stringify(themelessVarsToJs)};function getThemeVars(themeName){if(!window.theme)return;var name=themeName||window.localStorage['theme']||'theme-default';${devThemejs}return window.theme[name]}window.getThemeVars=getThemeVars;` : '';
const em_ssoInit = `window.wm_test_ssoinit_start=(new Date).getTime();window.em_ssoInit().then(function(){window.wm_test_ssoinit_end=(new Date).getTime();${orientation}if(window.em&&window.em.checkJsApi("getClientInfo")){window.em.getClientInfo({success:function(res){window.wm_test_em_getClientInfo_end=(new Date).getTime();if(colorReg.test(res.clientTheme)){localStorage["theme-color"]=/^(#|%23)((f|F){3}){1,2}$/.test(res.clientTheme)?"#55b1f9":res.clientTheme}if(res.clientFont){localStorage["theme"]=res.clientFont==="3"?"theme-large":res.clientFont==="2"?"theme-big":"theme-default"}appendMainJs();changeTheme()},fail:function(err){appendMainJs();changeTheme()}})}else{appendMainJs();changeTheme()}${openWaterMark}}).catch(function(res){alert(res.msg||JSON.stringify(res))});`
const themeHtml = isDev ? `<script>${themejs}</script>${devMainJs}` :
`${getLoadingSetting}${preMainJs}${testCode}<script>${changeStyle}</script><script>${waterMark}</script><script>${themejs}</script><script>(function(){var colorReg=/^(#|%23)([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;function changeTheme(target,noSave){target=target||window.localStorage['theme'];target=(!target||target==='undefined')?'theme-default':target;if(!noSave)window.localStorage['theme']=target;${changeColor}${themeStr}}function appendMainJs(){${appendMainJs}}${em_ssoInit}function changeThemeLoad(p1,p2){changeTheme(p1,p2);window.location.reload()}window.changeTheme=changeTheme;window.changeThemeLoad=changeThemeLoad;})()</script>`;
data.html = data.html.replace('</body>', themeHtml +'</body>');
if (isDev) {
data.html = data.html.replace('<script type="text/javascript" src="/cloudstore/resource/mobile/loadjs/loadjs.min.js"></script>','');
data.html = data.html.replace('<script type="text/javascript" src="/spa/coms/ssoSDK/WebViewJavascriptBridge.js"></script>','');
data.html = data.html.replace('<script type="text/javascript" src="/spa/coms/ssoConfig/config.js"></script>','');
data.html = data.html.replace('<script type="text/javascript" src="/spa/coms/ssoSDK/ssoInit.js"></script>','');
} else {
// 横排小圆点 3个放大
let initLoadingStyle = `<style>body{background:#f3f7fe;margin:0}.init-loading,.init-loading:after,.init-loading:before{border-radius:50%;width:2.5em;height:2.5em;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation:initloading 1.2s infinite ease-in-out;animation:initloading 1.2s infinite ease-in-out}.init-loading{color:#ccc;font-size:9pt;margin:75pt auto;text-indent:-9999em;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.init-loading:after,.init-loading:before{content:'';position:absolute;top:0}.init-loading:before{left:-3.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.init-loading:after{left:3.5em}@-webkit-keyframes initloading{0%,80%,to{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}@keyframes initloading{0%,80%,to{box-shadow:0 2.5em 0 -1.3em}40%{box-shadow:0 2.5em 0 0}}</style>`;
// 文字
// initLoadingStyle = `<style>body{background:#f3f7fe;margin:0}@keyframes placeHolderShimmer{0%{background-position:-10px 0}to{background-position:400px 0}}.init-loading{position:relative;margin:200px auto 0;background:#d8d8d8;background-image:linear-gradient(to right,#d8d8d8 8%,#bbb 18%,#d8d8d8 28%);background-size:400px 104px;animation:placeHolderShimmer 1s forwards infinite linear;-webkit-animation:placeHolderShimmer 1s forwards infinite linear;-webkit-text-fill-color:transparent;background-clip:text;-webkit-background-clip:text;font-weight:700;font-size:36px;line-height:1.5;text-align:center;color:#bbb;font-family:lato,Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-style:italic}</style>`;
// 横排小圆点 不放大
initLoadingStyle = `<style>body{background:#f3f7fe;margin:0}.init-loading{width:120px;height:15px;margin:150px auto}.init-loading span{display:inline-block;width:15px;height:100%;margin-right:5px;border-radius:50%;background:#bbb;-webkit-animation:initLoading 1s ease infinite;animation:initLoading 1s ease infinite}.init-loading span:last-child{margin-right:0}@-webkit-keyframes initLoading{0%{opacity:1}100%{opacity:0}}@keyframes initLoading{0%{opacity:1}100%{opacity:0}}.init-loading span:nth-child(1){-webkit-animation-delay:.13s;animation-delay:.13s}.init-loading span:nth-child(2){-webkit-animation-delay:.26s;animation-delay:.26s}.init-loading span:nth-child(3){-webkit-animation-delay:.39s;animation-delay:.39s}.init-loading span:nth-child(4){-webkit-animation-delay:.52s;animation-delay:.52s}.init-loading span:nth-child(5){-webkit-animation-delay:.65s;animation-delay:.65s}</style>`;
// 转圈小圆点 不放大
initLoadingStyle = `<style>body{background:#f3f7fe;margin:0}.init-loading{width:50px;height:50px;position:relative;margin:150px auto}.init-loading span{display:inline-block;width:10px;height:10px;border-radius:50%;background:#ccc;opacity:.2;position:absolute;animation:initLoading 1s ease infinite;-webkit-animation:initLoading 1s ease infinite}@keyframes initLoading{0%{opacity:1}100%{opacity:.2}}@-webkit-keyframes initLoading{0%{opacity:1}100%{opacity:.2}}.init-loading span:nth-child(1){left:0;top:50%;margin-top:-5px;animation-delay:.13s;-webkit-animation-delay:.13s}.init-loading span:nth-child(2){left:6px;top:6px;animation-delay:.26s;-webkit-animation-delay:.26s}.init-loading span:nth-child(3){left:50%;top:0;margin-left:-5px;animation-delay:.39s;-webkit-animation-delay:.39s}.init-loading span:nth-child(4){top:6px;right:6px;animation-delay:.52s;-webkit-animation-delay:.52s}.init-loading span:nth-child(5){right:0;top:50%;margin-top:-5px;animation-delay:.65s;-webkit-animation-delay:.65s}.init-loading span:nth-child(6){right:6px;bottom:6px;animation-delay:.78s;-webkit-animation-delay:.78s}.init-loading span:nth-child(7){bottom:0;left:50%;margin-left:-5px;animation-delay:.91s;-webkit-animation-delay:.91s}.init-loading span:nth-child(8){bottom:6px;left:6px;animation-delay:1.04s;-webkit-animation-delay:1.04s}</style>`;
initLoadingStyle = `body{background:#f3f7fe;margin:0}.init-loading{width:50px;height:50px;position:relative;margin:150px auto}.init-loading span{display:inline-block;width:10px;height:10px;border-radius:50%;background:#ccc;opacity:.2;position:absolute;animation:initLoading 1s ease infinite;-webkit-animation:initLoading 1s ease infinite}@keyframes initLoading{0%{opacity:1}100%{opacity:.2}}@-webkit-keyframes initLoading{0%{opacity:1}100%{opacity:.2}}.init-loading span:nth-child(1){left:0;top:50%;margin-top:-5px;animation-delay:.13s;-webkit-animation-delay:.13s}.init-loading span:nth-child(2){left:6px;top:6px;animation-delay:.26s;-webkit-animation-delay:.26s}.init-loading span:nth-child(3){left:50%;top:0;margin-left:-5px;animation-delay:.39s;-webkit-animation-delay:.39s}.init-loading span:nth-child(4){top:6px;right:6px;animation-delay:.52s;-webkit-animation-delay:.52s}.init-loading span:nth-child(5){right:0;top:50%;margin-top:-5px;animation-delay:.65s;-webkit-animation-delay:.65s}.init-loading span:nth-child(6){right:6px;bottom:6px;animation-delay:.78s;-webkit-animation-delay:.78s}.init-loading span:nth-child(7){bottom:0;left:50%;margin-left:-5px;animation-delay:.91s;-webkit-animation-delay:.91s}.init-loading span:nth-child(8){bottom:6px;left:6px;animation-delay:1.04s;-webkit-animation-delay:1.04s}`;
const initLoading = '<div class="init-loading"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div>';
const initLoadingImgStyle = `body{background:#f3f7fe;margin:0}#initLoadingImg{display:block;margin:150px auto;max-width:60%;min-width:20%}`;
const initLoadingScript = `<script type="text/javascript">(function(){var initLoadingUrl=localStorage.initLoadingUrl;var root=document.getElementById('root');var style=document.createElement('style');document.head.appendChild(style);if(initLoadingUrl){style.innerHTML='${initLoadingImgStyle}';root.innerHTML='<img id="initLoadingImg" src="'+initLoadingUrl+'" alt="" />'}else{style.innerHTML='${initLoadingStyle}';root.innerHTML='${initLoading}'}})()</script>`;
// data.html = data.html.replace('</head>', initLoadingStyle + '</head>');
// data.html = data.html.replace('<div id=\"root\">', '<div id=\"root\">' + initLoading);
data.html = data.html.replace(/<div id=\"root\">[^<]*<\/div>/, '<div id=\"root\"></div>' + initLoadingScript);
}
cb(null,data);
};
if (compiler.hooks) {
compiler.hooks.compilation.tap('htmlWebpackPluginBeforeHtmlGeneration', (compilation) => {
compilation.hooks.htmlWebpackPluginAfterHtmlProcessing.tapAsync(
'htmlWebpackPluginBeforeHtmlGeneration',
handleHtmlWebpackPluginBeforeHtmlGeneration
);
});
}
else {
compiler.plugin('compilation', (compilation) => {
// compilation.plugin('html-webpack-plugin-after-html-processing', handleHtmlWebpackPluginAfterHtmlProcessing);
compilation.plugin('html-webpack-plugin-before-html-generation', handleHtmlWebpackPluginBeforeHtmlGeneration);
compilation.plugin('html-webpack-plugin-after-html-processing', handleHtmlWebpackPluginAfterHtmlProcessing);
});
}
}
}
module.exports = HtmlWebpackHandleCssInjectPlugin;