diff --git a/docs/asset-manifest.json b/docs/asset-manifest.json index 8d1f0f4..8c8a2a0 100644 --- a/docs/asset-manifest.json +++ b/docs/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { "main.css": "/browndust-share/static/css/main.5b9e4914.chunk.css", - "main.js": "/browndust-share/static/js/main.dffeaabb.chunk.js", - "main.js.map": "/browndust-share/static/js/main.dffeaabb.chunk.js.map", + "main.js": "/browndust-share/static/js/main.83583421.chunk.js", + "main.js.map": "/browndust-share/static/js/main.83583421.chunk.js.map", "runtime~main.js": "/browndust-share/static/js/runtime~main.87778658.js", "runtime~main.js.map": "/browndust-share/static/js/runtime~main.87778658.js.map", "static/css/2.e4ea7323.chunk.css": "/browndust-share/static/css/2.e4ea7323.chunk.css", "static/js/2.01c74acf.chunk.js": "/browndust-share/static/js/2.01c74acf.chunk.js", "static/js/2.01c74acf.chunk.js.map": "/browndust-share/static/js/2.01c74acf.chunk.js.map", "index.html": "/browndust-share/index.html", - "precache-manifest.b15dbbb3a6e6adace46cd451aa7cea0e.js": "/browndust-share/precache-manifest.b15dbbb3a6e6adace46cd451aa7cea0e.js", + "precache-manifest.1a6f91efb18fb0de25e6b146b19af66f.js": "/browndust-share/precache-manifest.1a6f91efb18fb0de25e6b146b19af66f.js", "service-worker.js": "/browndust-share/service-worker.js", "static/css/2.e4ea7323.chunk.css.map": "/browndust-share/static/css/2.e4ea7323.chunk.css.map", "static/css/main.5b9e4914.chunk.css.map": "/browndust-share/static/css/main.5b9e4914.chunk.css.map", diff --git a/docs/index.html b/docs/index.html index 1b36012..035e07d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Browndust Share
\ No newline at end of file +Browndust Share
\ No newline at end of file diff --git a/docs/precache-manifest.b15dbbb3a6e6adace46cd451aa7cea0e.js b/docs/precache-manifest.1a6f91efb18fb0de25e6b146b19af66f.js similarity index 99% rename from docs/precache-manifest.b15dbbb3a6e6adace46cd451aa7cea0e.js rename to docs/precache-manifest.1a6f91efb18fb0de25e6b146b19af66f.js index 23574ec..3f6536d 100644 --- a/docs/precache-manifest.b15dbbb3a6e6adace46cd451aa7cea0e.js +++ b/docs/precache-manifest.1a6f91efb18fb0de25e6b146b19af66f.js @@ -1,6 +1,6 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "1122ef27824e827e6f5b35d6dde758d6", + "revision": "45cfa5277b3972d1456cdcd710f1c8fa", "url": "/browndust-share/index.html" }, { @@ -8,7 +8,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/browndust-share/static/css/2.e4ea7323.chunk.css" }, { - "revision": "4a123c3f928294587ff7", + "revision": "c5684c808692e94b50f1", "url": "/browndust-share/static/css/main.5b9e4914.chunk.css" }, { @@ -16,8 +16,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/browndust-share/static/js/2.01c74acf.chunk.js" }, { - "revision": "4a123c3f928294587ff7", - "url": "/browndust-share/static/js/main.dffeaabb.chunk.js" + "revision": "c5684c808692e94b50f1", + "url": "/browndust-share/static/js/main.83583421.chunk.js" }, { "revision": "b194844a5050bd962be3", diff --git a/docs/service-worker.js b/docs/service-worker.js index f83c226..4da1956 100644 --- a/docs/service-worker.js +++ b/docs/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/browndust-share/precache-manifest.b15dbbb3a6e6adace46cd451aa7cea0e.js" + "/browndust-share/precache-manifest.1a6f91efb18fb0de25e6b146b19af66f.js" ); self.addEventListener('message', (event) => { diff --git a/docs/static/js/main.83583421.chunk.js b/docs/static/js/main.83583421.chunk.js new file mode 100644 index 0000000..f2e9946 --- /dev/null +++ b/docs/static/js/main.83583421.chunk.js @@ -0,0 +1,2 @@ +(window["webpackJsonpbrowndust-share"]=window["webpackJsonpbrowndust-share"]||[]).push([[0],{100:function(e,t,n){},323:function(e,t,n){},324:function(e,t,n){},334:function(e,t,n){},336:function(e,t,n){},343:function(e,t,n){},350:function(e,t,n){"use strict";n.r(t);var a=n(1),r=n.n(a),o=n(27),s=n.n(o),c=n(16),i=n(2),u=n(51),l=(n(81),n(41)),g=n(10),d=n(55),m=n.n(d),p=n(15),v=n.n(p),f=n(56),h=n(57),b=n(58),y=n(59),O=n(60),k=void 0===v.a.get("locale")?"US":v.a.get("locale"),w={US:{translation:f},TW:{translation:h},CN:{translation:b},KR:{translation:y},JP:{translation:O}};l.a.use(m.a).use(g.a).init({resources:w,lng:k,keySeparator:!1,interpolation:{escapeValue:!1}});var j=l.a,E=n(8),S={locale:void 0===v.a.get("locale")?"US":v.a.get("locale"),countries:["US","TW","CN","KR","JP"],customLabels:{US:"English",TW:"Traditional Chinese",CN:"Simplified Chinese",KR:"Korea",JP:"Japan"}};function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function D(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:S,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_LOCALE":return j.changeLanguage(t.payload.locale),v.a.set("locale",t.payload.locale),D({},e,{},t.payload);default:return e}},q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_CHARACTERS":return t.payload;default:return e}},x=n(21),P=n.n(x),I="https://robby570.tw/browndust-share/resource/thumbnail";function z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}var T=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!e)return null;var t=e.split("*")[1];return"".concat(I,"/").concat(t,".png")},_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t/2;return new Promise(function(a){var r=document.createElement("img");r.onload=function(){var e=document.createElement("canvas"),o=e.getContext("2d");null!==t&&(e.width=t),null!==n&&(e.height=n),o.drawImage(r,0,0,t,n);var s=e.toDataURL();a(s)},r.src=e,r.crossOrigin="use-credentials"})},R=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(0===e.length)return!1;var t="https://robby570.tw/browndust-share/#/";return t+e.filter(function(e){return 0!==e.code}).map(function(e){return"o".concat(e.id,"o").concat(e.code).concat(0===e.queue?"":"o"+e.queue)}).join(".")},A=function(e,t){return window.location.hash.replace("#/","").split(".").filter(String).map(function(n){var a=n.split("o").filter(String);if(0===a.length||a.length>3)return console.error("Invalid url params.",n),a;var r=String(a[0]),o=e.find(function(e){return e.id===String(a[0])});if(P.a.isUndefined(o))return console.error("Invalid url params.",r),a;var s=String(a[1]),c=t.find(function(e){return e._code===s});if(P.a.isUndefined(c))return console.error("Invalid url params.",s),a;var i=Number(c._type),u="url(".concat(T(c._uiIconImageName),")"),l=Number(a[2])>0&&Number(a[2])<=12?Number(a[2]):0;return{id:r,code:s,type:i,backgroundImage:u,queue:l}}).forEach(function(t){var n=e.findIndex(function(e){return e.id===t.id});-1!==n&&(e[n]=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:L,t=arguments.length>1?arguments[1]:void 0,n=P.a.get(t.payload,"formation");switch(P.a.isUndefined(n)||(window.location.href=R(n)),t.type){case"RESET_FORMATION":case"UPDATE_FORMATION":return U({},e,{},t.payload);default:return e}},J=Object(c.c)({dataset:F,characters:q,settings:C}),W=n(3),B=n(4),K=n(6),Q=n(5),Y=n(7),G=(n(99),n(68)),H=(n(100),n(69)),V=function(e){return{type:"UPDATE_FORMATION",payload:e}},Z=function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).dispatch=e.dispatch,n.t=e.t,n.state={countries:e.settings.countries,customLabels:e.settings.customLabels,transDefault:e.settings.locale},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"onSelectFlag",value:function(e){this.dispatch({type:"SET_LOCALE",payload:{locale:e}})}},{key:"render",value:function(){var e=this;return r.a.createElement("header",{id:"header"},r.a.createElement("center",{style:{position:"relative"}},r.a.createElement("h1",null,r.a.createElement("a",{href:"https://robby570.tw/browndust-share",className:"header-text"},"BROWNDUST ",r.a.createElement("small",null,this.t("title")))),r.a.createElement(H.a,{className:"flag-select",defaultCountry:this.state.transDefault,countries:this.state.countries,customLabels:this.state.customLabels,selectedSize:30,showSelectedLabel:!1,onSelect:function(t){return e.onSelectFlag(t)}})))}}]),t}(a.Component),$=Object(g.b)()(Object(i.b)(function(e){return{settings:e.settings}})(Z)),X=(n(323),n(31)),ee=n.n(X),te=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return ee.a.session(e)},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return ee.a.session.remove(e)};function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function re(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;e.dataTransfer.setData("scode",t),e.dataTransfer.setData("sid",n)},n.onDragOver=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.preventDefault()},n.onDragEnter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e.preventDefault(),n.onDragChangeStyle(t,!0)},n.onDragLeave=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e.preventDefault(),n.onDragChangeStyle(t,!1)},n.onDrop=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=e.dataTransfer.getData("sid"),r=e.dataTransfer.getData("scode"),o=n.formation.find(function(e){return e.id===t});n.onCheckExistImage(!0,t,a,r)||(null===o.backgroundImage?(n.onAddImage(t,r),n.onRemoveImage(a,r)):(n.onAddImage(a,o.code),n.onAddImage(t,r)))},n.onDragEnd=function(e,t,n){e.preventDefault()},n.props=e,n.dispatch=e.dispatch,n.state={alertID:null,alertTimer:null},n.myRef=r.a.createRef(),n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"componentDidMount",value:function(){this.dispatch(V({ref:this.myRef}))}},{key:"onAddImage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.characters.find(function(e){return e._code===t});if(t>0||n){var a=this.formation.find(function(e){return e.code===t});this.formation=this.formation.map(function(r){var o;return r.id===e?(o=re({},r,{backgroundImage:"url(".concat(T(n._uiIconImageName),")"),type:Number(n._type),code:t,dragOver:!1}),a&&(o=0===r.queue&&a.queue>0?re({},o,{queue:a.queue}):re({},o,{queue:r.queue}))):o=r,o}),this.dispatch(V({formation:this.formation,ref:this.myRef}))}}},{key:"onRemoveImage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.characters.find(function(e){return e._code===t});(t||n)&&(this.formation=this.formation.map(function(t){return t.id===e?re({},t,{backgroundImage:null,type:null,code:0,dragOver:!1,queue:0}):t}),this.dispatch(V({formation:this.formation})))}},{key:"onCheckExistImage",value:function(e,t){var n=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=!1,s=this.formation.filter(function(e){return e.code===r});return e&&"0"===a&&s.length>0?o=!0:!e&&s.length>0&&(o=!0),!!o&&(this.setState({alertID:s[0].id}),setTimeout(function(){n.setState({alertID:null})},1e3),this.onDragChangeStyle(t,!1),ne("_code"),console.info("Already exist!",r),!0)}},{key:"onDragChangeStyle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!1;this.formation=this.formation.map(function(a){return a.id===e?(a.dragOver!==t&&(n=!0),re({},a,{dragOver:t})):a}),n&&this.dispatch(V({formation:this.formation}))}},{key:"onFormationClick",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.props.dataset,n=t.queue,a=t.queueMode,r=t.queueMax,o=this.formation.find(function(t){return t.id===e});if(a&&o){if(o.code>0&&null!==o.backgroundImage&&0===n.filter(function(t){return t===e}).length){n.push(e),this.formation=this.formation.map(function(t){return t.id===e?re({},t,{queue:n.length}):t});var s=n.length===r?{formation:this.formation,queue:n,queueMode:!1}:{formation:this.formation,queue:n};this.dispatch(V(s))}}else{var c=te("_code");if(!c)return;if(this.onCheckExistImage(!1,e,null,c))return;this.onAddImage(e,c),ne("_code")}}},{key:"renderFormation",value:function(e,t){var n=this;return this.formation.map(function(a){var o=a.id,s=a.top,c=a.left,i=a.type,u=a.backgroundImage,l=a.code,g=a.dragOver,d=a.queue;return r.a.createElement("div",{key:"formation-".concat(o),className:"box ".concat(g?"over":""," ").concat(n.state.alertID===o?"shake-hard shake-constant shake-constant--hover":""),id:o,"data-type":i,draggable:l>0,style:{top:s,left:c,backgroundImage:u},onClick:function(){return n.onFormationClick(o)},onDoubleClick:function(){return n.onRemoveImage(o,l)},onDragStart:function(e){return n.onDragStart(e,l,o)},onDragOver:function(e){return n.onDragOver(e,o)},onDragEnter:function(e){return n.onDragEnter(e,o)},onDragLeave:function(e){return n.onDragLeave(e,o)},onDrop:function(e){n.onDrop(e,o)},onDragEnd:function(e){return n.onDragEnd(e,o,l)}},e?r.a.createElement("div",{className:"type","data-type":i}):null,t&&d>0?r.a.createElement("div",{className:"queue"},d):null)})}},{key:"render",value:function(){this.formation=this.props.dataset.formation;var e=this.props.dataset.options,t=e.type,n=e.backcolor,a=e.backimage,o=e.queue;return this.characters=this.props.characters,r.a.createElement("div",{ref:this.myRef,id:"formation",className:"formation \n ".concat(t?"":"no-type","\n ").concat(n?"":"no-backcolor","\n ").concat(a?"":"no-backimage","\n ").concat(o?"":"no-queue","\n ")},this.renderFormation(t,o))}}]),t}(a.Component),se=Object(i.b)(function(e){return{characters:e.characters,dataset:e.dataset}})(oe),ce=n(61),ie=(n(324),n(13)),ue=n(20),le=n(35),ge=n(62),de=n.n(ge),me=(n(334),function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).onDragStart=function(e,t,n){e.dataTransfer.setData("scode",t),e.dataTransfer.setData("sid",n)},n.getCharNameByLocale=function(e){var t=n.props.params,a=t._charName,r=t._charName_ENG,o=t._charName_TW,s=t._charName_JAP;switch(e){case"US":return r;case"TW":case"CN":return o;case"KR":return a;case"JP":return s;default:return r}},n.props=e,n.state={},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"render",value:function(){var e=this,t=this.props.params,n=t._uiIconImageName,a=t._code,o=T(n);return r.a.createElement("div",{className:"mercenary",style:{backgroundImage:"url(".concat(o,")")},"data-tooltip":this.getCharNameByLocale(this.props.settings.locale),draggable:!0,onClick:function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;(e||t)&&ee.a.session(e,t)}("_code",a)},onDragStart:function(t){return e.onDragStart(t,a,0)}})}}]),t}(a.Component)),pe=Object(i.b)(function(e){return{settings:e.settings}})(me);function ve(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function fe(){var e=Object(ce.a)(["\n display: block;\n margin: 20vh auto 0;\n"]);return fe=function(){return e},e}var he=Object(le.css)(fe()),be=function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).onStarChange=function(e){var t=n.state.stars,a=t.find(function(t){return t.label===e});a.checked=!a.checked,n.setState({stars:t})},n.onNameOptionsChange=function(e){var t=n.state.nameOptions,a=t.find(function(t){return t.label===e});a.checked=!a.checked,n.setState({nameOptions:t})},n.props=e,n.t=e.t,n.state={type:1,stars:[{label:"5",checked:!0,star:5},{label:"4",checked:!0,star:4},{label:"3",checked:!1,star:3},{label:n.t("normal"),checked:!1,star:2}],nameOptions:[{label:n.t("show"),checked:!0},{label:n.t("bold"),checked:!1}]},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"renderTypes",value:function(){var e=this;return this.state.types.map(function(t){var n=t.type,a=t.style,o=t.label;return r.a.createElement("button",{key:"type-".concat(o),type:"button",className:"type ".concat(a," ").concat(n===e.state.type?"active":""),onClick:function(){return e.setState({type:n})}},r.a.createElement("i",null),r.a.createElement("span",null,o))})}},{key:"renderFilterStars",value:function(){var e=this;return this.state.stars.map(function(t,n){var a=t.label,o=t.checked;return r.a.createElement(ie.Checkbox,{key:"start-".concat(n),shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:o,onChange:function(){return e.onStarChange(a)}},a)})}},{key:"renderFilterNameOptions",value:function(){var e=this;return this.state.nameOptions.map(function(t,n){var a=t.label,o=t.checked;return r.a.createElement(ie.Checkbox,{key:"name-".concat(n),shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:o,onChange:function(){return e.onNameOptionsChange(a)}},a)})}},{key:"renderCharacters",value:function(){var e=this;return this.props.characters.filter(function(t){var n=t._type,a=t._growType,r=t._star;return Number(n)===e.state.type&&Number(a)>=0&&(e.state.stars[0].checked&&5===Number(r)||e.state.stars[1].checked&&4===Number(r)||e.state.stars[2].checked&&3===Number(r)||e.state.stars[3].checked&&2===Number(r)||e.state.stars[3].checked&&1===Number(r))}).map(function(t,n){return r.a.createElement(pe,{key:"mercenary-".concat(n),params:t,nameOptions:e.state.nameOptions})})}},{key:"render",value:function(){return r.a.createElement("div",{className:"list"},r.a.createElement("div",{className:"types"},this.renderTypes()),r.a.createElement("div",{className:"filter"},r.a.createElement("div",{className:"star"},r.a.createElement("span",{className:"filter-title"},r.a.createElement(ue.c,null)," ",this.t("star"),"\uff1a"),this.renderFilterStars()),r.a.createElement("div",{className:"name"},r.a.createElement("span",{className:"filter-title"},this.t("name"),"\uff1a"),this.renderFilterNameOptions())),r.a.createElement("div",{className:"content\n ".concat(this.state.nameOptions[0].checked?"show":""," \n ").concat(this.state.nameOptions[1].checked?"bold":"","\n ")},0===this.props.characters.length?r.a.createElement(de.a,{css:he,color:"#5ac0de",size:100}):this.renderCharacters()))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.t,a=[],r=[];return(a=t.stars)[3].label=n("normal"),(r=t.nameOptions)[0].label=n("show"),r[1].label=n("bold"),function(e){for(var t=1;t0}).length;this.options=this.props.dataset.options;var n=this.props.dataset.queueMode;return r.a.createElement("div",{className:"toolbar"},r.a.createElement("div",{className:"options"},r.a.createElement("span",{className:"option-title"},this.t("show-content"),"\uff1a"),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.type,onChange:function(t){return e.onUpdateOptions({type:t.target.checked})}},this.t("mercenary-type")),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.queue,onChange:function(t){return e.onUpdateOptions({queue:t.target.checked})}},this.t("mercenary-queue")),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.backcolor,onChange:function(t){return e.onUpdateOptions({backcolor:t.target.checked})}},this.t("background-color")),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.backimage,onChange:function(t){return e.onUpdateOptions({backimage:t.target.checked})}},this.t("background-grid"))),r.a.createElement("div",{className:"options"},r.a.createElement("span",{className:"option-title"},this.t("image-width"),"\uff1a"),this.state.downloadSize.map(function(t,n){var a=t.value,o=t.name;return r.a.createElement(ie.Radio,{key:"download-szie-".concat(a),name:"download-size",shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),value:a,checked:a===e.state.downloadSizeSelected,onChange:function(){return e.setState({downloadSizeSelected:a})}},4!==a?"".concat(o,"px"):o)}),r.a.createElement("input",{type:"number",min:0,max:2e3,className:"download-size-custom",value:this.state.downloadSizeCustom,onChange:function(t){return e.setState({downloadSizeCustom:t.target.value.replace(/\D/,"")})},onFocus:function(){return e.setState({downloadSizeSelected:4})}})," px"),r.a.createElement("div",{className:"commands"},r.a.createElement("button",{type:"button",className:"tool tool-reset",onClick:function(){return e.onResetClick()}},r.a.createElement(je.b,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("reset"))),r.a.createElement("button",{type:"button",className:"tool tool-queue ".concat(n?"tool-queue-on":""),onClick:function(){return e.onQueueClick(n)}},n?r.a.createElement("div",null,r.a.createElement(Ee.a,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("queue"),"(",t,")")):r.a.createElement("div",null,r.a.createElement(Ee.b,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("queue"),"(",t,")"))),r.a.createElement("button",{type:"button",className:"tool tool-download",onClick:function(){return e.onDownloadClick()}},r.a.createElement(je.a,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("download")))),r.a.createElement("div",{className:"commands",style:{marginBottom:0}},r.a.createElement("input",{id:"tool-copylink-text",className:"tool-copylink-text",value:window.location.href,readOnly:!0}),r.a.createElement("button",{type:"button",className:"tool tool-copylink","data-clipboard-target":"#tool-copylink-text"},r.a.createElement(ue.b,{size:"1.5em",color:"#fff"}),r.a.createElement("span",null,this.t("copylink")))))}}],[{key:"getDerivedStateFromProps",value:function(e,t){return Pe({},t,{downloadSize:[{value:1,name:700},{value:2,name:520},{value:3,name:420},{value:4,name:(0,e.t)("image-width-custom")}]})}}]),t}(a.Component),ze=Object(g.b)()(Object(i.b)(function(e){return{dataset:e.dataset}})(Ie)),Te=(n(343),n(66)),_e=function(e){function t(){return Object(W.a)(this,t),Object(K.a)(this,Object(Q.a)(t).apply(this,arguments))}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"render",value:function(){return r.a.createElement("footer",{className:"footer"},r.a.createElement("div",{className:"footer-items"},r.a.createElement("a",{className:"footer-link",alt:"github",title:"github",href:"https://github.com/explooosion/browndust-share",target:"_blank",rel:"noopener noreferrer"},r.a.createElement(ue.a,{size:"2em"})),r.a.createElement("a",{className:"footer-link",alt:"issue",title:"issue",href:"https://github.com/explooosion/browndust-share/issues",target:"_blank",rel:"noopener noreferrer"},r.a.createElement(Te.a,{size:"2.3em"}))),r.a.createElement("span",null,"This site is fan-made and not affiliated with NEOWIZ and GAMFS in any way."))}}]),t}(a.Component),Re=Object(g.b)()(Object(i.b)(function(e){return{}})(_e)),Ae=function(){var e=Object(we.a)(ke.a.mark(function e(){return ke.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("https://browndust-global-api.pmang.cloud/book/getAllCharacters").then(function(e){return e.json()||[]}));case 1:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),Me=function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).dispatch=e.dispatch,n.state={},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"componentDidMount",value:function(){var e=this;Ae().then(function(t){return e.dispatch({type:"SET_CHARACTERS",payload:t})}).then(function(){return e.dispatch(V({formation:A(e.formation,e.characters)}))})}},{key:"render",value:function(){return this.formation=this.props.dataset.formation,this.characters=this.props.characters,this.locale=this.props.settings.locale,r.a.createElement(G.a,null,r.a.createElement("div",{id:"wrapper","data-locale":this.locale},r.a.createElement($,null),r.a.createElement("section",{id:"container"},r.a.createElement("main",{className:"main"},r.a.createElement(se,null),r.a.createElement(ze,null),r.a.createElement(Re,null)),r.a.createElement(ye,null))))}}]),t}(a.Component),Ue=Object(i.b)(function(e){return{characters:e.characters,dataset:e.dataset,settings:e.settings}})(Me);Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));var Le=Object(c.d)(J,Object(c.a)(u.a));s.a.render(r.a.createElement(i.a,{store:Le},r.a.createElement(Ue,null)),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},45:function(e,t,n){var a={"./ad.svg":101,"./ae.svg":102,"./af.svg":103,"./ag.svg":104,"./ai.svg":105,"./al.svg":106,"./am.svg":107,"./ao.svg":108,"./ar.svg":109,"./as.svg":110,"./at.svg":111,"./au.svg":112,"./aw.svg":113,"./az.svg":114,"./ba.svg":115,"./bb.svg":116,"./bd.svg":117,"./be.svg":118,"./bf.svg":119,"./bg.svg":120,"./bh.svg":121,"./bi.svg":122,"./bj.svg":123,"./bm.svg":124,"./bo.svg":125,"./br.svg":126,"./bs.svg":127,"./bt.svg":128,"./bw.svg":129,"./by.svg":130,"./bz.svg":131,"./ca.svg":132,"./cd.svg":133,"./cf.svg":134,"./cg.svg":135,"./ch.svg":136,"./ci.svg":137,"./ck.svg":138,"./cl.svg":139,"./cm.svg":140,"./cn.svg":141,"./co.svg":142,"./cr.svg":143,"./cu.svg":144,"./cv.svg":145,"./cw.svg":146,"./cy.svg":147,"./cz.svg":148,"./de.svg":149,"./dj.svg":150,"./dk.svg":151,"./dm.svg":152,"./do.svg":153,"./dz.svg":154,"./ec.svg":155,"./ee.svg":156,"./eg.svg":157,"./er.svg":158,"./es.svg":159,"./et.svg":160,"./fi.svg":161,"./fj.svg":162,"./fk.svg":163,"./fm.svg":164,"./fo.svg":165,"./fr.svg":166,"./ga.svg":167,"./gb.svg":168,"./gd.svg":169,"./ge.svg":170,"./gg.svg":171,"./gh.svg":172,"./gi.svg":173,"./gl.svg":174,"./gm.svg":175,"./gn.svg":176,"./gq.svg":177,"./gr.svg":178,"./gt.svg":179,"./gu.svg":180,"./gw.svg":181,"./hk.svg":182,"./hn.svg":183,"./hr.svg":184,"./ht.svg":185,"./hu.svg":186,"./id.svg":187,"./ie.svg":188,"./il.svg":189,"./im.svg":190,"./in.svg":191,"./io.svg":192,"./iq.svg":193,"./ir.svg":194,"./is.svg":195,"./it.svg":196,"./je.svg":197,"./jm.svg":198,"./jo.svg":199,"./jp.svg":200,"./ke.svg":201,"./kg.svg":202,"./kh.svg":203,"./ki.svg":204,"./km.svg":205,"./kn.svg":206,"./kp.svg":207,"./kr.svg":208,"./kw.svg":209,"./ky.svg":210,"./kz.svg":211,"./la.svg":212,"./lb.svg":213,"./li.svg":214,"./lk.svg":215,"./lr.svg":216,"./ls.svg":217,"./lt.svg":218,"./lu.svg":219,"./lv.svg":220,"./ly.svg":221,"./ma.svg":222,"./mc.svg":223,"./md.svg":224,"./me.svg":225,"./mg.svg":226,"./mh.svg":227,"./mk.svg":228,"./ml.svg":229,"./mm.svg":230,"./mn.svg":231,"./mo.svg":232,"./mp.svg":233,"./mq.svg":234,"./mr.svg":235,"./ms.svg":236,"./mt.svg":237,"./mu.svg":238,"./mv.svg":239,"./mw.svg":240,"./mx.svg":241,"./my.svg":242,"./mz.svg":243,"./na.svg":244,"./nato.svg":245,"./ne.svg":246,"./nf.svg":247,"./ng.svg":248,"./ni.svg":249,"./nl.svg":250,"./no.svg":251,"./np.svg":252,"./nr.svg":253,"./nu.svg":254,"./nz.svg":255,"./om.svg":256,"./pa.svg":257,"./pe.svg":258,"./pf.svg":259,"./pg.svg":260,"./ph.svg":261,"./pk.svg":262,"./pl.svg":263,"./pn.svg":264,"./pr.svg":265,"./ps.svg":266,"./pt.svg":267,"./pw.svg":268,"./py.svg":269,"./qa.svg":270,"./ro.svg":271,"./rs.svg":272,"./ru.svg":273,"./rw.svg":274,"./sa.svg":275,"./sb.svg":276,"./sc.svg":277,"./sd.svg":278,"./se.svg":279,"./sg.svg":280,"./si.svg":281,"./sk.svg":282,"./sl.svg":283,"./sm.svg":284,"./sn.svg":285,"./so.svg":286,"./sr.svg":287,"./ss.svg":288,"./st.svg":289,"./sv.svg":290,"./sx.svg":291,"./sy.svg":292,"./sz.svg":293,"./tc.svg":294,"./td.svg":295,"./tg.svg":296,"./th.svg":297,"./tibet.svg":298,"./tj.svg":299,"./tk.svg":300,"./tm.svg":301,"./tn.svg":302,"./to.svg":303,"./tr.svg":304,"./tt.svg":305,"./tv.svg":306,"./tw.svg":307,"./tz.svg":308,"./ua.svg":309,"./ug.svg":310,"./us.svg":311,"./uy.svg":312,"./uz.svg":313,"./ve.svg":314,"./vi.svg":315,"./vn.svg":316,"./vu.svg":317,"./ws.svg":318,"./ye.svg":319,"./za.svg":320,"./zm.svg":321,"./zw.svg":322};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id=45},56:function(e){e.exports=JSON.parse('{"title":"formation \xd7 share","attacker":"Warrior","defender":"Defender","magician":"Magician","supporter":"Supporter","star":"Star","name":"Name","normal":"Normal","show":"Show","bold":"Bold","show-content":"Content","mercenary-type":"Type","mercenary-queue":"Queue","background-color":"Bg Color","background-grid":"Bg Grid","image-width":"Width","image-width-custom":"Custom:","reset":"Reset","queue":"Queue","copylink":"CopyLink","download":"Download"}')},57:function(e){e.exports=JSON.parse('{"title":"\u68d5\u8272\u5875\u57c3 \xd7 \u9663\u578b\u5206\u4eab","attacker":"\u653b\u64ca","defender":"\u9632\u79a6","magician":"\u9b54\u6cd5","supporter":"\u652f\u63f4","star":"\u661f\u7d1a","name":"\u540d\u7a31","normal":"\u4e00\u822c","show":"\u986f\u793a","bold":"\u7c97\u9ad4","show-content":"\u986f\u793a\u5167\u5bb9","mercenary-type":"\u50ad\u5175\u985e\u578b","mercenary-queue":"\u51fa\u624b\u9806\u5e8f","background-color":"\u80cc\u666f\u984f\u8272","background-grid":"\u80cc\u666f\u65b9\u683c","image-width":"\u5716\u7247\u5bec\u5ea6","image-width-custom":"\u81ea\u5b9a\u7fa9\uff1a","reset":"\u91cd\u7f6e","queue":"\u9806\u5e8f","copylink":"\u8907\u88fd\u9023\u7d50","download":"\u4e0b\u8f09"}')},58:function(e){e.exports=JSON.parse('{"title":"\u68d5\u8272\u5c18\u57c3 \xd7 \u9635\u578b\u5206\u4eab","attacker":"\u653b\u51fb","defender":"\u9632\u5fa1","magician":"\u9b54\u6cd5","supporter":"\u652f\u63f4","star":"\u661f\u7ea7","name":"\u540d\u79f0","normal":"\u4e00\u822c","show":"\u663e\u793a","bold":"\u7c97\u4f53","show-content":"\u663e\u793a\u5185\u5bb9","mercenary-type":"\u4f63\u5175\u7c7b\u578b","mercenary-queue":"\u51fa\u624b\u987a\u5e8f","background-color":"\u80cc\u666f\u989c\u8272","background-grid":"\u80cc\u666f\u65b9\u683c","image-width":"\u56fe\u7247\u5bbd\u5ea6","image-width-custom":"\u81ea\u5b9a\u4e49\uff1a","reset":"\u91cd\u7f6e","queue":"\u987a\u5e8f","copylink":"\u590d\u5236\u8fde\u7ed3","download":"\u4e0b\u8f7d"}')},59:function(e){e.exports=JSON.parse('{"title":"\ub300\ud615 \xd7 \ubaab","attacker":"\uacf5\uaca9","defender":"\ubc29\uc5b4","magician":"\ub9c8\ubc95","supporter":"\uc9c0\uc6d0","star":"\ubcc4","name":"\uc774\ub984","normal":"\uc815\uc0c1","show":"\ubcf4\uc5ec \uc8fc\ub2e4","bold":"\uad75\uac8c","show-content":"\ucf58\ud150\uce20","mercenary-type":"\uc720\ud615","mercenary-queue":"\ud050","background-color":"\ubc30\uacbd\uc0c9","background-grid":"\ubc30\uacbd \uadf8\ub9ac\ub4dc","image-width":"\uc774\ubbf8\uc9c0 \ub108\ube44","image-width-custom":"\uad00\uc2b5 :","reset":"\uc7ac\uc124\uc815","queue":"\ud050","copylink":"\ub9c1\ud06c \ubcf5\uc0ac","download":"\ub2e4\uc6b4\ub85c\ub4dc"}')},60:function(e){e.exports=JSON.parse('{"title":"\u5f62\u6210 \xd7 \u5171\u6709\u3059\u308b","attacker":"\u653b\u6483","defender":"\u9632\u885b","magician":"\u9b54\u6cd5","supporter":"\u30b5\u30dd\u30fc\u30c8","star":"\u661f\u5370","name":"\u304a\u540d\u524d","normal":"\u5168\u822c","show":"\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4","bold":"\u592a\u5b57","show-content":"\u753b\u50cf\u5167\u5bb9","mercenary-type":"\u7a2e\u985e","mercenary-queue":"\u9806\u5e8f","background-color":"\u80cc\u666f\u8272","background-grid":"\u80cc\u666f\u5e83\u5834","image-width":"\u753b\u50cf\u306e\u5e45","image-width-custom":"\u30ab\u30b9\u30bf\u30e0\uff1a","reset":"\u30ea\u30bb\u30c3\u30c8\u3059\u308b","queue":"\u30ad\u30e5\u30fc","copylink":"\u30ea\u30f3\u30af\u3092\u30b3\u30d4\u30fc","download":"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b"}')},70:function(e,t,n){e.exports=n(350)},81:function(e,t,n){},99:function(e,t,n){}},[[70,1,2]]]); +//# sourceMappingURL=main.83583421.chunk.js.map \ No newline at end of file diff --git a/docs/static/js/main.83583421.chunk.js.map b/docs/static/js/main.83583421.chunk.js.map new file mode 100644 index 0000000..b50118d --- /dev/null +++ b/docs/static/js/main.83583421.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["i18n.js","models/Settings.js","reducers/settings.js","reducers/characters.js","config/api.js","utils/index.js","reducers/dataset.js","models/Formation.js","reducers/index.js","actions/index.js","container/Header.js","service/Session.js","container/Formation.js","components/Mercenary.js","container/List.js","container/Toolbar.js","container/Footer.js","service/Characters.js","App.js","serviceWorker.js","index.js","../node_modules/react-flags-select/flags sync /^/.//.*/.svg$"],"names":["lng","undefined","Cookies","get","resources","US","translation","translationEN","TW","translationTW","CN","translationCN","KR","translationKR","JP","translationJP","i18n","use","detector","initReactI18next","init","keySeparator","interpolation","escapeValue","Settings","locale","countries","customLabels","settings","state","action","type","changeLanguage","payload","set","characters","thumbnailUrl","getThumbnailUrlByImageName","_uiIconImageName","id","split","resizeImageURL","datas","w","h","Promise","resolve","img","document","createElement","onload","canvas","ctx","getContext","width","height","drawImage","dataURI","toDataURL","src","crossOrigin","generateUrlParams","formation","length","url","filter","f","code","map","queue","join","initialFormation","charactors","window","location","hash","replace","String","u","console","error","fm","find","_","isUndefined","charactor","_code","Number","_type","backgroundImage","forEach","index","findIndex","info","initialState","top","left","dragOver","options","backcolor","backimage","ref","queueMode","queueMax","dataset","href","combineReducers","updateDataset","Header","props","dispatch","t","transDefault","countryCode","this","style","position","className","defaultCountry","selectedSize","showSelectedLabel","onSelect","e","onSelectFlag","Component","withTranslation","connect","key","store","session","del","remove","Formation","onDragStart","ev","scode","sid","dataTransfer","setData","onDragOver","preventDefault","onDragEnter","tid","onDragChangeStyle","onDragLeave","onDrop","getData","target","onCheckExistImage","onAddImage","onRemoveImage","onDragEnd","alertID","alertTimer","myRef","React","createRef","c","fsource","pid","drag","exist","source","setState","setTimeout","bool","hasUpdate","q","push","typeShow","queueShow","data-type","draggable","onClick","onFormationClick","onDoubleClick","renderFormation","Mercenary","getCharNameByLocale","params","_charName","_charName_ENG","_charName_TW","_charName_JAP","URL","data-tooltip","value","override","css","List","onStarChange","_label","stars","star","label","checked","onNameOptionsChange","nameOptions","nameOption","types","shape","color","animation","icon","onChange","_growType","_star","renderTypes","renderFilterStars","renderFilterNameOptions","size","renderCharacters","Toolbar","downloadSizeSelected","downloadSizeCustom","Clipboard","downloadSize","d","name","toPng","current","then","dataUrl","a","newDataUri","download","moment","format","body","appendChild","click","removeChild","queueLen","onUpdateOptions","min","max","onFocus","onResetClick","onQueueClick","onDownloadClick","marginBottom","readOnly","data-clipboard-target","Footer","alt","title","rel","getCharacters","fetch","data","json","App","data-locale","Boolean","hostname","match","createStore","reducers","applyMiddleware","thunk","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","Object","module","exports"],"mappings":"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E/HnB,IAAIvM,EAAM,CACT,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,aAAc,IACd,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,cAAe,IACf,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,KAIb,SAASwM,EAAeC,GACvB,IAAItO,EAAKuO,EAAsBD,GAC/B,OAAOE,EAAoBxO,GAE5B,SAASuO,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE5M,EAAKyM,GAAM,CACpC,IAAInJ,EAAI,IAAIuJ,MAAM,uBAAyBJ,EAAM,KAEjD,MADAnJ,EAAEvD,KAAO,mBACHuD,EAEP,OAAOtD,EAAIyM,GAEZD,EAAeM,KAAO,WACrB,OAAOC,OAAOD,KAAK9M,IAEpBwM,EAAe9N,QAAUgO,EACzBM,EAAOC,QAAUT,EACjBA,EAAerO,GAAK,I","file":"static/js/main.83583421.chunk.js","sourcesContent":["import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport detector from \"i18next-browser-languagedetector\";\nimport Cookies from 'js-cookie';\n\n// the translations\n// (tip move them in a JSON file and import them)\nimport translationEN from './locales/US.json';\nimport translationTW from './locales/TW.json';\nimport translationCN from './locales/CN.json';\nimport translationKR from './locales/KR.json';\nimport translationJP from './locales/JP.json';\n\nconst lng = Cookies.get('locale') === undefined ? 'US' : Cookies.get('locale');\n\nconst resources = {\n US: { translation: translationEN },\n TW: { translation: translationTW },\n CN: { translation: translationCN },\n KR: { translation: translationKR },\n JP: { translation: translationJP },\n};\n\ni18n\n .use(detector)\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n\n lng, // get default from cookie\n\n keySeparator: false, // we do not use keys in form messages.welcome\n\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n });\n\nexport default i18n;\n","import Cookies from 'js-cookie';\n\nconst Settings = {\n locale: Cookies.get('locale') === undefined ? 'US' : Cookies.get('locale'),\n countries: ['US', 'TW', 'CN', 'KR', 'JP'],\n // language rule: https://github.com/ekwonye-richard/react-flags-select/blob/master/src/countries.js\n customLabels: { 'US': 'English', 'TW': 'Traditional Chinese', 'CN': 'Simplified Chinese', 'KR': 'Korea', 'JP': 'Japan' },\n};\n\nexport default Settings;\n","import Cookies from 'js-cookie';\n\nimport Settings from '../models/Settings';\nimport i18n from '../i18n';\n\nconst settings = (state = Settings, action) => {\n switch (action.type) {\n case 'SET_LOCALE':\n i18n.changeLanguage(action.payload.locale);\n Cookies.set('locale', action.payload.locale);\n return { ...state, ...action.payload };\n default:\n return state;\n }\n}\n\nexport default settings;\n","const characters = (state = [], action) => {\n switch (action.type) {\n case 'SET_CHARACTERS':\n return action.payload;\n default:\n return state;\n }\n}\n\nexport default characters;\n","const APIUrl = 'https://browndust-global-api.pmang.cloud/book/getAllCharacters';\n\n// origin, cross-origin \bpermission\n// const thumbnailUrl = 'https://ic-common.pmang.cloud/static/bdt_book/thumbnail';\n\n// on-line\nconst thumbnailUrl = 'https://robby570.tw/browndust-share/resource/thumbnail';\n\n// off-line\n// const thumbnailUrl = '/resource/thumbnail';\n\nexport {\n APIUrl,\n thumbnailUrl,\n}","/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\nimport _ from 'lodash';\nimport { thumbnailUrl } from '../config/api';\n\nexport const getThumbnailUrlByImageName = (_uiIconImageName = false) => {\n if (!_uiIconImageName) return null;\n const id = _uiIconImageName.split('*')[1];\n return `${thumbnailUrl}/${id}.png`;\n}\n\nexport const resizeImageURL = (datas, w = null, h = w / 2) => {\n return new Promise((resolve) => {\n const img = document.createElement('img');\n img.onload = () => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (w !== null) canvas.width = w;\n if (h !== null) canvas.height = h;\n ctx.drawImage(img, 0, 0, w, h);\n const dataURI = canvas.toDataURL();\n resolve(dataURI);\n };\n img.src = datas;\n // img.crossOrigin = 'anonymous';\n img.crossOrigin = 'use-credentials';\n // document.body.appendChild(img);\n });\n}\n\nexport const generateUrlParams = (formation = []) => {\n if (formation.length === 0) return false;\n\n const url = process.env.NODE_ENV === 'development'\n ? 'http://localhost:3000/#/'\n : 'https://robby570.tw/browndust-share/#/';\n\n // url rule => o{id}o{code}o{queue}\n // each group connect by . => o{id}o{code}o{queue}.o{id}...\n return url + formation\n .filter(f => f.code !== 0) // query exist id\n .map(f => `o${f.id}o${f.code}${f.queue === 0 ? '' : 'o' + f.queue}`)\n .join('.');\n}\n\nexport const initialFormation = (formation, charactors) => {\n window.location.hash\n .replace('#/', '')\n .split('.')\n .filter(String)\n .map(u => {\n // check url params valid\n const f = u.split('o').filter(String);\n if (f.length === 0 || f.length > 3) { console.error('Invalid url params.', u); return f; }\n\n // check position id\n const id = String(f[0]);\n const fm = formation.find(({ id }) => id === String(f[0]));\n if (_.isUndefined(fm)) { console.error('Invalid url params.', id); return f; }\n\n // check charactor by code\n const code = String(f[1]);\n const charactor = charactors.find(({ _code }) => _code === code);\n if (_.isUndefined(charactor)) { console.error('Invalid url params.', code); return f; }\n\n const type = Number(charactor._type);\n const backgroundImage = `url(${getThumbnailUrlByImageName(charactor._uiIconImageName)})`;\n const queue = Number(f[2]) > 0 && Number(f[2]) <= 12 ? Number(f[2]) : 0;\n\n // plan to update object by id\n return { id, code, type, backgroundImage, queue }\n })\n .forEach(u => {\n const index = formation.findIndex((f) => f.id === u.id);\n if (index === -1) return;\n\n formation[index] = { ...formation[index], ...u }\n console.info('Received data:', u.id)\n });\n return formation;\n}","import _ from 'lodash';\nimport Formation from '../models/Formation';\nimport { generateUrlParams } from '../utils';\n\nconst initialState = {\n formation: Formation,\n options: {\n type: true,\n backcolor: true,\n backimage: true,\n queue: true,\n },\n ref: null,\n queueMode: false,\n queueMax: 12,\n queue: [],\n};\n\nconst dataset = (state = initialState, action) => {\n // set up url when formation update\n const formation = _.get(action.payload, 'formation');\n if (!_.isUndefined(formation)) {\n window.location.href = generateUrlParams(formation);\n }\n\n switch (action.type) {\n case 'RESET_FORMATION':\n return { ...state, ...action.payload };\n case 'UPDATE_FORMATION':\n return { ...state, ...action.payload };\n default:\n return state;\n }\n}\n\nexport default dataset;\n","const Formation = [\n { id: 'a1', top: '9px', left: '13px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a2', top: '9px', left: '127.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a3', top: '9px', left: '242px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a4', top: '9px', left: '356px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a5', top: '9px', left: '471px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a6', top: '9px', left: '585.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b1', top: '122.5px', left: '13px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b2', top: '122.5px', left: '127.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b3', top: '122.5px', left: '242px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b4', top: '122.5px', left: '356px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b5', top: '122.5px', left: '471px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b6', top: '122.5px', left: '585.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c1', top: '239px', left: '13px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c2', top: '239px', left: '127.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c3', top: '239px', left: '242px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c4', top: '239px', left: '356px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c5', top: '239px', left: '471px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c6', top: '239px', left: '585.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n];\n\nexport default Formation;\n","import { combineReducers } from 'redux';\nimport settings from './settings';\nimport characters from './characters';\nimport dataset from './dataset';\n\nexport default combineReducers({\n dataset,\n characters,\n settings,\n})\n","export const setLocal = payload => ({\n type: 'SET_LOCALE',\n payload,\n});\n\nexport const setCharacters = payload => ({\n type: 'SET_CHARACTERS',\n payload,\n});\n\nexport const updateDataset = payload => ({\n type: 'UPDATE_FORMATION',\n payload,\n});\n\nexport const resetDataset = payload => ({\n type: 'RESET_FORMATION',\n payload,\n});\n","import React, { Component } from 'react';\nimport './Header.scss';\n\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport ReactFlagsSelect from 'react-flags-select';\n\nimport { setLocal } from '../actions';\n\nclass Header extends Component {\n constructor(props) {\n super(props);\n this.dispatch = props.dispatch;\n this.t = props.t;\n this.state = {\n countries: props.settings.countries,\n customLabels: props.settings.customLabels,\n transDefault: props.settings.locale,\n }\n }\n\n onSelectFlag(countryCode) {\n this.dispatch(setLocal({ locale: countryCode }));\n }\n\n render() {\n return (\n \n );\n }\n}\n\nHeader.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n settings: state.settings,\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(Header));\n","import store from 'store2';\n\n/**\n * Set session\n * @param {string} key\n * @param {any} value\n */\nconst set = (key = '', value = null) => {\n if (!key && !value) return;\n store.session(key, value);\n}\n\n/**\n * Get session by key\n * @param {string} key\n */\nconst get = (key = '') => store.session(key);\n\n/**\n * Remove session by key\n * @param {string} key \n */\nconst del = (key = '') => store.session.remove(key);\n\nexport {\n set,\n get,\n del,\n}\n","/* eslint-disable prefer-numeric-literals */\n/* eslint-disable no-empty */\n/* eslint-disable no-underscore-dangle */\nimport React, { Component } from 'react';\nimport './Formation.scss';\n\nimport { connect } from 'react-redux';\n\nimport { get, del } from '../service/Session';\nimport { getThumbnailUrlByImageName } from '../utils';\nimport { updateDataset } from '../actions';\n\nclass Formation extends Component {\n constructor(props) {\n super(props);\n this.props = props;\n this.dispatch = props.dispatch;\n this.state = {\n alertID: null,\n alertTimer: null,\n }\n this.myRef = React.createRef();\n }\n\n componentDidMount() {\n this.dispatch(updateDataset({ ref: this.myRef }));\n }\n\n /**\n * Add image to formation\n * @param {*} tid target position id \n * @param {*} cold character code\n */\n onAddImage(tid = null, code = 0) {\n // select character by _code\n const c = this.characters.find(({ _code }) => _code === code);\n // get formation state\n if (code > 0 || c) {\n // select target position id\n const fsource = this.formation.find(f => f.code === code);\n this.formation = this.formation.map(f => {\n let payload;\n\n if (f.id === tid) {\n payload = {\n ...f,\n backgroundImage: `url(${getThumbnailUrlByImageName(c._uiIconImageName)})`,\n type: Number(c._type),\n code: code,\n dragOver: false,\n }\n if (fsource) {\n // move to new position, then copy source queue\n if (f.queue === 0 && fsource.queue > 0) {\n payload = {\n ...payload,\n queue: fsource.queue,\n }\n } else {\n payload = {\n ...payload,\n queue: f.queue,\n }\n }\n // payload = { ...payload, ...fsource.queue }\n // queue: fsource ? fsource.queue : f.queue,\n }\n } else {\n payload = f;\n }\n return payload;\n });\n this.dispatch(updateDataset({ formation: this.formation, ref: this.myRef }));\n }\n }\n\n /**\n * Delete image from formation\n * @param {*} pid position id \n * @param {*} cold character code\n */\n onRemoveImage(pid = null, code = 0) {\n const c = this.characters.find(({ _code }) => _code === code);\n if (code || c) {\n // Remove image from source\n // select target position id\n this.formation = this.formation.map(f =>\n f.id === pid ?\n {\n ...f,\n backgroundImage: null,\n type: null,\n code: 0,\n dragOver: false,\n queue: 0,\n } : f\n )\n this.dispatch(updateDataset({ formation: this.formation }));\n }\n }\n\n /**\n * Check the target image is exist\n * @param {*} drag drag or click mode\n * @param {*} tid target id\n * @param {*} sid source id\n * @param {*} scode source code\n */\n onCheckExistImage(drag, tid, sid = null, scode = 0) {\n let exist = false;\n const source = this.formation.filter(({ code }) => code === scode);\n if (drag && sid === '0' && source.length > 0) {\n exist = true; // drag mode\n } else if (!drag && source.length > 0) {\n exist = true; // click mode\n }\n\n if (exist) {\n // add alarm style\n this.setState({ alertID: source[0].id });\n setTimeout(() => { this.setState({ alertID: null }) }, 1000);\n // remove target style\n this.onDragChangeStyle(tid, false);\n del('_code');\n console.info('Already exist!', scode);\n return true;\n }\n return false;\n }\n\n /**\n * Dropover style\n * @param {*} tid \n */\n onDragChangeStyle(tid = null, bool = true) {\n let hasUpdate = false;\n this.formation = this.formation.map(f => {\n if (f.id === tid) {\n // need update style [performance]\n if (f.dragOver !== bool) hasUpdate = true;\n return { ...f, dragOver: bool };\n }\n return f;\n });\n if (hasUpdate)\n this.dispatch(updateDataset({ formation: this.formation }));\n }\n\n /**\n * Adding charactor or setting queue\n * @param {*} id \n */\n onFormationClick(id = null) {\n const { queue, queueMode, queueMax } = this.props.dataset;\n\n const formation = this.formation.find(f => f.id === id);\n // set queue\n if (queueMode && formation) {\n // check is character inside\n if (\n formation.code > 0 && // check data exist\n formation.backgroundImage !== null && // check data exist\n queue.filter(q => q === id).length === 0 // can not repeat id\n ) {\n queue.push(id);\n this.formation = this.formation.map(f => {\n if (f.id === id) return { ...f, queue: queue.length };\n return f;\n });\n const payload = queue.length === queueMax\n ? { formation: this.formation, queue, queueMode: false } : { formation: this.formation, queue };\n this.dispatch(updateDataset(payload))\n }\n } else {\n // add character\n const code = get('_code');\n if (!code) return;\n if (this.onCheckExistImage(false, id, null, code)) return;\n this.onAddImage(id, code);\n del('_code');\n }\n }\n\n /**\n * DragStart event\n * sid source position id\n * scode source position image code\n */\n onDragStart = (ev, scode = 0, sid = null) => {\n ev.dataTransfer.setData('scode', scode);\n ev.dataTransfer.setData('sid', sid);\n }\n\n onDragOver = (ev, tid = null) => {\n ev.preventDefault();\n }\n\n onDragEnter = (ev, tid = null) => {\n ev.preventDefault();\n this.onDragChangeStyle(tid, true);\n }\n\n onDragLeave = (ev, tid = null) => {\n ev.preventDefault();\n this.onDragChangeStyle(tid, false);\n }\n\n /**\n * Drop event\n * tid target position id\n */\n onDrop = (ev, tid = null) => {\n const sid = ev.dataTransfer.getData('sid');\n const scode = ev.dataTransfer.getData('scode');\n const target = this.formation.find(({ id }) => id === tid);\n // check is exist\n if (this.onCheckExistImage(true, tid, sid, scode)) return;\n // check moving or exchanging \n if (target.backgroundImage === null) {\n // moving\n // console.log('move');\n this.onAddImage(tid, scode);\n this.onRemoveImage(sid, scode);\n } else {\n // exchage\n // console.log('exchage');\n this.onAddImage(sid, target.code);\n this.onAddImage(tid, scode);\n }\n }\n\n /**\n * Drag end (Plan: remove by drag to outside)\n */\n onDragEnd = (ev, id, code) => {\n ev.preventDefault();\n // console.log(ev.target);\n // console.log(ev.target.getAttribute('id'), id);\n // console.log(ev.target.getAttribute('draggable'));\n\n // const drag = ev.target.getAttribute('draggable');\n // if (drag) {\n // console.log('remove')\n // this.onRemoveImage(id, code)\n // };\n }\n\n renderFormation(typeShow, queueShow) {\n return this.formation.map(({ id, top, left, type, backgroundImage, code, dragOver, queue }) => {\n return (\n 0 ? true : false}\n style={{ top, left, backgroundImage }}\n onClick={() => this.onFormationClick(id)}\n onDoubleClick={() => this.onRemoveImage(id, code)}\n onDragStart={(e) => this.onDragStart(e, code, id)}\n onDragOver={(e) => this.onDragOver(e, id)}\n onDragEnter={(e) => this.onDragEnter(e, id)}\n onDragLeave={(e) => this.onDragLeave(e, id)}\n onDrop={(e) => { this.onDrop(e, id) }}\n onDragEnd={(e) => this.onDragEnd(e, id, code)}\n >\n {typeShow ?
: null}\n {queueShow && queue > 0 ?
{queue}
: null}\n \n )\n });\n }\n\n render() {\n this.formation = this.props.dataset.formation;\n const { type, backcolor, backimage, queue } = this.props.dataset.options;\n this.characters = this.props.characters;\n\n return (\n \n {this.renderFormation(type, queue)}\n \n );\n }\n}\n\nFormation.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n characters: state.characters,\n dataset: state.dataset,\n }\n}\n\nexport default connect(mapStateToProps)(Formation);","/* eslint-disable camelcase */\n/* eslint-disable no-underscore-dangle */\nimport React, { Component } from 'react';\nimport './Mercenary.scss';\n\nimport { connect } from 'react-redux';\n\nimport { set } from '../service/Session';\nimport { getThumbnailUrlByImageName } from '../utils';\n\nclass Mercenary extends Component {\n constructor(props) {\n super(props);\n this.props = props;\n this.state = {\n }\n }\n\n /**\n * DrageStart Event\n * sid source position id\n * scode source position image code\n */\n onDragStart = (ev, scode, sid) => {\n ev.dataTransfer.setData('scode', scode);\n ev.dataTransfer.setData('sid', sid);\n }\n\n getCharNameByLocale = (locale) => {\n const { _charName, _charName_ENG, _charName_TW, _charName_JAP } = this.props.params;\n switch (locale) {\n case 'US': return _charName_ENG;\n case 'TW': return _charName_TW;\n case 'CN': return _charName_TW;\n case 'KR': return _charName;\n case 'JP': return _charName_JAP;\n default: return _charName_ENG;\n }\n }\n\n render() {\n const { _uiIconImageName, _code } = this.props.params;\n const URL = getThumbnailUrlByImageName(_uiIconImageName);\n return (\n set('_code', _code)}\n onDragStart={(e) => this.onDragStart(e, _code, 0)}\n >\n \n );\n }\n}\n\nMercenary.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n settings: state.settings,\n }\n}\n\nexport default connect(mapStateToProps)(Mercenary);\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-mixed-operators */\nimport React, { Component } from 'react';\nimport './List.scss';\n\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Checkbox } from 'pretty-checkbox-react';\nimport { FaStar } from \"react-icons/fa\";\nimport { css } from '@emotion/core';\nimport HashLoader from 'react-spinners/HashLoader';\n\nimport Mercenary from '../components/Mercenary';\n\nconst override = css`\n display: block;\n margin: 20vh auto 0;\n`;\n\nclass List extends Component {\n constructor(props) {\n super(props);\n this.props = props;\n this.t = props.t;\n this.state = {\n type: 1,\n stars: [\n { label: '5', checked: true, star: 5 },\n { label: '4', checked: true, star: 4 },\n { label: '3', checked: false, star: 3 },\n { label: this.t('normal'), checked: false, star: 2 },\n ],\n nameOptions: [\n { label: this.t('show'), checked: true },\n { label: this.t('bold'), checked: false },\n ],\n };\n }\n\n static getDerivedStateFromProps({ t }, state) {\n let stars = [];\n let nameOptions = [];\n\n stars = state.stars;\n stars[3].label = t('normal');\n\n nameOptions = state.nameOptions;\n nameOptions[0].label = t('show');\n nameOptions[1].label = t('bold');\n\n return {\n ...state,\n types: [\n { type: 1, style: 'attacker', label: t('attacker') },\n { type: 2, style: 'defender', label: t('defender') },\n { type: 3, style: 'magician', label: t('magician') },\n { type: 4, style: 'supporter', label: t('supporter') },\n ],\n stars,\n nameOptions,\n }\n }\n\n onStarChange = (_label) => {\n const stars = this.state.stars;\n const star = stars.find(({ label }) => label === _label);\n star.checked = !star.checked;\n this.setState({ stars });\n }\n\n onNameOptionsChange = (_label) => {\n const nameOptions = this.state.nameOptions;\n const nameOption = nameOptions.find(({ label }) => label === _label);\n nameOption.checked = !nameOption.checked;\n this.setState({ nameOptions });\n }\n\n /**\n * Render charactor types\n */\n renderTypes() {\n return this.state.types.map(({ type, style, label }) =>\n (\n this.setState({ type })}\n >\n \n {label}\n \n ));\n }\n\n /**\n * Render stars filter\n */\n renderFilterStars() {\n return this.state.stars.map(({ label, checked }, index) =>\n (\n }\n checked={checked}\n onChange={() => this.onStarChange(label)}\n >\n {label}\n \n ));\n }\n\n /**\n * Render names filter\n */\n renderFilterNameOptions() {\n return this.state.nameOptions.map(({ label, checked }, index) => (\n }\n checked={checked}\n onChange={() => this.onNameOptionsChange(label)}\n >\n {label}\n \n ));\n }\n\n /**\n * Render lists\n */\n renderCharacters() {\n return this.props.characters\n .filter(({ _type, _growType, _star }) => {\n return (\n Number(_type) === this.state.type &&\n Number(_growType) >= 0 &&\n (\n this.state.stars[0].checked && Number(_star) === 5 ||\n this.state.stars[1].checked && Number(_star) === 4 ||\n this.state.stars[2].checked && Number(_star) === 3 ||\n this.state.stars[3].checked && Number(_star) === 2 ||\n this.state.stars[3].checked && Number(_star) === 1\n )\n )\n })\n .map((c, index) => (\n \n ))\n }\n\n render() {\n return (\n
\n
\n {this.renderTypes()}\n
\n
\n
\n {this.t('star')}:\n {this.renderFilterStars()}\n
\n
\n {this.t('name')}:\n {this.renderFilterNameOptions()}\n
\n
\n\n
\n {\n this.props.characters.length === 0 ? (\n \n ) : this.renderCharacters()\n }\n
\n
\n );\n }\n}\n\nList.propTypes = {\n characters: PropTypes.array.isRequired,\n}\n\nconst mapStateToProps = state => {\n return {\n characters: state.characters,\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(List));\n","import React, { Component } from 'react';\nimport './Toolbar.scss';\n\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport { MdRefresh, MdGetApp } from 'react-icons/md';\nimport { FaLink } from 'react-icons/fa';\nimport { GiPerspectiveDiceSixFacesRandom, GiPerspectiveDiceOne } from 'react-icons/gi';\nimport { Checkbox, Radio } from 'pretty-checkbox-react';\nimport { toPng } from 'html-to-image';\nimport moment from 'moment';\nimport Clipboard from 'clipboard';\nimport { updateDataset } from '../actions';\nimport { resizeImageURL } from '../utils';\n\nclass Toolbar extends Component {\n constructor(props) {\n super(props);\n this.dispatch = props.dispatch;\n this.t = props.t;\n this.state = {\n downloadSizeSelected: 2,\n downloadSizeCustom: 0,\n };\n }\n\n componentDidMount() {\n // eslint-disable-next-line no-new\n new Clipboard('.tool-copylink');\n }\n\n static getDerivedStateFromProps({ t }, state) {\n return {\n ...state,\n downloadSize: [\n { value: 1, name: 700 },\n { value: 2, name: 520 },\n { value: 3, name: 420 },\n { value: 4, name: t('image-width-custom') },\n ],\n }\n }\n\n onUpdateOptions(payload) {\n const options = { ...this.options, ...payload };\n this.dispatch(updateDataset({ options }));\n }\n\n onQueueClick(queueMode) {\n let payload = {};\n if (queueMode) {\n // turn off queue mode\n payload = { queueMode: !queueMode, queue: [] };\n } else {\n // turn on queue mode\n const formation = this.formation.map(f => ({ ...f, queue: 0 }));\n payload = { formation, queueMode: !queueMode };\n }\n this.dispatch(updateDataset(payload));\n }\n\n onDownloadClick() {\n const size = this.state.downloadSizeSelected !== 4 ? this.state.downloadSize\n .find(d => d.value === this.state.downloadSizeSelected).name\n : Number(this.state.downloadSizeCustom);\n\n if (Number(size) <= 0) return;\n toPng(this.props.dataset.ref.current)\n .then(async dataUrl => {\n const newDataUri = await resizeImageURL(dataUrl, size);\n const a = document.createElement('a');\n a.href = newDataUri;\n a.download = `output-${moment().format('YYYYMMDDTHmmss')}.png`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n });\n }\n\n onResetClick() {\n const formation = this.formation.map(f => ({ ...f, type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 }));\n this.dispatch(updateDataset({ formation, queueMode: false, queue: [] }));\n }\n\n render() {\n this.formation = this.props.dataset.formation;\n const queueLen = this.formation.filter(f => f.queue > 0).length;\n this.options = this.props.dataset.options;\n const { queueMode } = this.props.dataset;\n return (\n
\n
\n {this.t('show-content')}:\n }\n checked={this.options.type}\n onChange={e => this.onUpdateOptions({ type: e.target.checked })}\n >\n {this.t('mercenary-type')}\n \n }\n checked={this.options.queue}\n onChange={e => this.onUpdateOptions({ queue: e.target.checked })}\n >\n {this.t('mercenary-queue')}\n \n }\n checked={this.options.backcolor}\n onChange={e => this.onUpdateOptions({ backcolor: e.target.checked })}\n >\n {this.t('background-color')}\n \n }\n checked={this.options.backimage}\n onChange={e => this.onUpdateOptions({ backimage: e.target.checked })}\n >\n {this.t('background-grid')}\n \n
\n\n
\n {this.t('image-width')}:\n {\n this.state.downloadSize.map(({ value, name }, index) => {\n return (\n }\n value={value}\n checked={value === this.state.downloadSizeSelected}\n onChange={() => this.setState({ downloadSizeSelected: value })}\n >\n {value !== 4 ? `${name}px` : name}\n \n );\n })\n }\n this.setState({ downloadSizeCustom: e.target.value.replace(/\\D/, '') })}\n onFocus={() => this.setState({ downloadSizeSelected: 4 })}\n /> px\n
\n\n
\n this.onResetClick()}\n >\n \n {this.t('reset')}\n \n this.onQueueClick(queueMode)}\n >\n {\n queueMode\n ?
{this.t('queue')}({queueLen})
\n :
{this.t('queue')}({queueLen})
\n }\n \n this.onDownloadClick()}\n >\n \n {this.t('download')}\n \n
\n
\n \n \n \n {this.t('copylink')}\n \n
\n
\n );\n }\n}\n\nToolbar.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n dataset: state.dataset,\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(Toolbar));\n","/* eslint-disable jsx-a11y/control-has-associated-label */\nimport React, { Component } from 'react';\nimport './Footer.scss';\n\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { FaGithub } from \"react-icons/fa\";\nimport { GoIssueOpened } from \"react-icons/go\";\n\nclass Footer extends Component {\n render() {\n return (\n
\n
\n \n \n
\n This site is fan-made and not affiliated with NEOWIZ and GAMFS in any way.\n
\n );\n }\n}\n\nFooter.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(Footer));\n","import { APIUrl } from '../config/api';\n\nconst getCharacters = async () => fetch(APIUrl).then(data => data.json() || [])\n\nexport { getCharacters };\n","import React, { Component } from 'react';\nimport './App.scss';\n\nimport { HashRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport Header from './container/Header';\nimport Formation from './container/Formation';\nimport List from './container/List';\nimport Toolbar from './container/Toolbar';\nimport Footer from './container/Footer';\n\nimport { setCharacters, updateDataset } from './actions';\nimport { getCharacters } from './service/Characters';\nimport { initialFormation } from './utils';\n\nclass App extends Component {\n constructor(props) {\n super(props);\n this.dispatch = props.dispatch;\n this.state = {};\n }\n\n componentDidMount() {\n getCharacters()\n .then(data => this.dispatch(setCharacters(data)))\n .then(() => this.dispatch(updateDataset({ formation: initialFormation(this.formation, this.characters) })));\n }\n\n render() {\n this.formation = this.props.dataset.formation;\n this.characters = this.props.characters;\n this.locale = this.props.settings.locale;\n return (\n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nApp.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n characters: state.characters,\n dataset: state.dataset,\n settings: state.settings,\n }\n}\n\nexport default connect(mapStateToProps)(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport thunk from 'redux-thunk';\nimport './index.scss';\nimport './i18n';\nimport reducers from './reducers';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nconst store = createStore(\n reducers,\n applyMiddleware(thunk)\n);\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","var map = {\n\t\"./ad.svg\": 101,\n\t\"./ae.svg\": 102,\n\t\"./af.svg\": 103,\n\t\"./ag.svg\": 104,\n\t\"./ai.svg\": 105,\n\t\"./al.svg\": 106,\n\t\"./am.svg\": 107,\n\t\"./ao.svg\": 108,\n\t\"./ar.svg\": 109,\n\t\"./as.svg\": 110,\n\t\"./at.svg\": 111,\n\t\"./au.svg\": 112,\n\t\"./aw.svg\": 113,\n\t\"./az.svg\": 114,\n\t\"./ba.svg\": 115,\n\t\"./bb.svg\": 116,\n\t\"./bd.svg\": 117,\n\t\"./be.svg\": 118,\n\t\"./bf.svg\": 119,\n\t\"./bg.svg\": 120,\n\t\"./bh.svg\": 121,\n\t\"./bi.svg\": 122,\n\t\"./bj.svg\": 123,\n\t\"./bm.svg\": 124,\n\t\"./bo.svg\": 125,\n\t\"./br.svg\": 126,\n\t\"./bs.svg\": 127,\n\t\"./bt.svg\": 128,\n\t\"./bw.svg\": 129,\n\t\"./by.svg\": 130,\n\t\"./bz.svg\": 131,\n\t\"./ca.svg\": 132,\n\t\"./cd.svg\": 133,\n\t\"./cf.svg\": 134,\n\t\"./cg.svg\": 135,\n\t\"./ch.svg\": 136,\n\t\"./ci.svg\": 137,\n\t\"./ck.svg\": 138,\n\t\"./cl.svg\": 139,\n\t\"./cm.svg\": 140,\n\t\"./cn.svg\": 141,\n\t\"./co.svg\": 142,\n\t\"./cr.svg\": 143,\n\t\"./cu.svg\": 144,\n\t\"./cv.svg\": 145,\n\t\"./cw.svg\": 146,\n\t\"./cy.svg\": 147,\n\t\"./cz.svg\": 148,\n\t\"./de.svg\": 149,\n\t\"./dj.svg\": 150,\n\t\"./dk.svg\": 151,\n\t\"./dm.svg\": 152,\n\t\"./do.svg\": 153,\n\t\"./dz.svg\": 154,\n\t\"./ec.svg\": 155,\n\t\"./ee.svg\": 156,\n\t\"./eg.svg\": 157,\n\t\"./er.svg\": 158,\n\t\"./es.svg\": 159,\n\t\"./et.svg\": 160,\n\t\"./fi.svg\": 161,\n\t\"./fj.svg\": 162,\n\t\"./fk.svg\": 163,\n\t\"./fm.svg\": 164,\n\t\"./fo.svg\": 165,\n\t\"./fr.svg\": 166,\n\t\"./ga.svg\": 167,\n\t\"./gb.svg\": 168,\n\t\"./gd.svg\": 169,\n\t\"./ge.svg\": 170,\n\t\"./gg.svg\": 171,\n\t\"./gh.svg\": 172,\n\t\"./gi.svg\": 173,\n\t\"./gl.svg\": 174,\n\t\"./gm.svg\": 175,\n\t\"./gn.svg\": 176,\n\t\"./gq.svg\": 177,\n\t\"./gr.svg\": 178,\n\t\"./gt.svg\": 179,\n\t\"./gu.svg\": 180,\n\t\"./gw.svg\": 181,\n\t\"./hk.svg\": 182,\n\t\"./hn.svg\": 183,\n\t\"./hr.svg\": 184,\n\t\"./ht.svg\": 185,\n\t\"./hu.svg\": 186,\n\t\"./id.svg\": 187,\n\t\"./ie.svg\": 188,\n\t\"./il.svg\": 189,\n\t\"./im.svg\": 190,\n\t\"./in.svg\": 191,\n\t\"./io.svg\": 192,\n\t\"./iq.svg\": 193,\n\t\"./ir.svg\": 194,\n\t\"./is.svg\": 195,\n\t\"./it.svg\": 196,\n\t\"./je.svg\": 197,\n\t\"./jm.svg\": 198,\n\t\"./jo.svg\": 199,\n\t\"./jp.svg\": 200,\n\t\"./ke.svg\": 201,\n\t\"./kg.svg\": 202,\n\t\"./kh.svg\": 203,\n\t\"./ki.svg\": 204,\n\t\"./km.svg\": 205,\n\t\"./kn.svg\": 206,\n\t\"./kp.svg\": 207,\n\t\"./kr.svg\": 208,\n\t\"./kw.svg\": 209,\n\t\"./ky.svg\": 210,\n\t\"./kz.svg\": 211,\n\t\"./la.svg\": 212,\n\t\"./lb.svg\": 213,\n\t\"./li.svg\": 214,\n\t\"./lk.svg\": 215,\n\t\"./lr.svg\": 216,\n\t\"./ls.svg\": 217,\n\t\"./lt.svg\": 218,\n\t\"./lu.svg\": 219,\n\t\"./lv.svg\": 220,\n\t\"./ly.svg\": 221,\n\t\"./ma.svg\": 222,\n\t\"./mc.svg\": 223,\n\t\"./md.svg\": 224,\n\t\"./me.svg\": 225,\n\t\"./mg.svg\": 226,\n\t\"./mh.svg\": 227,\n\t\"./mk.svg\": 228,\n\t\"./ml.svg\": 229,\n\t\"./mm.svg\": 230,\n\t\"./mn.svg\": 231,\n\t\"./mo.svg\": 232,\n\t\"./mp.svg\": 233,\n\t\"./mq.svg\": 234,\n\t\"./mr.svg\": 235,\n\t\"./ms.svg\": 236,\n\t\"./mt.svg\": 237,\n\t\"./mu.svg\": 238,\n\t\"./mv.svg\": 239,\n\t\"./mw.svg\": 240,\n\t\"./mx.svg\": 241,\n\t\"./my.svg\": 242,\n\t\"./mz.svg\": 243,\n\t\"./na.svg\": 244,\n\t\"./nato.svg\": 245,\n\t\"./ne.svg\": 246,\n\t\"./nf.svg\": 247,\n\t\"./ng.svg\": 248,\n\t\"./ni.svg\": 249,\n\t\"./nl.svg\": 250,\n\t\"./no.svg\": 251,\n\t\"./np.svg\": 252,\n\t\"./nr.svg\": 253,\n\t\"./nu.svg\": 254,\n\t\"./nz.svg\": 255,\n\t\"./om.svg\": 256,\n\t\"./pa.svg\": 257,\n\t\"./pe.svg\": 258,\n\t\"./pf.svg\": 259,\n\t\"./pg.svg\": 260,\n\t\"./ph.svg\": 261,\n\t\"./pk.svg\": 262,\n\t\"./pl.svg\": 263,\n\t\"./pn.svg\": 264,\n\t\"./pr.svg\": 265,\n\t\"./ps.svg\": 266,\n\t\"./pt.svg\": 267,\n\t\"./pw.svg\": 268,\n\t\"./py.svg\": 269,\n\t\"./qa.svg\": 270,\n\t\"./ro.svg\": 271,\n\t\"./rs.svg\": 272,\n\t\"./ru.svg\": 273,\n\t\"./rw.svg\": 274,\n\t\"./sa.svg\": 275,\n\t\"./sb.svg\": 276,\n\t\"./sc.svg\": 277,\n\t\"./sd.svg\": 278,\n\t\"./se.svg\": 279,\n\t\"./sg.svg\": 280,\n\t\"./si.svg\": 281,\n\t\"./sk.svg\": 282,\n\t\"./sl.svg\": 283,\n\t\"./sm.svg\": 284,\n\t\"./sn.svg\": 285,\n\t\"./so.svg\": 286,\n\t\"./sr.svg\": 287,\n\t\"./ss.svg\": 288,\n\t\"./st.svg\": 289,\n\t\"./sv.svg\": 290,\n\t\"./sx.svg\": 291,\n\t\"./sy.svg\": 292,\n\t\"./sz.svg\": 293,\n\t\"./tc.svg\": 294,\n\t\"./td.svg\": 295,\n\t\"./tg.svg\": 296,\n\t\"./th.svg\": 297,\n\t\"./tibet.svg\": 298,\n\t\"./tj.svg\": 299,\n\t\"./tk.svg\": 300,\n\t\"./tm.svg\": 301,\n\t\"./tn.svg\": 302,\n\t\"./to.svg\": 303,\n\t\"./tr.svg\": 304,\n\t\"./tt.svg\": 305,\n\t\"./tv.svg\": 306,\n\t\"./tw.svg\": 307,\n\t\"./tz.svg\": 308,\n\t\"./ua.svg\": 309,\n\t\"./ug.svg\": 310,\n\t\"./us.svg\": 311,\n\t\"./uy.svg\": 312,\n\t\"./uz.svg\": 313,\n\t\"./ve.svg\": 314,\n\t\"./vi.svg\": 315,\n\t\"./vn.svg\": 316,\n\t\"./vu.svg\": 317,\n\t\"./ws.svg\": 318,\n\t\"./ye.svg\": 319,\n\t\"./za.svg\": 320,\n\t\"./zm.svg\": 321,\n\t\"./zw.svg\": 322\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 45;"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/static/js/main.dffeaabb.chunk.js b/docs/static/js/main.dffeaabb.chunk.js deleted file mode 100644 index 5c437bc..0000000 --- a/docs/static/js/main.dffeaabb.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window["webpackJsonpbrowndust-share"]=window["webpackJsonpbrowndust-share"]||[]).push([[0],{100:function(e,t,n){},323:function(e,t,n){},324:function(e,t,n){},334:function(e,t,n){},336:function(e,t,n){},343:function(e,t,n){},350:function(e,t,n){"use strict";n.r(t);var a=n(1),r=n.n(a),o=n(27),s=n.n(o),c=n(16),i=n(2),u=n(51),l=(n(81),n(41)),g=n(10),d=n(55),m=n.n(d),p=n(15),v=n.n(p),f=n(56),h=n(57),b=n(58),y=n(59),O=n(60),k=void 0===v.a.get("locale")?"US":v.a.get("locale"),w={US:{translation:f},TW:{translation:h},CN:{translation:b},KR:{translation:y},JP:{translation:O}};l.a.use(m.a).use(g.a).init({resources:w,lng:k,keySeparator:!1,interpolation:{escapeValue:!1}});var j=l.a,E=n(8),S={locale:void 0===v.a.get("locale")?"US":v.a.get("locale"),countries:["US","TW","CN","KR","JP"],customLabels:{US:"English",TW:"Traditional Chinese",CN:"Simplified Chinese",KR:"Korea",JP:"Japan"}};function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function D(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:S,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_LOCALE":return j.changeLanguage(t.payload.locale),v.a.set("locale",t.payload.locale),D({},e,{},t.payload);default:return e}},q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_CHARACTERS":return t.payload;default:return e}},x=n(21),P=n.n(x),I="https://robby570.tw/browndust-share/resource/thumbnail";function z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}var T=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!e)return null;var t=e.split("*")[1];return"".concat(I,"/").concat(t,".png")},_=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t/2;return new Promise(function(a){var r=document.createElement("img");r.onload=function(){var e=document.createElement("canvas"),o=e.getContext("2d");null!==t&&(e.width=t),null!==n&&(e.height=n),o.drawImage(r,0,0,t,n);var s=e.toDataURL();a(s)},r.src=e,r.crossOrigin="use-credentials"})},R=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(0===e.length)return!1;var t="https://robby570.tw/browndust-share/#/";return t+e.filter(function(e){return 0!==e.code}).map(function(e){return"o".concat(e.id,"o").concat(e.code).concat(0===e.queue?"":"o"+e.queue)}).join(".")},A=function(e,t){return window.location.hash.replace("#/","").split(".").filter(String).map(function(n){var a=n.split("o").filter(String);if(0===a.length||a.length>3)return console.error("Invalid url params.",n),a;var r=String(a[0]),o=e.find(function(e){return e.id===String(a[0])});if(P.a.isUndefined(o))return console.error("Invalid url params.",r),a;var s=String(a[1]),c=t.find(function(e){return e._code===s});if(P.a.isUndefined(c))return console.error("Invalid url params.",s),a;var i=Number(c._type),u="url(".concat(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e?"".concat(I,"/char").concat(Number(e)-1,"icon.png"):null}(s),")"),l=Number(a[2])>0&&Number(a[2])<=12?Number(a[2]):0;return{id:r,code:s,type:i,backgroundImage:u,queue:l}}).forEach(function(t){var n=e.findIndex(function(e){return e.id===t.id});-1!==n&&(e[n]=function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:L,t=arguments.length>1?arguments[1]:void 0,n=P.a.get(t.payload,"formation");switch(P.a.isUndefined(n)||(window.location.href=R(n)),t.type){case"RESET_FORMATION":case"UPDATE_FORMATION":return U({},e,{},t.payload);default:return e}},J=Object(c.c)({dataset:F,characters:q,settings:C}),W=n(3),B=n(4),K=n(6),Q=n(5),Y=n(7),G=(n(99),n(68)),H=(n(100),n(69)),V=function(e){return{type:"UPDATE_FORMATION",payload:e}},Z=function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).dispatch=e.dispatch,n.t=e.t,n.state={countries:e.settings.countries,customLabels:e.settings.customLabels,transDefault:e.settings.locale},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"onSelectFlag",value:function(e){this.dispatch({type:"SET_LOCALE",payload:{locale:e}})}},{key:"render",value:function(){var e=this;return r.a.createElement("header",{id:"header"},r.a.createElement("center",{style:{position:"relative"}},r.a.createElement("h1",null,r.a.createElement("a",{href:"/",className:"header-text"},"BROWNDUST ",r.a.createElement("small",null,this.t("title")))),r.a.createElement(H.a,{className:"flag-select",defaultCountry:this.state.transDefault,countries:this.state.countries,customLabels:this.state.customLabels,selectedSize:30,showSelectedLabel:!1,onSelect:function(t){return e.onSelectFlag(t)}})))}}]),t}(a.Component),$=Object(g.b)()(Object(i.b)(function(e){return{settings:e.settings}})(Z)),X=(n(323),n(31)),ee=n.n(X),te=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return ee.a.session(e)},ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return ee.a.session.remove(e)};function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function re(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;e.dataTransfer.setData("scode",t),e.dataTransfer.setData("sid",n)},n.onDragOver=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.preventDefault()},n.onDragEnter=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e.preventDefault(),n.onDragChangeStyle(t,!0)},n.onDragLeave=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e.preventDefault(),n.onDragChangeStyle(t,!1)},n.onDrop=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=e.dataTransfer.getData("sid"),r=e.dataTransfer.getData("scode"),o=n.formation.find(function(e){return e.id===t});n.onCheckExistImage(!0,t,a,r)||(null===o.backgroundImage?(n.onAddImage(t,r),n.onRemoveImage(a,r)):(n.onAddImage(a,o.code),n.onAddImage(t,r)))},n.onDragEnd=function(e,t,n){e.preventDefault()},n.props=e,n.dispatch=e.dispatch,n.state={alertID:null,alertTimer:null},n.myRef=r.a.createRef(),n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"componentDidMount",value:function(){this.dispatch(V({ref:this.myRef}))}},{key:"onAddImage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.characters.find(function(e){return e._code===t});if(t>0||n){var a=this.formation.find(function(e){return e.code===t});this.formation=this.formation.map(function(r){var o;return r.id===e?(o=re({},r,{backgroundImage:"url(".concat(T(n._uiIconImageName),")"),type:Number(n._type),code:t,dragOver:!1}),a&&(o=0===r.queue&&a.queue>0?re({},o,{queue:a.queue}):re({},o,{queue:r.queue}))):o=r,o}),this.dispatch(V({formation:this.formation,ref:this.myRef}))}}},{key:"onRemoveImage",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.characters.find(function(e){return e._code===t});(t||n)&&(this.formation=this.formation.map(function(t){return t.id===e?re({},t,{backgroundImage:null,type:null,code:0,dragOver:!1,queue:0}):t}),this.dispatch(V({formation:this.formation})))}},{key:"onCheckExistImage",value:function(e,t){var n=this,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=!1,s=this.formation.filter(function(e){return e.code===r});return e&&"0"===a&&s.length>0?o=!0:!e&&s.length>0&&(o=!0),!!o&&(this.setState({alertID:s[0].id}),setTimeout(function(){n.setState({alertID:null})},1e3),this.onDragChangeStyle(t,!1),ne("_code"),console.info("Already exist!",r),!0)}},{key:"onDragChangeStyle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!1;this.formation=this.formation.map(function(a){return a.id===e?(a.dragOver!==t&&(n=!0),re({},a,{dragOver:t})):a}),n&&this.dispatch(V({formation:this.formation}))}},{key:"onFormationClick",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.props.dataset,n=t.queue,a=t.queueMode,r=t.queueMax,o=this.formation.find(function(t){return t.id===e});if(a&&o){if(o.code>0&&null!==o.backgroundImage&&0===n.filter(function(t){return t===e}).length){n.push(e),this.formation=this.formation.map(function(t){return t.id===e?re({},t,{queue:n.length}):t});var s=n.length===r?{formation:this.formation,queue:n,queueMode:!1}:{formation:this.formation,queue:n};this.dispatch(V(s))}}else{var c=te("_code");if(!c)return;if(this.onCheckExistImage(!1,e,null,c))return;this.onAddImage(e,c),ne("_code")}}},{key:"renderFormation",value:function(e,t){var n=this;return this.formation.map(function(a){var o=a.id,s=a.top,c=a.left,i=a.type,u=a.backgroundImage,l=a.code,g=a.dragOver,d=a.queue;return r.a.createElement("div",{key:"formation-".concat(o),className:"box ".concat(g?"over":""," ").concat(n.state.alertID===o?"shake-hard shake-constant shake-constant--hover":""),id:o,"data-type":i,draggable:l>0,style:{top:s,left:c,backgroundImage:u},onClick:function(){return n.onFormationClick(o)},onDoubleClick:function(){return n.onRemoveImage(o,l)},onDragStart:function(e){return n.onDragStart(e,l,o)},onDragOver:function(e){return n.onDragOver(e,o)},onDragEnter:function(e){return n.onDragEnter(e,o)},onDragLeave:function(e){return n.onDragLeave(e,o)},onDrop:function(e){n.onDrop(e,o)},onDragEnd:function(e){return n.onDragEnd(e,o,l)}},e?r.a.createElement("div",{className:"type","data-type":i}):null,t&&d>0?r.a.createElement("div",{className:"queue"},d):null)})}},{key:"render",value:function(){this.formation=this.props.dataset.formation;var e=this.props.dataset.options,t=e.type,n=e.backcolor,a=e.backimage,o=e.queue;return this.characters=this.props.characters,r.a.createElement("div",{ref:this.myRef,id:"formation",className:"formation \n ".concat(t?"":"no-type","\n ").concat(n?"":"no-backcolor","\n ").concat(a?"":"no-backimage","\n ").concat(o?"":"no-queue","\n ")},this.renderFormation(t,o))}}]),t}(a.Component),se=Object(i.b)(function(e){return{characters:e.characters,dataset:e.dataset}})(oe),ce=n(61),ie=(n(324),n(13)),ue=n(20),le=n(35),ge=n(62),de=n.n(ge),me=(n(334),function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).onDragStart=function(e,t,n){e.dataTransfer.setData("scode",t),e.dataTransfer.setData("sid",n)},n.getCharNameByLocale=function(e){var t=n.props.params,a=t._charName,r=t._charName_ENG,o=t._charName_TW,s=t._charName_JAP;switch(e){case"US":return r;case"TW":case"CN":return o;case"KR":return a;case"JP":return s;default:return r}},n.props=e,n.state={},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"render",value:function(){var e=this,t=this.props.params,n=t._uiIconImageName,a=t._code,o=T(n);return r.a.createElement("div",{className:"mercenary",style:{backgroundImage:"url(".concat(o,")")},"data-tooltip":this.getCharNameByLocale(this.props.settings.locale),draggable:!0,onClick:function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;(e||t)&&ee.a.session(e,t)}("_code",a)},onDragStart:function(t){return e.onDragStart(t,a,0)}})}}]),t}(a.Component)),pe=Object(i.b)(function(e){return{settings:e.settings}})(me);function ve(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function fe(){var e=Object(ce.a)(["\n display: block;\n margin: 20vh auto 0;\n"]);return fe=function(){return e},e}var he=Object(le.css)(fe()),be=function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).onStarChange=function(e){var t=n.state.stars,a=t.find(function(t){return t.label===e});a.checked=!a.checked,n.setState({stars:t})},n.onNameOptionsChange=function(e){var t=n.state.nameOptions,a=t.find(function(t){return t.label===e});a.checked=!a.checked,n.setState({nameOptions:t})},n.props=e,n.t=e.t,n.state={type:1,stars:[{label:"5",checked:!0,star:5},{label:"4",checked:!0,star:4},{label:"3",checked:!1,star:3},{label:n.t("normal"),checked:!1,star:2}],nameOptions:[{label:n.t("show"),checked:!0},{label:n.t("bold"),checked:!1}]},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"renderTypes",value:function(){var e=this;return this.state.types.map(function(t){var n=t.type,a=t.style,o=t.label;return r.a.createElement("button",{key:"type-".concat(o),type:"button",className:"type ".concat(a," ").concat(n===e.state.type?"active":""),onClick:function(){return e.setState({type:n})}},r.a.createElement("i",null),r.a.createElement("span",null,o))})}},{key:"renderFilterStars",value:function(){var e=this;return this.state.stars.map(function(t,n){var a=t.label,o=t.checked;return r.a.createElement(ie.Checkbox,{key:"start-".concat(n),shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:o,onChange:function(){return e.onStarChange(a)}},a)})}},{key:"renderFilterNameOptions",value:function(){var e=this;return this.state.nameOptions.map(function(t,n){var a=t.label,o=t.checked;return r.a.createElement(ie.Checkbox,{key:"name-".concat(n),shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:o,onChange:function(){return e.onNameOptionsChange(a)}},a)})}},{key:"renderCharacters",value:function(){var e=this;return this.props.characters.filter(function(t){var n=t._type,a=t._growType,r=t._star;return Number(n)===e.state.type&&Number(a)>=0&&(e.state.stars[0].checked&&5===Number(r)||e.state.stars[1].checked&&4===Number(r)||e.state.stars[2].checked&&3===Number(r)||e.state.stars[3].checked&&2===Number(r)||e.state.stars[3].checked&&1===Number(r))}).map(function(t,n){return r.a.createElement(pe,{key:"mercenary-".concat(n),params:t,nameOptions:e.state.nameOptions})})}},{key:"render",value:function(){return r.a.createElement("div",{className:"list"},r.a.createElement("div",{className:"types"},this.renderTypes()),r.a.createElement("div",{className:"filter"},r.a.createElement("div",{className:"star"},r.a.createElement("span",{className:"filter-title"},r.a.createElement(ue.c,null)," ",this.t("star"),"\uff1a"),this.renderFilterStars()),r.a.createElement("div",{className:"name"},r.a.createElement("span",{className:"filter-title"},this.t("name"),"\uff1a"),this.renderFilterNameOptions())),r.a.createElement("div",{className:"content\n ".concat(this.state.nameOptions[0].checked?"show":""," \n ").concat(this.state.nameOptions[1].checked?"bold":"","\n ")},0===this.props.characters.length?r.a.createElement(de.a,{css:he,color:"#5ac0de",size:100}):this.renderCharacters()))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.t,a=[],r=[];return(a=t.stars)[3].label=n("normal"),(r=t.nameOptions)[0].label=n("show"),r[1].label=n("bold"),function(e){for(var t=1;t0}).length;this.options=this.props.dataset.options;var n=this.props.dataset.queueMode;return r.a.createElement("div",{className:"toolbar"},r.a.createElement("div",{className:"options"},r.a.createElement("span",{className:"option-title"},this.t("show-content"),"\uff1a"),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.type,onChange:function(t){return e.onUpdateOptions({type:t.target.checked})}},this.t("mercenary-type")),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.queue,onChange:function(t){return e.onUpdateOptions({queue:t.target.checked})}},this.t("mercenary-queue")),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.backcolor,onChange:function(t){return e.onUpdateOptions({backcolor:t.target.checked})}},this.t("background-color")),r.a.createElement(ie.Checkbox,{shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),checked:this.options.backimage,onChange:function(t){return e.onUpdateOptions({backimage:t.target.checked})}},this.t("background-grid"))),r.a.createElement("div",{className:"options"},r.a.createElement("span",{className:"option-title"},this.t("image-width"),"\uff1a"),this.state.downloadSize.map(function(t,n){var a=t.value,o=t.name;return r.a.createElement(ie.Radio,{key:"download-szie-".concat(a),name:"download-size",shape:"round",color:"info",animation:"jelly",icon:r.a.createElement("i",{className:"mdi mdi-check"}),value:a,checked:a===e.state.downloadSizeSelected,onChange:function(){return e.setState({downloadSizeSelected:a})}},4!==a?"".concat(o,"px"):o)}),r.a.createElement("input",{type:"number",min:0,max:2e3,className:"download-size-custom",value:this.state.downloadSizeCustom,onChange:function(t){return e.setState({downloadSizeCustom:t.target.value.replace(/\D/,"")})},onFocus:function(){return e.setState({downloadSizeSelected:4})}})," px"),r.a.createElement("div",{className:"commands"},r.a.createElement("button",{type:"button",className:"tool tool-reset",onClick:function(){return e.onResetClick()}},r.a.createElement(je.b,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("reset"))),r.a.createElement("button",{type:"button",className:"tool tool-queue ".concat(n?"tool-queue-on":""),onClick:function(){return e.onQueueClick(n)}},n?r.a.createElement("div",null,r.a.createElement(Ee.a,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("queue"),"(",t,")")):r.a.createElement("div",null,r.a.createElement(Ee.b,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("queue"),"(",t,")"))),r.a.createElement("button",{type:"button",className:"tool tool-download",onClick:function(){return e.onDownloadClick()}},r.a.createElement(je.a,{size:"2em",color:"#fff"}),r.a.createElement("span",null,this.t("download")))),r.a.createElement("div",{className:"commands",style:{marginBottom:0}},r.a.createElement("input",{id:"tool-copylink-text",className:"tool-copylink-text",value:window.location.href,readOnly:!0}),r.a.createElement("button",{type:"button",className:"tool tool-copylink","data-clipboard-target":"#tool-copylink-text"},r.a.createElement(ue.b,{size:"1.5em",color:"#fff"}),r.a.createElement("span",null,this.t("copylink")))))}}],[{key:"getDerivedStateFromProps",value:function(e,t){return Pe({},t,{downloadSize:[{value:1,name:700},{value:2,name:520},{value:3,name:420},{value:4,name:(0,e.t)("image-width-custom")}]})}}]),t}(a.Component),ze=Object(g.b)()(Object(i.b)(function(e){return{dataset:e.dataset}})(Ie)),Te=(n(343),n(66)),_e=function(e){function t(){return Object(W.a)(this,t),Object(K.a)(this,Object(Q.a)(t).apply(this,arguments))}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"render",value:function(){return r.a.createElement("footer",{className:"footer"},r.a.createElement("div",{className:"footer-items"},r.a.createElement("a",{className:"footer-link",alt:"github",title:"github",href:"https://github.com/explooosion/browndust-share",target:"_blank",rel:"noopener noreferrer"},r.a.createElement(ue.a,{size:"2em"})),r.a.createElement("a",{className:"footer-link",alt:"issue",title:"issue",href:"https://github.com/explooosion/browndust-share/issues",target:"_blank",rel:"noopener noreferrer"},r.a.createElement(Te.a,{size:"2.3em"}))),r.a.createElement("span",null,"This site is fan-made and not affiliated with NEOWIZ and GAMFS in any way."))}}]),t}(a.Component),Re=Object(g.b)()(Object(i.b)(function(e){return{}})(_e)),Ae=function(){var e=Object(we.a)(ke.a.mark(function e(){return ke.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("https://browndust-global-api.pmang.cloud/book/getAllCharacters").then(function(e){return e.json()||[]}));case 1:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),Me=function(e){function t(e){var n;return Object(W.a)(this,t),(n=Object(K.a)(this,Object(Q.a)(t).call(this,e))).dispatch=e.dispatch,n.state={},n}return Object(Y.a)(t,e),Object(B.a)(t,[{key:"componentDidMount",value:function(){var e=this;Ae().then(function(t){return e.dispatch({type:"SET_CHARACTERS",payload:t})}).then(function(){return e.dispatch(V({formation:A(e.formation,e.characters)}))})}},{key:"render",value:function(){return this.formation=this.props.dataset.formation,this.characters=this.props.characters,this.locale=this.props.settings.locale,r.a.createElement(G.a,null,r.a.createElement("div",{id:"wrapper","data-locale":this.locale},r.a.createElement($,null),r.a.createElement("section",{id:"container"},r.a.createElement("main",{className:"main"},r.a.createElement(se,null),r.a.createElement(ze,null),r.a.createElement(Re,null)),r.a.createElement(ye,null))))}}]),t}(a.Component),Ue=Object(i.b)(function(e){return{characters:e.characters,dataset:e.dataset,settings:e.settings}})(Me);Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));var Le=Object(c.d)(J,Object(c.a)(u.a));s.a.render(r.a.createElement(i.a,{store:Le},r.a.createElement(Ue,null)),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},45:function(e,t,n){var a={"./ad.svg":101,"./ae.svg":102,"./af.svg":103,"./ag.svg":104,"./ai.svg":105,"./al.svg":106,"./am.svg":107,"./ao.svg":108,"./ar.svg":109,"./as.svg":110,"./at.svg":111,"./au.svg":112,"./aw.svg":113,"./az.svg":114,"./ba.svg":115,"./bb.svg":116,"./bd.svg":117,"./be.svg":118,"./bf.svg":119,"./bg.svg":120,"./bh.svg":121,"./bi.svg":122,"./bj.svg":123,"./bm.svg":124,"./bo.svg":125,"./br.svg":126,"./bs.svg":127,"./bt.svg":128,"./bw.svg":129,"./by.svg":130,"./bz.svg":131,"./ca.svg":132,"./cd.svg":133,"./cf.svg":134,"./cg.svg":135,"./ch.svg":136,"./ci.svg":137,"./ck.svg":138,"./cl.svg":139,"./cm.svg":140,"./cn.svg":141,"./co.svg":142,"./cr.svg":143,"./cu.svg":144,"./cv.svg":145,"./cw.svg":146,"./cy.svg":147,"./cz.svg":148,"./de.svg":149,"./dj.svg":150,"./dk.svg":151,"./dm.svg":152,"./do.svg":153,"./dz.svg":154,"./ec.svg":155,"./ee.svg":156,"./eg.svg":157,"./er.svg":158,"./es.svg":159,"./et.svg":160,"./fi.svg":161,"./fj.svg":162,"./fk.svg":163,"./fm.svg":164,"./fo.svg":165,"./fr.svg":166,"./ga.svg":167,"./gb.svg":168,"./gd.svg":169,"./ge.svg":170,"./gg.svg":171,"./gh.svg":172,"./gi.svg":173,"./gl.svg":174,"./gm.svg":175,"./gn.svg":176,"./gq.svg":177,"./gr.svg":178,"./gt.svg":179,"./gu.svg":180,"./gw.svg":181,"./hk.svg":182,"./hn.svg":183,"./hr.svg":184,"./ht.svg":185,"./hu.svg":186,"./id.svg":187,"./ie.svg":188,"./il.svg":189,"./im.svg":190,"./in.svg":191,"./io.svg":192,"./iq.svg":193,"./ir.svg":194,"./is.svg":195,"./it.svg":196,"./je.svg":197,"./jm.svg":198,"./jo.svg":199,"./jp.svg":200,"./ke.svg":201,"./kg.svg":202,"./kh.svg":203,"./ki.svg":204,"./km.svg":205,"./kn.svg":206,"./kp.svg":207,"./kr.svg":208,"./kw.svg":209,"./ky.svg":210,"./kz.svg":211,"./la.svg":212,"./lb.svg":213,"./li.svg":214,"./lk.svg":215,"./lr.svg":216,"./ls.svg":217,"./lt.svg":218,"./lu.svg":219,"./lv.svg":220,"./ly.svg":221,"./ma.svg":222,"./mc.svg":223,"./md.svg":224,"./me.svg":225,"./mg.svg":226,"./mh.svg":227,"./mk.svg":228,"./ml.svg":229,"./mm.svg":230,"./mn.svg":231,"./mo.svg":232,"./mp.svg":233,"./mq.svg":234,"./mr.svg":235,"./ms.svg":236,"./mt.svg":237,"./mu.svg":238,"./mv.svg":239,"./mw.svg":240,"./mx.svg":241,"./my.svg":242,"./mz.svg":243,"./na.svg":244,"./nato.svg":245,"./ne.svg":246,"./nf.svg":247,"./ng.svg":248,"./ni.svg":249,"./nl.svg":250,"./no.svg":251,"./np.svg":252,"./nr.svg":253,"./nu.svg":254,"./nz.svg":255,"./om.svg":256,"./pa.svg":257,"./pe.svg":258,"./pf.svg":259,"./pg.svg":260,"./ph.svg":261,"./pk.svg":262,"./pl.svg":263,"./pn.svg":264,"./pr.svg":265,"./ps.svg":266,"./pt.svg":267,"./pw.svg":268,"./py.svg":269,"./qa.svg":270,"./ro.svg":271,"./rs.svg":272,"./ru.svg":273,"./rw.svg":274,"./sa.svg":275,"./sb.svg":276,"./sc.svg":277,"./sd.svg":278,"./se.svg":279,"./sg.svg":280,"./si.svg":281,"./sk.svg":282,"./sl.svg":283,"./sm.svg":284,"./sn.svg":285,"./so.svg":286,"./sr.svg":287,"./ss.svg":288,"./st.svg":289,"./sv.svg":290,"./sx.svg":291,"./sy.svg":292,"./sz.svg":293,"./tc.svg":294,"./td.svg":295,"./tg.svg":296,"./th.svg":297,"./tibet.svg":298,"./tj.svg":299,"./tk.svg":300,"./tm.svg":301,"./tn.svg":302,"./to.svg":303,"./tr.svg":304,"./tt.svg":305,"./tv.svg":306,"./tw.svg":307,"./tz.svg":308,"./ua.svg":309,"./ug.svg":310,"./us.svg":311,"./uy.svg":312,"./uz.svg":313,"./ve.svg":314,"./vi.svg":315,"./vn.svg":316,"./vu.svg":317,"./ws.svg":318,"./ye.svg":319,"./za.svg":320,"./zm.svg":321,"./zw.svg":322};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id=45},56:function(e){e.exports=JSON.parse('{"title":"formation \xd7 share","attacker":"Warrior","defender":"Defender","magician":"Magician","supporter":"Supporter","star":"Star","name":"Name","normal":"Normal","show":"Show","bold":"Bold","show-content":"Content","mercenary-type":"Type","mercenary-queue":"Queue","background-color":"Bg Color","background-grid":"Bg Grid","image-width":"Width","image-width-custom":"Custom:","reset":"Reset","queue":"Queue","copylink":"CopyLink","download":"Download"}')},57:function(e){e.exports=JSON.parse('{"title":"\u68d5\u8272\u5875\u57c3 \xd7 \u9663\u578b\u5206\u4eab","attacker":"\u653b\u64ca","defender":"\u9632\u79a6","magician":"\u9b54\u6cd5","supporter":"\u652f\u63f4","star":"\u661f\u7d1a","name":"\u540d\u7a31","normal":"\u4e00\u822c","show":"\u986f\u793a","bold":"\u7c97\u9ad4","show-content":"\u986f\u793a\u5167\u5bb9","mercenary-type":"\u50ad\u5175\u985e\u578b","mercenary-queue":"\u51fa\u624b\u9806\u5e8f","background-color":"\u80cc\u666f\u984f\u8272","background-grid":"\u80cc\u666f\u65b9\u683c","image-width":"\u5716\u7247\u5bec\u5ea6","image-width-custom":"\u81ea\u5b9a\u7fa9\uff1a","reset":"\u91cd\u7f6e","queue":"\u9806\u5e8f","copylink":"\u8907\u88fd\u9023\u7d50","download":"\u4e0b\u8f09"}')},58:function(e){e.exports=JSON.parse('{"title":"\u68d5\u8272\u5c18\u57c3 \xd7 \u9635\u578b\u5206\u4eab","attacker":"\u653b\u51fb","defender":"\u9632\u5fa1","magician":"\u9b54\u6cd5","supporter":"\u652f\u63f4","star":"\u661f\u7ea7","name":"\u540d\u79f0","normal":"\u4e00\u822c","show":"\u663e\u793a","bold":"\u7c97\u4f53","show-content":"\u663e\u793a\u5185\u5bb9","mercenary-type":"\u4f63\u5175\u7c7b\u578b","mercenary-queue":"\u51fa\u624b\u987a\u5e8f","background-color":"\u80cc\u666f\u989c\u8272","background-grid":"\u80cc\u666f\u65b9\u683c","image-width":"\u56fe\u7247\u5bbd\u5ea6","image-width-custom":"\u81ea\u5b9a\u4e49\uff1a","reset":"\u91cd\u7f6e","queue":"\u987a\u5e8f","copylink":"\u590d\u5236\u8fde\u7ed3","download":"\u4e0b\u8f7d"}')},59:function(e){e.exports=JSON.parse('{"title":"\ub300\ud615 \xd7 \ubaab","attacker":"\uacf5\uaca9","defender":"\ubc29\uc5b4","magician":"\ub9c8\ubc95","supporter":"\uc9c0\uc6d0","star":"\ubcc4","name":"\uc774\ub984","normal":"\uc815\uc0c1","show":"\ubcf4\uc5ec \uc8fc\ub2e4","bold":"\uad75\uac8c","show-content":"\ucf58\ud150\uce20","mercenary-type":"\uc720\ud615","mercenary-queue":"\ud050","background-color":"\ubc30\uacbd\uc0c9","background-grid":"\ubc30\uacbd \uadf8\ub9ac\ub4dc","image-width":"\uc774\ubbf8\uc9c0 \ub108\ube44","image-width-custom":"\uad00\uc2b5 :","reset":"\uc7ac\uc124\uc815","queue":"\ud050","copylink":"\ub9c1\ud06c \ubcf5\uc0ac","download":"\ub2e4\uc6b4\ub85c\ub4dc"}')},60:function(e){e.exports=JSON.parse('{"title":"\u5f62\u6210 \xd7 \u5171\u6709\u3059\u308b","attacker":"\u653b\u6483","defender":"\u9632\u885b","magician":"\u9b54\u6cd5","supporter":"\u30b5\u30dd\u30fc\u30c8","star":"\u661f\u5370","name":"\u304a\u540d\u524d","normal":"\u5168\u822c","show":"\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4","bold":"\u592a\u5b57","show-content":"\u753b\u50cf\u5167\u5bb9","mercenary-type":"\u7a2e\u985e","mercenary-queue":"\u9806\u5e8f","background-color":"\u80cc\u666f\u8272","background-grid":"\u80cc\u666f\u5e83\u5834","image-width":"\u753b\u50cf\u306e\u5e45","image-width-custom":"\u30ab\u30b9\u30bf\u30e0\uff1a","reset":"\u30ea\u30bb\u30c3\u30c8\u3059\u308b","queue":"\u30ad\u30e5\u30fc","copylink":"\u30ea\u30f3\u30af\u3092\u30b3\u30d4\u30fc","download":"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b"}')},70:function(e,t,n){e.exports=n(350)},81:function(e,t,n){},99:function(e,t,n){}},[[70,1,2]]]); -//# sourceMappingURL=main.dffeaabb.chunk.js.map \ No newline at end of file diff --git a/docs/static/js/main.dffeaabb.chunk.js.map b/docs/static/js/main.dffeaabb.chunk.js.map deleted file mode 100644 index abef31d..0000000 --- a/docs/static/js/main.dffeaabb.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["i18n.js","models/Settings.js","reducers/settings.js","reducers/characters.js","config/api.js","utils/index.js","reducers/dataset.js","models/Formation.js","reducers/index.js","actions/index.js","container/Header.js","service/Session.js","container/Formation.js","components/Mercenary.js","container/List.js","container/Toolbar.js","container/Footer.js","service/Characters.js","App.js","serviceWorker.js","index.js","../node_modules/react-flags-select/flags sync /^/.//.*/.svg$"],"names":["lng","undefined","Cookies","get","resources","US","translation","translationEN","TW","translationTW","CN","translationCN","KR","translationKR","JP","translationJP","i18n","use","detector","initReactI18next","init","keySeparator","interpolation","escapeValue","Settings","locale","countries","customLabels","settings","state","action","type","changeLanguage","payload","set","characters","thumbnailUrl","getThumbnailUrlByImageName","_uiIconImageName","id","split","resizeImageURL","datas","w","h","Promise","resolve","img","document","createElement","onload","canvas","ctx","getContext","width","height","drawImage","dataURI","toDataURL","src","crossOrigin","generateUrlParams","formation","length","url","filter","f","code","map","queue","join","initialFormation","charactors","window","location","hash","replace","String","u","console","error","fm","find","_","isUndefined","charactor","_code","Number","_type","backgroundImage","getThumbnailUrlByCode","forEach","index","findIndex","info","initialState","top","left","dragOver","options","backcolor","backimage","ref","queueMode","queueMax","dataset","href","combineReducers","updateDataset","Header","props","dispatch","t","transDefault","countryCode","this","style","position","className","defaultCountry","selectedSize","showSelectedLabel","onSelect","e","onSelectFlag","Component","withTranslation","connect","key","store","session","del","remove","Formation","onDragStart","ev","scode","sid","dataTransfer","setData","onDragOver","preventDefault","onDragEnter","tid","onDragChangeStyle","onDragLeave","onDrop","getData","target","onCheckExistImage","onAddImage","onRemoveImage","onDragEnd","alertID","alertTimer","myRef","React","createRef","c","fsource","pid","drag","exist","source","setState","setTimeout","bool","hasUpdate","q","push","typeShow","queueShow","data-type","draggable","onClick","onFormationClick","onDoubleClick","renderFormation","Mercenary","getCharNameByLocale","params","_charName","_charName_ENG","_charName_TW","_charName_JAP","URL","data-tooltip","value","override","css","List","onStarChange","_label","stars","star","label","checked","onNameOptionsChange","nameOptions","nameOption","types","shape","color","animation","icon","onChange","_growType","_star","renderTypes","renderFilterStars","renderFilterNameOptions","size","renderCharacters","Toolbar","downloadSizeSelected","downloadSizeCustom","Clipboard","downloadSize","d","name","toPng","current","then","dataUrl","a","newDataUri","download","moment","format","body","appendChild","click","removeChild","queueLen","onUpdateOptions","min","max","onFocus","onResetClick","onQueueClick","onDownloadClick","marginBottom","readOnly","data-clipboard-target","Footer","alt","title","rel","getCharacters","fetch","data","json","App","data-locale","Boolean","hostname","match","createStore","reducers","applyMiddleware","thunk","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","Object","module","exports"],"mappings":"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","file":"static/js/main.dffeaabb.chunk.js","sourcesContent":["import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport detector from \"i18next-browser-languagedetector\";\nimport Cookies from 'js-cookie';\n\n// the translations\n// (tip move them in a JSON file and import them)\nimport translationEN from './locales/US.json';\nimport translationTW from './locales/TW.json';\nimport translationCN from './locales/CN.json';\nimport translationKR from './locales/KR.json';\nimport translationJP from './locales/JP.json';\n\nconst lng = Cookies.get('locale') === undefined ? 'US' : Cookies.get('locale');\n\nconst resources = {\n US: { translation: translationEN },\n TW: { translation: translationTW },\n CN: { translation: translationCN },\n KR: { translation: translationKR },\n JP: { translation: translationJP },\n};\n\ni18n\n .use(detector)\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n\n lng, // get default from cookie\n\n keySeparator: false, // we do not use keys in form messages.welcome\n\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n });\n\nexport default i18n;\n","import Cookies from 'js-cookie';\n\nconst Settings = {\n locale: Cookies.get('locale') === undefined ? 'US' : Cookies.get('locale'),\n countries: ['US', 'TW', 'CN', 'KR', 'JP'],\n // language rule: https://github.com/ekwonye-richard/react-flags-select/blob/master/src/countries.js\n customLabels: { 'US': 'English', 'TW': 'Traditional Chinese', 'CN': 'Simplified Chinese', 'KR': 'Korea', 'JP': 'Japan' },\n};\n\nexport default Settings;\n","import Cookies from 'js-cookie';\n\nimport Settings from '../models/Settings';\nimport i18n from '../i18n';\n\nconst settings = (state = Settings, action) => {\n switch (action.type) {\n case 'SET_LOCALE':\n i18n.changeLanguage(action.payload.locale);\n Cookies.set('locale', action.payload.locale);\n return { ...state, ...action.payload };\n default:\n return state;\n }\n}\n\nexport default settings;\n","const characters = (state = [], action) => {\n switch (action.type) {\n case 'SET_CHARACTERS':\n return action.payload;\n default:\n return state;\n }\n}\n\nexport default characters;\n","const APIUrl = 'https://browndust-global-api.pmang.cloud/book/getAllCharacters';\n\n// origin, cross-origin \bpermission\n// const thumbnailUrl = 'https://ic-common.pmang.cloud/static/bdt_book/thumbnail';\n\n// on-line\nconst thumbnailUrl = 'https://robby570.tw/browndust-share/resource/thumbnail';\n\n// off-line\n// const thumbnailUrl = '/resource/thumbnail';\n\nexport {\n APIUrl,\n thumbnailUrl,\n}","/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\nimport _ from 'lodash';\nimport { thumbnailUrl } from '../config/api';\n\nexport const getThumbnailUrlByCode = (code = false) => {\n if (!code) return null;\n return `${thumbnailUrl}/char${Number(code) - 1}icon.png`;\n}\n\nexport const getThumbnailUrlByImageName = (_uiIconImageName = false) => {\n if (!_uiIconImageName) return null;\n const id = _uiIconImageName.split('*')[1];\n return `${thumbnailUrl}/${id}.png`;\n}\n\nexport const resizeImageURL = (datas, w = null, h = w / 2) => {\n return new Promise((resolve) => {\n const img = document.createElement('img');\n img.onload = () => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (w !== null) canvas.width = w;\n if (h !== null) canvas.height = h;\n ctx.drawImage(img, 0, 0, w, h);\n const dataURI = canvas.toDataURL();\n resolve(dataURI);\n };\n img.src = datas;\n // img.crossOrigin = 'anonymous';\n img.crossOrigin = 'use-credentials';\n // document.body.appendChild(img);\n });\n}\n\nexport const generateUrlParams = (formation = []) => {\n if (formation.length === 0) return false;\n\n const url = process.env.NODE_ENV === 'development'\n ? 'http://localhost:3000/#/'\n : 'https://robby570.tw/browndust-share/#/';\n\n // url rule => o{id}o{code}o{queue}\n // each group connect by . => o{id}o{code}o{queue}.o{id}...\n return url + formation\n .filter(f => f.code !== 0) // query exist id\n .map(f => `o${f.id}o${f.code}${f.queue === 0 ? '' : 'o' + f.queue}`)\n .join('.');\n}\n\nexport const initialFormation = (formation, charactors) => {\n window.location.hash\n .replace('#/', '')\n .split('.')\n .filter(String)\n .map(u => {\n // check url params valid\n const f = u.split('o').filter(String);\n if (f.length === 0 || f.length > 3) { console.error('Invalid url params.', u); return f; }\n\n // check position id\n const id = String(f[0]);\n const fm = formation.find(({ id }) => id === String(f[0]));\n if (_.isUndefined(fm)) { console.error('Invalid url params.', id); return f; }\n\n // check charactor by code\n const code = String(f[1]);\n const charactor = charactors.find(({ _code }) => _code === code);\n if (_.isUndefined(charactor)) { console.error('Invalid url params.', code); return f; }\n\n const type = Number(charactor._type);\n const backgroundImage = `url(${getThumbnailUrlByCode(code)})`;\n const queue = Number(f[2]) > 0 && Number(f[2]) <= 12 ? Number(f[2]) : 0;\n\n // plan to update object by id\n return { id, code, type, backgroundImage, queue }\n })\n .forEach(u => {\n const index = formation.findIndex((f) => f.id === u.id);\n if (index === -1) return;\n\n formation[index] = { ...formation[index], ...u }\n console.info('Received data:', u.id)\n });\n return formation;\n}","import _ from 'lodash';\nimport Formation from '../models/Formation';\nimport { generateUrlParams } from '../utils';\n\nconst initialState = {\n formation: Formation,\n options: {\n type: true,\n backcolor: true,\n backimage: true,\n queue: true,\n },\n ref: null,\n queueMode: false,\n queueMax: 12,\n queue: [],\n};\n\nconst dataset = (state = initialState, action) => {\n // set up url when formation update\n const formation = _.get(action.payload, 'formation');\n if (!_.isUndefined(formation)) {\n window.location.href = generateUrlParams(formation);\n }\n\n switch (action.type) {\n case 'RESET_FORMATION':\n return { ...state, ...action.payload };\n case 'UPDATE_FORMATION':\n return { ...state, ...action.payload };\n default:\n return state;\n }\n}\n\nexport default dataset;\n","const Formation = [\n { id: 'a1', top: '9px', left: '13px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a2', top: '9px', left: '127.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a3', top: '9px', left: '242px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a4', top: '9px', left: '356px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a5', top: '9px', left: '471px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'a6', top: '9px', left: '585.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b1', top: '122.5px', left: '13px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b2', top: '122.5px', left: '127.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b3', top: '122.5px', left: '242px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b4', top: '122.5px', left: '356px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b5', top: '122.5px', left: '471px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'b6', top: '122.5px', left: '585.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c1', top: '239px', left: '13px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c2', top: '239px', left: '127.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c3', top: '239px', left: '242px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c4', top: '239px', left: '356px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c5', top: '239px', left: '471px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n { id: 'c6', top: '239px', left: '585.5px', type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 },\n];\n\nexport default Formation;\n","import { combineReducers } from 'redux';\nimport settings from './settings';\nimport characters from './characters';\nimport dataset from './dataset';\n\nexport default combineReducers({\n dataset,\n characters,\n settings,\n})\n","export const setLocal = payload => ({\n type: 'SET_LOCALE',\n payload,\n});\n\nexport const setCharacters = payload => ({\n type: 'SET_CHARACTERS',\n payload,\n});\n\nexport const updateDataset = payload => ({\n type: 'UPDATE_FORMATION',\n payload,\n});\n\nexport const resetDataset = payload => ({\n type: 'RESET_FORMATION',\n payload,\n});\n","import React, { Component } from 'react';\nimport './Header.scss';\n\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport ReactFlagsSelect from 'react-flags-select';\n\nimport { setLocal } from '../actions';\n\nclass Header extends Component {\n constructor(props) {\n super(props);\n this.dispatch = props.dispatch;\n this.t = props.t;\n this.state = {\n countries: props.settings.countries,\n customLabels: props.settings.customLabels,\n transDefault: props.settings.locale,\n }\n }\n\n onSelectFlag(countryCode) {\n this.dispatch(setLocal({ locale: countryCode }));\n }\n\n render() {\n return (\n \n );\n }\n}\n\nHeader.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n settings: state.settings,\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(Header));\n","import store from 'store2';\n\n/**\n * Set session\n * @param {string} key\n * @param {any} value\n */\nconst set = (key = '', value = null) => {\n if (!key && !value) return;\n store.session(key, value);\n}\n\n/**\n * Get session by key\n * @param {string} key\n */\nconst get = (key = '') => store.session(key);\n\n/**\n * Remove session by key\n * @param {string} key \n */\nconst del = (key = '') => store.session.remove(key);\n\nexport {\n set,\n get,\n del,\n}\n","/* eslint-disable prefer-numeric-literals */\n/* eslint-disable no-empty */\n/* eslint-disable no-underscore-dangle */\nimport React, { Component } from 'react';\nimport './Formation.scss';\n\nimport { connect } from 'react-redux';\n\nimport { get, del } from '../service/Session';\nimport { getThumbnailUrlByImageName } from '../utils';\nimport { updateDataset } from '../actions';\n\nclass Formation extends Component {\n constructor(props) {\n super(props);\n this.props = props;\n this.dispatch = props.dispatch;\n this.state = {\n alertID: null,\n alertTimer: null,\n }\n this.myRef = React.createRef();\n }\n\n componentDidMount() {\n this.dispatch(updateDataset({ ref: this.myRef }));\n }\n\n /**\n * Add image to formation\n * @param {*} tid target position id \n * @param {*} cold character code\n */\n onAddImage(tid = null, code = 0) {\n // select character by _code\n const c = this.characters.find(({ _code }) => _code === code);\n // get formation state\n if (code > 0 || c) {\n // select target position id\n const fsource = this.formation.find(f => f.code === code);\n this.formation = this.formation.map(f => {\n let payload;\n\n if (f.id === tid) {\n payload = {\n ...f,\n backgroundImage: `url(${getThumbnailUrlByImageName(c._uiIconImageName)})`,\n type: Number(c._type),\n code: code,\n dragOver: false,\n }\n if (fsource) {\n // move to new position, then copy source queue\n if (f.queue === 0 && fsource.queue > 0) {\n payload = {\n ...payload,\n queue: fsource.queue,\n }\n } else {\n payload = {\n ...payload,\n queue: f.queue,\n }\n }\n // payload = { ...payload, ...fsource.queue }\n // queue: fsource ? fsource.queue : f.queue,\n }\n } else {\n payload = f;\n }\n return payload;\n });\n this.dispatch(updateDataset({ formation: this.formation, ref: this.myRef }));\n }\n }\n\n /**\n * Delete image from formation\n * @param {*} pid position id \n * @param {*} cold character code\n */\n onRemoveImage(pid = null, code = 0) {\n const c = this.characters.find(({ _code }) => _code === code);\n if (code || c) {\n // Remove image from source\n // select target position id\n this.formation = this.formation.map(f =>\n f.id === pid ?\n {\n ...f,\n backgroundImage: null,\n type: null,\n code: 0,\n dragOver: false,\n queue: 0,\n } : f\n )\n this.dispatch(updateDataset({ formation: this.formation }));\n }\n }\n\n /**\n * Check the target image is exist\n * @param {*} drag drag or click mode\n * @param {*} tid target id\n * @param {*} sid source id\n * @param {*} scode source code\n */\n onCheckExistImage(drag, tid, sid = null, scode = 0) {\n let exist = false;\n const source = this.formation.filter(({ code }) => code === scode);\n if (drag && sid === '0' && source.length > 0) {\n exist = true; // drag mode\n } else if (!drag && source.length > 0) {\n exist = true; // click mode\n }\n\n if (exist) {\n // add alarm style\n this.setState({ alertID: source[0].id });\n setTimeout(() => { this.setState({ alertID: null }) }, 1000);\n // remove target style\n this.onDragChangeStyle(tid, false);\n del('_code');\n console.info('Already exist!', scode);\n return true;\n }\n return false;\n }\n\n /**\n * Dropover style\n * @param {*} tid \n */\n onDragChangeStyle(tid = null, bool = true) {\n let hasUpdate = false;\n this.formation = this.formation.map(f => {\n if (f.id === tid) {\n // need update style [performance]\n if (f.dragOver !== bool) hasUpdate = true;\n return { ...f, dragOver: bool };\n }\n return f;\n });\n if (hasUpdate)\n this.dispatch(updateDataset({ formation: this.formation }));\n }\n\n /**\n * Adding charactor or setting queue\n * @param {*} id \n */\n onFormationClick(id = null) {\n const { queue, queueMode, queueMax } = this.props.dataset;\n\n const formation = this.formation.find(f => f.id === id);\n // set queue\n if (queueMode && formation) {\n // check is character inside\n if (\n formation.code > 0 && // check data exist\n formation.backgroundImage !== null && // check data exist\n queue.filter(q => q === id).length === 0 // can not repeat id\n ) {\n queue.push(id);\n this.formation = this.formation.map(f => {\n if (f.id === id) return { ...f, queue: queue.length };\n return f;\n });\n const payload = queue.length === queueMax\n ? { formation: this.formation, queue, queueMode: false } : { formation: this.formation, queue };\n this.dispatch(updateDataset(payload))\n }\n } else {\n // add character\n const code = get('_code');\n if (!code) return;\n if (this.onCheckExistImage(false, id, null, code)) return;\n this.onAddImage(id, code);\n del('_code');\n }\n }\n\n /**\n * DragStart event\n * sid source position id\n * scode source position image code\n */\n onDragStart = (ev, scode = 0, sid = null) => {\n ev.dataTransfer.setData('scode', scode);\n ev.dataTransfer.setData('sid', sid);\n }\n\n onDragOver = (ev, tid = null) => {\n ev.preventDefault();\n }\n\n onDragEnter = (ev, tid = null) => {\n ev.preventDefault();\n this.onDragChangeStyle(tid, true);\n }\n\n onDragLeave = (ev, tid = null) => {\n ev.preventDefault();\n this.onDragChangeStyle(tid, false);\n }\n\n /**\n * Drop event\n * tid target position id\n */\n onDrop = (ev, tid = null) => {\n const sid = ev.dataTransfer.getData('sid');\n const scode = ev.dataTransfer.getData('scode');\n const target = this.formation.find(({ id }) => id === tid);\n // check is exist\n if (this.onCheckExistImage(true, tid, sid, scode)) return;\n // check moving or exchanging \n if (target.backgroundImage === null) {\n // moving\n // console.log('move');\n this.onAddImage(tid, scode);\n this.onRemoveImage(sid, scode);\n } else {\n // exchage\n // console.log('exchage');\n this.onAddImage(sid, target.code);\n this.onAddImage(tid, scode);\n }\n }\n\n /**\n * Drag end (Plan: remove by drag to outside)\n */\n onDragEnd = (ev, id, code) => {\n ev.preventDefault();\n // console.log(ev.target);\n // console.log(ev.target.getAttribute('id'), id);\n // console.log(ev.target.getAttribute('draggable'));\n\n // const drag = ev.target.getAttribute('draggable');\n // if (drag) {\n // console.log('remove')\n // this.onRemoveImage(id, code)\n // };\n }\n\n renderFormation(typeShow, queueShow) {\n return this.formation.map(({ id, top, left, type, backgroundImage, code, dragOver, queue }) => {\n return (\n 0 ? true : false}\n style={{ top, left, backgroundImage }}\n onClick={() => this.onFormationClick(id)}\n onDoubleClick={() => this.onRemoveImage(id, code)}\n onDragStart={(e) => this.onDragStart(e, code, id)}\n onDragOver={(e) => this.onDragOver(e, id)}\n onDragEnter={(e) => this.onDragEnter(e, id)}\n onDragLeave={(e) => this.onDragLeave(e, id)}\n onDrop={(e) => { this.onDrop(e, id) }}\n onDragEnd={(e) => this.onDragEnd(e, id, code)}\n >\n {typeShow ?
: null}\n {queueShow && queue > 0 ?
{queue}
: null}\n \n )\n });\n }\n\n render() {\n this.formation = this.props.dataset.formation;\n const { type, backcolor, backimage, queue } = this.props.dataset.options;\n this.characters = this.props.characters;\n\n return (\n \n {this.renderFormation(type, queue)}\n \n );\n }\n}\n\nFormation.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n characters: state.characters,\n dataset: state.dataset,\n }\n}\n\nexport default connect(mapStateToProps)(Formation);","/* eslint-disable camelcase */\n/* eslint-disable no-underscore-dangle */\nimport React, { Component } from 'react';\nimport './Mercenary.scss';\n\nimport { connect } from 'react-redux';\n\nimport { set } from '../service/Session';\nimport { getThumbnailUrlByImageName } from '../utils';\n\nclass Mercenary extends Component {\n constructor(props) {\n super(props);\n this.props = props;\n this.state = {\n }\n }\n\n /**\n * DrageStart Event\n * sid source position id\n * scode source position image code\n */\n onDragStart = (ev, scode, sid) => {\n ev.dataTransfer.setData('scode', scode);\n ev.dataTransfer.setData('sid', sid);\n }\n\n getCharNameByLocale = (locale) => {\n const { _charName, _charName_ENG, _charName_TW, _charName_JAP } = this.props.params;\n switch (locale) {\n case 'US': return _charName_ENG;\n case 'TW': return _charName_TW;\n case 'CN': return _charName_TW;\n case 'KR': return _charName;\n case 'JP': return _charName_JAP;\n default: return _charName_ENG;\n }\n }\n\n render() {\n const { _uiIconImageName, _code } = this.props.params;\n const URL = getThumbnailUrlByImageName(_uiIconImageName);\n return (\n set('_code', _code)}\n onDragStart={(e) => this.onDragStart(e, _code, 0)}\n >\n \n );\n }\n}\n\nMercenary.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n settings: state.settings,\n }\n}\n\nexport default connect(mapStateToProps)(Mercenary);\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-mixed-operators */\nimport React, { Component } from 'react';\nimport './List.scss';\n\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Checkbox } from 'pretty-checkbox-react';\nimport { FaStar } from \"react-icons/fa\";\nimport { css } from '@emotion/core';\nimport HashLoader from 'react-spinners/HashLoader';\n\nimport Mercenary from '../components/Mercenary';\n\nconst override = css`\n display: block;\n margin: 20vh auto 0;\n`;\n\nclass List extends Component {\n constructor(props) {\n super(props);\n this.props = props;\n this.t = props.t;\n this.state = {\n type: 1,\n stars: [\n { label: '5', checked: true, star: 5 },\n { label: '4', checked: true, star: 4 },\n { label: '3', checked: false, star: 3 },\n { label: this.t('normal'), checked: false, star: 2 },\n ],\n nameOptions: [\n { label: this.t('show'), checked: true },\n { label: this.t('bold'), checked: false },\n ],\n };\n }\n\n static getDerivedStateFromProps({ t }, state) {\n let stars = [];\n let nameOptions = [];\n\n stars = state.stars;\n stars[3].label = t('normal');\n\n nameOptions = state.nameOptions;\n nameOptions[0].label = t('show');\n nameOptions[1].label = t('bold');\n\n return {\n ...state,\n types: [\n { type: 1, style: 'attacker', label: t('attacker') },\n { type: 2, style: 'defender', label: t('defender') },\n { type: 3, style: 'magician', label: t('magician') },\n { type: 4, style: 'supporter', label: t('supporter') },\n ],\n stars,\n nameOptions,\n }\n }\n\n onStarChange = (_label) => {\n const stars = this.state.stars;\n const star = stars.find(({ label }) => label === _label);\n star.checked = !star.checked;\n this.setState({ stars });\n }\n\n onNameOptionsChange = (_label) => {\n const nameOptions = this.state.nameOptions;\n const nameOption = nameOptions.find(({ label }) => label === _label);\n nameOption.checked = !nameOption.checked;\n this.setState({ nameOptions });\n }\n\n /**\n * Render charactor types\n */\n renderTypes() {\n return this.state.types.map(({ type, style, label }) =>\n (\n this.setState({ type })}\n >\n \n {label}\n \n ));\n }\n\n /**\n * Render stars filter\n */\n renderFilterStars() {\n return this.state.stars.map(({ label, checked }, index) =>\n (\n }\n checked={checked}\n onChange={() => this.onStarChange(label)}\n >\n {label}\n \n ));\n }\n\n /**\n * Render names filter\n */\n renderFilterNameOptions() {\n return this.state.nameOptions.map(({ label, checked }, index) => (\n }\n checked={checked}\n onChange={() => this.onNameOptionsChange(label)}\n >\n {label}\n \n ));\n }\n\n /**\n * Render lists\n */\n renderCharacters() {\n return this.props.characters\n .filter(({ _type, _growType, _star }) => {\n return (\n Number(_type) === this.state.type &&\n Number(_growType) >= 0 &&\n (\n this.state.stars[0].checked && Number(_star) === 5 ||\n this.state.stars[1].checked && Number(_star) === 4 ||\n this.state.stars[2].checked && Number(_star) === 3 ||\n this.state.stars[3].checked && Number(_star) === 2 ||\n this.state.stars[3].checked && Number(_star) === 1\n )\n )\n })\n .map((c, index) => (\n \n ))\n }\n\n render() {\n return (\n
\n
\n {this.renderTypes()}\n
\n
\n
\n {this.t('star')}:\n {this.renderFilterStars()}\n
\n
\n {this.t('name')}:\n {this.renderFilterNameOptions()}\n
\n
\n\n
\n {\n this.props.characters.length === 0 ? (\n \n ) : this.renderCharacters()\n }\n
\n
\n );\n }\n}\n\nList.propTypes = {\n characters: PropTypes.array.isRequired,\n}\n\nconst mapStateToProps = state => {\n return {\n characters: state.characters,\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(List));\n","import React, { Component } from 'react';\nimport './Toolbar.scss';\n\nimport { connect } from 'react-redux';\nimport { withTranslation } from 'react-i18next';\nimport { MdRefresh, MdGetApp } from 'react-icons/md';\nimport { FaLink } from 'react-icons/fa';\nimport { GiPerspectiveDiceSixFacesRandom, GiPerspectiveDiceOne } from 'react-icons/gi';\nimport { Checkbox, Radio } from 'pretty-checkbox-react';\nimport { toPng } from 'html-to-image';\nimport moment from 'moment';\nimport Clipboard from 'clipboard';\nimport { updateDataset } from '../actions';\nimport { resizeImageURL } from '../utils';\n\nclass Toolbar extends Component {\n constructor(props) {\n super(props);\n this.dispatch = props.dispatch;\n this.t = props.t;\n this.state = {\n downloadSizeSelected: 2,\n downloadSizeCustom: 0,\n };\n }\n\n componentDidMount() {\n // eslint-disable-next-line no-new\n new Clipboard('.tool-copylink');\n }\n\n static getDerivedStateFromProps({ t }, state) {\n return {\n ...state,\n downloadSize: [\n { value: 1, name: 700 },\n { value: 2, name: 520 },\n { value: 3, name: 420 },\n { value: 4, name: t('image-width-custom') },\n ],\n }\n }\n\n onUpdateOptions(payload) {\n const options = { ...this.options, ...payload };\n this.dispatch(updateDataset({ options }));\n }\n\n onQueueClick(queueMode) {\n let payload = {};\n if (queueMode) {\n // turn off queue mode\n payload = { queueMode: !queueMode, queue: [] };\n } else {\n // turn on queue mode\n const formation = this.formation.map(f => ({ ...f, queue: 0 }));\n payload = { formation, queueMode: !queueMode };\n }\n this.dispatch(updateDataset(payload));\n }\n\n onDownloadClick() {\n const size = this.state.downloadSizeSelected !== 4 ? this.state.downloadSize\n .find(d => d.value === this.state.downloadSizeSelected).name\n : Number(this.state.downloadSizeCustom);\n\n if (Number(size) <= 0) return;\n toPng(this.props.dataset.ref.current)\n .then(async dataUrl => {\n const newDataUri = await resizeImageURL(dataUrl, size);\n const a = document.createElement('a');\n a.href = newDataUri;\n a.download = `output-${moment().format('YYYYMMDDTHmmss')}.png`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n });\n }\n\n onResetClick() {\n const formation = this.formation.map(f => ({ ...f, type: 0, backgroundImage: null, code: 0, dragOver: false, queue: 0 }));\n this.dispatch(updateDataset({ formation, queueMode: false, queue: [] }));\n }\n\n render() {\n this.formation = this.props.dataset.formation;\n const queueLen = this.formation.filter(f => f.queue > 0).length;\n this.options = this.props.dataset.options;\n const { queueMode } = this.props.dataset;\n return (\n
\n
\n {this.t('show-content')}:\n }\n checked={this.options.type}\n onChange={e => this.onUpdateOptions({ type: e.target.checked })}\n >\n {this.t('mercenary-type')}\n \n }\n checked={this.options.queue}\n onChange={e => this.onUpdateOptions({ queue: e.target.checked })}\n >\n {this.t('mercenary-queue')}\n \n }\n checked={this.options.backcolor}\n onChange={e => this.onUpdateOptions({ backcolor: e.target.checked })}\n >\n {this.t('background-color')}\n \n }\n checked={this.options.backimage}\n onChange={e => this.onUpdateOptions({ backimage: e.target.checked })}\n >\n {this.t('background-grid')}\n \n
\n\n
\n {this.t('image-width')}:\n {\n this.state.downloadSize.map(({ value, name }, index) => {\n return (\n }\n value={value}\n checked={value === this.state.downloadSizeSelected}\n onChange={() => this.setState({ downloadSizeSelected: value })}\n >\n {value !== 4 ? `${name}px` : name}\n \n );\n })\n }\n this.setState({ downloadSizeCustom: e.target.value.replace(/\\D/, '') })}\n onFocus={() => this.setState({ downloadSizeSelected: 4 })}\n /> px\n
\n\n
\n this.onResetClick()}\n >\n \n {this.t('reset')}\n \n this.onQueueClick(queueMode)}\n >\n {\n queueMode\n ?
{this.t('queue')}({queueLen})
\n :
{this.t('queue')}({queueLen})
\n }\n \n this.onDownloadClick()}\n >\n \n {this.t('download')}\n \n
\n
\n \n \n \n {this.t('copylink')}\n \n
\n
\n );\n }\n}\n\nToolbar.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n dataset: state.dataset,\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(Toolbar));\n","/* eslint-disable jsx-a11y/control-has-associated-label */\nimport React, { Component } from 'react';\nimport './Footer.scss';\n\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { FaGithub } from \"react-icons/fa\";\nimport { GoIssueOpened } from \"react-icons/go\";\n\nclass Footer extends Component {\n render() {\n return (\n
\n
\n \n \n
\n This site is fan-made and not affiliated with NEOWIZ and GAMFS in any way.\n
\n );\n }\n}\n\nFooter.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n }\n}\n\nexport default withTranslation()(connect(mapStateToProps)(Footer));\n","import { APIUrl } from '../config/api';\n\nconst getCharacters = async () => fetch(APIUrl).then(data => data.json() || [])\n\nexport { getCharacters };\n","import React, { Component } from 'react';\nimport './App.scss';\n\nimport { HashRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport Header from './container/Header';\nimport Formation from './container/Formation';\nimport List from './container/List';\nimport Toolbar from './container/Toolbar';\nimport Footer from './container/Footer';\n\nimport { setCharacters, updateDataset } from './actions';\nimport { getCharacters } from './service/Characters';\nimport { initialFormation } from './utils';\n\nclass App extends Component {\n constructor(props) {\n super(props);\n this.dispatch = props.dispatch;\n this.state = {};\n }\n\n componentDidMount() {\n getCharacters()\n .then(data => this.dispatch(setCharacters(data)))\n .then(() => this.dispatch(updateDataset({ formation: initialFormation(this.formation, this.characters) })));\n }\n\n render() {\n this.formation = this.props.dataset.formation;\n this.characters = this.props.characters;\n this.locale = this.props.settings.locale;\n return (\n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nApp.propTypes = {}\n\nconst mapStateToProps = state => {\n return {\n characters: state.characters,\n dataset: state.dataset,\n settings: state.settings,\n }\n}\n\nexport default connect(mapStateToProps)(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore, applyMiddleware } from 'redux';\nimport { Provider } from 'react-redux';\nimport thunk from 'redux-thunk';\nimport './index.scss';\nimport './i18n';\nimport reducers from './reducers';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nconst store = createStore(\n reducers,\n applyMiddleware(thunk)\n);\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","var map = {\n\t\"./ad.svg\": 101,\n\t\"./ae.svg\": 102,\n\t\"./af.svg\": 103,\n\t\"./ag.svg\": 104,\n\t\"./ai.svg\": 105,\n\t\"./al.svg\": 106,\n\t\"./am.svg\": 107,\n\t\"./ao.svg\": 108,\n\t\"./ar.svg\": 109,\n\t\"./as.svg\": 110,\n\t\"./at.svg\": 111,\n\t\"./au.svg\": 112,\n\t\"./aw.svg\": 113,\n\t\"./az.svg\": 114,\n\t\"./ba.svg\": 115,\n\t\"./bb.svg\": 116,\n\t\"./bd.svg\": 117,\n\t\"./be.svg\": 118,\n\t\"./bf.svg\": 119,\n\t\"./bg.svg\": 120,\n\t\"./bh.svg\": 121,\n\t\"./bi.svg\": 122,\n\t\"./bj.svg\": 123,\n\t\"./bm.svg\": 124,\n\t\"./bo.svg\": 125,\n\t\"./br.svg\": 126,\n\t\"./bs.svg\": 127,\n\t\"./bt.svg\": 128,\n\t\"./bw.svg\": 129,\n\t\"./by.svg\": 130,\n\t\"./bz.svg\": 131,\n\t\"./ca.svg\": 132,\n\t\"./cd.svg\": 133,\n\t\"./cf.svg\": 134,\n\t\"./cg.svg\": 135,\n\t\"./ch.svg\": 136,\n\t\"./ci.svg\": 137,\n\t\"./ck.svg\": 138,\n\t\"./cl.svg\": 139,\n\t\"./cm.svg\": 140,\n\t\"./cn.svg\": 141,\n\t\"./co.svg\": 142,\n\t\"./cr.svg\": 143,\n\t\"./cu.svg\": 144,\n\t\"./cv.svg\": 145,\n\t\"./cw.svg\": 146,\n\t\"./cy.svg\": 147,\n\t\"./cz.svg\": 148,\n\t\"./de.svg\": 149,\n\t\"./dj.svg\": 150,\n\t\"./dk.svg\": 151,\n\t\"./dm.svg\": 152,\n\t\"./do.svg\": 153,\n\t\"./dz.svg\": 154,\n\t\"./ec.svg\": 155,\n\t\"./ee.svg\": 156,\n\t\"./eg.svg\": 157,\n\t\"./er.svg\": 158,\n\t\"./es.svg\": 159,\n\t\"./et.svg\": 160,\n\t\"./fi.svg\": 161,\n\t\"./fj.svg\": 162,\n\t\"./fk.svg\": 163,\n\t\"./fm.svg\": 164,\n\t\"./fo.svg\": 165,\n\t\"./fr.svg\": 166,\n\t\"./ga.svg\": 167,\n\t\"./gb.svg\": 168,\n\t\"./gd.svg\": 169,\n\t\"./ge.svg\": 170,\n\t\"./gg.svg\": 171,\n\t\"./gh.svg\": 172,\n\t\"./gi.svg\": 173,\n\t\"./gl.svg\": 174,\n\t\"./gm.svg\": 175,\n\t\"./gn.svg\": 176,\n\t\"./gq.svg\": 177,\n\t\"./gr.svg\": 178,\n\t\"./gt.svg\": 179,\n\t\"./gu.svg\": 180,\n\t\"./gw.svg\": 181,\n\t\"./hk.svg\": 182,\n\t\"./hn.svg\": 183,\n\t\"./hr.svg\": 184,\n\t\"./ht.svg\": 185,\n\t\"./hu.svg\": 186,\n\t\"./id.svg\": 187,\n\t\"./ie.svg\": 188,\n\t\"./il.svg\": 189,\n\t\"./im.svg\": 190,\n\t\"./in.svg\": 191,\n\t\"./io.svg\": 192,\n\t\"./iq.svg\": 193,\n\t\"./ir.svg\": 194,\n\t\"./is.svg\": 195,\n\t\"./it.svg\": 196,\n\t\"./je.svg\": 197,\n\t\"./jm.svg\": 198,\n\t\"./jo.svg\": 199,\n\t\"./jp.svg\": 200,\n\t\"./ke.svg\": 201,\n\t\"./kg.svg\": 202,\n\t\"./kh.svg\": 203,\n\t\"./ki.svg\": 204,\n\t\"./km.svg\": 205,\n\t\"./kn.svg\": 206,\n\t\"./kp.svg\": 207,\n\t\"./kr.svg\": 208,\n\t\"./kw.svg\": 209,\n\t\"./ky.svg\": 210,\n\t\"./kz.svg\": 211,\n\t\"./la.svg\": 212,\n\t\"./lb.svg\": 213,\n\t\"./li.svg\": 214,\n\t\"./lk.svg\": 215,\n\t\"./lr.svg\": 216,\n\t\"./ls.svg\": 217,\n\t\"./lt.svg\": 218,\n\t\"./lu.svg\": 219,\n\t\"./lv.svg\": 220,\n\t\"./ly.svg\": 221,\n\t\"./ma.svg\": 222,\n\t\"./mc.svg\": 223,\n\t\"./md.svg\": 224,\n\t\"./me.svg\": 225,\n\t\"./mg.svg\": 226,\n\t\"./mh.svg\": 227,\n\t\"./mk.svg\": 228,\n\t\"./ml.svg\": 229,\n\t\"./mm.svg\": 230,\n\t\"./mn.svg\": 231,\n\t\"./mo.svg\": 232,\n\t\"./mp.svg\": 233,\n\t\"./mq.svg\": 234,\n\t\"./mr.svg\": 235,\n\t\"./ms.svg\": 236,\n\t\"./mt.svg\": 237,\n\t\"./mu.svg\": 238,\n\t\"./mv.svg\": 239,\n\t\"./mw.svg\": 240,\n\t\"./mx.svg\": 241,\n\t\"./my.svg\": 242,\n\t\"./mz.svg\": 243,\n\t\"./na.svg\": 244,\n\t\"./nato.svg\": 245,\n\t\"./ne.svg\": 246,\n\t\"./nf.svg\": 247,\n\t\"./ng.svg\": 248,\n\t\"./ni.svg\": 249,\n\t\"./nl.svg\": 250,\n\t\"./no.svg\": 251,\n\t\"./np.svg\": 252,\n\t\"./nr.svg\": 253,\n\t\"./nu.svg\": 254,\n\t\"./nz.svg\": 255,\n\t\"./om.svg\": 256,\n\t\"./pa.svg\": 257,\n\t\"./pe.svg\": 258,\n\t\"./pf.svg\": 259,\n\t\"./pg.svg\": 260,\n\t\"./ph.svg\": 261,\n\t\"./pk.svg\": 262,\n\t\"./pl.svg\": 263,\n\t\"./pn.svg\": 264,\n\t\"./pr.svg\": 265,\n\t\"./ps.svg\": 266,\n\t\"./pt.svg\": 267,\n\t\"./pw.svg\": 268,\n\t\"./py.svg\": 269,\n\t\"./qa.svg\": 270,\n\t\"./ro.svg\": 271,\n\t\"./rs.svg\": 272,\n\t\"./ru.svg\": 273,\n\t\"./rw.svg\": 274,\n\t\"./sa.svg\": 275,\n\t\"./sb.svg\": 276,\n\t\"./sc.svg\": 277,\n\t\"./sd.svg\": 278,\n\t\"./se.svg\": 279,\n\t\"./sg.svg\": 280,\n\t\"./si.svg\": 281,\n\t\"./sk.svg\": 282,\n\t\"./sl.svg\": 283,\n\t\"./sm.svg\": 284,\n\t\"./sn.svg\": 285,\n\t\"./so.svg\": 286,\n\t\"./sr.svg\": 287,\n\t\"./ss.svg\": 288,\n\t\"./st.svg\": 289,\n\t\"./sv.svg\": 290,\n\t\"./sx.svg\": 291,\n\t\"./sy.svg\": 292,\n\t\"./sz.svg\": 293,\n\t\"./tc.svg\": 294,\n\t\"./td.svg\": 295,\n\t\"./tg.svg\": 296,\n\t\"./th.svg\": 297,\n\t\"./tibet.svg\": 298,\n\t\"./tj.svg\": 299,\n\t\"./tk.svg\": 300,\n\t\"./tm.svg\": 301,\n\t\"./tn.svg\": 302,\n\t\"./to.svg\": 303,\n\t\"./tr.svg\": 304,\n\t\"./tt.svg\": 305,\n\t\"./tv.svg\": 306,\n\t\"./tw.svg\": 307,\n\t\"./tz.svg\": 308,\n\t\"./ua.svg\": 309,\n\t\"./ug.svg\": 310,\n\t\"./us.svg\": 311,\n\t\"./uy.svg\": 312,\n\t\"./uz.svg\": 313,\n\t\"./ve.svg\": 314,\n\t\"./vi.svg\": 315,\n\t\"./vn.svg\": 316,\n\t\"./vu.svg\": 317,\n\t\"./ws.svg\": 318,\n\t\"./ye.svg\": 319,\n\t\"./za.svg\": 320,\n\t\"./zm.svg\": 321,\n\t\"./zw.svg\": 322\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 45;"],"sourceRoot":""} \ No newline at end of file